Как установить ведущий в CoreText? - PullRequest
0 голосов
/ 13 сентября 2010

Вы можете получить его с помощью CTFontGetLeading (aCTFont), но как его УСТАНОВИТЬ?

Может кто-нибудь объяснить, пожалуйста?

Есть ли другой способ обойти это? Вам нужно вручную устанавливать расстояние между строками?

Ответы [ 2 ]

2 голосов
/ 06 июля 2012

Я обнаружил, что когда я использовал несколько гарнитур в одном абзаце, установки минимальной и максимальной высоты строки было недостаточно. Я также должен был установить межстрочный интервал равным 0, иначе линии имели бы непоследовательное ведение. Вот мое полное решение:

CGFloat lineHeight = 68.0f;
CGFloat lineSpacing = 0.0f;

CTParagraphStyleSetting setting[4] = {
    {kCTParagraphStyleSpecifierMaximumLineHeight, sizeof(CGFloat), &lineHeight},
    {kCTParagraphStyleSpecifierMinimumLineHeight, sizeof(CGFloat), &lineHeight},
    {kCTParagraphStyleSpecifierMaximumLineSpacing, sizeof(CGFloat), &lineSpacing},
    {kCTParagraphStyleSpecifierMinimumLineSpacing, sizeof(CGFloat), &lineSpacing}
};

CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(setting, 4);

NSRange fullRange = NSMakeRange(0, [mutString length]);

[mutString addAttributes:[NSDictionary dictionaryWithObjectsAndKeys:(__bridge id)paragraphStyle, 
                          (NSString*)kCTParagraphStyleAttributeName, nil]
                   range:fullRange];

CFRelease(paragraphStyle);
0 голосов
/ 14 сентября 2010

Я получил решение здесь: http://www.iphonedevsdk.com/forum/iphone-sdk-development/59101-how-set-leading-coretext.html

По сути, просто установите атрибут kCTParagraphStyleSpecifierMinimumLineHeight.Вы можете найти его в CTParagraphStyle.h

...