LinuxでTrueTypeまたは埋め込みOpenTypeフォントからサポートされているUnicode文字のリストを抽出するにはどうすればよいですか?フォントでサポートされている文字の検索
.ttfファイルや.eotファイルを処理したり、フォントで提供されるコードポイント(U + 0123、U + 1234など)のリストを作成するためのツールやライブラリはありますか?
LinuxでTrueTypeまたは埋め込みOpenTypeフォントからサポートされているUnicode文字のリストを抽出するにはどうすればよいですか?フォントでサポートされている文字の検索
.ttfファイルや.eotファイルを処理したり、フォントで提供されるコードポイント(U + 0123、U + 1234など)のリストを作成するためのツールやライブラリはありますか?
はあなたのような何かをインストールすることができFontToolsモジュールを用いた方法(ありますスクリプトは引数としてフォントパスを取る
#!/usr/bin/env python
from itertools import chain
import sys
from fontTools.ttLib import TTFont
from fontTools.unicode import Unicode
ttf = TTFont(sys.argv[1], 0, verbose=0, allowVID=0,
ignoreDecompileErrors=True,
fontNumber=-1)
chars = chain.from_iterable([y + (Unicode[y[0]],) for y in x.cmap.items()] for x in ttf["cmap"].tables)
print(list(chars))
# Use this for just checking if the font contains the codepoint given as
# second argument:
#char = int(sys.argv[2], 0)
#print(Unicode[char])
#print(char in (x[0] for x in chars))
ttf.close()
:pip install fonttools
)
python checkfont.py /path/to/font.ttf
Font::TTFモジュールを使用して、PerlのLinuxでこれを行うことができます。
ttf/otfフォントの文字コードポイントは、CMAPテーブルに格納されます。
TTXを使用して、CMAPテーブルのXML表現を生成できます。 http://www.letterror.com/code/ttx/index.html
TTXを実行したら、コマンド "ttx.exe -tcmap MyFont.ttf"を実行すると、 "MyFont.ttx"というファイルが出力されます。それをテキストエディタで開き、フォント内で見つかったすべての文字コードを表示する必要があります。
ありがとう、それは役に立ちます。 –
私はちょうど同じ問題を抱えており、さらに進んでHOWTOを作成し、サポートされているすべてのUnicodeコードポイントの正規表現をベーキングしました。
あなただけのコードポイントの配列をしたい場合はクロームデベロッパーツールであなたのttx
XMLで覗いたとき、あなたはChromeのXMLモードを呼び出すためにmyfont.xml
にmyfont.ttx
の名前を変更し、おそらく、ttx -t cmap myfont.ttf
を実行した後、これを使用することができます。
function codepoint(node) { return Number(node.nodeValue); }
$x('//cmap/*[@platformID="0"]/*/@code').map(codepoint);
を
(またgilameshの提案からfonttools
に依存している;。sudo apt-get install fonttools
あなたがUbuntuのシステムにしている場合)ここで
fc-query my-font.ttf
はあなたのサポートグリフとロケールすべてのマップを与えるフォントがに適し
現代のLinuxアプリケーションはすべてfontconfigベースなので、これは生のUnicodeリストよりもはるかに便利です
ここで実際の出力形式について説明します。 http://lists.freedesktop.org/archives/fontconfig/2013-September/004915.html
'int(sys.argv [2]、0)'はおそらく、おそらく特殊文字を探したがっているので、ほとんどの場合 "無効なリテラル"で失敗します。代わりに 'ord(sys.argv [2] .decode( 'string_escape')。decode( 'utf-8'))'を使用してください。 –
とにかく、このスクリプトは 'python-fontconfig'に基づいています。http://unix.stackexchange.com/a/268286/26952 –
@SkippyleGrandGourouその文は正しいようですか? 'sys.argv [1]'を 'TTFont()'に渡しますか? – Carpetsmoker