【发布时间】:2012-07-09 10:25:10
【问题描述】:
我正在尝试编写一些代码来选择粗体字体(我实际上想获取字体文件名以发送到跨平台字体渲染器,但这不太相关)。我使用 CreateFont() 将 cWeight 设置为 FW_BOLD 并将 pszFaceName 设置为“Arial”。我将此字体选择到 DC 中并使用 GetTextFace() 检查实际选择了哪种字体。结果是宋体。我很惊讶字体不是 Arial Bold,它是一个带有不同字体文件的单独面孔。指定 Arial Bold 字体的唯一方法是将 pszFaceName 设置为“Arial Bold”。不幸的是,简单地将粗体附加到字体名称的末尾仅适用于某些字体,因为某些字体没有单独的粗体字体。
是否有任何通用的方法来指定粗体,以确保返回字体的实际粗体版本?
谢谢
菲尔
【问题讨论】:
-
我从没想过加粗它与具有不同字体名称的粗体版本是一回事,但我还没有深入研究文本工作。你确定这是正确的吗?
-
你检查渲染是否不同?我认为 GDI 只是告诉你你请求的字体,自己处理单独的字体版本/模拟粗体。
-
我认为这里没有简单的出路。
-
Arial Bold 是与 Arial 不同的字体,其中恰好包含“Bold”一词。 Arial 和 Arial Bold 都可以加粗或不加粗。
标签: c++ windows fonts gdi uniscribe