linux - type - Scoprire quali caratteri supporta un carattere




ttf vs otf (6)

Ho appena avuto lo stesso problema e ho creato un HOWTO che fa un ulteriore passo avanti, eseguendo una regexp di tutti i punti di codice Unicode supportati.

Se vuoi solo la serie di codepoint, puoi usarla quando dai ttx a ttx xml in Chrome devtools, dopo aver eseguito ttx -t cmap myfont.ttf e, probabilmente, rinominando myfont.ttx in myfont.xml per invocare la modalità xml di Chrome:

function codepoint(node) { return Number(node.nodeValue); }
$x('//cmap/*[@platformID="0"]/*/@code').map(codepoint);

(Si basa anche su fonttools dal suggerimento di gilamesh, sudo apt-get install fonttools se si è su un sistema ubuntu.)

Come estrarre l'elenco di caratteri Unicode supportati da un TrueType o da un font OpenType incorporato su Linux?

C'è uno strumento o una libreria che posso usare per elaborare un file .ttf o .eot e creare un elenco di punti di codice (come U + 0123, U + 1234, ecc.) Forniti dal font?


I comandi fontconfig possono generare l'elenco di glifi come un elenco compatto di intervalli, ad esempio:

$ fc-match --format=%{charset} OpenSans
20-7e a0-17f 192 1a0-1a1 1af-1b0 1f0 1fa-1ff 218-21b 237 2bc 2c6-2c7 2c9
2d8-2dd 2f3 300-301 303 309 30f 323 384-38a 38c 38e-3a1 3a3-3ce 3d1-3d2 3d6
400-486 488-513 1e00-1e01 1e3e-1e3f 1e80-1e85 1ea0-1ef9 1f4d 2000-200b
2013-2015 2017-201e 2020-2022 2026 2030 2032-2033 2039-203a 203c 2044 2070
2074-2079 207f 20a3-20a4 20a7 20ab-20ac 2105 2113 2116 2120 2122 2126 212e
215b-215e 2202 2206 220f 2211-2212 221a 221e 222b 2248 2260 2264-2265 25ca
fb00-fb04 feff fffc-fffd

Utilizzare fc-query per un file .ttf e fc-match per un nome di carattere installato.

Questo probabilmente non implica l'installazione di pacchetti aggiuntivi e non implica la traduzione di una bitmap.


Il programma Linux xfd può farlo. È fornito nella mia distribuzione come 'xorg-xfd'. Per vedere tutti i caratteri di un font, puoi eseguirlo nel terminale:

xfd -fa "DejaVu Sans Mono"

Puoi farlo su Linux in Perl usando il modulo Font::TTF .


fc-query my-font.ttf ti fornirà una mappa di glifi supportati e tutte le impostazioni locali che il font è appropriato per secondo fontconfig

Dal momento che praticamente tutte le moderne app di linux sono basate su fontconfig, questo è molto più utile di un elenco unicode non elaborato

Il formato di output effettivo è discusso qui http://lists.freedesktop.org/archives/fontconfig/2013-September/004915.html


Ecco un metodo che utilizza il modulo FontTools (che puoi installare con qualcosa come pip install fonttools ):

#!/usr/bin/env python
from itertools import chain
import sys

from fontTools.ttLib import TTFont
from fontTools.unicode import Unicode

ttf = TTFont(sys.argv[1], 0, verbose=0, allowVID=0,
                ignoreDecompileErrors=True,
                fontNumber=-1)

chars = chain.from_iterable([y + (Unicode[y[0]],) for y in x.cmap.items()] for x in ttf["cmap"].tables)
print(list(chars))

# Use this for just checking if the font contains the codepoint given as
# second argument:
#char = int(sys.argv[2], 0)
#print(Unicode[char])
#print(char in (x[0] for x in chars))

ttf.close()

Lo script accetta come argomento il percorso del carattere:

python checkfont.py /path/to/font.ttf






true-type-fonts