Ich habe einen Python3-Appindikator geschrieben, der fortune
die Ausgabe aufruft und erfasst, um sie in der Bildschirmbenachrichtigung anzuzeigen.
Einige Vermögen enthalten Quadrate mit einer Hexadezimalzahl, wenn das entsprechende Symbol in der aktuellen Schriftart nicht vorhanden ist. Jedes Quadrat ist die Darstellung des hexadezimalen Unicode-Codepunkts für das fehlende Symbol.
Ich möchte den hexadezimalen Text entfernen, bevor ich ihn dem Benutzer anzeige. Ich hatte gehofft, eine Python-API zu finden, mit der ich Text Zeichen für Zeichen untersuchen kann, um etwas Ähnliches char.isValidCodePoint()
oder Ähnliches festzustellen, aber ich kann es nicht als solches finden.
Ich fand eine mögliche Lösung , dass ich wollte , untersuchen , hier aber nach der Installation fonttools
über das Terminal, mein Python - Programm konnte nicht importiert werden fonttools/fontTools
.
Irgendwelche Ideen - entweder über die Python-API oder über ein Terminal?
Update Nr. 1: Ich habe inzwischen festgestellt, dass der fonttools
Beispielcode über den obigen Link für mich nicht funktioniert, da es sich um Python2 handelt. Ich nehme an, wenn ich fonttools
irgendwie verwendet werden könnte, könnte ich einen Python2-Interpreter aus meinem Python3-Skript aufrufen.
Update Nr. 2: Nach vielem Lesen (siehe Referenzen unten) habe ich seitdem festgestellt, fc-match
aber es kann die verwendete Schriftart nicht immer eindeutig identifizieren. Ich erhalte die aktuelle Schriftart in Python:
from gi.repository import Gio
fontName = Gio.Settings( "org.gnome.desktop.interface" ).get_string( "font-name" )
was zu Ubuntu 11
. Wenn pango-view
ich dieses Ergebnis zusammen mit dem Hexadezimalzeichen weitergebe, erhalte ich eine Liste mit Schriftarten, einschließlich Ubuntu
. Meiner Meinung nach sollte die Schrift nicht im Ergebnis von erscheinen, wenn das Symbol NICHT von der Schriftart gerendert wurde pango-view
!
Verweise:
Unicode-Shaping-Engine
Verwenden Sie eine Unicode-Shaping-Engine wie Harfbuzz, um fehlende Glyphen zu erkennen. Hier ist ein Arbeitsbeispiel:
Ausgabe
Hier die Ausgabe in IDLE3 während der Überprüfung:
Überprüfen Sie den korrekten Schriftpfad. Ich habe gerade den ersten ausgewählt, den ich auf meinem aktuellen Computer gesehen habe.
Hinweis:
quelle