如何逐个绘制布局字形 - 核心文本

时间:2012-09-29 00:31:50

标签: cocoa-touch cocoa fonts core-graphics core-text

我有一个字符串可以在Core Text中绘制,如下所示:

CGContextShowGlyphsAtPoint(context, 0, 0, glyphs, glyphCount);

效果很好。现在我需要单独绘制每个字形,在它们最终使用上面的那个很好的实用函数绘制的相同位置。而且我不是用英语做的,或者......有时在字形(diacritic)下方的字形下方有一个字形。

显然我需要这样的东西:

 CGPoint pt = CGPointMakeZero;
 for (int i = 0; i < glyphCount; i++) {
     CGContextShowGlyphsAtPoint(context, pt.x, pt.y, glyphs[i], 1);

     pt.x += <some quantity>
     pt.y += <some quantity>
 }

不幸的是,我还没有弄清楚“某些数量”应该是什么......来自CGContextGetAdvancesForGlyphs和/或CTFontGetVerticalTranslationsForGlyphs和/或CGContextGetGlyphBBoxes的某些指标组合是我的第一个猜测,但我尚未得到它的工作。

任何人都有解决方案/其他想法吗?

如果你想要一个测试字符串,请尝试అక్త్రిన్。

(背景:我需要逐个绘制字形,因为我想在我的应用程序中对各个字形的外观进行自定义)。

1 个答案:

答案 0 :(得分:1)

这里的派对很晚但这个问题/答案组合显示了如何逐行计算布局,然后按字形计算字形。

Core Text calculate letter frame in iOS