我对字体和编码有基本的了解,但最近我需要做一些超出我的舒适区域的事情:将字符✖(0x2716
“heavy multiplication x”)转换为CGPathRef
。
我使用Core Text的CTFontGetGlyphsForCharacters
来完成这项工作。我知道CGGlyph
实际上是给定字体支持的字形集合中的索引。我很快发现,这个字形只在iOS上的很少几种字体中受支持,包括Zapf Dingbats,这是我选择的字体之一。
这是我的问题:我可以在任何字体中使用✖,只需粘贴即可。我在Pages中进行了一个小实验,在文档中粘贴✖,然后选择它,不断更改字体。我进行了类似的编程实验。该字形始终正确显示(并且从未更改)。如果很少有这些字体具有✖,那么这是如何工作的?如果给定字体没有这样的符号,是否有一组“备用字形”(我猜这将是“备用字体”)?如果是这样,是否有任何方法可以以编程方式访问这些字形?