c - 操作系统 : CGGlyph to UniChar

标签 c macos core-text

我目前正在使用 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/

相关文章:

ios - 如何从 UILabel 的第 n 行获取文本/字符串?

c++ - 除以零 : Undefined Behavior or Implementation Defined in C and/or C++?

c - 缓冲字符串损坏

c - C 中的多进程 : global variable's value

java - 使用 e(fx)clipse 部署包 - Macos 图标问题

python - 在 10.9 Mavericks 上安装 Scrapy 时遇到问题

mysql - 如何在 Mac OS Sierra 中使用 Perl/CGI 连接 MySQL?

c - 如何使用 GTK 和 Pango 判断字体是否为等宽字体?

ios - 如何在 UITextView 中像 block 引号一样格式化文本

ios - CGContext SetTextMatrix 是做什么的?