web-dev-qa-db-ja.com

Ubuntuのフォント* .ttfファイルからサポートされているUnicode範囲を取得する

Ubuntuマシンに「ttf」形式のフォントがいくつかあります。

それらのフォントのいくつかのメタデータ、それらのフォントファイルがサポートしているユニコード範囲と非ユニコードコードページについて知りたいです。

どうすればいいですか?

追加1:数百のフォントの情報を取得したいので、自動化できる何らかのターミナルユーティリティが必要です。

9
ShockwaveNN

fc-queryは、サポートされているUnicode文字セットを表示できます。しかし、他のコードページは知りません。

たとえば、私のDebianのfc-query /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttfはこれを示しています:

…
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

8
syockit

これを見つけた人への注意..

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)
1
Paul J

私はお勧めします FontForge 。 Ubuntuのパッケージマネージャーでは、単にfontforgeとして利用できます。

1