нет поддержки уни-кода в TTSearchlightLabel - PullRequest
1 голос
/ 01 июня 2011

класс TTSearchlightLabel в структуре Three20 игнорирует пробелы и латинские буквы.Его код рендеринга выглядит так:

CGContextSelectFont(context, [_font.fontName UTF8String], _font.pointSize, kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetTextMatrix(context, CGAffineTransformScale(CGAffineTransformIdentity, 1, -1));
CGContextSetFillColorWithColor(context, _textColor.CGColor);
CGContextShowTextAtPoint(context, x, y, [self.text UTF8String], self.text.length);

Я не очень знаком с этим рендерингом низкого уровня, но кто-то от этого избавился?Я пробовал также kCGEncodingFontSpecific, но становится даже хуже.

Полагаю, проблема не так быстро решается, есть ли альтернатива таким текстовым эффектам?

Большое спасибо, Гюнтер

1 Ответ

0 голосов
/ 15 марта 2012

В документации для параметра кодирования CGContextSelectFont указано:

textEncoding Значение CGTextEncoding, которое указывает кодировку, используемую для шрифта.Описание доступных значений см. В разделе « CGTextEncoding ».

Возможные значения:

kCGEncodingFontSpecific Встроенная кодировкашрифта.

и

kCGEncodingMacRoman Кодировка MacRoman.MacRoman - это вариант ASCII, изначально созданный для использования в Mac OS, в котором символы 127 и ниже являются ASCII, а символы 128 и выше являются неанглийскими символами и символами.

Измените параметр на kCGEncodingFontSpecificи он должен отображаться правильно.

...