您可以使用 CTFontGetGlyphsForCharacters()
来确定字体是否具有特定代码点的字形(请注意,需要检查补充字符作为代理对):
CTFontRef font = CTFontCreateWithName(CFSTR("Helvetica"), 12, NULL);
const UniChar code_point[] = { 0xD83C, 0xDCA1 };
CGGlyph glyph[] = { 0, 0 };
bool has_glyph = CTFontGetGlyphsForCharacters(font, code_point, glyph, 2);
或者,在 Swift 中:
let font = CTFontCreateWithName("Helvetica", 12, nil)
var code_point: [UniChar] = [0xD83C, 0xDCA1]
var glyphs: [CGGlyph] = [0, 0]
let has_glyph = CTFontGetGlyphsForCharacters(font, &code_point, &glyph, 2)
如果你想检查系统将尝试从中加载字形的完整备用字体集,请检查
CTFontCopyDefaultCascadeListForLanguages()
返回的所有字体。有关备用字体列表如何创建的信息,请参阅
此问题的答案。
CTFontGetGlyphsForCharacters(...)
函数? - MirekE