Назад | Вернуться к оглавлению. | Далее |
8. Русификация ОС (продолжение) |
bdftopcf -o <font>.pcf <font>.bdfЕсли ваш X сервер поддерживает сжатые шрифты, то сожмите их с помощью программы compress (для последних версий XFree86 можно сжать шрифты с помощью программы gzip):
compress *.pcf (или gzip *.pcf)Если же вы все-таки хотите поместить новые шрифты в уже существующий каталог шрифтов, то вы должны "срастить" старый и новые файлы, с именем fonts.alias в том случае, естественно, если они оба существуют.
cd <new font directory> mkfontdir .
Если у Вас старый XF86Config, нужные пути необходимо прописать руками:
FontPath
"/usr/X11R6/lib/X11/fonts/koi8/"
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/"
xset +fp <новый каталог шрифтов> xset fp rehashОбратите внимание, на опцию '+fp'- это означает, что новые шрифты будут добавлены в начале списка директорий со шрифтами. То есть, если прикладная программа запрашивает, скажем, шрифт fixed, то будет подставлен fixed font с кириллическими символами , чего мы и добивались. Хотя имеются некоторые проблемы. В дистрибутиве шрифтов кириллицы нет полужирного и курсивного fixed шрифта. Мой любимый шрифт - 6x13, а так, как полужирные и курсивные шрифты этого размера также отсутствуют, то я не могу использовать Emacs/XEmacs в полной мере. Надеюсь, что кто - то в конечном счете создаст эти шрифты, и ситуация изменится.
*font: 6x13Так как мои шрифты кириллицы первые в списке поиска шрифтов (смотри вывод программы 'xset q'), то они и подставляются если программа требует какой-либо шрифт с именем, совпадающем с каким-либо из шрифтов, лежащих в кириллической директории.
Вот простые примеры. Если Вы хотите научить соответствующий X клиент пользоваться кириллическим шрифтом , то вы должны узнать тип ресурса , который вам надо изменить (можно это сделать используя editres(1x)) и определить его или в базе данных ресурсов, или в командной строке. Например можно сделать так:
$ xterm -font '-cronyx-*-bold-*-*-*-19-*-*-*-*-*-*-*'...запусти xterm с несколько уродливым шрифтом;
$ xfontsel -xrm '*quitButton.font: -*-times-*-*-*-*-13-*-*-*-*-*-koi8-*'...установит Cyrillic Times шрифт для кнопки Quit программы xfontsel.
Для переключения клавиатуры под X Window используется модифицированная программа xes. Модификация заключается в том, что кодовая таблица iso8859-5 заменена таблицей windows-1251, которая необходима для работы с такими приложениями как WABI и StarOffice. Для автоматического запуска xes вместе с KDE нужно создать соответствующий объект и поместить его в папку "Autostart".
Но проблема в том, что X сервер не умеет рисовать ttf фонты. Поэтому приходится запускать дополнительную программу для вывода ttf фонтов. Для версии 5.2 RedHat Linux для этого использовалась программа xfstt, а в версии 6.0 используется xfs.
cd /mnt/hda2/Windows/Fonts
/usr/sbin/ttmkfdir > fonts.dir
/usr/sbin/chkfontpath --add /mnt/hda2/Windows/Fonts
Если Вы теперь заглянете в файл /etc/X11/fs/config, то увидите, что в конце раздела "catalogue" этого файла вписан путь к каталогу ttf-фонтов:
catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled, /usr/X11R6/lib/X11/fonts/100dpi:unscaled, /usr/X11R6/lib/X11/fonts/75dpi:unscaled, /usr/X11R6/lib/X11/fonts/misc, /usr/X11R6/lib/X11/fonts/Type1, /usr/X11R6/lib/X11/fonts/Speedo, /usr/X11R6/lib/X11/fonts/75dpi, /mnt/hda2/Windows/FontsЕсли Вы хотите, чтобы новые фонты имели преимущество при выборе шрифта, измените порядок строк в разделе "catalogue" файла /etc/X11/fs/config
catalogue = /mnt/hda2/Windows/Fonts, /usr/X11R6/lib/X11/fonts/misc:unscaled, /usr/X11R6/lib/X11/fonts/100dpi:unscaled, /usr/X11R6/lib/X11/fonts/75dpi:unscaled, /usr/X11R6/lib/X11/fonts/misc, /usr/X11R6/lib/X11/fonts/Type1, /usr/X11R6/lib/X11/fonts/Speedo, /usr/X11R6/lib/X11/fonts/75dpiи перестартуйте фонт-сервер командой /etc/rc.d/init.d/xfs restart . Учтите, однако, что эти изменения скажутся и на других программах (например, изменятся шрифты в Netscape Navigator), и, может быть, Вам не все изменения понравятся.
Если Вы впоследствии добавите новые фонты в каталог /mnt/hda2/Windows/Fonts,
Вы должны будете заново выполнить команду ttmkfdir и перезапустить фонт-сервер
командой /etc/rc.d/init.d/xfs restart
Для получения дополнительной информации воспользуйтесь man-страницами по командам 'xfs' и 'chkfontpath' или загляните в Интернете на страницу Red Hat 6.0 font support whitepaper
Для использования ttf-фонтов надо сначала установить фонт-сервер. Дистрибутив Red Hat 5.2 включает версию 0.9.9 программы xfstt, которая является сервером True Type фонтов для X-сервера. Этот скрипт расположен в каталоге /etc/rc.d/init.d/. Он ищет True Type фонты в каталоге
/usr/X11R6/lib/X11/fonts/ttfonts(по другим источникам /usr/ttfonts; смотрите ссылки ниже)
Исходно этот каталог пуст, так что Вы должны скопировать туда файлы из каталога Windows/fonts, например, следующим образом:
# cd /usr/X11R6/lib/X11/fonts/ttfonts # cp /mnt/hda2/windows/fonts/*.ttf .Фонт-сервер получит доступ к новым фонтам только после перезагрузки либо после выполнения следующих команд:
# cd /etc/rc.d/init.d # ./xfstt restart(Заметим, что "./" в последней команде обязательны. Если Вы опустите эти два символа, произойдет попытка запуска программы xfstt вместо скрипта из /etc/rc.d/init.d.)
После установки фонт-сервера надо еще сказать X-серверу, где искать фонты, для чего добавить в секцию "Files" файла /etc/X11/XF86Config строку
FontPath "unix/:7100"(в конец группы строк FontPath), и перестартовать X.
Для того, чтобы проверить, что желаемый эффект достигнут, выполните команду:
% xlsfonts | grep ttдля получения списка доступных фонтов.
Замечания:
1. XConfigurator переписывает файл /etc/X11/XF86Config при каждом запуске, так что не забывайте заново выполнять добавление указанной выше строки после того, как Вы перенастраивали графическую подсистему.
2. Если xfstt сообщает, что "/usr/ttfonts" does not exist!, Вы, вероятно, пытались запустить программу из командной строки и запустили программу /usr/X11R6/bin/xfstt вместо скрипта /etc/rc.d/init.d/xfstt (скрипт, используемый для автоматического запуска xfstt во время загрузки). Это легко могло случиться, если в путях поиска у Вас отсутствует ".", текущим каталогом был каталог /etc/rc.d/init.d и Вы указали в командной строке просто 'xfstt' вместо './xfstt'.
3. Дополнительные разъяснения по поводу программы xfstt с Red Hat 5.2 Вы сможете найти в двух следующих статьях
bash
Хотя для большинства программ вполне достаточно установки LANG=ru_RU.KOI8-R чтобы начать распознавать русские буквы, многие программы основанные на библиотеке readline (например bash) все равно считают символы с кодами больше 128 особыми META-символами (пищит при вводе).
Чтобы отучить библиотеку readline от этого, необходимо определить переменную INPUTRC=, например, создав файл:
/etc/profile.d/readline.sh ======== #!/bin/bash INPUTRC="/etc/inputrc"; export INPUTRC ========
и сделать этот файл исполняемым. Кроме того, прописать :
/etc/inputrc ======== set meta-flag on set convert-meta off set output-meta on ========
После этого библиотека readline (и bash) начнет воспринимать русские буквы.
Еще один вариант : Не задавать INPUTRC=, а прописать те же
значения в ~/.inputrc
(в home-каталоге). Но тогда придется заводить
такой файл в домашнем каталоге каждого пользователя.
См. man readline .
Для того, чтобы заставить bash понимать 8-ми битные символы, должны быть установлены три переменные. Лучше всего это сделать из файла ~/.inputrc. Должны быть сделаны следующие установки:
set meta-flag on
set convert-meta off
set output-meta on
mc (The Midnight Commander)
Чтобы корректно отображался текст кириллицы, необходимо установить флажки в
опции "Полный 8-битный вывод" (full 8 bits) и "Полный 8-битный ввод" в пункте
меню "Options/Биты символов" (Options/Display).
/etc/smb.conf ====== [global] character set = koi8-r client code page = 866 preserve case = yes short preserve case = yes ======
Чтобы подмонтировать диск Windows'95 и DOS с правильной поддержкой русских букв, необходимо воспользоваться командой :
$ mount -t vfat -o umask=002,noexec,gid=500,codepage=866,iocharset=koi8-r /dev/hdb1 /mnt
Да, все русские имена на диске FAT сохраняются в Codepage 866 ! Для работы этой опции ядро (>2.0.36) должно быть пересобрано с поддержкой NLS, кодовыми страницами CP866, NLS KOI8-R и конечно же с поддержкой VFAT.
Кириллизация печати реализована при помощи измененного пакета ghostscript-fonts, который уже содержит три основных шрифта (Times, Courier, Helvetica) в кодировке KOI8-R (формат Type1). Поэтому, если принтер правильно сконфигурирован при инсталляции или позже программой printtool, система готова к печати из таких приложений как Netscape Communicator. При установке rpm-пакета ghostscript-fonts на RedHat-5.1 следует обратить внимание на то, что файл /usr/share/ghostscript/3.33/Fontmap должен быть ссылкой к файлу /usr/share/ghostscript/fonts/Fontmap. Это можно сделать следующими командами:
# rm /usr/share/ghostscript/3.33/Fontmap
# ln -s
/usr/share/ghostscript/fonts/Fontmap /usr/share/ghostscript/3.33/Fontmap
В дистрибутиве Spitfire такая ссылка уже имеется в измененном пакете ghostscript.
К сожалению, пока поддерживается только печать в графическом режиме.
Перекодировщик для быстрой печати текстов на принтерах, имеющих аппаратную
прошивку cp866, пока не реализован.
Заметим, что пробел, запятая, символ табуляции и '#' не могут использоваться в 4-ом формате. Кроме того, управляющие символы (с кодами < 32) не могут быть перекодированы командой mapscrn, потому что они имеют специальное значение для драйвера консоли.
Использование опции -m в команде setfont делает ненужным использование команды mapscrn.
В любом случае загруженная таблица перекодировки активизируется только после вывода на экран строки "Esc(K". Заметим, что активизировать эту таблицу необходимо в каждой консоли.
Существует еще таблица перекодировки для символов Unicode. Некоторые файлы фонтов включают эту таблицу и она будет загружена, если только не задана опция -u none.
В версии initscripts-3.78-2.4 допустимы следующие параметры :
========== LANG LC_ALL LINGUAS SYSTERM UNIMAP ==========
Historically, computer text communications used 7-bit bytes and the ASCII character set and encoding. Often, communications software would use the high bit as a ``parity bit'', which facilitates error detection and correction. Some terminal drivers would use it as a ``bucky-bit'' or to indicate face changes, such as underlining or reverse video. Although none of these usages are bad per se, they should be restricted to well-defined and well-documented interfaces, with 8-bit-clean alternatives provided.
Unfortunately, the seven-significant-bits assumption leaked into a lot of software, in particular implementations of electronic mail, and now has been enshrined in Internet standards such as RFC-821 for the Simple Mail Transport Protocol (SMTP) and RFC-822 which describes the format of Internet message headers for text messages.
вызов setlocale(LC_XXXXX,"ru_SU.KOI8-R") будет пытаться открыть файл "/usr/share/locale/ru_SU.KOI8-R/LC_XXXXX" и считать его внутрь структуры в run-time части libc. Это все происходит совершенно прозрачно для пользователя.
Использован также RU.LINUX.FAQ (c)Составление - Станислав Корсуков, (s)Поддержание до сентября 1999 - Михаил Браво, [email protected], (s)Поддержание - Aлександр Канавин, [email protected]
Очень хорошая статья (точнее 2 статьи) опубликованы в Linux Journal в мартовском и апрельском номерах за 1999 год : Stephen Turnbull "Alphabet Soup: The Internationalization of Linux", ее можно найти также на сайте автора.
Еще несколько отличных статей на тему кодировок, кодовых страниц, фонтов и т.п.:
The excellent i18n HOWTO of KDE explains the steps to translate a *.po file.
There is also my page about Linux locales, which has links to several language specifics translation teams and info. And the (still at its begining) Linux i18n project web site.
There are also some projects of coordination between transaltors and programers that exist for some big projects, like for Gnome, or for KDE, and the mailing lists at li.org.
См. также:
http://isd.donin.com/~leon/spitfire/cyr.phtml
http://kulichki.rambler.ru/~anykey/05-softnotes/012softnotes.linuxrussian.html
http://www.iplabs.ru:8101/Linux/Article/
http://triton.itep.ru/ru/linux/system.html
http://kulichki.rambler.ru/moshkow/CYRILLIC/linuxcyrillic.txt
Назад | Вернуться к оглавлению. | Далее |
В.А.Костромин Последние изменения в содержание файла внесены 26 сентября 2000 г. |