フォントがココアタッチでユニコード文字をレンダリングできるかどうかを判断する
-
30-09-2019 - |
質問
フォントがココアで特定のユニコード文字をレンダリングできるかどうかを判断する方法はありますか?または、デフォルトの代替文字を指定することは可能ですか?
解決
iOSのiOS(2.0)の古いバージョンには、cgfontgetglyphwithglyphname()を使用できます。 AppleはGlyphの名前を文書化していないようですが、この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);
他のヒント
チェックアウト CTFontGetGlyphsForCharacters
コアテキストフレームワークで。特定のUnicode文字のGlyphインデックスでゼロを返す場合、その文字はそのフォントではサポートされていません。グリフのいずれかが見つからなかった場合、関数はfalseを返します。
iOSにあるため、これを行うアプリを構築または見つける必要がある場合があります。最終的に、個々のグリフに情報が存在する場合、それはフォントファイル自体のテーブルにあり、それはかなり低いレベルCの動作です。
フォントを検査し、GlyphおよびGlyphインデックス(CGGLYPHまたはNSGLYPH値)を表示するツールを構築し、Glyphインデックスを使用します。
所属していません StackOverflow