Como exibir Unicode em um terminal virtual Linux?

19

A leitura de qualquer dado no Unicode não é exibida corretamente no terminal Linux (ou seja, o terminal virtual que é aberto sem um X windows).

Eu li em uma discussão aqui que a instalação de programas como o JFBTERM , e funciona, então eu queria saber se não há como configurar (consolefonts?) O terminal para lidar adequadamente com o unicode sem nenhum software extra.

Nos terminais Windows (gnome-terminal, xterm, etc), fica assim:

gnome-terminal

No terminal virtual, fica assim:

vt

No terminal virtual com JFBTERM, fica assim:

jbfterm

Aqui está uma captura de tela da saída de locale:

localidade

Aqui está a saída de showconsolefont:

showconsolefont

Alguém sabe se é possível realizar o mesmo apenas com o terminal virtual padrão?

bruno.braga
fonte

Respostas:

5

A fonte do console pode carregar fontes com até 512 (eu acho, ou algo assim) diferentes glifos; geralmente apenas 256 glifos no entanto.

Exibir latim, cirílico ou outros idiomas que usam menos de 200 símbolos não complexos não é problema.

No entanto, para scripts complexos, ou scripts que precisam de muitos símbolos diferentes (como japonês), você não tem outra possibilidade além de usar um layout extra para lidar com isso.

Observe que, se o limite de 512 for suficiente para o ASCII e os dois conjuntos de Kana, haverá um problema de largura.

CJK e Kana se encaixam em um quadrado, têm o dobro da largura das letras latinas. Isso não é algo que o console possa manipular imediatamente.

Você pode recorrer ao velho e feio "Halfwidth Katakana" (e talvez até encontrar uma fonte antiga de algo assim), ou definir seu console para 40 colunas de largura e ter letras em latim do tamanho de Kana.

Não conheço nenhuma dessas fontes de console com Kana; você deve desenhar o seu próprio (existem ferramentas para fazê-lo, e você pode apenas copiar os pontos da fonte japonesa de bitmap.

Além disso, você pode usar iconvpara transliterar o kana em ASCII.

Pablo Saratxaga
fonte
3

Você precisa de uma fonte que realmente tenha esses caracteres. O Arch Linux, por exemplo, recomenda Lat2-Terminus16.

Para testá-lo, basta executar o seguinte comando em um console virtual: setfont Lat2-Terminus16.

Quanto ao resto, a maioria das distribuições modernas já o suporta de imediato.

Daniel B
fonte
2

Além LANG/LC_ALL, stty iutf8é necessário para dizer o terminal o que fazer, você pode precisar setfont, em seguida, carregar uma fonte útil e mapeamento. Se você ainda tiver problemas para verificar as configurações do kernel, verifique se há CONFIG_NLS_xxconfigurações, modprobe nls_utf8se ele não carregar automaticamente (acho que isso é necessário apenas para nomes de arquivos Unicode).

Algumas distribuições Linux fornecem unicode_starte unicode_stopscripts para automatizar isso.

Se lesscausar problemas, pode exigir que a variável de ambiente LESSCHARSETseja definida (ou desmarcada, se estiver errada).

As perguntas freqüentes UTF-8 e Unicode de Markus Kuhn para Unix / Linux são inestimáveis.

mr.spuratic
fonte