Межстрочный интервал и выравнивание абзаца в CoreText - PullRequest
5 голосов
/ 15 марта 2011

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

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

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

Буду весьма признателен за любые советы по преодолению этих двух проблем, спасибо. enter image description here

Ответы [ 2 ]

3 голосов
/ 01 ноября 2011

Согласно документации 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.

2 голосов
/ 22 марта 2011

Кажется, единственный способ исправить это с помощью обходного пути, который состоит в создании 3 кадров для первого столбца, 1 для W, 1 для остальной части первого предложения и 1 для остальной части первого столбца.

...