Ubuntuマシンに「ttf」形式のフォントがいくつかあります。
これらのフォントのメタデータについて、それらのフォントファイルがサポートしているUnicode範囲と非Unicodeコードページについて知りたい。
どうすればできますか?
追加1:言及を忘れて、数百のフォントの情報を取得したいので、自動化できる端末ユーティリティが必要
Ubuntuマシンに「ttf」形式のフォントがいくつかあります。
これらのフォントのメタデータについて、それらのフォントファイルがサポートしているUnicode範囲と非Unicodeコードページについて知りたい。
どうすればできますか?
追加1:言及を忘れて、数百のフォントの情報を取得したいので、自動化できる端末ユーティリティが必要
回答:
fc-query
サポートされているUnicode文字セットを表示できます。他のコードページは知りませんが。
たとえば、fc-query /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
私のDebianでは次のように表示されます。
…
charset:
0000: 00000000 ffffffff ffffffff 7fffffff 00000000 ffffffff ffffffff ffffffff
0001: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
0002: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff 008873ff
…
サポートされている文字の範囲が表示されますが、どのブロックに属しているかはわかりません(どの範囲がどのブロックに属しているかを知っておく必要があります)。
たとえば、U + 0060-U + 007Fに対応する0000の4番目の列は、16進数の値です7fffffff
。これのビット値は0111 1111 1111 1111 1111 1111 1111 1111
で、右端のビットはU + 0060、左端のビットはU + 007Fです。つまり、このフォントではU + 007Fはサポートされていません。
によって提供される情報に対してビット単位の操作を行うスクリプトを作成する必要があるでしょうfc-query
。
P / S:私のユニコード情報のお気に入りサイトはFileFormat.Infoです
FontForgeをお勧めします。Ubuntuのパッケージマネージャーでは、単にとして利用できますfontforge
。
これを見つけた人への注意..
fc-queryは、文字セット出力では100%信頼できません。
たとえば、dafont.comのYogafontでは空の文字セットが表示されますが、その中には文字が含まれています。
$ fc-query yogafont.TTF
Pattern has 20 elts (size 32)
family: "Yogafont"(s)
familylang: "en"(s)
style: "Regular"(s)
stylelang: "en"(s)
fullname: "Yogafont"(s)
fullnamelang: "en"(s)
slant: 0(i)(s)
weight: 80(i)(s)
width: 100(i)(s)
spacing: 100(i)(s)
foundry: "unknown"(s)
file: "yogafont.TTF"(s)
index: 0(i)(s)
outline: FcTrue(s)
scalable: FcTrue(s)
charset:
(s)
lang: (s)
fontversion: 0(i)(s)
fontformat: "TrueType"(s)
decorative: FcFalse(s)
WW1などの描画が含まれている他のフォントは、限られた文字セットを示します。
$ fc-query WW1-A___.TTF
Pattern has 19 elts (size 32)
family: "WW1 A"(s)
familylang: "en"(s)
style: "Regular"(s)
stylelang: "en"(s)
fullname: "WW1 A"(s)
fullnamelang: "en"(s)
slant: 0(i)(s)
weight: 80(i)(s)
width: 100(i)(s)
foundry: "unknown"(s)
file: "WW1-A___.TTF"(s)
index: 0(i)(s)
outline: FcTrue(s)
scalable: FcTrue(s)
charset:
0000: 00000000 00000001 00000000 0001fffe 00000000 00000000 00000000 00000000
(s)
lang: (s)
fontversion: 65536(i)(s)
fontformat: "TrueType"(s)
decorative: FcFalse(s)