He escrito un indicador de aplicación Python3 que llama fortune
y captura la salida para mostrarla en la notificación en pantalla.
Algunas fortunas contienen cuadrados con un número hexadecimal cuando el glifo correspondiente no existe en la fuente actual. Cada cuadrado es la representación del punto de código hexadecimal Unicode para el glifo faltante.
Quiero eliminar el texto hexadecimal antes de mostrarlo al usuario. Esperaba encontrar alguna API de Python que me permitiera inspeccionar texto, carácter por carácter, para determinar algo similar char.isValidCodePoint()
o similar, pero no puedo encontrarlo como tal.
Encontré una posible solución que quería investigar aquí, pero después de instalar a fonttools
través del terminal, mi programa Python no pudo importar fonttools/fontTools
.
¿Alguna idea, ya sea utilizando la API de Python o llamando a una terminal?
Actualización n. ° 1: desde entonces me di cuenta de que el fonttools
código de muestra del enlace anterior no funcionará para mí, ya que es Python2. Supongo que si de fonttools
alguna manera pudiera usarse, podría invocar un intérprete de Python2 desde mi script Python3.
Actualización n. ° 2: Después de mucha lectura (ver referencias a continuación), he encontrado desde entonces, fc-match
pero no siempre puede identificar de forma única la fuente en uso. Obtengo la fuente actual en Python:
from gi.repository import Gio
fontName = Gio.Settings( "org.gnome.desktop.interface" ).get_string( "font-name" )
resultando en Ubuntu 11
. Al pasar este resultado pango-view
junto con el carácter hexadecimal, obtengo una lista de fuentes incluidas Ubuntu
. A mi parecer, si el glifo NO fue representado por la fuente, ¡la fuente no debería aparecer en el resultado de pango-view
!
Referencias
Motor de conformación Unicode
Use un motor de modelado Unicode como Harfbuzz para detectar el glifo faltante. Aquí hay un ejemplo de trabajo:
Salida
Aquí la salida en IDLE3 mientras se verifica:
Verifique la ruta de fuente correcta, acabo de elegir la primera que vi en mi máquina actual.
Nota:
fuente