我安装了常见的 Adobe Myriad Pro 字体。其中包括 Myriad Pro Regular、Myriad Pro Bold 和 Myriad Pro Semibold。假设我有一个CTFontRef baseFont
指向 Myriad Pro Regular 的字体,并且我想要的字体大小是size
. 我运行以下代码:
CTFontRef boldFont = CTFontCreateCopyWithSymbolicTraits(baseFont, size, NULL, kCTFontBoldTrait, kCTFontBoldTrait);
返回的字体是 Myriad Pro Semibold,而不是 Myriad Pro Bold。
除了请求命名样式“Bold”之外,有没有办法强制它返回 Myriad Pro Bold?我想保持这段代码完全通用,没有硬连线样式名称。
我已经尝试过各种排列方式,包括在最初创建字体时将粗体特征作为属性字典的一部分传递,避免了此处描述的两步过程,但它仍然返回半粗体字体而不是普通粗体。我也对字体本身进行了一些探索。全粗体在其<OS/2>
表中的权重为 700,半粗体的权重为 600。PANOSE 的权重与此相对应。但是,半粗体和粗体字体表中的macStyle
字段<head>
都设置了粗体标志,所以大概这就是 Core Text 正在使用的。但是有什么办法可以让它更有辨别力吗?