Eu escrevi um appindicator Python3 que chama fortune
e captura a saída para exibição na notificação na tela.
Algumas fortunas contêm quadrados com um número hexadecimal quando o glifo correspondente não existe na fonte atual. Cada quadrado é a representação do ponto de código hexadecimal Unicode para o glifo ausente.
Quero remover o texto hexadecimal antes de exibir para o usuário. Eu esperava encontrar alguma API Python que me permitisse inspecionar texto, caractere por caractere, para determinar algo parecido char.isValidCodePoint()
ou semelhante, mas não consigo encontrá-lo como tal.
Encontrei uma solução possível que queria investigar aqui, mas após a instalação fonttools
pelo terminal, meu programa Python não pôde importar fonttools/fontTools
.
Alguma idéia - usando a API Python ou chamando para um terminal?
Atualização # 1: Desde então, percebi que o fonttools
código de exemplo do link acima não funcionará para mim, pois é o Python2. Suponho que, de fonttools
alguma forma, poderia ser usado, eu poderia chamar um interpretador Python2 do meu script Python3.
Atualização # 2: Depois de muita leitura (veja as referências abaixo), eu encontrei desde então, fc-match
mas nem sempre é possível identificar exclusivamente a fonte em uso. Eu obtenho a fonte atual em Python:
from gi.repository import Gio
fontName = Gio.Settings( "org.gnome.desktop.interface" ).get_string( "font-name" )
resultando em Ubuntu 11
. Passando esse resultado para pango-view
junto com o caractere hexadecimal, recebo uma lista de fontes incluindo Ubuntu
. Na minha opinião, se o glifo NÃO foi renderizado pela fonte, a fonte não deve aparecer no resultado de pango-view
!
Referências:
Mecanismo de modelagem Unicode
Use um mecanismo de modelagem Unicode como o Harfbuzz para detectar glifos ausentes. Aqui está um exemplo de trabalho:
Resultado
Aqui a saída no IDLE3 durante a verificação:
Verifique o caminho correto da fonte. Acabei de escolher o primeiro que vi na minha máquina atual.
Nota:
fonte