Перед тем как мы начнем настраивать различные части системы, нам надо настроить пару простых вещей. Большинство утилит, описываемых ниже, предполагают, что кириллические шрифты доступны и пользователь может вводить кириллические символы. Чтобы это действительно стало правдой, нам следует настроить окружение для того чтобы обеспечить и шрифты, и возможность ввода кириллицы.
Linux поддерживает два интерфейса для отображения информации, две различные моды. Одна из них это текстовая мода, а другая графическая, предоставляемая средствами X Window. Обе эти моды требуют различной настройки, которые описывается ниже.
Вообще, настройка текстовых режимов - самый простой способ показывать и вводить символы кириллицы. Однако, имеется одно значительное осложнение: текстовые шрифты и расположение символов на клавиатуре зависят от реализации драйвера терминала. Следовательно, не имеется никакого общего способа для достижения цели в различных систем.
Ниже, я опишу способ как "справиться" с драйвером Linux консоли. Поэтому если вы имеете другую систему, не ожидайте, что это будет работать. Взамен, проконсультируйтесь с руководством по драйверу терминала и пошлите мне любую информацию, которую вы найдете. В этом случае я смогу включить это в дальнейшие версии этого документа.
Консольный драйвер Linux - довольно хорошо настраиваемый образец программного обеспечения. Он может менять как шрифты, так и раскладки клавиатуры. Чтобы сделать это, вам нужен пакет kbd. Большинство дистрибутивов Linux устанавливают kbd как обязательную часть системы.
Пакет kbd содержит утилиты управления клавиатурой, кроме этого с ним поставляется широкий выбор шрифтов и раскладок.
Установка кириллицы с помощью kbd
обычно состоит из:
loadkeys
. Redhat позволяет установить раскладку клавиатуры,
которую система загружает по умолчанию во время загрузки. Это
конфигурируется с помощью программы /usr/sbin/kbdconfig
.
Или вы просто можете запустить loadkeys
из вашего
~/.profile
или сделав это руками.
setfont
. Файлы шрифтов находятся в /usr/lib/kbd/consolefonts
.
ВНИМАНИЕ: В старых версиях Linux, запуск программы setfont
под X Windows мог завесить систему. Сейчас в этом случае
печатается сообщение об ошибке.
Если вы являетесь приверженцем программ, выполняемых в текстовой моде,
и использующих достоинства PC псевдо - графики (таких как
Midnight Commander), вы можите предпочесть использовать шрифты
с Alt
кодировкой и консольной раскладкой
(console character map). Это означает,
что ваша консоль отображает Alt шрифты, но все кириллические
символы, соответствующие KOI-8R кодировки соответственным образом
отображаются в Alt
и поэтому отображаются правильно. Преимущество
этого метода заключается в том, что он позволяет использовать
псевдографические символы Alt
кодировки.
Короче, ниже перечислены команды, которые позволяют достичь этого эффекта.
loadkeys /usr/lib/kbd/keytables/ru.map setfont /usr/lib/kbd/consolefonts/Cyr_a8x16 mapscrn /usr/lib/kbd/consoletrans/koi2alt echo -ne "\033(K" # магическая последовательность
После выполнения этих команд и загрузки соответствующих файлов, вы можите переключать раскладку клавиатуры для ввода кириллических символов с помощью правого Control.
Магическая последовательность необходима для перекодировки вывода символов на экран если вы используете Alt шрифты. Она работает и вам не следует знать о ней что-то большее. Однако, если вам любопытно, то посмотрите в документацию к пакету kbd.
В заключение, для тех эстетов, кто не желает использовать Alt кодировку, я предлагаю другую версию описанной выше загрузочной последовательности, использующей родные KOI8-R шрифты.
loadkeys /usr/lib/kbd/keytables/ru.map setfont /usr/lib/kbd/consolefonts/koi8-8x16
Однако, не ожидайте красивых рамок в ваших программах, использующих для работы менюшки в текстовом режиме.
Теперь вы, вероятно, хотите проверить это.
Сконфигурируйте соответствующим образом bash или tcsh
(смотрите ниже этот шаг необходим),
перегрузите его, затем нажмите правую клавишу Control
.
Удостоверитесь, что вы можите печатать на русском правильно.
Клавиша 'q
' должна соответствовать "й
", 'w
'
соответствует "ц
", и т.д.
Если у вас возникли непредвиденные проблемы, то лучше всего вернуться к родной (то есть US) раскладке. Для этого сделайте следующие телодвижения:
loadkeys /usr/lib/kbd/keytables/defkeymap.map setfont /usr/lib/kbd/consolefonts/default8x16
ВНИМАНИЕ: к сожалению, консольный драйвер не способен сохранить это состояние (по крайней мере без излишних ухищрений), когда передается управление X Windows. Следовательно, после того, как вы вышли из X (или переключаетесь на консоль), то вы должны перезагрузить русский шрифт.
Подобно консольному режиму, X Windows также требует некоторой настройки. Настройка включает в себя настройку ввода и установку шрифтов для X Windows. Данные действия обсуждаются ниже.
Прежде всего вы должны достать шрифты, содержащие изображения кириллических символов в соответствующих местах.
В конце 1995 года X Window включила набор KOI8-R шрифтов разработанных KOI8-R fonts, created by Cronyx. Эти шрифты являются также частью XFree86.
Несмотря на это, некоторые дистрибутивы не включают кириллические шрифты для X Windows в стандартную поставку. Одним из подобных печальных примеров является RedHat (они обещали больше так не делать и исправить это в RedHat 5.2).
Поэтому, вам следует проверить установлены ли эти шрифты в вашей системе. Спросите системного администратора, или, если вы- это он и есть, проверьте вашу систему сами, а именно:
xlsfonts | grep koi8
'. Если в результате
выполнения команды появится список шрифтов, то ваш X сервер уже знает
об их существовании.find / -name crox\*.pcf\*для того чтобы найти местоположение шрифтов кириллицы в системе. Вы должны будете сделать эти шрифты доступными для X сервера, как - я объясню ниже.
Если вы не нашли таких шрифтов в вашей системе, то вы должны установить их сами.
Кроме описанного выше существует еще один набор кириллических
шрифтов Cronyx в сети (по адресу
ftp.kiae.su), известный, как пакет xrus
(не путать это с
программой xruskb
, ранее известной как xrus
.
Xrus
имеет меньший набор шрифтов чем в коллекции Xfree86
(38 против 68).
Имеется также более старое решение, например пакет vakufonts
созданный
Сергеем Вакуленко,
который стал основой для пакета включенного в дистрибутив X
Windows. Очень важно, что имена шрифтов в старой коллекции не
совпадают со стандартом полностью. Vakufonts
, в общем, неплохой пакет,
но иногда могут возникать различные сверхъестественные ошибки.
Например, у меня были проблемы с Maple V для Linux, который падал
по непонятным причинам с пакетом vakufonts
, но прекрасно
работал со "стандартными" набором.
Итак, давайте начнем со шрифтов:
XFree86-cyrillic-fonts
. Установить его и
сразу перейти к разделу, где объясняется как сделать
местоположение шрифтов известным X Windows.
/usr/lib/X11/fonts/cyrillic
для настройки всей системы, или просто
создайте каталог у себя только для персонального пользования.
*.bdf
файлы),
то вы должны скомпилировать их. Для каждого шрифта выполните:
bdftopcf -o <font>.pcf <font>.bdfЕсли ваш X сервер поддерживает сжатые шрифты, то сожмите их с помощью программы
compress
(для последних версий XFree86 можно
сжать шрифты с помощью программы gzip
):
compress *.pcf (или gzip *.pcf)Если же вы все-таки хотите поместить новые шрифты в уже существующий каталог шрифтов, то вы должны "срастить" старый и новые файлы, с именем
fonts.alias
в том случае, естественно,
если они оба существуют.
fonts.dir
.
Вы не должны создавать этот список вручную. Вместо этого, сделайте:
cd <new font directory> mkfontdir .
XF86Config
. Чтобы найти его расположение, просмотрите
что скажет startx
при запуске (В Redhat этот файл обычно находится
в /etc/X11). Более подробно смотрите man XF86Config
(4/5).
xinit
. Добавьте новый каталог к
файлу запуска xinit
. Более подробно смотрите xinit(1x)
.
~/.xinitrc
(или ~/.Xclients
, или
~/.xsession
для пользователей RedHat).
Добавьте следующие команды в этот файл:
xset +fp <новый каталог шрифтов> xset fp rehashОбратите внимание, на опцию '
+fp
'- это означает, что новые
шрифты будут добавлены в начале списка директорий со шрифтами. То
есть, если прикладная программа запрашивает, скажем, шрифт fixed
, то
будет подставлен fixed font с кириллическими символами , чего мы
и добивались.
Хотя имеются некоторые проблемы. В дистрибутиве шрифтов
кириллицы нет полужирного и курсивного fixed
шрифта. Мой любимый
шрифт - 6x13
, а так, как полужирные и курсивные шрифты этого
размера также отсутствуют, то я не могу использовать Emacs/XEmacs
в полной мере. Надеюсь, что кто - то в конечном счете создаст эти
шрифты, и ситуация изменится.
xfontsel(1x)
, чтобы удостовериться что
вы способны выбрать шрифты кириллицы.Чтобы заставить X клиента использовать шрифты Кириллицы, Вы
должны установить соответствующие X ресурс. Например, я делаю
кириллический шрифт заданным по умолчанию в моем ~/.Xdefaults
:
*font: 6x13
Так как мои шрифты кириллицы первые в списке поиска шрифтов (смотри
вывод программы 'xset q
'), то
они и подставляются если программа требует какой-либо шрифт с
именем, совпадающем с каким-либо из шрифтов, лежащих в кириллической
директории.
Вот простые примеры. Если Вы хотите научить соответствующий X
клиент пользоваться кириллическим шрифтом , то вы должны узнать
тип ресурса , который вам надо изменить (можно это сделать
используя editres(1x)
) и определить его или в базе данных
ресурсов, или в командной строке. Например можно сделать так:
$ xterm -font '-cronyx-*-bold-*-*-*-19-*-*-*-*-*-*-*'
...запусти xterm с несколько уродливым шрифтом;
$ xfontsel -xrm '*quitButton.font: -*-times-*-*-*-*-13-*-*-*-*-*-koi8-*'
...установит Cyrillic Times шрифт для кнопки Quit
программы
xfontsel
.
У технологии TrueType, взятой на вооружение операционными системами серии Windows (он же Mastdie :)), нет многих недостатков, которые присутствуют при работе со шрифтами стандартным образом у X. Кроме того существует множество кириллических TrueType шрифтов.
К счастью, эти шрифты можно использовать и в X Windows. Существует TrueType сервер шрифтов XFSFT для X (говорят, что в скором времени поддержка TrueType будет включена в дистрибутив XFree86).
Установочная процедура довольно проста - просто, делайте то, что сказано в документации. Следует отметить одну вещь, имеющую отношение к кириллической настройке, это то, что вам следует использовать опцию перекодировки:
xfstt ... --encoding koi8-r,windows-1251,iso8859-1
После этого, новые шрифты будут доступны для X Windows - этот факт вы
можете проверить, запустив xfontsel
и поиграв с ttf семейством
шрифтов.
В последних выпусках X (X11R61 и выше) имеются два
"стандартных" способа ввода с клавиатуры: родной способ,
работающий через утилиту xmodmap
, и новый, называемый Xkb
(X KeyBoard). Первое, что вы должны сделать, это отключить Xkb способ!.
Не давайте себя загипнотизировать его способностью устанавливать
"russian keyboard". Этот способ, вроде бы, использует описание
символов кириллицы определенных в keysymdef.h
. Этот файл
определяет символы для многих языков. Единственная проблема
состоит в том, что данное определения не позволяют, работать с
расширенной ASCII кодовой страницей - очень много программ могут работать
только с этой раскладкой! Я почти не знаю программ, которые
разбираются с описанием символов в keysymdef.h
отличным от
стандартного 8ми битного ASCII. Однако, наша главная цель состоит
в том, чтобы заставить работать поддержку KOI8-R. (Примечание
переводчика: здесь автор немного погорячился - Xkb вполне
рабочий способ, правда способность работать с KOI8-R он обнаружил
только в последних версия XFree86. Пользователям Redhat следует
взять версию XFree86-3.3.3-1.)
Чтобы отключить поддержку Xkb
, в файле XF86Config
изучите раздел Keyboard
и закоментируйте, все строки,
начинающиеся с Xkb (регистр не имеет значения).
Взамен, добавьте следующую строку:
XkbDisable
Программа xmodmap
позволяет настроить коды соответствующие
различными символам и их комбинациям. Эта настройка основана на
файле, содержащем таблицу перекодировки.
В предыдущих версиях этого документа я очень подробно описывал
настройку кириллицы основанную на xmodmap
. Это оказалось
практически бесполезным. Общеизвестно, что способ перекодировка
ввода, основанный на xmodmap
, является, не-портабельным, плохо
настраиваемым, и не окончательным. Ваши настройки могут работать
с одной версией XFree и сбоить при работе с другой. Более того,
иногда результат работы одной и той же настройки сильно разнится
для различных серверов из одного дистрибутива.
Я настоятельно советую вам не играть с xmodmap
, по крайней мере
для начала. Вы не получите ничего кроме головной боли и
разочарования. Вместо этого, я рекомендую вам установить пакет
xruskb,
который позволяет вам сконфигурировать большинство
входных параметров перекодировки без необходимости сталкиваться с
xmodmap
. Опять же пользователи Redhat Linux могут установить
RPM пакет этого програмного продукта.
Для того, чтобы заставить bash понять 8ми битные символы,
должны быть установлены три переменные. Лучше всего это
сделать из файл ~/.inputrc
.
Должны быть сделаны следующие установки:
set meta-flag on set convert-meta off set output-meta on
Поместите в .cshrc
следующее:
setenv LC_CTYPE iso_8859_5 stty pass8
Если у вас нет POSIX совместимого stty (только не в Linux), замените последнюю строчку следующей:
stty -istrip cs8
Что касается public domain реализации ksh
- pdksh
версии 5.1.3 и выше, то вы можете разрешить 8ми разрядный ввод
только для vi
в режиме ввода. Для этого используйте:
set -o vi
Установите переменную окружения LESSCHARSET
:
export LESSCHARSET=koi8-r
Старые версии less
не поддерживали символы KOI8-R, но установка
следующей системной переменной позволяла это обойти:
export LESSCHARSET=latin1
Чтобы разобрать текст кириллицы , выберите опцию full 8 bits
в
Options/Display
меню.
Если у вас проблемы в виде уродливых оконных рамок, то проконсультируйтесь в разделе Linux консоль.
off-topic: если вы захотите чтобы mc
в окне Xterm
был в цвете:
установите переменную COLORTERM
:
COLORTERM= ; export COLORTERM
Удостоверитесь, что shell на месте адресата правильно
установлена. Если ваш rlogin
не работает как надо по умолчанию,
то используйте 'rlogin -8
'.
Сделайте то же самое, что делается для csh
(
csh). Файл инициализации в этом случае - .zshrc
или
/etc/zshrc
.