我正在尝试编写一些代码来选择粗体字体(我实际上想获取字体文件名以发送到跨平台字体渲染器,但这不太相关)。我使用 CreateFont() 将 cWeight 设置为 FW_BOLD 并将 pszFaceName 设置为“Arial”。我将此字体选择到 DC 中并使用 GetTextFace() 来检查实际选择了哪种字体。结果是宋体。我很惊讶字体不是 Arial Bold,它是一个带有不同字体文件的独立面孔。指定 Arial Bold 字体的唯一方法是将 pszFaceName 设置为“Arial Bold”。不幸的是,简单地将粗体附加到字体名称的末尾仅适用于某些字体,因为某些字体没有单独的粗体字体。
是否有任何通用的方法来指定粗体以确保返回字体的实际粗体版本?
谢谢
菲尔
最佳答案
这不是它的工作方式,Windows 字体映射器不会替换字体名称。 “Arial Bold”不是标准字体,也与标准“Arial”字体没有任何关系。如果您想使用它,则必须提出要求。
使用 FW_BOLD 请求“Arial”会选择 c:\windows\fonts\arialbd.ttf 字体文件。专门设计用于呈现粗体 arial 的字体文件。面名“Arial”。同样,ariali.ttf 提供斜体版本,arialbi.ttf 提供粗体斜体版本,arial.ttf 是普通版本。
关于c++ - Windows API 选择粗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11404922/