OSX:CGGlyph到UniChar

时间:2013-08-14 17:52:38

标签: c macos core-text

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

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

然后解析它工作正常。字距调整对给出了字距调整对的字形索引(即CGGlyph),我需要将它们转换为unicode(即UniChar),遗憾的是这看起来并不容易。我得到的最接近的是:

CGFontCopyGlyphNameForGlyph

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

谢谢!

1 个答案:

答案 0 :(得分:4)

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

  • 使用CTFontCopyCharacterSet()获取字体的所有字符。
  • 使用CTFontGetGlyphsForCharacters()将所有这些Unicode字符映射到其字形。
  • 对于每个Unicode字符及其字形,请存储映射glyph -> Unicode 在字典里。