Межстрочный интервал и выравнивание абзаца в CoreText
Я использую CoreText для визуализации нескольких столбцов текста. Однако, когда я установил первую букву 1-го абзаца жирным шрифтом большего размера, чем остальная часть текста, я столкнулся с двумя проблемами (обе видны на прилагаемом изображении):
Интервал под первой строкой слишком большой (я понимаю, что это потому, что 1-й символ может быть a g,y,p,q и т. Д.
Строки ниже первой строки теперь не совпадают с соответствующими строками в следующем столбце.
Спасибо за любые советы по преодолению этих двух проблем.
2 ответа
Кажется, единственный способ исправить это с помощью обходного пути, который состоит в том, чтобы создать 3 кадра для первого столбца,1 для W, 1 для остальной части первого предложения и 1 для остальной части первого столбца.
Согласно документации kCTParagraphStyleSpecifierMaximumLineHeight должен был решить проблему, но, к сожалению, похоже, не работает по крайней мере на IOS 4.3.
CTParagraphStyleSetting theSettings[5] =
{
{ kCTParagraphStyleSpecifierParagraphSpacing, sizeof(CGFloat), &spaceBetweenParaghraphs },
{ kCTParagraphStyleSpecifierParagraphSpacingBefore, sizeof(CGFloat), &topSpacing },
{ kCTParagraphStyleSpecifierLineSpacing, sizeof(CGFloat), &spaceBetweenLines },
{ kCTParagraphStyleSpecifierMinimumLineHeight, sizeof(CGFloat), &lineHeight},
{ kCTParagraphStyleSpecifierMaximumLineHeight, sizeof(CGFloat), &lineHeight}
};
CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(theSettings, 5);
Чтобы быть честным документация говорит, что она доступна в OS v10.5 и позже.
kCTParagraphStyleSpecifierMaximumLineHeight
:
Максимальная высота, которую будет занимать любая строка в кадре, независимо от размера шрифта или размера любой прикрепленной графики. Глифы и графики, превышающие эту высоту, будут перекрывать соседние линии. Максимальная высота 0 означает отсутствие ограничения высоты строки. Это значение всегда неотрицательно.
Тип: CGFloat.
По умолчанию: 0,0.
Применение: CTFramesetter.
Доступный в Mac OS X v10.5 и позже.
Объявлен в CTParagraphStyle.h.