I have written a Python3 appindicator which calls
fortune and captures the output for display in the on-screen notification.
Some fortunes contain squares with a hexadecimal number when the corresponding glyph does not exist in the current font. Each square is the representation of the hexadecimal Unicode code point for the missing glyph.
I want to remove the hexadecimal text before I display to the user. I was hoping to find some Python API which would let me inspect text, character by character, to determine something like
char.isValidCodePoint() or similar but I cannot find as such.
I found a possible solution that I wanted to investigate here but after installing
fonttools via the terminal, my Python program could not import
Any ideas - either using the Python API or calling out to a terminal?
Update #1: I have since realised the
fonttools sample code from the link above will not work for me as it is Python2. I suppose if
fonttools could somehow be used, I could invoke a Python2 interpreter from my Python3 script.
Update #2: After lots of reading (see references below), I have since found
fc-match but it cannot always uniquely identify the font in use. I obtain the current font in Python:
from gi.repository import Gio fontName = Gio.Settings( "org.gnome.desktop.interface" ).get_string( "font-name" )
Ubuntu 11. Passing this result to
pango-view along with the hexadecimal character, I get a list of fonts including
Ubuntu. To my thinking if the glyph was NOT rendered by the font, the font should not appear in the result from