Взгляните на эти строки, это может помочь понять использование функции:
CGGlyph* glyphs = new CGGlyph[count];
CGSize* advs = new CGSize[count];
BOOL ret = CTFontGetGlyphsForCharacters(fntRef, buffer, glyphs, count);
float sum = CTFontGetAdvancesForGlyphs (fntRef, kCTFontOrientationHorizontal, glyphs, advs, count);
- буфер содержит вашу строку символов (UniChar)
- вызовCTFontGetGlyphsForCharacters заполнит массив глифы .
- вызов CTFontGetAdvancesForGlyphs заполнит массив advs шириной каждого символа.
Теперь вы можете делать следующее:
CGPoint* positions = new CGPoint[count];
for(int i=0;i<count;++i) {
positions[i] = CGPointMake(x, y);
x += advs[i].width + someAdditionalOffset;
}
CGContextShowGlyphsAtPositions(context, glyphs, positions, count);
Ваша строка символов будет отображаться в соответствии с позициями x, y, которые вы установили для каждого символа.Этот набор функций очень полезен для создания пользовательских выравниваний, кернинга и т. Д.