0

我正在尝试编写一些代码来选择粗体字体(我实际上想获取字体文件名以发送到跨平台字体渲染器,但这不太相关)。我使用 CreateFont() 将 cWeight 设置为 FW_BOLD 并将 pszFaceName 设置为“Arial”。我将此字体选择到 DC 中并使用 GetTextFace() 检查实际选择了哪种字体。结果是宋体。我很惊讶字体不是 Arial Bold,它是一个带有不同字体文件的单独面孔。指定 Arial Bold 字体的唯一方法是将 pszFaceName 设置为“Arial Bold”。不幸的是,简单地将粗体附加到字体名称的末尾仅适用于某些字体,因为某些字体没有单独的粗体字体。

是否有任何通用方法来指定粗体以确保返回字体的实际粗体版本?

谢谢

菲尔

4

1 回答 1

2

这不是它的工作方式,Windows 字体映射器不会替换人脸名称。“Arial Bold”不是标准字体,也与标准“Arial”字体没有任何关系。如果你想使用它,那么你将不得不要求它。

使用 FW_BOLD 请求“Arial”会选择 c:\windows\fonts\arialbd.ttf 字体文件。一种字体文件,专门设计用于呈现粗体 arial。脸名是“Arial”。同样,ariali.ttf 提供斜体版本,arialbi.ttf 提供粗斜体版本,arial.ttf 是正常版本。

于 2012-07-10T00:34:33.707 回答