テキストで欠落しているグリフを検出する
fortune画面上の通知に表示するために出力を呼び出してキャプチャするPython3 appindicatorを作成しました。 現在のフォントに対応するグリフが存在しない場合、一部のフォーチュンには16進数の正方形が含まれます。各四角は、不足しているグリフの16進Unicodeコードポイントを表しています。 ユーザーに表示する前に、16進テキストを削除したいのですが。私は、テキストを文字ごとに検査して、char.isValidCodePoint()類似または類似のものを判別できるいくつかのPython APIを見つけたいと思っていましたが、そのように見つけることはできません。 ここで調査したい解決策が見つかりましたがfonttools、ターミナルからインストールした後、Pythonプログラムをインポートできませんでしたfonttools/fontTools。 任意のアイデア-Python APIを使用するか、ターミナルを呼び出すか? アップデート#1:fonttools上記のリンクからのサンプルコードはPython2であるため機能しないことに気づきました。fonttoolsどういうわけか使用できたら、Python3スクリプトからPython2インタープリターを呼び出すことができると思います。 更新#2:たくさん読んだ後(下記の参考文献を参照)、私はそれ以降見つけましたfc-matchが、使用中のフォントを常に一意に特定できるわけではありません。Pythonで現在のフォントを取得します。 from gi.repository import Gio fontName = Gio.Settings( "org.gnome.desktop.interface" ).get_string( "font-name" ) 結果としてUbuntu 11。この結果をpango-view16進文字とともに渡すと、を含むフォントのリストが表示されますUbuntu。グリフがフォントによってレンダリングされなかった場合、私の考えでは、フォントはpango-view!の結果に表示されるべきではありません。 参照: fc-matchがどのように一致するかを知る方法は? fontconfigが特定の文字に使用する代替フォントを見つける 私はfontconfigを凝視し、fontconfigは私を凝視しました