web-dev-qa-db-ja.com

TTFファイルで定義されているUnicodeコードポイントを確認するにはどうすればよいですか?

True Type Fontファイルで定義されている実際のグリフがどのUnicode文字にあるかを確認するプロセスを自動化する必要があります。どうやってそれを回避するのですか?テキストエディターで.ttfファイルを開いたときに表示される数値を理解する方法に関する情報が見つからないようです。

11
Sanuuu

python library、 fonttoolspypi )が見つかりました=pythonスクリプト。

以下は、グリフを指定したすべてのフォントをリストする簡単なスクリプトです。

#!/usr/bin/env python3

from fontTools.ttLib import TTFont
import sys

char = int(sys.argv[1], base=0)

print("Looking for U+%X (%c)" % (char, chr(char)))

for arg in sys.argv[2:]:
    try:
        font = TTFont(arg)

        for cmap in font['cmap'].tables:
            if cmap.isUnicode():
                if char in cmap.cmap:
                    print("Found in", arg)
                    break
    except Exception as e:
        print("Failed to read", arg)
        print(e)

最初の引数はコードポイント(10進数または0xのヘキサ)で、残りは調べるフォントファイルです。

私はそれを.ttcファイル(追加のパラメーターがどこかに必要です)。

注:最初にotfinfoツールを試しましたが、基本的な多言語プレーン文字(<= U + FFFF)しか得られませんでした。 pythonスクリプトは、拡張平面文字を検索しますOK。

7
Jan Hudec

otfinfo は有望に見えます:

-u, --unicode
  Print each Unicode code point supported by the font, followed by
  the glyph number representing that code point (and, if present,
  the name of the corresponding glyph).

たとえば、DejaVuSans-Boldはfl ligature(fl)を知っています。

$ otfinfo -u /usr/share/fonts/TTF/DejaVuSans-Bold.ttf |grep ^uniFB02
uniFB02 4899 fl
6
michas