Linux Cyrillic HOWTO Александра Беликова в переводе Евгения Балдина

 
  • Linux Cyrillic HOWTO Александра Беликова в переводе Евгения Балдина
  • Предисловие переводчика
  • The Linux Cyrillic HOWTO
  • 1. Общие примечания
  • 1.1. Введение
  • 1.2. Местоположение документа и обратная связь
  • 1.3. Благодарность and copyrights
  • 2. Символы и codesets
  • 3. Настройка шрифтов для текстового режима (консоль)
  • 3.1. Linuxовая косоль
  • 3.2. Консоль FreeBSD
  • 4.1. X шрифты.
  • 4.2. Ввод с клавиатуры
  • 5. Поддержка Кириллицы в TeX и LaTeX
  • 5.1. Работа с Washington Cyrillic
  • 5.2. KOI-8 пакет для teTeX
  • 5.3. Использование пакета для LaTeX cmcyralt
  • 5.4. Использование пакета CyrTUG
  • 6. Русский в PostScript
  • 6.1. Добавление шрифтов Кириллицы к Ghostscript
  • 7. Установка Печати
  • 7.1. Загрузка шрифтов Кириллицы в не-постскриптный принтер
  • 7.2. Печать с различными шрифтами
  • 7.3. Преобразование текста в TeX
  • 7.4. Преобразование текста в PostScript
  • 7.4.1. A2ps конвертер
  • 7.4.2. GNU enscript
  • 8. Всякая всячина - настройка и установка
  • 8.1. bash
  • 8.2. csh/tcsh
  • 8.3. Dosemu (эмулятор Dos)
  • 8.4. Emacs
  • 8.5. Ispell
  • 8.6. Joe
  • 8.7. Ksh
  • 8.8. less
  • 8.9. Lynx
  • 8.10. Mc (The Midnight Commander)
  • 8.11. Netscape navigator
  • 8.11.1. Общая настройка
  • 8.11.2. Текст Кириллицы во фреймах и при вводе
  • 8.11.3. Продвинутая настройка
  • 8.12. pine
  • 8.13. Rlogin
  • 8.14. Sendmail (другими словами " Гибель Сусадмина ")
  • 8.15. StarOffice
  • 8.16. Xemacs
  • 8.17. Zsh
  • 9. Localization and Internationalization
  • 9.1. Locale
  • 9.1.1. Как использовать locale
  • 9.1.2. Locale зависимое программирование
  • 9.2. Интернационализация
  • 10. Полезные Утилиты
  • 10.1. Утилиты перкодировки
  • 11. Библиография
  • 12. Список различных полезных ресурсов


  • Предисловие переводчика



          From: Evgenij Baldin (baldin@sky.inp.nsk.su))
    Как-то пол года назад перевел для себя Cyrillic HOWTO Беликова - кое-что устарело, кое-что лучше сделать по другому - но вобщем,- полезно. Если вы хотите руссифицировать UNIX - то начинать лучше после того, как прочитали этот техт (вероятно есть еще переводы, но пол года назад я их не нашел)

    The Linux Cyrillic HOWTO


          Александр Л. Беликов, (abel@bfr.co.il), Berger Financial
          Research Ltd. V3.15, 14 ноября 1997

          В этом документе описывается, как настроить Linux для редактирования, просмотра и печатати документов на Русском языке.

    1. Общие примечания


    1.1. Введение



          В этом документе описываются приемы которые нужны для редактирования, просмотра, и печатати документов по-русски под Linux. И хотя здесь предполагается, что вы используете Linux как операционную систему, большинство описываемой информации одинаково применимо к другим разновидностям Unix. Я попытаюсь указывать на различия.

          Имеется ряд популярных дистрибутивов Linux. В качестве примера я выбрал RedHat 3.0.3 Linux (Picasso) и RedHat 4.1 Linux (Vanderbildt) - это тот, который я лично использую. Однако, я буду подчеркивать различия, если они существуют, при настройке Slackware Linux.

          Так как такая установка непосредственно изменяет и расширяет операционную систему, то вы должны понимать, что делаете. Несмотря на то, что я пробовал упростить изложение настолько, насколько это возможно, наличие некоторого опыта работы с настраевыемым программным обеспечением является преимуществом. Я не собираюсь описывать что такое X Windows или как к создаются документы в системах TeX и LaTeX, или как установить принтер в Linux. Это описано других документах.

          В большинстве случаев я описываю полную руссификацию ситемы, по умолчанию требующей привилегии root. Хотя, если имеется возможность для настройки на уровне пользователя, то я буду об этом упоминать.

          ОБРАТИТЕ ВНИМАНИЕ: X WIndows, TeX и другие компоненты Linux- сложные системы с навороченным setupом. Если Вы сделаете что-либо неправильно, то не только потерпите неудачу с руссификацией системы, но и можите частично если не полностью испортить систему. Это не должно вас пугать, это просто предупреждение, котрое дает вам понять всю серьезность процесса настройки такого типа. Очень рекомендуется сделать копии файлов конфигурации. Также неплохо бы иметь возможность связаться с гуру.

    1.2. Местоположение документа и обратная связь



          Этот документ лежит на sunsite.unc.edu или tsx-11.mit.edu и является частью Linux Document Project. Также, его можно найти на различных FTP, имеющих отношение к Linux. Кроме того, это документ может быть включен в дистрибутив Linux.

          Если у вас имеются любые предложения или исправления по контексту этого документа, то, пожалуйста незамедлительно проконтактируйте со мной abel@bfr.co.il. Предоставление любой новой и полезной информации относительно поддержки Кириллицы в различных Unixах крайне поощряется. Не забудьте, ведь это поможет другим.

    1.3. Благодарность and copyrights



          Много людей помогли мне (и не только мне) ценной информацией и предложениями. И даже большое количество людей создало программное обеспечение для public comunity. Мне очень жаль если я забыл кого - то упоминуть.
    Итак вот они нашы герои:
          Bas V. Bakker
          David Daves
          Сергей Вакуленко
          Сергей О. Наумов
          Winfried Truemper
          Илья К. Орехов
          Michael Van Canneyt
          Алексей Богданов


          relcom.fido.ru.unix и relcom.fido.ru.linux Usenet newsgroups.

          Этот документ - Copyright (C) 1995,1997 Александра Л. Беликова. Он может использоваться и распростроняться под обычными Linux HOWTO условиями, описанными ниже.

          Далее идет - примечание к авторским правам Linux HOWTO:

          Если не отмечено иначе, Linux HOWTO документы защищенны авторскими правами их авторов. Linux HOWTO документы могут воспроизводиться и распространяться полностью или частично, в любым физическим или электронным способом, покуда это заявление авторского права сохраняется во всех копиях. Коммерческое распределение позволяется и поощряется; однако, автор хотел бы уточнить правила относительно любых таких распространений.

          Все работы, использующие данный документ, включая любой Linux HOWTO, должны быть распространяться под этим же соглашением. То есть вы не можете налагать дополнительные ограничения на распространение своего продукта основанного на данном HOWTO. Исключения к этим правилам могут предоставляться только при некоторых условиях; пожалуйста войдите в контакт с Linux HOWTO координатором по адресе, данном ниже.

          Короче говоря, мы желаем поддержать распространение этой информации через настолько многие каналы распространения насколько это возможно. Однако, мы желаем сохранить авторские права на HOWTO документы, и хотелось бы что бы нас предупреждали о любых планах относительно распространиния этого HOWTO.

          Если у вас имеются вопросы, пожалуйста войдите в контакт с Greg Hankins, координатором Linux HOWTO , по gregh@sunsite.unc.edu. Для того чтобы получить номер телефона и дополнительную информацию для контакта вы можете напустить на этот адрес finger.

          Unix is a technology trademark of the X/Open Ltd.; MS-DOS, Windows, Windows 95, and Windows NT are trademarks of the Microsoft Corp.; The X Window System is a trademark of The X Consortium Inc. Other trademarks belong to the appropriate holders.

    2. Символы и codesets



          Чтобы понимать и печатать символы различных языков, система и программное обеспечение должна быть способна отличить их от других символов. То есть каждый уникальный символ должен иметь уникальное представление внутри операционной системы, или специфического пакета программ. Такая совокупность всех уникальных символов, которые система способна представить сразу, называется codeset (кодировка).

          Во время создания большенства операционных системе, никто не заботился относительно программного обеспечения, являющегося многоязычным. Следовательно, наиболее популярный codeset был (и фактически остается им) ASCII (Американский Стандартный Код для Информационного Обмена).

          Стандарт ASCII (или ASCII с 7 битами) включает 128 уникальных кодов. Они подразделяются на символы, которые ASCII определяет как собственно печатаемые, и на так называемые символы управления, которые имели специальные значения в старых протоколах связи. Каждый элемент набора идентифицирован целочисленным символьным кодом (0-127). Подмножество печатаемых символов представляют те, которые находят на клавиатуре пишущей машинки с некоторыми некоторыми добавлениями. Старший разряд и 7ми бит использовался для целей управления (то есть, для управления передачи в старых пакетах связи).

          Концепция ASCII с 7 битами была расширена до ASCII с 8 битами (или расширенного ASCII). В этой кодеровке, диапазон символов соответствует кодам от 0 до 255. Младшие биты (0-127) - чистый ASCII, в то время как старший разряд добавляет еще 127 символов. Так как этот codeset обратно совместим с ASCII (символ все еще занимает 8 бит, и коды полностью соответствуют старому ASCII), этот codeset стал широко использоваться.

          Стандарт ASCII с 8 битами не определяет содержание верхней половины codeset. Поэтому МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ (ISO) взяла ответственность по определению семейства стандартов, известных как ISO 8859-X семейство. Это - совокупность 8ми битных кодировок, где младшая половина каждого codeset (символы с кодами 0-127) соответствует ASCII, и старшая половина определяет символы для различных языков. Например, следующий codesets определены для:

          8859-1 - Европа, Латинская Америка (также известный как Latin 1)

          8859-2 - Восточная Европа

          8859-5 - Кириллица

          8859-8 - Идиш

          В Latin 1, старшая половина таблицы определяет различные символы, которые - не являются частью Английского алфавита, но присутствовует в различных европейских языках (немецкие umlauts, французские диакритические знаки и т.д).

          Другая популярная реализация расширенного ASCII - так называемая кодовая страница IBM (названная по имени компьютерной компания, которая создала, этот codeset для своих персональных компьютеров). Эта кодеровка в старшей половине содержит псевдо - графические символы.

          Программное обеспечение, которое не делает никаких предположений о символах использующих 8-ой бит ASCII данных, называется чисто 8ми битными. Несколько более старых программ, разработанные для ASCII с 7 битами в памяти не для чистых 8 бит могут работать неправильно с вашими расширенными ASCII данными. Большинство пакетов, однако, способны работать с расширенным ASCII по умолчанию, или для этого требуется простая переконфигурация.
    ОБРАТИТЕ ВНИМАНИЕ: перед заданием вопроса типа: " я делал все установки правильно, но я не могу ввести или увидеть символы Cyrillic! ", пожалуйста консультируйтесь с соответствующим разделом в доументации к программе, которую Вы используете.


          Так как в большинстве систем символы описываются 8ю битами, то нет никакого способа расширить ASCII еще больше. Способ создания новых символов в ASCII - это просто создание других расширенных ASCII реализаций. С помощью этого способа была введена Кириллица в ASCII.

          Мы уже упомянули ISO 859-5 стандарт как тот, в котором определяется codeset для Кириллицы. Но поскольку (как это часто случается со стандартами), он был разработан без принятия во внимание реальных процессов проходящих в СССР (когда это еще было), то этот стандарт только увеличил беспорядок с кодировками Кириллицы. Я не сказал бы, что ISO 8859-5 где-либо широко используется.

          Другие стандарты для Кириллицы включают, так называемый, Alt codeset и кодовая страница Microsoft CP1251. Вышеупомянутый Alt стандарт был разработан для МС-ДОС довольно давно. Тогда еще слыхом не слыхивали про сети и поэтому основное усилие состояло в том, чтобы сделать этот стандарт настолько насколько это возможно совместимым с IBM стандартом. Следовательно Alt codeset - действительно та же самая IBM кодовая страница, где все специфические символы European в верхней половине были заменены на Кириллицу, оставляя псевдографические символы нетронутыми. Следовательно, это не портило вид программ использующих для работы текстовые окна и также обеспечило символы Cyrillic. Alt стандарт все еще жив и чрезвычайно популярен в среде МС-ДОС.

          Microsoft CP1251 кодовая страница - это попытка Microsoft придумать новый стандарт для кодеровки Кириллицы в Windows. Насколько я знаю, это не совместимо с чем либо еще (и не удивительное, три Ха-Ха)

          Ну и наконец KOI-8. Этот стандарт токже довольно стар, но был разработан настолько продуманно, что и в настоящее время основные отправные идеи разработки выглядят действительно полезными.

          Это станарт совместим с ASCII, и символы Cyrillic размещены в старшей половине. Но основная идея проекта KOI-8 - то, что позиции символов Cyrillic должны соответствовать символам English с той же самой фонетикой. А именно, если мы устанавливаем восьмой бит символа English " ", мы получим Кириллицу " ". Это означает, что, в если в тексте Кириллицы, написанном в KOI-8, мы убираем восьмой бит каждого символа, то мы все еще имеем читаемый текст, хотя он и написан символами English! Это очень важно теперь, так как имеется довольно много систем E-maile откусывающих восьмой бит, так как они прбывают в уверенности, что каждый о человек на поверхности Земли говорит на английском языке.

          Не удивительно, что KOI-8 быстро стал фактическим стандартом для Кириллицы в Internet. Андрей А. Чернов проделал огромное количество работы, чтобы создать стандарт. Он - автор RFC 1489 ("Registration of a Cyrillic Character Set ").

          Эти два стандарта отличаются только в позициях символов кириллицы в таблице (который определяется в кодах символа кириллицы).

          Принципиальное различие - то, что Alt codeset используется пользователями МС-ДОС и только, в то время как KOI-8 используется в Unix, также как в МС-ДОС (хотя в последнем KOI-8 намного менее популярен). Так как мы идем правильным путем (а именно работаем в Unix-оподобной операционной системе), мы будем в основном останавливаться на рассмотрении KOI-8.

          Что касается стандарта ISO, то он более популярен в Европе и США как стандарт для Кириллицы. Лидер в России это определенно KOI-8.

          Имеются также другие более гибкие стандарты, которые являются отличными от ASCI. Больше всего известен стандарт Unicode. Однако, они не встроены также хорошо как простой ASCII в Unix вообще и Linux в частности. Следовательно, здесь я их не описываю.

    3. Настройка шрифтов для текстового режима (консоль)



          Вообще, настройка текстовых режимов - самый простой способ показывать и вводить символы Cyrillic. Однако, имеется одно значительное осложнение: текстовые шрифты и расположение символов на клавиатуре зависят от реализации драйвера терминала. Следовательно, не имеется никакого общего способа для достижени цели цели в различных систем.

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

    3.1. Linuxовая косоль



          Консольный драйвер Linux - довольно гибкий образчик программного обеспечения. Он может менять шрифты и раскладки клавиатуры. Чтобы селать это, вам нужен пакет kbd. И RedHat, и Slackware устанавливают kbd как часть системы.

          Пакет kbd содержит утилиты управления клавиатур, кроме этого с ним поставляется широкий выбор шрифтов и раскладок.

          Установка Кириллицы с помощью kbd обычно состоит из:

          1. Экранной установки шрифтов, которая выполняется программой setfont. Файлы шрифтов размещены в /usr/lib/kbd/consolefonts.

          ОБРАТИТЕ ВНИМАНИЕ: Никогда не выполните программу setfont под X, потому что это приведет систему к краху. Это происходит, потому что пакет работает с обращениями видеоплаты низкого уровня, которые X не переваривает.

          2. Загрузки соответствующей раскладки клавиатуры программой loadkeys.

          ОБРАТИТЕ ВНИМАНИЕ: В RedHat 3.0.3, /usr/bin/loadkeys имеет слишком ограниченные права доступа, а именно 700 (rwx ------). Никаких причин для этого нет, так как каждый может скомпилировать и запустить свою собственную копию пакета (соответствующие системные вызовы не требуют привелегий root). Вам надо только попросить, чтобы ваш sysadmin установил более адекватные для этого права доступа (например, 755).

          Следующее это выжимка из моего скрипта, загружающего кирилицу, который устанавливает режим Cyrillic для консоли Linux:

          if [ notset.$DISPLAY != notset. ]; then
          echo "`basename $0`: cannot run under X"
          exit
          fi

          loadkeys /usr/lib/kbd/keytables/ru.map
          setfont /usr/lib/kbd/consolefonts/Cyr_a8x16
          mapscrn /usr/lib/kbd/consoletrans/koi2alt
          echo -ne "\033(K" # the magic sequence - Мумба-Юмба
          echo "Use the right Ctrl key to switch the mode..."

          Позвольте мне это пояснить. Вы загружаете соответствующую раскладку клавиатуры. Затем загружаете шрифт, соответствующий Alt codeset. Затем, чтобы быть отображать текст в KOI8-R правильно, вы загружаете экранную таблицу перекодировки. Что это дает: отображает некоторые символов из старшей половины codeset в Alt кодировку. Слово " некоторый " является здесь центральным - не, все символы отображаются, то есть некоторые из них, соответствующие IBM псевдографическим символам для экрана и дисплея не изменяются, так как они совместимы с Alt codeset, в противоположность KOI8-R. Чтобы увериться, загрузите mc, и вообразите, что Вы вернулись в старые добрые времена к МС-ДОС 3.3 ...

          В заключение, magic sequence (Мумба-Юмба) необходима, но я не имею понятия, на кой она. Я украл/занял/научился этому из German HOWTO в далеком 1994, когда это был единственным ориентированным на национальный язык HOWTO. Если Вы имеете хоть какую-нибудь идею относительно этой волшебной последовательности, пожалуйста сообщите мне.

          В заключение, для тех эстетов, кто не желает использовать Alt codeset, я прилагаю другую версию загрузочного шрифта, используя родные KOI8-R шрифты.

          if [ notset.$DISPLAY != notset. ]; then
          echo "`basename $0`: cannot run under X"
          exit
          fi

          loadkeys /usr/lib/kbd/keytables/ru.map
          setfont /usr/lib/kbd/consolefonts/koi-8x16
          echo "Use the right Ctrl key to switch the mode..."

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

          Теперь Вы вероятно хотите проверить это. Сконфигурируйте таким образом bash или tcsh, перегрузите его, затем нажмите правую Клавишу CTRL, и удостоверитесь, что Вы можите печатать на русском. Клавиша "q" должна соответствовать "й", "w" соответствует "ц", и т.д.

          Если у вас возникли непредвиденные проблемы, то лучше всего вернуться к родной (то есть US) раскладке. Для этого сделайте следующие телодвижения:

          loadkeys /usr/lib/kbd/keytables/defkeymap.map
          setfont /usr/lib/kbd/consolefonts/default8x16

          ОБРАТИТЕ ВНИМАНИЕ: к сожалению, консоль не способна сохранить это состояние (по крайней мере без излишних ухищрений), когда передается правление X Windows. Следовательно, после того, как вы вышли из X (или переключаетесь на консоль), то вы должны перезагрузить русский шрифт.

    3.2. Консоль FreeBSD



          Я не использую FreeBSD, так что я не могу проверить следующую информацию. Все данные в этом разделе должны восприниматься только как приблизительные указатели направления действий. На страничке FreeBSD, вероятно, что-то есть по этому вопросу. Другой хороший источник информации- relcom.fido.ru.unix newsgroup. Кроме того, проверьте источники, перечисленные в разделе """.

          Во всяком случае, это - то, что Илья К. Орехов предлагает сделать, чтобы заставить консоль FreeBSD говорить по русски:

          1. In /etc/sysconfig add:

          keymap=ru.koi8-r
          keyrate=fast
          # NOTE: '^[' below is a single control character
          keychange="61 ^[[K"
          cursor=destructive
          scrnmap=koi8-r2cp866
          font8x16=cp866b-8x16
          font8x14=cp866-8x14
          font8x8=cp866-8x8

          2. В /etc/csh.login:

          setenv ENABLE_STARTUP_LOCALE
          setenv LANG ru_SU.KOI8-R
          setenv LESSCHARSET latin1

          3. Сделать аналогичные изменения в /etc/profile

          4. X Windows

          Подобно консольному режиму, X windows также требует некоторой настройки. Настройка включает в себя настройку ввода и установку X шрифтов. Данные действия обсуждаются ниже.

    4.1. X шрифты.



          Прежде всего Вы должны получить шрифты, имеющие Кириллические glyphs (изображения) в соответствующих местах.

          Если Вы используете достаточно новый дистрибутив X (или XFree86), то возможно, что у вас уже есть такие шрифты. В 1995, в дистрибутив X Windows был включен набор шрифтов Кириллицы, созданных Cronyx. Спросите администратора вашей системы, или, если вы- это он и есть, проверьте вашу систему на предмет, а именно::

          1. Выполнить " xlsfonts | grep -i koi ". Если имеются перечисленные шрифты, то ваш X сервер уже знает об их существовании.

          2. Или, наберите

          find -name crox\*.pcf\*

          Вы найдете местоположение шрифтов Кириллицы в системе. Вы должны будете скормить эти шрифты X servery, как - я объясню ниже.

          Если Вы не нашли такие шрифты в вашей системе, то вы должны установить их сами.

          Имеется некоторая неоднозначность со шрифтами. В документации на XFree86 утверждается, что российская коллекция шрифтов, включенная в набор разработанна Cronyx. Однако, вы можете найти другой дистрибутив Cronyx шрифтов Кириллицы в сети (а именно на ftp.kiae.su), известный, как пакет xrus (не путать это с программой xrus, которая используется для установки расскладок Кириллицы. К счастью, последняя была недавно переименована в xruskb). Xrus имеет меньший набор шрифтов чем в коллекции Xfree86 (38 против 68), но последняя не подошла для работы с " Netscape " - она подставила просто огромных шрифты в menubar Netscape. Пакет xrus не имеет этой проблемы.

          Я предложил бы, чтобы Вы загрузили и опробовали оба пакета. Подберите тот, который вы найдете наиболее приятным в общении. Кроме, я скоро создам RPMки для обоих пакетов, и положу, их в ftp.redhat.com и в мой FTP архив.

          Имеется также более старое решение, например пакет vakufonts, созданный Сергеем Вакуленко, который стал основой для пакета включенного в дистрибутив X Windows Имеется также ряд других пакетов. Очень важно, что имена шрифтов в старой коллекии не совпадают со стандартом полностью. Vakufonts в общем ниче, но иногда из-за могут возникать различные сверхъестественные ошибки. Например, у меня были проблемы с Maple V для Linux, который падал по непонятным причинам с пакетом vakufonts, но прекрасно работал со "стандартными" наборами.

          Итак, давайте начнем со шрифтов:

          1. Вытащите по ftp соответствующий набор шрифтов. Пакет для XFree86 можно найти на любом FTP архиве, где лежит дистрибутив X Windows, например, непосредственно на официальном XFree86 FTP архиве. Пакет Xrus можно найти на ftp.kiae.su

          2. Теперь, когда у вас есть шрифты, создайте директорию для них. Поместить новые шрифты в уже существующий каталог шрифтов не очень хорошая идея. Поместите их, например, в /usr/lib/X11/fonts/cyrillic для настройки всей ситемы, или просто создайте каталог у себя только для персонального пользования.

          3. Если новые шрифты поставляются в формате BDF (* .bdf файлы), то Вы должны скомпилировать их. Для каждого шрифта выполните:

          bdftopcf -o <font>.pcf <font>.bdf

          Если ваш server поддерживает сжатые шрифты, то сожмите их с помощью compress:

          compress *.pcf

          Если же вы все-таки хотите поместить новые шрифты в уже существующий каталог шрифтов, то Вы должны сростить старый и новые файлы, с именем fonts.alias в том случае, естественно, если оба существуют.

          4. В каждый каталог шрифтов для X должен быть список шрифтов. Этот список находится в файле fonts.dir. Вы не должны создавать этот список вручную. Вместо этого, сделайте:

          cd <new font directory>
          mkfontdir .

          5. Теперь Вы должны сделать этот каталог шрифтов известным для X сервера. Здесь у вас есть ряд возможностей:

          Общесистемная настройка для XFree86. Если вы используете эту версию X Windows, то добавьте новый каталог к списку каталогов в файле XF86Config. Чтобы найти его расположение, см. что говорит startx при запуске. Более подробно смотрите man XF86Config (4/5).

          Общесистемная настройка через xinit. Добавьте новый каталог к файлу запуска xinit. Более подробно смотрите man xinit (1x).

          Персональная настройка. У вас есть специальный файл для запуска X - ~/.xinitrc (или ~/.Xclients, или ~/.xsession для пользователей RedHat). Добавьте следующие команды в этот файл:

          xset +fp <new font directory>
          xset fp rehash

          Обратить внимание, на опцию " + fp "- это означает, что новые шрифты будут добавлены в начале списка директорий со шрифтами. То есть если прикладная программа запрашивает, скажем, fix font, то будет подставлен fixed font с символами Cyrillic, чего именно мы и добивались.

          Хотя имеются некоторые проблемы. В дистрибутиве шрифтов кириллицы нет полужирного и курсивного fixed font. Мой любимый шрифт - 6x13, а так, как полужирные и курсивные шрефты этого размера также отсутствуют, то я не могу использовать Emacs/XEmacs в полной мере. Надеюсь, что кто - то в конечном счете создаст эти шрифты, и ситуация изменится.

          6. А теперь перезапустите ваш X Windows., если вы все сделали правильно, то тесты в начале раздела будут пройдены успешно. Кроме того, поиграйтесь с xfontsel (1x), чтобы удостовериться что Вы способны выбрать шрифты кириллицы.

          Чтобы заставить X клиента использовать шрифты Кириллицы, Вы должны установить соответствующие X resources. Например, я делаю русский шрифт заданным по умолчанию в моем ~/.Xdefaults:

          *font: 6x13

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

          Это простой пример. Если Вы хотите научить соответствующий X client пользоваться кириллическим шрифтом , то Вы должны узнать тип ресурса, который вам надо изменить (можно это сделать используя editres (1x)) и определить его или в базе данных ресурсов, или в командной строке. Например можно сделать так:

          $ xterm -font '-cronyx-*-bold-*-*-*-19-*-*-*-*-*-*-*'

          $ xfontsel -xrm '*quitButton.font: -*-times-*-*-*-*-13-*-*-*-*-*-koi8-*'

          xfontsel.

    4.2. Ввод с клавиатуры



          В последних выпусках X (X11R61 и выше) имеются два "стандартных" способа ввода с клавиатуры: родной способ, работающий через утилиту xmodmap, и новый, называемый Xkb (X KeyBoard). Первое что вы должны сделать это отключить Xkb способ! Не давайте себя загипнотезировать его способностью устанавливать "russian keyboard". Этот способ, вроде бы, использует описание символов Кириллицы определенных в keysymdef.h. Этот файл определяет символы для многих языков. Единственая проблема состоит в том, что данное определения не позволяют, работать с расширенным ASCII codeset - очень много программ могут работать только с этой расскладкой! Я почти не знаю программ, которые разбираются с описанием символов в keysymdef.h отличным от стандартного 8ми битного ASCII. Однако, наша главная цель состоит в том, чтобы заставить работать поддержку KOI8-R.

          Чтобы отключить поддержку Xkb, в файле XF86Config изучите раздел Keyboard и закомментируйте, все строки, начинающиеся с Xkb. Взамен, добавьте следующую строку:

          XkbDisable

          Программа xmodmap позволяет настроить коды соответствующие различными символам и их комбинациям. Эта настройка основанна на файле, содержащем таблицу перекодировки.

          В предыдущих версиях этого документа я очень подробно описывал настройку кириллицы основанную на xmodmap. Это оказалось практически бесполезным. Общеизвестно, что способ перекодировка ввода, основанный на Xmodmap, является, не-портабельным, плохо настраеваемым, и не окончательным. Ваши настройки могут работать с одной версией XFree и сбоить при работе с другой. Более того, иногда результат работы одной и той же настройки сильно разнится для различных серверов из одного дистрибутива.

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

    5. Поддержка Кириллицы в TeX и LaTeX



          В этом разделе я опишу несколько способов набора русских текстов в TeX и LaTeX. Есть несколько направления для достижения цели, которые отличаются в сложности установки и удобстве использования. Например, одна из возможностей это начать работу с использованием шрифты Кириллицы из Washington AMSTeX (это делается без какой либо предварительной настройки). С другой стороны, Вы можете устанавливить пакет LaTeX, обеспечивающим очень высокую степень настройки на Кириллицу. У меня был опыт работы с двумя подобными пакетами. Один из них - cmcyralt пакет Вадима В. Житникова (vvzhy@phy.ncu.edu.tw) и Александра Харина (harin@lourie.und.ac.za), а другой - пакет программ LH написанных группой CyrTUG со стилями и расстановкой дефисов для LaTeX2e созданных Сергеем О. Наумовым (serge@astro.unc.edu). Я опишу оба.

          Обратите внимание, что доступны две версии LaTeX, одна из них - 2.09 - старая, в то время как 2e - новая (выпуск pre-3.0). Если Вы используете LaTeX 2.09, то как можно быстрее переходите на 2e. Последний сохраняет совместимость со старой версией, но имеет намного больше возможностей. Кроме того, версия 3 будет скоро выпущена. Я описываю установку LaTeX 2e.

          Да, кстати, оба этих пакета требуют для редактирования русских текстов установку Alt кодировки, а не KOI-8! Это вызвано историческими причинами, создатели этих пакетов, использовали, их для работы с EmTeX- MS-DOS версии TeX (они еще знали о Linux :-). Переход к KOI-8 требует некоторых усилий, ожидается, что будет скоро сделан. А пока, используйте какие-нибудь утилиту, для перекодировки русского текста из KOI-8 в Alt. См. раздел """.

    5.1. Работа с Washington Cyrillic



          Этот пакет был создан для Американского Математического Общества, чтобы дать возможность создавать документы с ссылками на первоисточники на русском. Следовательно, авторы не очень напрягались при создании этого пакета и шрифты в результате этого выглядят довольно неуклюже. Обычно этот пакет упоминается как " довольно плохой пакет кириллицы для TeX ".

          Однако, мы обсудим его, так как он очень прост в использовании и не требует установки - этот набор содерживается в большинстве дистрибутивов TeX.

          Конечно, у вас не будете такой роскоши как автоматическая расстановка дефисов, но все равно ...

          1. Снабдите ваш документ со следующими директивами:

          \input cyracc.def
          \font\tencyr=wncyr10
          \def\cyr{\tencyr\cyracc}

          2. Теперь, чтобы напечатать символ кириллицы, вставьте

          \cyr

          для печти используйте соответствующий латинский символ или
          команду TeX. То есть, строчные буквы русского алфавита
          соответствуют следующим сочитаниям: a b v g d e \"e zh z i {\u
          i} k l m n o p r s t u f kh c ch sh shch {\cprime} y {\cdprime}
          \`e yu ya

          Чрезвычайно сложно преобразовывать ваши русские тексты в такую кодировку, но вы можете автоматизировать этот процесс. Программа translit (раздел """) поддерживает опцию вывода TeX.

    5.2. KOI-8 пакет для teTeX


    Есть также довольно новый пакет teTeX-rus. Он поддерживает набор символов KOI-8 и отвечает всем основным требованиям TeX и LaTeX. Я лично его не пробовал, что до, то да, но я слышал о нем много положительного.

          ОБРАТИТЕ ВНИМАНИЕ: Этот пакет требует, чтобы Вы переконфигурировали и пересобрать некоторые части вашего пакета teTeX (например precompiled LaTeX макрокоманды). Если вы не знаете точно, что делаете, то вы не должны пробовать это без разумной осторожности. Вероятно лучше позаимствовать правильно пересобранные части у кого - либо из сети

    5.3. Использование пакета для LaTeX cmcyralt



          Cmcyralt пакет может быть найден на любом CTAN (Comprehansive TeX Archive Network)- место подобно ftp.dante.de. Вы должны получить две части: совокупность шрифтов из fonts/cmcyralt и совокупность стилей с расстановкой дефисов- находится в macros/latex/contrib/others/cmcyralt.

          Это Важно: Удостоверитесь, что у вас установлен пакет Sauter , так как cmcyralt требует наличия некоторых шрифтов из этого пакета, который вы тоже можете достать из любого архива CTAN.

          Теперь Вы должны сделать следующее:

          1. Поместите новые шрифты в каталоги шрифтов TeX. На моей системе (Slackware 2.2) я создал каталог cmcyralt в /usr/lib/texmf/fonts/cm/. Создайте подкаталоги src, tfm, и vf в нем. Поместите там .mf, .tfm, и vf файлы соответственно.

          2. Поместите файлы драйвера шрифтов (* .fd) из набора стилей в соответствующее место (в моем случае это было в /usr/lib/texmf/tex/latex/fd).

          3. Поместите файлы стиля (* .sty) в соответствующий каталог стилей LaTeX (в моем случае это было в /usr/lib/texmf/tex/latex/sty).

          Теперь настройка расстановок переносов. Она потребует, пересобрать основные файлы LaTeX.

          1. Файл hyphen.cfg содержит директивы для и английской и русской расстановки переносов. Извлеките директивы для русских переносов, и поместите их в файл конфигурации расстановки переносов LaTeX - lthyphen.ltx. В моем случае, этот файл был в директории /usr/lib/texmf/tex/latex/latex-base.

          2. Поместить rhyphen.tex в тот же самый каталог. Это необходимо для создания основного файла. Позже, Вы можете удалять его.

          3. Сделайте "make" в том каталоге. Не забудьте сделать для линк Makefile к Makefile.unx. Во время компеляции следите за выводом. Должно быть сообщение:

          Loading hyphenation patterns for Russian.

          Если все O'K, то вы получите в том каталоге новый latex.fmt. Поместите его в то место, где был предыдущий (вероятно /usr/lib/texmf/ini/). Не забудьте сохранить предыдущую версия файла (так, на всякий пожарный)!.

          Это все. Установка закончена. Пробуйте пройтись по примерам, найденным в архиве стилей. Если вы в состоянии создавать PostScript файлы без каких-либо проблем, то все - OK. Теперь, чтобы использовать Кириллицу в LaTeX, снабдите ваш документ следующей директивой:

          \usepackage{cmcyralt}

          Подробнее, смотрите README файл в архиве стилей cmcyralt.

          Обратите внимание: если у вас есть проблемы с примерами, и если вы все сделали правильно, то вероятно ваш пакет TeX не был правильно установлен. Например, во время моей первой попытки, каждая попытка создать .pk файлы для российских шрифтов терпела неудачу (стадия Make TeXPK). Престрасное расследование выявило некий неявный конфликт между localfont и ljfour METAFONT настройками. Прежде это работало, но терпело крах после установки cmcyralt. Войдите в контакт вашим местным TeX гуру. TeX очень (иногда слишком) сложен, чтобы переконфигурировать его без отсутствия навыков.

    5.4. Использование пакета CyrTUG



          Вы можете найти пакет CyrTUG на архиве SunSite. Возьмите файлы CyrTUGfonts.tar.gz, CyrTUGmacro.tar.gz, и hyphen.tar.Z.

          Процесс установки не слишком отличается от предыдущиго.

    6. Русский в PostScript



          Эксперты говорят, PostScript это просто. Я не могу судить - у меня было слишком много вещей, которые надо изучить, чтобы выкроить время для изучения PostScript. Но я все равно попробую использовать мои небольшие знания об этом вопрсе. Я буду очень благодарен за любую информацию об этом вопросе от Вас парни, которые знают больше меня (вас приблизительно 99 % от Земной популяции).

          Чтобы печатать русский текст с использованием PostScript, Вы должны удостовериться относительно следующих вещей:

          шрифт Кириллицы загружен или включен в документ.

          текст Кириллицы включен в документ.

          текст Кириллицы использует соответствующие символьные коды, которые соответствуют требованиям шрифта.

          чтобы печатать текст Кириллицы выбран соответствующий шрифт.

          Не имеется никакого достаточно общего решения, чтобы рекомендоваться его как окончательное. Я попробую осветить различные способы для решения различных проблемами, связанных с этим вопросом.

          Один способ это побороть проблемы установки Кириллицы вообще состоит в том, чтобы использовать Ghostscript. Ghostscript (или просто gs от newspeak) абсолютно free (ну, не совсем) интерпретатор PostScript. У него есть много преимуществ; среди них:

          Способность работать на многих платформах (различные Unixы, Окошки и т.д)

          Поддержка для огромного количества не-PostScript принтеров

          Высокая степень конфигурабельности

          В нашем специфическом случае является важным то, - что однажды установив и настроив Ghostscript , мы можем все печатать через него, таким образом нам не надо настраивать дополнительно настраивать другие PostScript устройства (например HP LaserJet IV)

    6.1. Добавление шрифтов Кириллицы к Ghostscript



          Это важно, так как вы вероятно не хотите взваливать ответственность за включение шрифтов Кириллицы в PostScript на другие программы. Взамен, вы добавляете их только к gs и заставляете программы выводить русский текст совместимый с этими шрифтами.

          Чтобы добавлять новый шрифт (в формате pfa или pfb) в gs, Вы должны:

          1. Поместить этот шрифт в каталог шрифтов gs (то есть. в /usr/lib/ghostscript/fonts).

          2. Добавить соответствующие имена и aliases для шрифта в файле Fontmap в каталоге gs.

          Недавно появился приличный набор шрифтов Кириллицы для GhostScript. Его можно найти на ftp.kapella.gpi.ru. Этот набор даже имеет необходимую часть для добавления к файлу Fontmap. Вы должны утянуть содержание каталога /pub/cyrillic/psfonts. В файле README описываются все необходимые подробности.

    7. Установка Печати



          Напечатать что-либо - это всегда проблема. Имеется набор различных принтеров от различных производителей с различными особенностями. Даже для вывода печати на родном языке принтера нет никаких общих решений (это применмо не только к UNIX, но также и к другим операционным системам.

          Принтеры имеют различные управляющие языки, и очень часто они имеют сильно различные реализации поддержки иностранного языка. Хорошие новости - это то, что в качестве управляющего языка, кажется, de facto как стандарт для описания работы печати (не везде но...) используется язык PosScript, разработанный Корпорацией Adobe.

          Другая проблема - это широкий спектр требований предъявляемый к печати. Например, иногда вы хотите просто напечатать часть вашей C программы, содержащей в качестве комментария текст на русском, так что Вы не нуждаетесь в навороченной процедуре печати- вам нужен простой ASCII вывод с одним шрифтом. Совсем другой дело, когда Вы создаете открытку для вашей подруги. В этом случае вы, вероятно, будете нуждаться в печате документа с различными шрифтами и т.д. И это уже определенно требует больших усилий по установке поддержки Кириллицы.

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

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

          Все эти вопросы будут освещены ниже в большей или меньшей степени.

    7.1. Загрузка шрифтов Кириллицы в не-постскриптный принтер



          Если у вас есть старый добрый матричный принтер, и Вы нуждаетесь в простом выводе текста на KOI-8, то пробуйте следующее:
    1. Найти соответствующий KOI-8 шрифт для вашего принтера. Проверьте ftp архивы MS DOS - в Internete (например архив SimTel <ftp://ftp.simtel.net>).
    2. Прочитайте руководство и найдите в нем как загрузить такой шрифт в ваш принтер, и, вероятно, напишите простенькую программу, делающую это.
    3. Запускайте эту программку из соответствующего rc файла при загрузке.

          Таким образом, наличие символов Cyrillic в верхней части набора символов принтера позволит Вам печатать тексты по-русски без дополнительных ухищрений.

          Альтернативно к KOI-8 шрифтам Вы можете попробовать использовать Alt шрифты. Для этого имеются две причины:

          1. Вероятно найти Alt шрифты намного проще, так как те были очень широко распространены во времена МС-ДОС.

          2. Наличие соответствующего Alt шрифта позволит Вам печатать также псевдо - графические символы.

          Однако в этом случае, вы должны будете преобразовать ваши тексты из KOI-8 в Alt перед посылкой их на принтер. Это не проблема, та как имеется множество программ, делающих это (смотри например " " translit " " ), так что вам нужно только вызвать такую программку из файла /etc/printcap в "if поле". Например, с программой translit можно сделать следующее:

          if=/usr/bin/translit -t koi8-alt.rus

          Подробно смотрите printcap (5).

    7.2. Печать с различными шрифтами



          Прекрасный способ для разборки с различными принтерами и шрифтами состоит в том, чтобы пользоваться для печати пакетом TeX (см. раздел """). TeX процесор справится со всеми проблемамы, так что как только вы заставите TeX понять шрифты Кириллицы, то выпобедитель.

          Другой способ - вы должны использовать PostScript в качестве вывода. Я решил посвятить этому вопросу всю главу " " " ", так что это не просто.

          И в заключение, имеются и другие текстовые процессоры, которые имеют драйверы принтеров. Я никогда не пробовал что - нибудь кроме TeX, так что я не могу предлажить что - либо.

    7.3. Преобразование текста в TeX



          Если все, в чем вы нуждаетесь- это печатать ASCII текста без дополнительной дополнительной обработки, то вы можете использовать некоторые программки, которые могут преобразовать ваш текст Кириллицы в готовый TeX файл. Одна из самых лучших программ для таких целей - это " "translit". В этом случае, Вы даже не должны беспокоиться относительно установки шрифтов Кириллицы для TeX, так как translit использует пакет Кириллицы Washington AmsTex, который включен в большинство дистрибутивов TeX (или - я не прав?)

    7.4. Преобразование текста в PostScript



          Иногда у вас есть простой ASCII KOI-8 текст, и Вы хотите его только напечатать. Один из самых простых способов это сделать это воспользоваться услугами программ преобразующих текст в PostScript.

          Есть ряд программ, делающих такое преобразование. Я лично предпочитаю a2ps. Первоначально разработанная как простой text-to-PostScript преобразователь эта программа стала чрезвычайно конфигурабельной с большим количеством опций, и сейчас позволяет управлять форматами и размещениями страниц, выделением и т.д. Другая утилита (теперь доступная как часть проекта GNU) - enscript.

          Основная проблема при работе с такими программами это то, что они ничего не знают про шрифты Кириллицы. Сейчас я исследую возможность, подключения к ним шрифтов Кириллицы. Оставайтесь с нами.

          Однако все эти разговоры вокруг да около был бы бессмысленны без какого-либо реального совета. Итак, вот оно.

    7.4.1. A2ps конвертер



          Преобразователь текста в PostScript был и остается одним из наиболее универсальных средств печати. Автор, как оказалось, очень открыт для предложений, и как следствие, a2ps версия 4.9.8 поддерживает кириллицу прямо в программе. Все, в чем вы теперь нуждаетесь это PostScript принтер.

          Команда, которую я использую для этого:

          a2ps -X koi8r --print-anyway <file>

    7.4.2. GNU enscript



          Программа GNU enscript была также разработана для преобразования текста в PostScript и она также не поддерживает ascii codeset. Программа так же не имеет русских PostScript шрифов в своем составе, но их очень просто доустановить. Как это сделать описано ниже (спасибо Michael Van Canneyt):

          1. Установите последний enscript. Теперь, самая последняя версия это 1.5. Вы можете найти ее на GNU FTP архиве, или взять пакет RPM с Redhat.

          2. Если Вы - счастливый пользователь RedHat Linux, загрузите и устанавливите шрифт Cyrillic Textbook <ftp://ftp.redhat.com/pub/contrib/i386/enscript-fonts-koi8-1.0-1.i386.rpm>.

          3. Если Вы не используете RPMки, вытяните файл textbook.tar.gz из архива на sunsite.unc.edu <ftp://sunsite.unc.edu/pub/academic/russian-studies/Software/> (сдесь лежит програмное обеспечение для руссификации). Разархивируйте этот файл в каталог, где размещены enscript шрифты (обычно /usr/share/enscript). Теперь перейдите туда, и выполните следующую команду:

          mkafmmap *.afm

          4. Установка завершена. Пробуйте напечатать текст в KOI8-R следующей командой:

          enscript --font=Textbook8 --encoding=koi8 some.file

          Если вам требуется действительно быстрый и простой способ, и качества вывода для вас не критично, и все что вам нужно - это только русский текст на бумаге, пробуйте пакет rtxt2ps. Это очень простой без украшательств конвертер текста в PostScript. Качество вывода не очень хорошее (или, честно говоря плохое) но это это - работает.

    8. Всякая всячина - настройка и установка



          Обычно, чтобы заставить какую-либо утилиту или программы пониматть кириллицу требует только разрешить 8ми битный ввод. Иногда требуется сказать программе, что бы она показывала расширенные ASCII символы в их "родной" форме.

    8.1. bash



          Должны быть установлены три переменные, для того чтобы
          заставить bash понять 8ми битные символы. Лучше всего это
          сделать из файл ~/.inputrc. Должены быть установлены: set
          meta-flag on set convert-meta off set output-meta on

    8.2. csh/tcsh



          В .cshrc поместите:

          setenv LC_CTYPE iso_8859_5
          stty pass8

          Если у вас нет POSIX совместимого stty (только не Linux), замените последнюю строчку следующей:

          stty -istrip cs8

    8.3. Dosemu (эмулятор Dos)



          Это, кажется, единственая программа, которая может потребовать набора символов в Alt кодировке. Причиной этого является то, что Alt кодировка является родной для DOS, и большинство программ DOS, имеющих дело кириллицей alt-ориентированны.

          Для консольной версии (ДОС) Вы должны загрузить только клавиатуру и экранный драйвер. Большинство драйверов DOS будет прекрасно работать. Я лично использую rk драйвер А. Страхова, который работает, и для консоли и X версии dosemu. Другая альтернатива - r драйвер Вадима Курлянда. Он прекрасно настраивается и поддерживает много кодировок в том числе, Alt и KOI8. Однако он не будет работать для X Windows (по крайней мере версия 1.14, которую я использую, а сейчас есть версия 2.0).

          Оба руссификатора можно найти на большинстве Российских Internet архивах, например в ftp архив Курчатовского Института <ftp://ftp.kiae.su/pub/cyrillic/msdos>.

          Для Xовых версии dosemu вы должны также установить соответствующий X шрифт. Алексей Богданов послал мне такой шрифт по электронной почте. Это - родной шрифт VGA из дистрибутива dosemu, измененный для Alt кодировки. К сожалению я не знаю, кто - автор этого шрифта и где официальное место. Я помещу этот шрифт в мой каталог на FTP <ftp://ftp.netvision.net.il/home/b/belikoff/cyrillic>.

          Для установки шрифтов для dosemu Вы должны

          Подставить этот шрифт X. серверу, как это сделать описано в " " пункте 4.1 X шрифты ''.

          Прикрутить этот шрифт dosemu. Если шрифт только заменяет первоначальный шрифт VGA, то он будет опознан по умолчанию. Иначе, Вы должны описать его в /etc/dosemu.conf:

          # Font to use (without filename extensions). For example:
          X { updatefreq 8 title "MS DOS" icon_name "xdos" font "vga-alt"}

          И в заключение, вы должны загрузить драйвер клавиатуры. Обратите внимание, вам не нужну в экранные драйверы в X окне. Более того, не все драйверы будут работать. Но по крайней мере два будут: rk А. Стархова, и cyrkeyb Pete Kvitek.

    8.4. Emacs



          Минимальная поддержка кириллицы в emacs обеспечивается при выполнении следующих обращений к .emacs (при условии, что поддержка символов Cyrillic установлена для консоли или X соответственно):

          (standard-display-european t)

          (set-input-mode (car (current-input-mode))
          (nth 1 (current-input-mode))
          0)

          Это позволит пользователю просматривать и редактировать документы по-русски.

          Однако, такой режим не очень удобен, потому что в режиме ввода Кириллицы emacs не распознает обычные команды клавиатуры. Имеется целый ряд пакетов, которые используют другой подход для решения этой проблемы. Они не используют средства ввода обеспеченные средой (или X или консолью). Взамен, они позволяют пользователю включать режим ввода специальной командой emacs, и emacs берет на себя ответственен за отображение русских символов. Автор рассматривает три из них. Пакет Валерия Алексеева (valery@math.uga.edu) russian.el <http://www.math.uga.edu/~valery/russian.el> позволяет пользователю переключаться между кириллицей и стандартным режимом ввода и перекодировать содержание буфера из одной стандарта кириллицы в другой (что является особенно полезным для чтении текстов импортируемых из МС-ДОС).

          Единственое неудобство - это то, что emacs обрабатывает российские символы как специальные, и как следствие не распознает границы русских слов и не делает различия между строчными и заглавными буквами. Чтобы обойти это, вы должны изменить Syntax и Case таблицы emacs:

          ;; there is a garbage in the variables below, since SGML doesn't like
          ;; cyrillic characters. You have to put the uppercase and lowercase
          ;; parts of the Russian alphabet respectively (see the actual files)

          (setq *russian-abc-ucase* "*** SGML SUCKS ***")
          (setq *russian-abc-lcase* "*** SGML SUCKS ***")

          (let ((i 0)
          (len (length *russian-abc-ucase*)))

          (while (< i len)
          (modify-syntax-entry (elt *russian-abc-ucase* i) "w ")
          (modify-syntax-entry (elt *russian-abc-lcase* i) "w ")
          (set-case-syntax-pair (elt *russian-abc-ucase* i)
          (elt *russian-abc-lcase* i)
          (standard-case-table))
          (setq i (+ i 1))))

          Для этого я создал rusup.el файл, который содержит эти команды, также как и пару других удобные функции. Вы должны вызвать его в вашем ~/.emacs.

          Другой возможный способ - пакет, которая пытается сзделать поддержку кирилицы более общей. Этот пакет написан Per Abrahamsen (abraham@iesd.auc.dk) и лежит на ftp.iesd.auc.dk.

          По мнению автора для начала следует установить пакет russian.el, потому что он очень прост в установке и в использовании.

    8.5. Ispell



          В природе существует rspell созданному Neal Dalton (nrd@cray.com) - plug-in к пакету GNU ispell , но у меня при использовании возникли проблемы. Проверьте его - вероятно вы будете более удачливыми.

    8.6. Joe



          Пробуйте опцию -asis.

    8.7. Ksh



          Что касается public domain реализации ksh - pdksh 5.1.3, то вы можете разрешить 8ми разрядный ввод в режиме ввода vi. Используйте:

          set -o vi

    8.8. less



          Пока, less не поддерживает символы KOI-8, но установка следующей системной переменной позволяет обойти это:

          LESSCHARSET=latin1

          или

          LESS="-e -r"

    8.9. Lynx



          Начиная с версии 2.6, вы можете выбирать соответствующее значение для дисплея - Character set option.

    8.10. Mc (The Midnight Commander)



          Чтобы разобрать текст Кириллицы , выберите опцию full 8 bit в Optiond/Display меню.

          Если у вас проблемы в виде уродливых оконных рамок, проконсультируйтесь " " " " разделе.

          off-topic, если вы захотите чтобы mc в окне Xterm был в цвете: устанавите переменную COLORTERM:

          COLORTERM= ; export COLORTERM

    8.11. Netscape navigator



          Удостоверитесь, что Вы используете версию Netscape выше 3. Если ваш Netscape более старый, возьмите новый из www.netscape.com. (тем более скоро будет выпущен 5 ый Netscape и вероятно под GNU)

    8.11.1. Общая настройка



          Чтобы увидеть текст Кириллицы в HTML документе в большинстве случаев, сделайте следующее:

          В меню Options/Document Encoding выберете Cyrillic(KOI-8).

          В меню Options/General Preferences/Fonts выберете Cyrillic (KOI-8) encoding, Times(Cronyx) как пропорциональный шрифт и Courier(Cronyx) как фиксированный.

          Сохраните опции.

          ОБРАТИТЕ ВНИМАНИЕ: Эта установка будет работать с большинством частей документа. Однако, Вы не сможите отобразить текст Кириллицы в заголовке окна, меню и некоторых других местах. Чтобы устранить эти проблемы, сделайте

    8.11.2. Текст Кириллицы во фреймах и при вводе



          Чтобы устранить это, для этого обычно достаточно:

          1. Скопировать базу данных установок Netscape (обычно Netscape.ad) в ~/Netscape.

          2. В файле, установите следующую опцию:

          *documentFonts.charset*iso8859-1: koi8-r

          Это вынудит все фреймы и элементы ввода использовать шрифты с кодировкой koi8-r вместо заданных по умолчанию, а следовательно вы должны удостовериться в том, что вы уже установили такие шрифты (см. раздел """).

    8.11.3. Продвинутая настройка



          Андрей А. Чернов - это человек который знает больше о KOI-8 чем другие в общем и в netscape в частности. Посетите его превосходную KOI-8 страницу, и скачайте заплату для файла ресурса Netscape, который заставляет Netscape говорить по Русски, так хорошо как это только возможно.

    8.12. pine



          Вставьте следующую строчку в ~/.pinerc для персональной настройки, или в /usr/lib/pine.conf для общей:

          character-set=ISO-8859-5

    8.13. Rlogin



          Удостоверитесь, что shell на месте адресата правильно установлена. Если ваш rlogin не работает по умолчанию, используйте " rlogin -8 ".

    8.14. Sendmail (другими словами " Гибель Сусадмина ")



          Начиная с версии 8, sendmail обрабатывает 8 битные данные по умолчанию правильно. Если этого не происходит- проверьте опцию EightBitMode и опцию 7 в разделе mailers в файл /etc/sendmail.cf. Подробнее смотрите "Sendmail. Operation and Installation Guide" .

    8.15. StarOffice



          Я напоминаю, что StarOffice, не заработал с моей версией libc. Поэтому, я не смог проверить его возможности по руссификации.

          Юрий Коваленко () составил краткое резюме на тему руссификации StarOffice. Это находится поадрессу "" "". Еще раз, я не опробовал этот способ и ничего не могу сказать по этому поводу,

    8.16. Xemacs



          В основном, xemacs по умолчанию настроен вполне приемлемо. Однако Вы все еще будете нуждаться в пакете руссификации.

          Если что-то работает не так, см. раздел """. Это возможно поможет.

          Хотя, я еще не портировал мой пакет " " rusup.el " " для xemacs, так что Вы возможно будете испытаете недостаток его функциональных возможностей. Я портирую его в ближайшем будущем.

    8.17. Zsh



          Сделайте то же самое, что делается для csh (см. раздел " "csh"). Файл инициализации в этом случае - .zshrc или /etc/zshrc.

    9. Localization and Internationalization



          Пока, я описывал, как заставить различные программы понять Кириллицу. Обычно, каждая программа требовала, чтобы это было ее собственный метод, чрезвычайно отличный от других. Кроме того, у некоторых программ была незавершенная поддержка отличных от английского языков. Не говоря уже об их неспособность взаимодействовать, используя родной язык пользователя вместо английского.

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

          Следовательно, возникает потребность в стандартизации. И стандарт есть.

          Все связанное с вышеперечисленными проблемами разделено в соответствии c двумя базисными концепциями: локализация и интернационализация. Под локализацией мы имеем в виду создание программ, способных обрабатывать различные языковые соглашения для различных стран. Позвольте привести пример. Формат даты выданный в Соединенных Штатах - имеет вид ММ/ДД/ГГ. Однако в России, наиболее популярный формат - ДД.ММ.ГГ. Другие проблемы включают в себя представление времени, форматы числа и представления валюты. Кроме этого, один из наиболее важных аспект локализации определяет соответствующие классы символов, то есть определяет, какие символы в наборе символов являются "кирпичиками" языка (буквами) и как они упорядочиваются. С другой стороны, локализация не работает со шрифтами.

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

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

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

          Я опишу общую схема создания программ использующих описанные выше возможности стандартным способом. Так как это заслуживает отдельного документа, я буду давать только очень общее описание и указатели на более полные источники.

    9.1. Locale



          Одно из основных понятий локализации - locale. Под locale подразумевается набор соглашений, специфических для отдельно взятого языка в отдельно взятой стране. В общем случае говорить, что locale определяется только страной неправильно. Например, в Канаде могут быть определены два locale- язык Канада / Английский и язык Канада / Французский. Более того, язык Канада / Английский - не является эквивалентом языку Великобритания / Английский или Американский / Английский, точно так же Канада / Французский язык - не эквивалент языку Франция / Французский или языку Швейцария / Французский.

    9.1.1. Как использовать locale



          Каждая locale - специальная база данных, определяющая по крайней мере следующие правила и соглашения:

          1. Классификация символов и преобразования

          2. Представление валюты

          3. Представление чисел (то есть. Десятичные символы)

          4. Формат даты / времени

          В RedHat 4.1, который я использую, имеются фактически две базы данных locale: одна для библиотеки C (libc) и другая для X библиотек. В идеальном случае должна иметься только одна база данных locale для всего.

          Чтобы изменить значение locale по умолчанию место, обычно достаточно установить системную переменную LANG. Например, как это делается в sh:

          LANG=ru_RU
          export LANG

          Иногда, вы можете захотеть изменить только один аспект locale без изменения других. Например, Вы можете решить (Бог знает почему) чтобы пользоваться с ru_RU locale, но числа печати должны будут соответствовать стандарту POSIX один. В подобных случаях, имеется набор системных переменных, которые Вы можете задать чтобы сконфигурировать соответствующие части locale. Например в нашем случае это бы выглядело так:

          LANG=ru_RU
          LC_NUMERIC=POSIX
          export LANG LC_NUMERIC

          Подробнее , см. man locale (7).

          Теперь давайте держаться поближе к специфике Linux. К сожалению, в Linux libc версия 5.3.12, входящая в дистрибутив RedHat 4.1 отсутствует русская locale. В данном случае ее надо скачать из Interneta (я, однако, не знаю точного адреса).

          Чтобы проверить, для каких языков у вас есть locale выполняете " locale -a ". Это выведет писок всех locale из баз данных доступных libc.

          К счастью, симейство Linux быстро мегрирует в новую GNU libc (glibc версию 2, которая является более posix-совместимой и имеет соответствующее российское locale). Дистрибутив RedHat 5.0 уже использует glibc.

          Что касается библиотек X, то они имеют свою собственную базу данных locale. В версии которую я использую (XFree86 3.3), уже имеется российская база данных locale. Я не уверен есть ли она в предидущей версии. В любом случае, Вы можете проверить это, изучив директорию usr/lib/X11/locale/ (в большинстве систем). В моем случае, уже есть подкаталоги, именованные koi8-r и даже iso8859-5.

    9.1.2. Locale зависимое программирование



          С locale, программа не должна знать о различных символьных преобразованиях и правилах сравнения, описанных выше. Вместо этого, они используют специальный API, который действует по правила, определенным locale. Кроме того, нет необходимости для программы, пользоваться только одной locale для соблюдения всех правил- возможно пользоваться другими правилами, описанных в других locale (хотя такой метод не очень хорош).

          Из man setlocale (3):

          Программа может быть сделана переносимой для всех locale, вызывая setlocale (LC_ALL, "") после инициализации программы, используя значения, возвращенные из localeconv () запрос для locale - зависимой информации и используя strcoll () или strxfrm () для сравнения строк.

          SunSoft, например, определяет 5 уровней локализации программы:

          1. Чистое 8ми битное программное обеспечение. То есть программа вызывает setlocale (), она не делает каких-либо предположений относительно 8-ого бита каждого символа. Используются пользовательские функции из ctype.h и ограничения из limits.h, и где и решаются проблемы относительно signed/unsigned результата.

          Не должно (очень важно не делать) каких-либо предположений относительно характера набора символов и их упорядочения. То есть следует воздержаться от следующих условий (действий) при программировании:

          if (c >= 'A' && c <= 'Z') {
          ...

          Взамен во всех таких случаях должны использоваться, макрокоманды из locale зависимого файла заголовка ctype.h.

          2. Форматы, методы сортировки, размеры листа бумаги. Программа использует strcoll () и strxfrm () вместо strcmp () для строк, использует time (), localtime (), и strftime () / для работы со временем, и в заключение, использует localeconv () для правильного представления чисел и валюты.

          3. Видимый текст складывается в "каталоги сообщений". Программа должна локализовать весь видимый текст в специальных "каталогах сообщений". Они содержат соответствия строк на английском к их переводы на другие языки. Выбор сообщений соответствующих языку окружения выполнен так, что полностью прозрачен и для программы и для пользователя. Чтобы использовать эти средства, программа должна вызвать gettext () (Sun/POSIX стандарт), или catgets () (X/Open стандарт). Подробнее см. раздел """.

          4. EUC/Unicode поддержка. На этом уровне, программа не использует тип char. Взамен это она использует wchar_t, который определяет объекты, достаточно большие, чтобы содержать символы Unicode. ANSI C определяет этот тип данных и соответствующий API.

          Подробнее, см., например (""") или (""").

    9.2. Интернационализация



          В то время как локализация описывает, как адаптировать программу к иностранному окружению, интернационализация (или i18n для краткости) детализирует способы общения программы с не-англоговорящим пользователем.

          Прежде, это делалось с помощью создания абстракций сообщений, для вывода их из кода программы. Теперь, такой механизм (более или менее) стандартизирован. И, конечно, есть его свободные реализации!

          Проект GNU наконец стал на путь создания интернационализированных прикладных программ. Ulrich Drepper (drepper@ipd.info.uni-karlsruhe.de) разработал пакет gettext. Этот пакет лежит во всех GNU архивах, например в prep.ai.mit.edu. Он позволяет Вам разрабатывать программы в направлении, двигаясь в котором вы можете легко заставить их поддерживать большее количество языков. Я и не предполагаю описывать методы программирования, еще и потому что gettext пакет поставляется с превосходным руководством.

          Просьба о сотрудничестве: Если Вы хотите изучить gettext пакет и сделать свой вклад в проекту GNU или просто сделать вклад без всякого изучения, то вы можете делать это! GNU становится международным, так что все утилиты делаются locale зависимыми. Проблема состоит в том, чтобы переводить сообщения от Английского языка на Русского (и другие языки, конечно если захотите). В общем, что следует сделать: вы должны получить специальный .po файл, состоящий из Английских сообщений для неких утилит, и связатькаждое сообщение с его эквивалентом на русском. В конечном счете, это заставит говорить систему Русский, если пользователь захочет этого! Для для подробностей войдите в контакт с Ulrich Drepper (drepper@ipd.info.uni-karlsruhe.de).

    10. Полезные Утилиты


    10.1. Утилиты перкодировки



          Имеется ряд программ, способных преобразовыать из KOI-8 в Alt и обратно. Зайдите в SovInformBureau или ftp.funet.fi для поиска удобных небольших утилит. Вы можете даже использовать специальный режим для emacs (см. раздел " "Emacs").

          Однако, я особенно рекомендовал бы пакет translit. Он поддерживает много популярных codesets и даже способен создать TeX файлы (см. раздел """) из русского текста. Кроме того, для transli существует пакет RPMt.

    11. Библиография

    ftp:ftp:
          1. Андрей Чернов. KOI-8 <http://www.nagual.ru/~ache/koi8.html>. Информация и настройка KOI-8.

          2. Ulrich Drepper. Интернационализация проекта GNU <http://i44www.info.uni-karlsruhe.de/~drepper/conf96/paper.html>. Очень полное описание миграции GNU к i18n.

          3. Michael Karl Gschwind. Интернационализация
          <http://www.vlsivie.tuwien.ac.at/mike/i18n.html>. Various resources on i18n.

          4. Сергей Наумов. Информация относительно программного обеспечения Кириллицы <http://sunsite.oit.unc.edu/sergei/Software/Software.html>.
          Информация об установки Кириллицы.

          5. The Open Group Single UNIX specification <http://www.UNIX-systems.org/online.html>.

          6. Alec Voropay. Localization as it is <http://www.sensi.org/~alec/locale>. Общее описание работы locale с русским языком и т.д..

    12. Список различных полезных ресурсов



          a2ps homepage <http://www-inf.enst.fr/~demaille/a2ps.html>

          Общая информация о Linux <http://sunsite.unc.edu/mdw/linux.html>

          Набор всякой всячены для кириллизации на ftp.kiae.su <ftp://ftp.kiae.su/cyrillic/>

          Набор всякой всячены для кириллизации на ftp.relcom.ru <ftp://ftp.relcom.ru/cyrillic/>

          Набор программного обеспечения связанного с кирилизацией <ftp://ftp.funet.fi/pub/culture/russian/comp/>

          Cronyx <http://www.cronyx.ru> - создатели шрифтов Кириллицы для X Windows.

          Шрифты Кириллицы для Ghostscript <ftp://ftp.kapella.gpi.ru/pub/cyrillic/psfonts>

          Шрифты Кириллицы для X <ftp://ftp.kiae.su/cyrillic/x11/fonts/xrus-2.1.1-src.tgz>

          Ghostscript <http://www.cs.wisc.edu/~ghost/index.html>

          GNU enscript <ftp://prep.ai.mit.edu/pub/gnu>

          Новости Relcom.fido.ru.unix.

          RFC 1489 <file://ds.internic.net/rfc/rfc1489.txt>

          Rspell для GNU ispell <ftp://sunsite.unc.edu/pub/academic/russian-studies/Software/rspell.tar.gz>

          SovInformBureau <http://www.siber.com/sib/russify/>

          TeTeX пакет руссификации <ftp://xray.sai.msu.su/pub/outgoing/teTeX-rus/>

          Kbd пакет для Linux <ftp://sunsite.unc.edu/pub/Linux/system/Keyboards/>

          Пакет перекодировки для Emacs <ftp://ftp.iesd.auc.dk/>

          Пакет rtxt2ps <http://www.siber.com/sib/russify/converters/>

          Пакет russian.el для emacs <http://www.math.uga.edu/~valery/russian.el>

          Пакет translit <ftp://ftp.osc.edu/pub/russian/translit/translit.tar.Z>

          Пакет xruskb <ftp://ftp.relcom.ru/pub/x11/cyrillic/>

          Полезные пакеты для работы с Кириллицы <ftp://sunsite.unc.edu/pub/academic/russian-studies/Software>

          Наборы X шрифтов <ftp://ftp.switch.ch/mirror/linux/X11/fonts/>

          XFree86 FTP архив <http://www.xfree86.org>