Я написал приложение Python3, которое вызывает fortuneи записывает вывод для отображения в экранном уведомлении.
Некоторые состояния содержат квадраты с шестнадцатеричным числом, когда соответствующий глиф не существует в текущем шрифте. Каждый квадрат представляет собой шестнадцатеричный код Unicode для отсутствующего глифа.
Я хочу удалить шестнадцатеричный текст перед отображением для пользователя. Я надеялся найти какой-нибудь Python API, который позволил бы мне проверять текст, символ за символом, чтобы определить что-то похожее char.isValidCodePoint()или похожее, но я не могу найти как таковой.
Я нашел возможное решение, которое я хотел бы найти здесь, но после установки fonttoolsчерез терминал моя программа на Python не смогла импортировать fonttools/fontTools.
Есть идеи - использовать Python API или вызвать терминал?
Обновление № 1: с тех пор я понял, что fonttoolsпример кода по ссылке выше не будет работать для меня, так как это Python2. Я полагаю, что если fonttoolsбы можно было как-то использовать, я мог бы вызвать интерпретатор Python2 из моего скрипта Python3.
Обновление № 2: После большого прочтения (см. Ссылки ниже) я с тех пор нашел, fc-matchно он не всегда может однозначно идентифицировать используемый шрифт. Я получаю текущий шрифт в Python:
from gi.repository import Gio
fontName = Gio.Settings( "org.gnome.desktop.interface" ).get_string( "font-name" )
в результате чего Ubuntu 11. Передав этот результат pango-viewвместе с шестнадцатеричным символом, я получаю список шрифтов, включая Ubuntu. На мой взгляд, если глиф НЕ отрисован шрифтом, шрифт не должен появляться в результате из pango-view!
Ссылки: