我目前正在使用 CoreGraphics 和 CoreText 编写一个简单的位图字体生成器。我正在检索字体的字距调整表:
CFDataRef kernTable = CTFontCopyTable(m_ctFontRef, kCTFontTableKern, kCTFontTableOptionNoOptions);
然后解析它,效果很好。字距调整对为我提供了字距调整对的字形索引(即 CGGlyph),我需要将它们转换为 unicode(即 UniChar),不幸的是,这似乎并不容易。我得到的最接近的是使用:
CGFontCopyGlyphNameForGlyph
检索 CGGlyph 的字形名称,但我不知道如何将名称转换为 unicode,因为它们实际上只是字符串,例如 quoteleft。我想做的另一件事是自己解析 kCTFontTableCmap
以手动完成从字形到 unicode id 的映射,但这似乎是这项任务的大量额外工作。有什么简单的方法可以做到这一点吗?
谢谢!
最佳答案
我不知道获取给定字形的 Unicode 的直接方法,但你可以 按照以下方式构建映射:
- 使用
CTFontCopyCharacterSet()
获取字体的所有字符。 - 使用
CTFontGetGlyphsForCharacters()
将所有这些 Unicode 字符映射到它们的字形。 - 对于每个 Unicode 字符及其字形,存储映射
glyph -> Unicode
在字典里。
关于c - 操作系统 : CGGlyph to UniChar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18238804/