【发布时间】:2015-05-18 03:02:34
【问题描述】:
我对字体和编码有基本的了解,但最近我不得不做一些超出我舒适区的事情:将字符 ✖ (0x2716 "heavy multiplication x") 变成 CGPathRef。
我使用 Core Text 的 CTFontGetGlyphsForCharacters 来完成这项工作。我知道CGGlyph 实际上是给定字体支持的字形集的索引。我很快发现这个字形在 iOS 上只有极少数字体支持,包括我选择的 Zapf Dingbats。
这是我的问题:我可以在任何字体中使用✖,只需将其粘贴进去。我在 Pages 中做了一个小实验,将✖粘贴到文档中,选择它,然后不断更改字体。我做了一个类似的程序化实验。字形始终正确显示(并且从未更改)。如果这些字体中很少有 ✖,这是如何工作的?如果给定字体没有这样的符号,是否有一些“后备字形”(我猜这将是“后备字体”)?如果是这样,有没有办法以编程方式访问这些字形?
【问题讨论】:
-
尝试在终端中显示这个。终端不应使用任何后备字体。
-
好点!但在它确实显示的情况下,它是如何工作的?
-
我不知道标准 API 是否提供回退,或者应用程序必须自己做。
-
事实证明(至少在我发布此评论时)Apple 的终端和 iTerm2 确实实际上使用了备用字体。