
Imprima todos los carácter unicode; Vea todos los posibles glifos en su terminal
¹ Bueno ... no todos los personajes. No queremos códigos de control y tal, por lo que los caracteres en las categorías C , M y Z no se imprimirán. (Consulte la tabla de valores de categoría general al final del script).
Si no tiene /usr/share/unicode/UnicodeData.txt en su sistema, se utilizará automáticamente una versión en caché en este script. (V14.0.0, actual a septiembre de 2021 desde unicode.org).
Si bien FontTable envía todos los caracteres Unicode imprimibles a STDOut, qué caracteres se muestran realmente depende de las fuentes que haya instalado en su sistema y si su terminal está configurado para usarlos.
Opcionalmente, se puede especificar una fuente particular que usa -f FontName para restringir la pantalla a los glifos definidos en esa fuente. (Requiere FontConfig y Sixel Graphics).
Nota: El archivo "Unicodedata.txt" del Consorcio Unicode no enumera los caracteres CJK, pero se pueden encontrar en la base de datos de Unihan adyacente. Si desea verlos también, especifique "-s"
Es un script de shell. Simplemente descargue fonttable y ejecutarlo.
Esto se inspiró en la línea de una línea favorita de 8 bits de muchos jóvenes:

FORT=0TO255:?CHR$(T);:NEXT:RUN
Este es el equivalente moderno, una forma de ver cada glifo válido. Por supuesto, no podemos usar un bucle simple ya que Unicode tiene un gran espacio de direcciones y solo una pequeña fracción de los puntos de código son caracteres válidos. La solución es solo imprimir caracteres especificados en el archivo unicodedata.txt.
Del mismo modo, no todos los puntos de código CJK en el rango de ideográficos unificados asignados son un carácter. Fonttable imprime solo caracteres que la base de datos Unihan sabe que existen. (Unihan_DictionaryIndices.txt).
A partir de Unicode 14 (2021), cuento casi 32,000 caracteres imprimibles en unicodedata.txt. Además, hay más de 70,000 caracteres CJK conocidos en la base de datos Unihan.
$ ./fonttable -s | awk '{print length($1)}'
31959
70805
(Algunas personas reclaman números mucho más altos porque están usando propList.txt y contando regiones asignadas , ya sea que existan caracteres o no en esos puntos de código).
fonttable: Show every Unicode character in your terminal.
Usage: fonttable [ -csu ] [ START..END ] [ -f FONT [ -p POINTSIZE ]]
START..END
Show range from START to END, inclusive. (Hexadecimal).
START defaults to 0, END defaults to infinity.
Multiple ranges are allowed: fonttable 2590..f 1fb00..ff
-f FONT | --font-name FONT
Display every Unicode glyph which is defined in FONT as
a sixel image directly in the terminal.
-p POINTSIZE | --point-size POINTSIZE
Change the size of the font rendered by -f.
-d FONT | --defined-in FONT
Like -f, but displays using the default terminal font,
not graphics. Useful to quickly see character coverage.
-c | --cache
Use cached UnicodeData.txt embedded in this script.
Usually the cached version is only used if the file is
not in /usr/share/unicode/ or the current directory.
-s | --show-unihan
Also show CJK data from the Unihan database.
The default is to not show characters that Unicode has
designated as mappings to other standards.
-u | --unihan-cache
Use a cached copy of the list of valid CJK characters
instead of looking for Unihan_DictionaryIndices.txt.
UnicodeData.txt contains around 30,000 characters.
Unihan adds another 70,000.
La opción -f / - -font -name es como la opción de rango, pero muestra solo los puntos de código que se definen en una fuente específica (y que están marcadas como caracteres normales e imprimibles en Unicode). Por ejemplo:
fonttable -f NotoSans
Las fuentes pueden especificarse mediante nombre de archivo:
fonttable -f /usr/share/fonts/X11/misc/neep-iso10646-1-10x20.pcf.gz
FontTable usa gráficos Sixel para dibujar la fuente solicitada. Use la opción de -d FONT si desea usar una fuente específica para limitar qué puntos de código se muestran, pero aún así mostrarlos en la fuente predeterminada.
Error: Actualmente, el manejo de Sixel es bastante ingenuo. El terminal no se consulta si admite gráficos de Sixels, ni cuántos píxeles altos debe tener cada carácter, ni los colores de texto adecuados.
Su máquina debe tener FontConfig, lo que será cierto para Debian Gnu/Linux y derivados, pero puede no ser cierto universalmente. Además, el nombre de la fuente debe en un formato que le gusta a FontConfig. Por ejemplo:
fonttable -f LTCCaslon # Works
fonttable -f "LTC Caslon" # Works
fonttable -f "LTC Caslon Swash Long Regular" # Works
Pero, como sucede:
fonttable -f Caslon # Does Not Work
fonttable -f "LTC Caslon Swash Long" # Does Not Work
Si no está seguro del nombre, pruebe fc-list | grep -i caslon . También puede especificar un nombre de archivo de fuentes directamente. Por ejemplo:
fonttable ~/.local/share/fonts/P22CezannePro.ttf
Algunas fuentes decorativas y expertas definen glifos que no tienen mapeos para unicodos puntos de código o ese mapa para uso privado. Esos personajes no serán encontrados por este guión. Por ejemplo:
fonttable -f AdobeWoodType # Shows no glyphs!
Sin embargo, con cierto esfuerzo, uno puede mover tales glifos a puntos de código unicode utilizando un programa como FontForge.

Diferentes programas y fuentes terminales le darán resultados drásticamente diferentes.
XXX TODO
Esta sección debe rehacerse ya que los terminales probados ahora son bastante antiguos.


GNOME-terminal-3.38.3 usa múltiples fuentes usando FreeType. Para algunos personajes, como ⑫ (número de círculos doce), los glifos son demasiado amplios para la celda de caracteres y se superponen mal. Parece que no hay configuración para decirle a Gnome-terminal que se encoja o trunce los glifos demasiado anchos.

El terminal de Gnome tiene muy pocas preferencias de usuarios establecibles, pero puede establecer caracteres de "ancho ambiguo" para que sean ancho (dos celdas) en lugar de estrecho. Esto ayuda bastante, al menos en esta prueba de tortura.

Sin embargo, establecer ancho ambiguo a ancho no es una panacea. Por ejemplo, si el glifo está siendo reemplazado por una fuente de una relación de aspecto muy diferente desde su valor predeterminado. Por ejemplo, esto es lo que sucede cuando se elige la fuente "Dec Terminal" (que es dos veces más alta que amplia):

Tenga en cuenta que con esta fuente predeterminada, los glifos se superponen a pesar de que el ancho ambiguo se establece en amplio.
Al igual que GNOME -terminal, Xterm también usa múltiples fuentes cuando se selecciona una fuente antialiased (vector) ( -fa Inconsolata -fs 18 ), que se completa con otras fuentes del sistema si la fuente seleccionada es demasiado limitada. Xterm también puede funcionar con fuentes de mapas de bits, pero son un poco más complicados.
Xterm usará solo una fuente si especifica una fuente de mapa de bits usando -fn . Eso significa que necesitará encontrar una fuente que cubra cada sección de Unicode que use. Esto no siempre es fácil.
La fuente XMMTER predeterminada, llamada "fija", parece una elección terrible ya que tiene muy pocos caracteres unicode. Sin embargo, eso se debe a que Xterm usa la versión LATIN-1 de forma predeterminada. Hay una versión unicode (10646) de "fijo" que no es malo en términos de cobertura. "Fixed" también viene en una versión amplia para los personajes asiáticos, que Xterm detecta y utiliza automáticamente. Entonces, no es una mala elección, y viene preinstalado.
xterm -fn '*fixed-medium-r-normal--20*10646*'

Xterm ya llena los glifos faltantes para usted usando otras fuentes cuando especifica una fuente antialiased usando -fa . (Use -fs para especificar el tamaño de punto). Nota: Antialiased es cómo Xterm se refiere a fuentes vectoriales como TrueType, OpenType y Tipo 1.
Mientras que Xterm y Gnome-terminal usan FreeType para generar fuentes antialiased, a diferencia de GNOME-terminal, XterT aplica los límites de las células de caracteres y no permite que los glifos se superpongan. En cambio, los glifos demasiado anchos se truncan. Si esto es mejor o no es una cuestión de gusto.

Tenga en cuenta que XterT es predeterminado para usar el color de fuente especificado por el usuario en lugar de los colores creados en una fuente. Una vez más, esta es una cuestión de sabor, pero debe tenerse en cuenta que la mayoría de las fuentes de emoji hoy en día están diseñadas solo en color, por lo que las fuentes de color individual para ciertos rangos pueden parecer anticuados o faltar glifos.
Si desea ver qué fuentes se están cargando a medida que ejecuta FontTable, establezca la variable de entorno XFT_DEBUG en 3 antes de ejecutar xterm.
XFT_DEBUG=3 xterm -fa DroidSansMono -fs 24
Si desea forzar a Xterm para usar solo las fuentes que solicitó, puede hacerlo configurando el recurso limitFontsets X en 0.
xterm -fa DroidSansMono -xrm "XTerm*vt100.limitFontsets: 0"
Tenga en cuenta que Xterm intentará detectar automáticamente si su fuente también está disponible en una versión de Doubleize (para CJK). Si no lo encuentra, puede especificar una fuente separada de "duplicar" usando -fd .
xterm -fs 24 -fa DroidSansMono -fd DroidSansFallback -xrm "XTerm*vt100.limitFontsets: 0"
Tenga en cuenta que si no tiene una fuente en particular instalada, incluso si usa LimitFontsets: 0, se le mostrará una fuente sustituta. Nuevamente, puede usar xft_debug para averiguar qué está sucediendo.
XFT_DEBUG=3 xterm -fs 24 -fa DroidSansMono -fd DroidSansFallback -xrm "XTerm*vt100.limitFontsets: 0"