BASH Programming - Введение

       

Нерусская кириллица для X Window


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

Возможно, найденные вами шрифты окажутся в отличной от нужной вам кодировки. Для перекодировки BDF-шрифтов можно использовать программу trbdf

из пакета .

Эта программа поддерживает кодовые страницы ibm855, ibm866, iso-8859-5, koi8-c, koi8-r, koi8-u, mac-cyrillic, mik, unicode и ecma-cyrillic. Символы, отсутствующие в исходной кодировке, аппроксимируются, так что ее можно использовать, например, для генерации KOI8-U шрифтов из KOI8-R.

Если вам нужна поддержка cp1251, то вы столкнетесь с тем, что пока официально XFree не поддерживает эту кодировку. Имеются три решения:

  • Использовать дистрибутив, поддерживающий cp1251 (напр. Mandrake

    Linux).

  • Патчить XFree. для XFree 3.3.5 и 4.0 сделан Алексеем Новодворским.
  • Идеологически неверное решение, но работает везде и легко осуществимо:

    Добавьте в конце файла locale.alias (обычно он находится в каталоге /usr/X11R6/lib/X11/locale) строку вида

    be_BY.CP1251 en_US.ISO8859-1

    Конечно, вместо be_BY.CP1251 здесь Вы можете поставить строку для используемой Вами локали. (Однако имейте ввиду, что имеющаяся уже в этом файле строка о Болгарской локали bg_BG неверна и ее нужно удалить.)

  • Если для кириллизации клавиатуры используете метод через утилиту xmodmap, то этим все и кончится. Если же вы захотите использовать Xkb метод, то в клавиатурной раскладке вместо символических имен нужно использовать коды символов согласно cp1251. Например, для белорусской раскладки вместо

    key <AD01> { [ q, Q ], [ Cyrillic_shorti, Cyrillic_SHORTI ] };

    нужно использовать

    key <AD01> { [ q, Q ], [ 0xe9, 0xc9 ] };

    Замечание. Только версии XFree после 4.0.0 поддерживают KOI8-U. Если у вас отсутствует поддержка KOI8-U, а вам нужна именно эта кодировка, то вы можете воспользоваться всем вышеописанным про cp1251.



    Содержание раздела