Нахождение ограничения текста реагирует в Базовом тексте

Я пытаюсь найти границы строки текста в Базовом тексте. Для простоты предположите, что она имеет отдельный символ. В данный момент я использую следующий метод:

line = CTLineCreateWithAttributedString(attrString);
rect = CTLineGetImageBounds(line, context);

Это работает большинство времен, но для некоторых символов, как математический курсив d (Unicode: 0x1D451) или математический курсив q (Unicode: 0x1D45E), ширина немного коротка.

Я пытался использовать CTLineGetTypographicBounds() или CTFramesetterSuggestFrameSizeWithConstraints, но они не помогли ни одному (я думаю, что они используют усовершенствование глифа для нахождения ширины, не ее графической ширины.), Поскольку сам шрифт не является курсивом, я также не могу использовать наклонный угол для исправления этого.

Я пытался получить доступ к глифам непосредственно и использовать CTFontCreatePathForGlyph(), но отказавший, поскольку CGGlyph и UniChar составляют и 16 битов, и мне нужны 32-разрядные символы.

Кто-либо знает, делаю ли я что-то не так? Если так, каков правильный путь?

Обновление:

Для проверки это не проблема, связанная со шрифтом, я использовал различные шрифты. Проблема существует даже для символов ASCII в Курсиве Arial.

Обновление:

Проигнорируйте мое предыдущее обновление! Оказывается, что этот (проблема с Курсивом Arial) был моей собственной ошибкой. Первая проблема все еще стоит все же.

7
задан mohsenr 31 May 2010 в 23:54
поделиться

2 ответа

В соответствии с моим отчетом об ошибке, очевидно, это проблема CoreText, возникающая в редких случаях. Сообщу вам, как только найду исправление.

Обновление: 15 марта '12 г.

Я забыл обновить это раньше, но это исправлено. Исправление находится в OS X Lion / iOS 5.

3
ответ дан 7 December 2019 в 14:29
поделиться

Насколько я могу судить, CTLineGetImageBounds - правильная функция для использования. Я предлагаю заполнить отчет об ошибке в RadarWeb .

1
ответ дан 7 December 2019 в 14:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: