Jak wyświetlić Unicode w wirtualnym terminalu Linux?

19

Odczytywanie dowolnych danych w Unicode nie wyświetla się poprawnie w terminalu Linux (co oznacza terminal wirtualny, który otwiera się bez okien X).

W dyskusji tutaj czytałem , że instalowanie programów takich jak JFBTERM działa i działa, więc zastanawiałem się, czy nie ma sposobu na skonfigurowanie (konsolefontów?) Terminala, aby poprawnie obsługiwał Unicode bez żadnego dodatkowego oprogramowania.

Na terminalach Windows (gnome-terminal, xterm itp.) Wygląda to tak:

terminal gnome

Na terminalu wirtualnym wygląda to tak:

vt

Na terminalu wirtualnym z JFBTERM wygląda to tak:

jbfterm

Oto zrzut ekranu wyników locale:

widownia

Oto wynik showconsolefont:

showconsolefont

Czy ktoś wie, czy można to zrobić tylko za pomocą domyślnego terminala wirtualnego?

bruno.braga
źródło

Odpowiedzi:

5

Czcionka konsoli może ładować czcionki do 512 (tak mi się wydaje) różnych glifów; zazwyczaj jednak tylko 256 glifów.

Wyświetlanie języka łacińskiego, cyrylicy lub innych języków, które używają mniej niż 200 nieskomplikowanych symboli, nie stanowi problemu.

Jednak w przypadku skomplikowanych skryptów lub skryptów wymagających wielu różnych symboli (takich jak japoński) nie ma innej możliwości niż użycie dodatkowego układu do obsługi tego.

Zauważ, że jeśli limit 512 powinien wystarczyć dla ASCII i obu zestawów Kana, istnieje problem z szerokością.

CJK i Kana pasują do kwadratu, mają dwa razy większą szerokość liter łacińskich. To nie jest coś, co konsola może obsłużyć po wyjęciu z pudełka.

Możesz użyć starej i brzydkiej „Halfwidth Katakana” (a może nawet znaleźć starą czcionkę takiej rzeczy) lub ustawić konsolę na szerokość 40 kolumn i mieć litery łacińskie tak szerokie jak Kana.

Nie znam żadnej takiej czcionki konsoli w Kanie; powinieneś narysować własny (istnieją do tego narzędzia i możesz po prostu skopiować kropki japońskiej czcionki bitmapowej.

Możesz także użyć iconvdo transliteracji Kana na ASCII.

Pablo Saratxaga
źródło
3

Potrzebujesz czcionki, która faktycznie ma te znaki. Arch Linux na przykład zaleca Lat2-Terminus16.

Aby spróbować, wystarczy wydać następującą komendę w konsoli wirtualnej: setfont Lat2-Terminus16.

Jeśli chodzi o resztę, większość współczesnych dystrybucji obsługuje go już po wyjęciu z pudełka.

Daniel B.
źródło
2

Oprócz tego LANG/LC_ALL, stty iutf8aby powiedzieć terminalowi, co ma robić, konieczne może być setfontzaładowanie użytecznej czcionki i mapowania. Jeśli nadal masz problemy, sprawdź konfigurację jądra pod kątem CONFIG_NLS_xxustawień, może być konieczne, modprobe nls_utf8jeśli nie ładuje się automatycznie (myślę, że jest to wymagane tylko w przypadku nazw plików Unicode).

Niektóre dystrybucje Linuksa dostarczają unicode_starti unicode_stopskryptów do automatyzacji tego.

Jeśli lesspowoduje problemy, może wymagać ustawienia zmiennej środowiskowej LESSCHARSET(lub jej rozbrojenia, jeśli jest niepoprawna).

UTF-8 i FAQ dotyczące Unicode dla Unix / Linux autorstwa Markusa Kuhna są nieocenione.

pan. spuratic
źródło