Я нашел библиотеку 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)
Первый аргумент - это кодовая точка (десятичная или шестнадцатеричная с 0x), а остальные - файлы шрифтов для поиска.
Я не стал пытаться заставить его работать для .ttc
файлов (где-то требуется дополнительный параметр).
Примечание. Сначала я попробовал инструмент otfinfo, но получил только базовые многоязычные символы плоскости (<= U + FFFF). Скрипт python находит символы расширенной плоскости в порядке.
-u
опция не появляется в--help
, но, кажется, все еще существует. Однако (по крайней мере, в сборке Debian 2.105) кажется, что он перечисляет только базовую плоскость (до U + FFFF).-g
Опция знает о расширенных планах, но это не работает для всех шрифтов.