回答:
私は、Pythonライブラリのfonttools(pypi)を見つけました。これを使用して、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スクリプトは拡張平面文字を検出しました。
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
-u
オプションはには表示されませんが、--help
まだ存在しているようです。ただし(少なくともDebian 2.105ビルドでは)基本的な平面(U + FFFFまで)のみがリストされているようです。-g
オプションは、拡張された面を知っているが、それはすべてのフォントでは動作しません。