Um script pode determinar quais caracteres um terminal pode exibir?

Um script pode determinar quais caracteres um terminal pode exibir?

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 ne esperando ESC[ linha ; coluna R
  • 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.

informação relacionada