2

コード ポイントが 64 ビット値に収まる場合、特定の Unicode フォントにコード ポイントのグリフが含まれているかどうかを判断するのは比較的簡単です。

if (CTFontGetGlyphsForCharacters(ctFont, chars, glyphs, 1)) {
    // It exists
}

しかし、CTFontGetGlyphsForCharacters は、16 ビット タイプである UniChar の配列を取ります。これ以外の文字でグリフを使用できるかどうかを判断する方法はありますか? たとえば、U+1F4A9?

4

1 に答える 1

0

これは私が使用したものです(codePointはテストしたい32ビットコードポイントです):

    UniChar characters[2];
    CFIndex length = (CFStringGetSurrogatePairForLongCharacter(codePoint, characters) ? 2 : 1);

    CGGlyph glyphs[2];
    if (CTFontGetGlyphsForCharacters(ctFont, characters, glyphs, length)) {
        // It Exists
    }
于 2013-06-02T22:18:56.497 に答える