Как отобразить Unicode в виртуальном терминале Linux?

19

Чтение любых данных в Unicode не отображается правильно в терминале Linux (имеется в виду виртуальный терминал, который открывается без окон X).

Я читал в обсуждении здесь, что установка программ, таких как JFBTERM , и это работает, поэтому мне было интересно, нет ли способа сконфигурировать (consolefonts?) Терминал для правильной обработки юникода без какого-либо дополнительного программного обеспечения.

На терминалах Windows (gnome-терминал, xterm и т. Д.) Это выглядит так:

гном-терминал

На виртуальном терминале это выглядит так:

Вермонт

На виртуальном терминале с JFBTERM это выглядит так:

jbfterm

Вот скриншот с выводом locale:

место действия

Вот вывод showconsolefont:

showconsolefont

Кто-нибудь знает, возможно ли сделать то же самое только с виртуальным терминалом по умолчанию?

bruno.braga
источник

Ответы:

5

Консольный шрифт может загружать до 512 (я думаю, или что-то в этом роде) различных глифов; обычно только 256 символов однако.

Для отображения латиницы, кириллицы или других языков, которые используют менее 200 не сложных символов, нет проблем.

Однако для сложных сценариев или сценариев, требующих большого количества различных символов (например, японских), у вас нет другой возможности, кроме как использовать дополнительный макет для обработки.

Обратите внимание, что если ограничение 512 должно быть достаточно для ASCII и обоих наборов Кана, существует проблема ширины.

CJK и Kana соответствуют квадрату, они в два раза шире латинских букв. Это не то, что консоль может обрабатывать из коробки.

Вы можете прибегнуть к старому и уродливому «Halfwidth Katakana» (и, возможно, даже найти старый шрифт для такой вещи), или установить для своей консоли ширину в 40 столбцов, а латинские буквы будут такими же, как и Kana.

Я не знаю ни одного такого шрифта консоли с Kana; Вы должны нарисовать свой собственный (есть инструменты для этого, и вы можете просто скопировать точки растрового японского шрифта.

Кроме того, вы можете использовать iconvдля транслитерации кана в ASCII.

Пабло Саратчага
источник
3

Вам нужен шрифт, который на самом деле имеет эти символы. Arch Linux например рекомендует Lat2-Terminus16.

Для того, чтобы попробовать, просто введите следующую команду в виртуальной консоли: setfont Lat2-Terminus16.

В остальном, большинство современных дистрибутивов уже поддерживают его «из коробки».

Даниэль Б
источник
2

Кроме того LANG/LC_ALL, stty iutf8чтобы сообщить терминалу, что делать, вам может понадобиться setfontзагрузить полезный шрифт и отображение. Если у вас все еще есть проблемы, проверьте настройки ядра для CONFIG_NLS_xxнастроек, вам может понадобиться, modprobe nls_utf8если он не загружается автоматически (хотя я думаю, что это требуется только для имен файлов Unicode).

Некоторые дистрибутивы Linux предоставляют unicode_startи unicode_stopскрипты для автоматизации этого.

Если lessвозникают проблемы, может потребоваться установить переменную окружения LESSCHARSET(или сбросить, если она неправильная).

Часто задаваемые вопросы Маркуса Куна о UTF-8 и Unicode для Unix / Linux неоценимы.

mr.spuratic
источник