Ho scritto un appindicator di Python3 che chiama fortune
e acquisisce l'output per la visualizzazione nella notifica sullo schermo.
Alcune fortune contengono quadrati con un numero esadecimale quando il glifo corrispondente non esiste nel carattere corrente. Ogni quadrato è la rappresentazione del punto di codice Unicode esadecimale per il glifo mancante.
Voglio rimuovere il testo esadecimale prima di visualizzarlo per l'utente. Speravo di trovare alcune API Python che mi permettessero di ispezionare il testo, carattere per carattere, per determinare qualcosa di simile char.isValidCodePoint()
o simile, ma non riesco a trovare come tale.
Ho trovato una possibile soluzione che volevo studiare qui, ma dopo l'installazione fonttools
tramite il terminale, il mio programma Python non è riuscito a importare fonttools/fontTools
.
Qualche idea: utilizzare l'API Python o chiamare un terminale?
Aggiornamento n. 1: da allora ho capito che il fonttools
codice di esempio dal link sopra non funzionerà per me in quanto è Python2. Suppongo che se in fonttools
qualche modo potesse essere usato, potrei invocare un interprete Python2 dal mio script Python3.
Aggiornamento n. 2: dopo molte letture (vedi riferimenti sotto), da allora ho trovato fc-match
ma non è sempre possibile identificare in modo univoco il carattere in uso. Ottengo il carattere corrente in Python:
from gi.repository import Gio
fontName = Gio.Settings( "org.gnome.desktop.interface" ).get_string( "font-name" )
risultante in Ubuntu 11
. Passando questo risultato pango-view
insieme al carattere esadecimale, ottengo un elenco di caratteri incluso Ubuntu
. Secondo me se il glifo NON è stato reso dal carattere, il carattere non dovrebbe apparire nel risultato di pango-view
!
Riferimenti: