Межстрочный интервал и выравнивание абзаца в CoreText

Я использую CoreText для визуализации нескольких столбцов текста. Однако, когда я установил первую букву 1-го абзаца жирным шрифтом большего размера, чем остальная часть текста, я столкнулся с двумя проблемами (обе видны на прилагаемом изображении):

  1. Интервал под первой строкой слишком большой (я понимаю, что это потому, что 1-й символ может быть a g,y,p,q и т. Д.

  2. Строки ниже первой строки теперь не совпадают с соответствующими строками в следующем столбце.

Спасибо за любые советы по преодолению этих двух проблем.

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.

Другие вопросы по тегам