Суббота, 20.09.2025, 03:55 | Приветствую Вас Гость

*nix

Главная » Статьи » Операционные систмы » Linux

Русификация
Особенности настройки различных версий Red Hat смотрите в примерах установок.

Документация
Linux Cyrillic HOWTO
KOI8-R References (Russian Net Character Set) (Чернов)
Консоль
Документация
пакет console-tools и документация из него (/usr/doc/console-tools* и man)
Предварительное замечание. ReHat заменила в 6.0 реализацию драйвера консоли kbd на console-tools, так что старые рекомендации по русификации консоли более неприменимы (потом обратно ;). Рекомендации данные здесь неприменимы к старым системам. Если при установке RH 6.2 выбрать Russian/ru-yawerty, то все будет настроено само собой (в частности, устанавливается LANG=ru_RU.KOI8-R - очень прикольно смотрятся устаревшие переводы man-ов на русский).
в /etc/sysconfig/i18n
LANG="ru_RU.KOI8-R"
SYSFONT="cyr-sun16"
SYSFONTACM="koi8-r"
Драйвер клавиатуры
Клавиатура генерирует сканкоды (scancode), которые преобразуются в коды клавиш (keycode) с помощью таблицы преобразования, задаваемой setkeycodes. Коды клавиш преобразуются в символы с помощью таблицы keymap, которая устанавливается программой loadkeys. В RHL есть надстройка в виде kbdconfig, которая позволяет выбрать keymap из списка, имеющихся в наличии (/usr/lib/kbd/keymaps/i386/qwerty). Я использую ru-yawerty.kmap.gz (koi8-r, раскладка ЯВЕРТЫ, твердый знак на подчеркивании, переключение по правому ALT). Имя ru-yawerty заносится в /etc/sysconfig/keyboard, который используется при загрузке из /etc/rc.d/init.d/keytable. Можно вызывать вручную: loadkeys ru-yawerty. Для работы обычных 8-битных (не UNICODE) программ этого достаточно.
Драйвер экрана
Разработчики нынешней версии ядра перешли на использование UNICODE (UCS2) в драйвере консоли, поддержка национальных алфавитов отстала (во всяком случае всякие FAQs, HOWTO и советы, оставшиеся от прошлых времен не помогают; шрифты и таблицы перекодировок просто глючат). Механизм RHL 6.0 действует так: при загрузке вызывается /etc/rc.d/init.d/keytable (там же встроена поддержка клавиатуры), которая вызывает /sbin/setsysfont. setsysfont в свою очередь выполняет (если есть) /etc/sysconfig/i18n, ожидая что та определит переменные SYSFONT (имя файла со шрифтом, берется из /usr/lib/kbd/consolefonts) и UNIMAP (имя файла с таблицей соответствия, берется из /usr/lib/kbd/consoletrans). После чего выполняет
consolechars -f $SYSFONT --sfm $UNIMAP
в качестве SYSFONT я беру koi8-8x16, в качестве UNIMAP - koi8-r. Так что и клавиатура и экран работают в koi8-r и не надо ничего перекодировать (в новой версии использование koi8-r не ломает таблички MidnightCommander, в RH 6.0 вместо русской буквы 'В' выводится тире с точками, в RH 6.2 - поправлено). Есть и другие шрифты (koi8-8x8, koi8-8x14, alt-8x8, alt-8x14, alt-8x16, Cyr_a8x8, Cyr_a8x14, Cyr_8x16), но таблица UNIMAP есть только для koi8-r. Иногда setsysfont (consolechars) не срабатывает с первого раза, приходится повторять. В 2.2.12 вообще перестал работать (клавиатура переключается, но вместо русских букв на экран выдается псевдографика, а вместо псевдографики - русские буквы). В 2.2.14 работает без проблем.
X11
Растровые шрифты. В принципе какой-то комплект входит в поставку, но в RH 6.0 я взял более свежий с kiarchive. Встать в /usr/X11R6/lib/X11/fonts и распаковать. Появятся поддиректории cyrillic/{75dpi|100dpi|misc}. Шрифты из поставки можно удалить. В RH 6.2 я взял шрифты из дистрибутива.

Type1 шрифты. Взять с kiarchive(pfb-шрифты). А лучше взять шрифты вместе с pfm-метрикой в gpi (тогда fonts.dir и fonts.scale придется сделать самому). Можно еще взять afm-метрику в gpi. Создать в /usr/X11R6/lib/X11/fonts/cyrillic поддиректорию Type1 и положить шрифты туда. Из fonts.dir-scale.add сделать fonts.dir и fonts.scale (не забыть добавить 16 первой строчкой). Шрифты в формате pfa изготовляются из pfb-шрифтов программой pfbtops.

xfs. В RHL 6.0 все шрифты берутся от xfs (X font server). Запускается в /etc/rc.d/init.d/xfs (по SIGHUP перезагружает конфигурационный файл). Конфигурационный файл - /etc/X11/fs/config. Команда catalogue определяет список директорий, из которых font server будет брать шрифты. Вписать нужный cyrillic/...dpi в начало списка, затем cyrillic/misc, cyrillic/другойdpi, cyrillic/Type1. Перезапустить xfs (/etc/rc.d/init.d/xfs stop; /etc/rc.d/init.d/xfs start). Только не надо делать это при работающем X сервере, он этого не любит.

locale. В XFree86 3.3. (X11R6) уже должен быть locale ru_RU.KOI8-R. Если нет, то можно взять на kiarchive (X11R5, X11R6). Чтобы его включить надо установить переменную LANG равной ru_RU.KOI8-R (например, в ~/.bashrc). Я попробовал... Gnome явно пытается говорить по русски, В заголовках окон у него это получается, а вот в остальных местах он пытается использовать ISO5589-5, которого у меня нет, пришлось отключить. В RH 6.2 (XFree86 3.3.6) русский язык уже почти везде нормально смотрится (на этот раз кроме заголовков окошек :).

Ввод. Правильный метод. Использование Cyrillic_* keysyms в XKB. Возникают проблемы со старыми программами. В XFree86 3.3.3 ошибка, приводящая к использованию ISO8859-5 таблиц вместо KOI8-R. Есть заплатка, позволяющая это дело поправить (если, конечно, есть желание самому собирать XFree86). Для того, чтобы включить русский ввод надо добавить
XkbKeymap "xfree86(ru)"
в секцию Keyboard файла XF86Config и установить переменную окружения LANG=ru_RU.KOI8-R. К сожалению, RHL 6.0 как раз включает ошибочную версию XFree86 3.3.3. К тому имеются проблемы с шрифтами у Gnome/enlightment

Ввод. Правильный метод в RH 6.2. Правый Alt работает как ModeShift (русские буквы вводятся, пока на нее жмешь). В XF86Config в секции Keyboard записываем (слова в кавычках являются именами файлов в соответствующих поддиректориях /usr/X11R6/lib/X11/xkb, слова в скобках - именами секций в соответствующих файлах):
LeftAlt Meta
RightAlt ModeShift
ScrollLock ModeLock (не работает)
RightCtl Control
XkbKeymap "xfree86(ru)"
XkbRules "xfree86"
XkbModel "pc101"
XkbLayout "ru" (раскладка "йцукенг" - как в MS Windows, кроме символов над цифрами)
закоментарить XkbKeycodes, XkbTypes, XkbCompat, XkbSymbols, XkbGeometry
Улучшения для правильного метода в RH 6.2.
Можно keymap/xfree86 (секция ru) поменять en_US(pc105)+ru на ru(winkeys), чтобы в русском режиме вводились символы как на наклейках над цифрами.
на моей клавиатуре оказались "лишние" кнопки с окошками, которые я приспособил для постоянного включения/выключения русского режима. В файле /usr/X11R6/lib/X11/xkb/symbols/ru добавил определение для левой кнопки с окошком:

key <LWIN>{ symbols[Group1]= [ ISO_Next_Group ] };
key <RWIN>{ symbols[Group1]= [ ISO_Next_Group ] };
переделать файл /usr/X11R6/lib/X11/xkb/symbols/ru под "яверты"
Ввод. Обманный Xmodmap. Подстановка "улучшенного" Xmodmap в /usr/X11R6/lib/X11/xinit/.Xmodmap, который подменяет стандартную раскладку ISO8859-1 на KOI8-R. Может быть придется где-то вручную вызывать xmodmap /usr/X11R6/lib/X11/xinit/.Xmodmap (это должен делать xinitrxc или ~/.xinitrc, но всякое бывает). Прикладные программы после этого считают, что они имеют дело с обычными латинскими символами, а при вводе после нажатия CapsLock происходит преобразование в соответствии с клавиатурной раскладкой ЯВЕРТЫ. Нарушает все концепции интернационализации в X11. У меня не заработало в XFree86 3.3.3 (в прежних версиях работало отлично).

Ввод. Использование специальной программы перекодировки. Я опробовал Xruskb А. Лукьянова. Есть rpm в contrib. Единственный метод, который заработал у меня в RH 6.0. Опять-таки должны возникать проблемы с "правильными" прикладными программами. Запуск:
xrus yawerty-koi8.xmm
Переключение по кнопке или двум shift-ам.
Менеджеры окон и рабочего стола.
gnome/enlightment - нельзя выбирать Themes/BrushedMetal, иначе не будет русских букв в заголовках окон (используется шрифт lucida?).
Приложения под X11
gnome-terminal: setting->preferences->font->browse. В фильтрах ставим, что шрифт должен иметь charset=koi8-r, после чего выбираем какой-нибудь из шрифтов типа курьер (они моноширинные).

ghostscript. Копируем все .pfm, .afm и .pfb файлы из созданной ранее cyrillic/Type1 в /usr/share/fonts/default/ghostscript. Берем в gpi gs-Fontmap.add и добавляем его в конец /usr/share/ghostscript/5.10/Fontmap (оригинал сохранить). Затем закоментировать в Fontmap алиасы для Helvetica, Courier и Times, раскоментировать алиасы на соответствующие русские шрифты (там два курьера, выбрать CourierCyrPS, см. про Netscape). Еще советуется запускать с ключем -dNOPLATFONTS, но у меня gv и так с ним зпускается. Преобразование ps в pcl для печати дл HP LaserJet:
gs -q -sDEVICE=ljet4 -r600x600 -sPAPERSIZE=a4 -dNOPAUSE -dSAFER -dNOPLATFONTS -sOutputFile=-

Netscape 4.6: Edit->Preferences->Fonts. Для кодировки koi8-r выбираем Times(cronyx) и Curier (cronix). Почему-то netscape не любит шрифтов Type1 (ни pfb, ни pfa, ни с метрикой, ни без нее). Проблема при печати - он использует только встроенные метрики шрифтов и русские буквы плывут. Есть заплатка, которая правит бинарник netscape, записывая туда метрики CourierCyrPS и TimesCyrMT (любой версии, у меня сработало на 4.6/4.72). Естественно, теперь нельзя удалять русские Type1 шрифты ;). Также при печати нет подчеркиваний, цветов и оформления страницы (дата, имя файла и т.д.).


Категория: Linux | Добавил: Admin (24.02.2008)
Просмотров: 379 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email *:
Код *:
Меню сайта
Категории каталога
Linux [10]
Macintosh [0]
Free/open...BSD [2]
Комерческие [0]
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Наш опрос
Оцените мой сайт
Всего ответов: 20