フォントがココアタッチでユニコード文字をレンダリングできるかどうかを判断する

StackOverflow https://stackoverflow.com/questions/2687662

質問

フォントがココアで特定のユニコード文字をレンダリングできるかどうかを判断する方法はありますか?または、デフォルトの代替文字を指定することは可能ですか?

役に立ちましたか?

解決

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インデックスを使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top