Определение того, может ли шрифт отображать символ Unicode в Cocoa Touch - PullRequest
4 голосов
/ 22 апреля 2010

Есть ли способ определить, может ли шрифт отображать определенный символ Юникода в Какао? Можно ли указать замещающий символ по умолчанию?

Ответы [ 3 ]

3 голосов
/ 29 ноября 2010

Вы можете использовать CGFontGetGlyphWithGlyphName () для старых версий iOS iOS (2.0). Apple, похоже, не документирует имена глифов, но я считаю, что они соответствуют этому списку Adobe:

http://partners.adobe.com/public/developer/en/opentype/glyphlist.txt

Например, глиф для é (U + 00E9) называется «eacute» и код для получения глифа будет:

CFStringRef name = CFStringCreateWithCString(NULL, "eacute", kCFStringEncodingUTF8);
CGGlyph glyph = CGFontGetGlyphWithGlyphName(font, name);
3 голосов
/ 22 апреля 2010

Проверьте CTFontGetGlyphsForCharacters в структуре Core Text. Если он возвращает ноль для индекса глифа данного символа Unicode, то этот символ не поддерживается в этом шрифте. Функция возвращает false, если ни один из глифов не может быть найден.

1 голос
/ 27 ноября 2015

Поскольку это на iOS, вам может понадобиться создать или найти приложение, которое делает это. В конечном счете, если информация присутствует для любого отдельного глифа, она находится в таблицах в самом файле шрифта, и это довольно низкий уровень работы C.

Намного проще создать инструмент, который проверяет шрифт и показывает глиф и индекс глифа (значение CGGlyph или NSGlyph), а затем использует индекс глифа.

...