Как проверить, поддерживается ли символ шрифтом
Я работаю над приложением с текстовым полем. Текст, написанный в этом поле, будет напечатан, и у меня возникла проблема с некоторыми символами, такими как эмодзи, китайские символы и т. Д., Поскольку шрифт не содержит этих символов.
Вот почему я хочу получить все символы, предоставляемые шрифтом (шрифт загружен, поэтому я могу иметь дело непосредственно с файлом или с объектом UIFont).
Я слышал оCTFontGetGlyphsForCharacters
но я не уверен, что эта функция делает то, что я хочу, и я не могу заставить ее работать.
Вот мой код:
CTFontRef fontRef = CTFontCreateWithName((CFStringRef)font.fontName, font.pointSize, NULL);
NSString *characters = @""; // emoji character
NSUInteger count = characters.length;
CGGlyph glyphs[count];
if (CTFontGetGlyphsForCharacters(fontRef, (const unichar*)[characters cStringUsingEncoding:NSUTF8StringEncoding], glyphs, count) == false)
NSLog(@"CTFontGetGlyphsForCharacters failed.");
ВотCTFontGetGlyphsForCharacters
вернутьложный, Это то, что я хочу, потому что символ '' не предоставлен используемым шрифтом.
Проблема в том, когда я заменяюNSString *characters = @""
отNSString *characters = @"abc"
, CTFontGetGlyphsForCharacters
вернуться сноваложный, Очевидно, мой шрифт обеспечивает глиф для всех символов ASCII.