J'ai écrit un appindicateur Python3 qui appelle fortune
et capture la sortie pour l'afficher dans la notification à l'écran.
Certaines fortunes contiennent des carrés avec un nombre hexadécimal lorsque le glyphe correspondant n'existe pas dans la police actuelle. Chaque carré est la représentation du point de code hexadécimal Unicode pour le glyphe manquant.
Je veux supprimer le texte hexadécimal avant de l'afficher à l'utilisateur. J'espérais trouver une API Python qui me permettrait d'inspecter le texte, caractère par caractère, pour déterminer quelque chose comme char.isValidCodePoint()
ou similaire mais je ne peux pas le trouver en tant que tel.
J'ai trouvé une solution possible que je voulais étudier. aquí mais après avoir installé fonttools
via le terminal, mon programme Python ne pouvait pas importer fonttools/fontTools
.
Des idées - en utilisant l'API Python ou en appelant un terminal ?
Mise à jour #1 : J'ai depuis réalisé que le fonttools
L'exemple de code du lien ci-dessus ne fonctionne pas pour moi, car il s'agit de Python2. fonttools
pourrait être utilisé d'une manière ou d'une autre, je pourrais invoquer un interprète Python2 à partir de mon script Python3.
Mise à jour 2 : Après de nombreuses lectures (voir les références ci-dessous), j'ai depuis trouvé fc-match
mais il ne peut pas toujours de manière unique identifier la police utilisée. J'obtiens la police actuelle en Python :
from gi.repository import Gio
fontName = Gio.Settings( "org.gnome.desktop.interface" ).get_string( "font-name" )
ce qui entraîne Ubuntu 11
. En passant ce résultat à pango-view
avec le caractère hexadécimal, j'obtiens une liste de polices comprenant Ubuntu
. À mon avis, si le glyphe n'a PAS été rendu par la police, celle-ci ne devrait pas apparaître dans le résultat de l'opération. pango-view
!
Références :