3

我目前正在使用 CoreGraphics 和 CoreText 编写一个简单的位图字体生成器。我正在检索字体的字距调整表:

CFDataRef kernTable = CTFontCopyTable(m_ctFontRef, kCTFontTableKern, kCTFontTableOptionNoOptions);

然后解析它,它工作正常。字距调整对为我提供了字距调整对的字形索引(即 CGGlyph),我需要将它们转换为 unicode(即 UniChar),不幸的是,这似乎并不容易。我得到的最接近的是使用:

CGFontCopyGlyphNameForGlyph

检索 CGGlyph 的字形名称,但我不知道如何将名称转换为 unicode,因为它们实际上只是诸如quoteleft 之类的字符串。我想到的另一件事是解析kCTFontTableCmap自己以手动执行从字形到 unicode id 的映射,但这似乎是一项任务的大量额外工作。有什么简单的方法可以做到这一点吗?

谢谢!

4

1 回答 1

5

我不知道为给定字形获取 Unicode 的直接方法,但您可以通过以下方式构建映射:

  • 使用 获取字体的所有字符CTFontCopyCharacterSet()
  • 使用 .将所有这些 Unicode 字符映射到它们的字形CTFontGetGlyphsForCharacters()
  • 对于每个 Unicode 字符及其字形,将映射存储glyph -> Unicode 在字典中。
于 2013-08-14T18:11:28.027 回答