TTFファイルで定義されているUnicodeコードポイントを見つける方法は?

TTFファイルで定義されているUnicodeコードポイントを見つける方法は?

TrueTypeフォントファイルで定義されている実際のグリフを持つUnicode文字を自動的に確認する必要があります。どうすればいいですか?テキストエディタで.ttfファイルを開くときに表示される番号を理解する方法に関する情報が見つからないようです。

答え1

オルフェンについて有望に見えます:

-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合字(fl)を知っています。

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

答え2

Pythonライブラリが見つかりました。フォントツールピピ)これはいくつかの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)

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

ファイルに対して機能するようにしようとしませんでした.ttc(いくつかの追加パラメータが必要です)。

注:最初にotfinfoツールを試してみましたが、基本的な多言語単純文字(<= U + FFFF)のみを取得しました。 Pythonスクリプトは通常、拡張された一般的な文字を見つけることができます。

答え3

簡単に:

fc-match --format='%{charset}\n' "DejaVu Sans Mono"

関連情報