J'ai écrit un indicateur Python3 qui appelle fortuneet 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 Unicode hexadécimal pour le glyphe manquant.
Je souhaite 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 de similaire 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 ici, mais après l'installation fonttoolsvia le terminal, mon programme Python n'a pas pu 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 l' fonttoolsexemple de code du lien ci-dessus ne fonctionnera pas pour moi car il s'agit de Python2. Je suppose que si je fonttoolspouvais en quelque sorte être utilisé, je pourrais invoquer un interpréteur Python2 à partir de mon script Python3.
Mise à jour # 2: Après beaucoup de lecture (voir références ci-dessous), j'ai depuis trouvé fc-matchmais il ne peut pas toujours identifier de manière unique 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" )résultant en Ubuntu 11. En passant ce résultat pango-viewavec le caractère hexadécimal, j'obtiens une liste de polices, y compris Ubuntu. À mon avis, si le glyphe n'était PAS rendu par la police, la police ne devrait pas apparaître dans le résultat de pango-view!
Références: