c++ - Windows API 选择粗体

标签 c++ windows fonts gdi uniscribe

我正在尝试编写一些代码来选择粗体字体(我实际上想获取字体文件名以发送到跨平台字体渲染器,但这不太相关)。我使用 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/

相关文章:

linux - 操作系统是否首先读取 block 以写入 block 设备?

排序函数中的 C++ 错误

C++:删除单链表中间的节点?

c++ - 使用 AMD FX 4100 四核在 linux ubuntu 12.10 上获取 CPU 温度

c++参数评估顺序分配?

python - 我如何在 Windows 中运行 python doctest?

windows - 解析输出时如何纠正变量覆盖错误行为?

java - 我如何告诉 Java 将逻辑字体(例如 SansSerif)映射到我系统上的特定字体?

android - 如何在 Android 应用程序中使用旁遮普字体?

C# 单一字体字符大小?