Estou trabalhando em um script que exibe caracteres UTF-8 como saída. No meu Terminal Gnome, isso imprime uma linda folha de bordo (
Responder1
Um aplicativo executado em um terminal não tem como descobrir no terminal como são os glifos que o terminal desenhou (ou mesmo se eles são caracteres substitutos/espaçadores).
Uma coisa é o aplicativopodeO que fazer é descobrir se o terminal suporta UTF-8 e, em caso afirmativo, se suporta caracteres de largura variável. O método é o seguinte:
- Leia a posição do cursor escrevendo ESC
[
6
n
e esperando ESC[
linha;
colunaR
- Escreva a sequência de 2 bytes
"\xc2\xa0"
. Se o terminal suportar UTF-8, este será um espaço único e inseparável. Se o terminal não suportar UTF-8, é algo desconhecido, mas que provavelmente ocupa 2 posições de caracteres (provavelmenteÂ
seguido de espaço inseparável, na verdade). - Leia a posição do cursor novamente e descubra se o cursor foi movido por uma ou duas posições
Se o terminal suportar UTF-8, você poderá descobrir se ele suporta larguras variáveis de caracteres usando basicamente o mesmo truque. Leia a posição do cursor, escreva um caractere que deveria ter largura dupla em fontes monoespaçadas, como あ, e então leia a posição do cursor novamente. Se o terminal não suportar caracteres de largura dupla, o cursor provavelmente terá movido ingenuamente apenas uma posição.