---------------------------------------------------------------
From: Evgenij Baldin ([email protected]))
Как-то пол года назад перевел для себя Cyrillic HOWTO Беликова - кое-что
устарело, кое-что лучше сделать по другому - но вобщем,- полезно. Если вы
хотите руссифицировать UNIX - то начинать лучше после того, как прочитали
этот техт (вероятно есть еще переводы, но пол года назад я их не нашел)
-----------------------------------------------------------------------
Александр Л. Беликов, ([email protected]), Berger Financial
Research Ltd. V3.15, 14 ноября 1997
В этом документе описывается, как настроить Linux для
редактирования, просмотра и печатати документов на Русском языке.
В этом документе описываются приемы которые нужны для
редактирования, просмотра, и печатати документов по-русски под
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.
Если у вас имеются любые предложения или исправления по
контексту этого документа, то, пожалуйста незамедлительно
проконтактируйте со мной [email protected]. Предоставление любой
новой и полезной информации относительно поддержки Кириллицы в
различных 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 , по [email protected].
Для того чтобы получить номер телефона и дополнительную
информацию для контакта вы можете напустить на этот адрес 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.
Чтобы понимать и печатать символы различных языков, система и
программное обеспечение должна быть способна отличить их от
других символов. То есть каждый уникальный символ должен иметь
уникальное представление внутри операционной системы, или
специфического пакета программ. Такая совокупность всех
уникальных символов, которые система способна представить сразу,
называется 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.
Поэтому если вы имеете другую систему, не ожидайте, что это будет
работать. Взамен, проконсультируйтесь с руководством по драйверу
терминала и пошлите мне любую информацию,которую Вы найдете, в
этом случае я смогу включить это в дальнейшие версии этого
документа.
Консольный драйвер 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 (или переключаетесь на консоль), то вы должны
перезагрузить русский шрифт.
Я не использую 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 шрифтов. Данные действия обсуждаются ниже.
Прежде всего Вы должны получить шрифты, имеющие Кириллические
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.
В последних выпусках 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 пакет
Вадима В. Житникова ([email protected]) и Александра Харина
([email protected]), а другой - пакет программ LH написанных
группой CyrTUG со стилями и расстановкой дефисов для LaTeX2e
созданных Сергеем О. Наумовым ([email protected]). Я опишу оба.
Обратите внимание, что доступны две версии 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.
Процесс установки не слишком отличается от предыдущиго.
Эксперты говорят, 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 описываются все необходимые подробности.
Напечатать что-либо - это всегда проблема. Имеется набор
различных принтеров от различных производителей с различными
особенностями. Даже для вывода печати на родном языке принтера
нет никаких общих решений (это применмо не только к 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.
Основная проблема при работе с такими программами это то, что
они ничего не знают про шрифты Кириллицы. Сейчас я исследую
возможность, подключения к ним шрифтов Кириллицы. Оставайтесь с
нами.
Однако все эти разговоры вокруг да около был бы бессмысленны
без какого-либо реального совета. Итак, вот оно.
Преобразователь текста в PostScript был и остается одним из
наиболее универсальных средств печати. Автор, как оказалось,
очень открыт для предложений, и как следствие, a2ps версия 4.9.8
поддерживает кириллицу прямо в программе. Все, в чем вы теперь
нуждаетесь это PostScript принтер.
Команда, которую я использую для этого:
a2ps -X koi8r --print-anyway <file>
Программа 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 символы в их "родной" форме.
Должны быть установлены три переменные, для того чтобы
заставить 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
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.
Минимальная поддержка кириллицы в 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 берет на
себя ответственен за отображение русских символов. Автор
рассматривает три из них. Пакет Валерия Алексеева
([email protected]) 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
([email protected]) и лежит на ftp.iesd.auc.dk.
По мнению автора для начала следует установить пакет
russian.el, потому что он очень прост в установке и в
использовании.
В природе существует rspell созданному Neal Dalton
([email protected]) - plug-in к пакету GNU ispell , но у меня при
использовании возникли проблемы. Проверьте его - вероятно вы
будете более удачливыми.
Пробуйте опцию -asis.
Что касается public domain реализации ksh - pdksh 5.1.3, то вы
можете разрешить 8ми разрядный ввод в режиме ввода vi.
Используйте:
set -o vi
Пока, less не поддерживает символы KOI-8, но установка
следующей системной переменной позволяет обойти это:
LESSCHARSET=latin1
или
LESS="-e -r"
Начиная с версии 2.6, вы можете выбирать соответствующее
значение для дисплея - Character set option.
8.10. Mc (The Midnight Commander)
Чтобы разобрать текст Кириллицы , выберите опцию full 8 bit в
Optiond/Display меню.
Если у вас проблемы в виде уродливых оконных рамок,
проконсультируйтесь " " " " разделе.
off-topic, если вы захотите чтобы mc в окне Xterm был в цвете:
устанавите переменную COLORTERM:
COLORTERM= ; export COLORTERM
Удостоверитесь, что Вы используете версию Netscape выше 3. Если
ваш Netscape более старый, возьмите новый из www.netscape.com.
(тем более скоро будет выпущен 5 ый Netscape и вероятно под GNU)
Чтобы увидеть текст Кириллицы в 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 говорить по Русски, так
хорошо как это только возможно.
Вставьте следующую строчку в ~/.pinerc для персональной
настройки, или в /usr/lib/pine.conf для общей:
character-set=ISO-8859-5
Удостоверитесь, что shell на месте адресата правильно
установлена. Если ваш rlogin не работает по умолчанию,
используйте " rlogin -8 ".
8.14. Sendmail (другими словами " Гибель Сусадмина ")
Начиная с версии 8, sendmail обрабатывает 8 битные данные по
умолчанию правильно. Если этого не происходит- проверьте опцию
EightBitMode и опцию 7 в разделе mailers в файл /etc/sendmail.cf.
Подробнее смотрите "Sendmail. Operation and Installation Guide" .
Я напоминаю, что StarOffice, не заработал с моей версией libc.
Поэтому, я не смог проверить его возможности по руссификации.
Юрий Коваленко () составил краткое резюме на тему руссификации
StarOffice. Это находится поадрессу "" "". Еще раз, я не
опробовал этот способ и ничего не могу сказать по этому поводу,
В основном, xemacs по умолчанию настроен вполне приемлемо.
Однако Вы все еще будете нуждаться в пакете руссификации.
Если что-то работает не так, см. раздел """. Это возможно
поможет.
Хотя, я еще не портировал мой пакет " " rusup.el " " для
xemacs, так что Вы возможно будете испытаете недостаток его
функциональных возможностей. Я портирую его в ближайшем будущем.
Сделайте то же самое, что делается для csh (см. раздел "
"csh"). Файл инициализации в этом случае - .zshrc или /etc/zshrc.
9. Localization and Internationalization
Пока, я описывал, как заставить различные программы понять
Кириллицу. Обычно, каждая программа требовала, чтобы это было ее
собственный метод, чрезвычайно отличный от других. Кроме того, у
некоторых программ была незавершенная поддержка отличных от
английского языков. Не говоря уже об их неспособность
взаимодействовать, используя родной язык пользователя вместо
английского.
Проблемы, перечисленные выше сильно подавляют, так как
программное обеспечение редко создается только для местного
рынка. Переработка существенных частей программного обеспечения
каждый раз при входе на новый международному рынок, очень
неэффективена; и интернациональная поддержка, осуществляемая
собственными средствами программы уникальным и присущим только ей
способом в терминах долгосрочного планирования так же не
блестящая идея.
Следовательно, возникает потребность в стандартизации. И
стандарт есть.
Все связанное с вышеперечисленными проблемами разделено в
соответствии c двумя базисными концепциями: локализация и
интернационализация. Под локализацией мы имеем в виду создание
программ, способных обрабатывать различные языковые соглашения
для различных стран. Позвольте привести пример. Формат даты
выданный в Соединенных Штатах - имеет вид ММ/ДД/ГГ. Однако в
России, наиболее популярный формат - ДД.ММ.ГГ. Другие проблемы
включают в себя представление времени, форматы числа и
представления валюты. Кроме этого, один из наиболее важных аспект
локализации определяет соответствующие классы символов, то есть
определяет, какие символы в наборе символов являются
"кирпичиками" языка (буквами) и как они упорядочиваются. С другой
стороны, локализация не работает со шрифтами.
Интернационализация (или i18n для краткости) как
предполагается, решает проблемы, связанные со способностью
программы, взаимодействуют с пользователем на его родном языке.
Обе эти концепции должны быть стандартизованы, давая
программистам непротиворечивый путь создания программ, работающих
в национальной среде.
Хотя стандартизация еще в процессе, но много ее частей уже
фактически являются стандартом; так что они могут использоваться
без особых проблемы.
Я опишу общую схема создания программ использующих описанные
выше возможности стандартным способом. Так как это заслуживает
отдельного документа, я буду давать только очень общее описание и
указатели на более полные источники.
Одно из основных понятий локализации - 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.
Подробнее, см., например (""") или (""").
В то время как локализация описывает, как адаптировать
программу к иностранному окружению, интернационализация (или i18n
для краткости) детализирует способы общения программы с
не-англоговорящим пользователем.
Прежде, это делалось с помощью создания абстракций сообщений,
для вывода их из кода программы. Теперь, такой механизм (более
или менее) стандартизирован. И, конечно, есть его свободные
реализации!
Проект GNU наконец стал на путь создания
интернационализированных прикладных программ. Ulrich Drepper
([email protected]) разработал пакет gettext.
Этот пакет лежит во всех GNU архивах, например в prep.ai.mit.edu.
Он позволяет Вам разрабатывать программы в направлении, двигаясь
в котором вы можете легко заставить их поддерживать большее
количество языков. Я и не предполагаю описывать методы
программирования, еще и потому что gettext пакет поставляется с
превосходным руководством.
Просьба о сотрудничестве: Если Вы хотите изучить gettext пакет
и сделать свой вклад в проекту GNU или просто сделать вклад без
всякого изучения, то вы можете делать это! GNU становится
международным, так что все утилиты делаются locale зависимыми.
Проблема состоит в том, чтобы переводить сообщения от Английского
языка на Русского (и другие языки, конечно если захотите). В
общем, что следует сделать: вы должны получить специальный .po
файл, состоящий из Английских сообщений для неких утилит, и
связатькаждое сообщение с его эквивалентом на русском. В конечном
счете, это заставит говорить систему Русский, если пользователь
захочет этого! Для для подробностей войдите в контакт с Ulrich
Drepper ([email protected]).
10.1. Утилиты перкодировки
Имеется ряд программ, способных преобразовыать из KOI-8 в Alt и
обратно. Зайдите в SovInformBureau или ftp.funet.fi для поиска
удобных небольших утилит. Вы можете даже использовать специальный
режим для emacs (см. раздел " "Emacs").
Однако, я особенно рекомендовал бы пакет translit. Он
поддерживает много популярных codesets и даже способен создать
TeX файлы (см. раздел """) из русского текста. Кроме того, для
transli существует пакет RPMt.
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>
Популярность: 1, Last-modified: Tue, 29 Sep 1998 04:41:46 GmT