Znalazłem biblioteki Python, fonttools ( PyPI ), które mogą być wykorzystane, aby to zrobić przy odrobinie Pythona skryptów.
Oto prosty skrypt, który wyświetla wszystkie czcionki, które mają określony glif:
#!/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)
Pierwszym argumentem jest punkt kodowy (dziesiętny lub szesnastkowy z 0x), a reszta to pliki czcionek do przeszukania.
Nie zawracałem sobie głowy próbą uruchomienia go dla .ttc
plików (wymaga to jakiegoś dodatkowego parametru).
Uwaga: najpierw wypróbowałem narzędzie otfinfo, ale dostałem tylko podstawowe wielojęzyczne znaki na płaszczyźnie (<= U + FFFF). W skrypcie Python znaki rozszerzonej płaszczyzny są OK.
-u
opcja nie pojawia się--help
, ale wydaje się, że istnieje. Jednak (przynajmniej w kompilacji Debian 2.105) wydaje się, że zawiera tylko podstawową płaszczyznę (do U + FFFF).-g
Opcja wie o rozszerzonych samolotów, ale to nie działa dla wszystkich czcionek.