当代码点符合64位值时,确定特定的Unicode字体是否包含代码点的字形相对容易。
if (CTFontGetGlyphsForCharacters(ctFont, chars, glyphs, 1)) {
// It exists
}
但是CTFontGetGlyphsForCharacters采用了一个16位类型的UniChar数组。有没有一种方法可以确定字形是否可用于超出此范围的字符?例如,U + 1F4A9?
答案 0 :(得分:0)
这就是我最后使用的内容(其中codePoint是您要测试的32位代码点):
UniChar characters[2];
CFIndex length = (CFStringGetSurrogatePairForLongCharacter(codePoint, characters) ? 2 : 1);
CGGlyph glyphs[2];
if (CTFontGetGlyphsForCharacters(ctFont, characters, glyphs, length)) {
// It Exists
}