Napisałem appindicator Python3, który wywołuje fortunei przechwytuje dane wyjściowe do wyświetlenia w powiadomieniu na ekranie.
Niektóre fortuny zawierają kwadraty z liczbą szesnastkową, gdy odpowiedni glif nie istnieje w bieżącej czcionce. Każdy kwadrat reprezentuje szesnastkowy punkt kodowy Unicode brakującego glifu.
Chcę usunąć tekst szesnastkowy przed wyświetleniem użytkownikowi. Miałem nadzieję znaleźć API Pythona, które pozwoliłoby mi sprawdzić tekst, znak po znaku, aby ustalić coś podobnego char.isValidCodePoint()lub podobnego, ale nie mogę znaleźć jako takiego.
Znalazłem możliwe rozwiązanie, które chciałem zbadać tutaj, ale po zainstalowaniu fonttoolsza pomocą terminala mój program Python nie mógł zaimportować fonttools/fontTools.
Wszelkie pomysły - przy użyciu interfejsu API języka Python lub wywoływania terminala?
Aktualizacja nr 1: Od tego czasu zdałem sobie sprawę, że fonttoolsprzykładowy kod z powyższego łącza nie będzie dla mnie działał, ponieważ jest to Python2. fonttoolsPodejrzewam, że jeśli można by jakoś użyć, mógłbym wywołać interpreter Python2 z mojego skryptu Python3.
Aktualizacja nr 2: Po wielu lekturach (patrz odnośniki poniżej) znalazłem, fc-matchale nie zawsze może jednoznacznie zidentyfikować używaną czcionkę. Otrzymuję bieżącą czcionkę w Pythonie:
from gi.repository import Gio
fontName = Gio.Settings( "org.gnome.desktop.interface" ).get_string( "font-name" )
powodując Ubuntu 11. Podając ten wynik pango-viewwraz ze znakiem szesnastkowym, otrzymuję listę czcionek, w tym Ubuntu. Według mnie, jeśli glif NIE był renderowany przez czcionkę, czcionka nie powinna pojawić się w wyniku z pango-view!
Bibliografia: