GNU/Linux >> Tutoriales Linux >  >> Linux

Averiguar qué caracteres admite una fuente determinada

El fontconfig los comandos pueden generar la lista de glifos como una lista compacta de rangos, por ejemplo:

$ fc-match --format='%{charset}\n' 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

Usa fc-query por un .ttf archivo y fc-match para un nombre de fuente instalado.

Es probable que esto no implique la instalación de ningún paquete adicional ni la traducción de un mapa de bits.

Usa fc-match --format='%{file}\n' para verificar si la fuente correcta coincide.


El programa X xfd puede hacer esto. Para ver todos los caracteres de la fuente "DejaVu Sans Mono", ejecute:

xfd -fa "DejaVu Sans Mono"

Se incluye en el paquete x11-utils en Debian/Ubuntu, xorg-x11-apps en Fedora/RHEL y xorg-xfd en Arch Linux.


Aquí hay un método que usa la biblioteca Python de fontTools (que puede instalar con algo como pip install fonttools ):

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

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

with TTFont(
    sys.argv[1], 0, allowVID=0, ignoreDecompileErrors=True, fontNumber=-1
) as ttf:
    chars = chain.from_iterable(
        [y + (Unicode[y[0]],) for y in x.cmap.items()] for x in ttf["cmap"].tables
    )
    if len(sys.argv) == 2:  # print all code points
        for c in chars:
            print(c)
    elif len(sys.argv) >= 3:  # search code points / characters
        code_points = {c[0] for c in chars}
        for i in sys.argv[2:]:
            code_point = int(i)   # search code point
            #code_point = ord(i)  # search character
            print(Unicode[code_point])
            print(code_point in code_points)

El script toma como argumentos la ruta de la fuente y, opcionalmente, codifica puntos/caracteres para buscar:

$ python checkfont.py /usr/share/fonts/**/DejaVuSans.ttf
(32, 'space', 'SPACE')
(33, 'exclam', 'EXCLAMATION MARK')
(34, 'quotedbl', 'QUOTATION MARK')
…

$ python checkfont.py /usr/share/fonts/**/DejaVuSans.ttf 65 12622  # a ㅎ
LATIN CAPITAL LETTER A
True
HANGUL LETTER HIEUH
False

fc-query my-font.ttf le dará un mapa de glifos admitidos y todas las configuraciones regionales para las que la fuente es adecuada según fontconfig

Dado que casi todas las aplicaciones modernas de Linux están basadas en fontconfig, esto es mucho más útil que una lista Unicode sin formato

El formato de salida real se analiza aquíhttp://lists.freedesktop.org/archives/fontconfig/2013-September/004915.html


Linux
  1. Cómo averiguar qué hace un comando de Linux

  2. ¿Es posible averiguar qué programa o secuencia de comandos creó un archivo determinado?

  3. ¿Qué es la vulnerabilidad del controlador de fuentes CVE-2015-2426?

  4. Averiguar si se entregó un mensaje a través de tcp

  5. ¿Qué caracteres están prohibidos en los nombres de directorio de Windows y Linux?

¿Cómo saber qué grupo tiene un usuario determinado?

¿Cómo puedo saber qué versión de Linux estoy ejecutando?

¿Cuál es el comando de Unix para averiguar qué archivo ejecutable corresponde a un comando determinado?

¿Qué podría causar caracteres extraños en Vim?

Descubrir qué está girando el disco duro

¿Qué herramienta puede obtener una vista previa de la fuente de la consola?