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