CoreText:获取连字字形

时间:2014-11-06 02:46:02

标签: macos text core-text

我正在使用CoreText CTFontGetGlyphsForCharacters来获取与unicode字符对应的字形,即UniChar。现在,我想检索Ligature字符,例如 fi 。有没有办法从CoreText中检索连字字形(例如通过一系列应该组合的unichars)?

谢谢, 莫卡

1 个答案:

答案 0 :(得分:4)

在Core Text邮件列表中提供了一些有用的建议后,解决方法就是:

您不能直接从CTFont获取连字,因为没有API可以做到这一点。

您所做的是以下内容:

  1. 使用CTLineCreateWithAttributedString()从要获取其连字的字符序列中创建文本行。
  2. 确保在属性字符串上将kCTLigatureAttributeName设置为1或2以获取连字。
  3. 如果正确完成,使用字体中存在的连字,您应该得到一个CTLine,其中包含一个CTRun,其中包含一个CGGlyph,它将是您正在寻找的连字字形!
  4. 如果你不想沿着这条路走下去,唯一的另一种方法就是自己解析Open - / True Type字体表,我不建议这样做。

    希望有所帮助!