CoreText рендеринг текста глюк - PullRequest
4 голосов
/ 02 июня 2011

Я работаю над новым приложением. Я отрисовываю различные документы из NSAttributedString, используя Core Text. У меня проблемы со странными глюками при рендеринге текста. Это не происходит с каждым документом. Кажется, что нет рифмы или причины, когда это появляется или нет.

Вот обрезанный снимок экрана, чтобы продемонстрировать проблему.

Glitch in rendering

Вот строка из того же скриншота, которая отображается правильно.

Correct rendering

Снимки экрана с того же снимка экрана и того же документа.

Когда возникает проблема, обычно есть только 2-3 последовательных строки текста, которые отображаются неправильно. Остальная часть документа в порядке.

Вот код, который я использую для визуализации текста в drawRect:

CGContextRef context = UIGraphicsGetCurrentContext();

float viewHeight = self.bounds.size.height;
CGContextTranslateCTM(context, 0, viewHeight);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextSetTextMatrix(context, CGAffineTransformMakeScale(1.0, 1.0));

CGMutablePathRef path = CGPathCreateMutable();
CGRect bounds = CGRectMake(PADDING_LEFT, -PADDING_TOP, self.bounds.size.width-20.0, self.bounds.size.height);
CGPathAddRect(path, NULL, bounds);

CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFMutableAttributedStringRef)attrString);
CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL);
CFRelease(framesetter);
CFRelease(path);
CTFrameDraw(frame, context);

Любая помощь приветствуется!

РЕДАКТИРОВАТЬ: Эта проблема, по-видимому, не существует на iPhone 4, только на 3GS, который я имею для тестирования.

Ошибка всегда находится в середине документа.

1 Ответ

0 голосов
/ 19 июня 2011

Пожалуйста, попробуйте различные настройки, чтобы повлиять на субпиксельную визуализацию текста. Вы можете увидеть различные варианты в строке 259 в https://github.com/Cocoanetics/NSAttributedString-Additions-for-HTML/blob/master/Classes/DTCoreTextLayoutFrame.m

...