2014-11-06 32 views
0

我正在使用CoreText CTFontGetGlyphsForCharacters來獲得對應於unicode chars的glyphs,即UniChar。現在,我想要檢索Ligature字符,例如fi。有沒有辦法從CoreText中檢索連字符號(例如通過一系列應該組合的unichars)?CoreText:獲取連字glyph

感謝, 莫卡

回答

3

後從核心文本的郵件列表一些有用的建議,這裏是解決方案:

你不能直接從CTFont獲得連字,因爲沒有API,做到這一點。

你做的,而不是什麼如下:

  1. 使用CTLineCreateWithAttributedString()創建從你想獲得其結紮該字符序列的文本行。
  2. 確保在屬性字符串上將kCTLigatureAttributeName設置爲1或2以獲取連字。
  3. 如果正確完成,使用字體中存在的連字符,您應該得到一個CTLine,其中包含一個CTRun,其中包含一個CGGlyph,這將是您正在查找的結紮字形!

如果你不想走這條路線,唯一的另一種方式似乎是自己解析Open/True Type字體表,我不建議這樣做。

希望有幫助!