OSX:CGGlyph到UniChar
我目前正在使用CoreGraphics和CoreText编写一个简单的位图字体生成器。我正在检索具有以下内容的字体的字距表:OSX:CGGlyph到UniChar,c,macos,core-text,C,Macos,Core Text,我目前正在使用CoreGraphics和CoreText编写一个简单的位图字体生成器。我正在检索具有以下内容的字体的字距表: CFDataRef kernTable = CTFontCopyTable(m_ctFontRef, kCTFontTableKern, kCTFontTableOptionNoOptions); 然后解析它,这很好。紧排对为我提供了紧排对的字形索引(即CGGlyph),我需要将它们转换为unicode(即UniChar),不幸的是,这似乎并不容易。我得到的最接近的结果
CFDataRef kernTable = CTFontCopyTable(m_ctFontRef, kCTFontTableKern, kCTFontTableOptionNoOptions);
然后解析它,这很好。紧排对为我提供了紧排对的字形索引(即CGGlyph),我需要将它们转换为unicode(即UniChar),不幸的是,这似乎并不容易。我得到的最接近的结果是:
CGFontCopyGlyphNameForGlyph
检索cglyph的glyph名称,但我不知道如何将名称转换为unicode,因为它们实际上只是诸如quoteleft之类的字符串。我想到的另一件事是自己解析kCTFontTableCmap
以手动执行从glyph到unicode id的映射,但这似乎是一项繁重的额外工作。有什么简单的方法可以做到这一点吗
谢谢 我不知道如何直接获得给定字形的Unicode,但您可以 按以下方式构建映射:
- 使用
获取字体的所有字符CTFontCopyCharacterSet()
- 使用
将所有这些Unicode字符映射到其字形CTFontGetGlyphsForCharacters()
- 对于每个Unicode字符及其字形,存储映射
在字典里glyph->Unicode