|
Локализация FreeBSD на
CP1251. |
Пояснение
CP1251 locale для FreeBSD, наборы CP1251
фонтов для XFree86, монтирование дисковых разделов
других файловых систем в cp1251 Автор sys
Дата Пт 29
Окт, 2004 11:16 am Тип Документация
Категория Локализация Посмотреть обсуждение
[6 - Обсудить] Показов 10265
|
Локализация FreeBSD на
CP1251. CP1251 locale для
FreeBSD, наборы CP1251 фонтов для XFree86, монтирование
дисковых разделов других файловых систем в
cp1251 |
.gif) |
автор
Лаврусик Игорь: freebsd-1251@tut.by
Содержание:
- Предисловие
- CP1251 locale для FreeBSD
- Наборы CP1251 фонтов для XFree86
- Монтирование дисковых разделов других файловых
систем в cp1251
1. Предисловие
Как-то так сложилось, что развитие
Юникс-подобных систем в советские времена проходило либо
в РСФСР, либо под руководством из РСФСР, причём тогда и
не подозревали, что кому-то в голову придёт работать с
текстами, написаными на отличном от русского языках.
Неформально была придумана кодировка koi8-r, основным
преимуществом которой было то, что текст, на машинах, не
поддерживающих эту кодировку, оставался читабельным
(напимилал транслит). И вот беда - добавили бы в неё 3-5
национальных украинских и белорусских символов - цены бы
этой кодировке небыло... Но... Украинцы молодцы -
пасетовали на этот счёт и заимели кодировочку koi8-u.
Эти кодировки и были приняты как стандарт кириллицы в
Юникс-системах.
С выходом Windows кириллические
кодировки IBM-866 и koi8 стали непригодными по причине
своей текстовой ориентированности. И надо признаться,
что Майкрософт, разработав cp1251 (Cyrillic - Windows),
подумала о белорусах и украинцах гораздо больше, чем
сами белоруссы и украинцы. И хотя были несмелые попытки
разработки кодировки koi8-su, и теперешняя тенденция
говорит о глобальном переходе на Unicode кодировки (
UTF-8 ). Но первая не получила признания общественности,
а под второй возникает масса неоправданных трудностей
при использовании (надеюсь - пока). Поэтому если сидя
под Windows вы имели неосторожность создать файл с
буквой "ў" в имени - то не так-то просто его из-под
Юникса прочитать будет.
Да и иметь систему в
другой кодировке, когда вокруг одни Виндозеры - это
напрягает, как морально, так и физически, поэтому
вооружаемся статьёй и вперёд!
2. CP1251 locale для
FreeBSD
Локаль cp1251 поставляется
в дистрибутиве с последними версиями системы (Для версии
4.9 и выше это 100% так. Ходит молва что это выполняется
для систем старше июня 2003) Если каким-то чудом у вас
её нет - качайте и устанавливайте! CP1251-locale Если всё нармально -
то в папочке /usr/share/locale/ должен иметь место
файлик, наподобии такого: ru_RU.CP1251
Использование
locale CP1251 на консоли и виртуальных терминалах,
вместо KOI8-R
Файлик /etc/login.conf
исправляем следующим образом:
russian|Russian
Users Accounts: :charset=CP1251:
:lang=ru_RU.CP1251: :tc=default:
Далее
правим конфиги наших любимых оболочек: Для Bourne-Shell / Bash в
файл /etc/profile
вписываем:
...
LANG=ru_RU.CP1251; export LANG
LC_ALL=ru_RU.CP1251; export LC_ALL
MM_CHARSET=CP1251; export MM_CHARSET ...
Для Csh /
Tcsh в файл /etc/csh.login
вписываем:
... setenv LANG ru_RU.CP1251
setenv MM_CHARSET CP1251 ...
либо
проделываем аналогичные действия у пользователя в $HOME,
в .profile/.bash_profile
(shell/bash), либо в .login (csh/tcsh).
Консоль и
виртуальные терминалы (фонты и клавиатура)
настраиваются через файл /etc/rc.conf: До
начала редактирования этого файла вам желательно иметь
файл клавиатурной раскладки для кодировки cp1251, с
загадочным названием ru.cp1251.kbd. Скачайте его и положите
в /usr/share/syscons/keymaps.
Поскольку шрифты cp866 самые удачные, используем их
таблицу перекодировки из cp866 в 1251 - win2cpp866.scm качаем и ложим в /usr/share/syscons/scrnmaps
Вот теперь в /etc/rc.conf смело
пишем следующее:
... keymap=ru.cp1251 #
можно не использовать, by default клавиша "CAPS LOCK"
#keychange="61 ESC[K" scrnmap="win2cpp866"
font8x16=cp866-8x16 font8x14=cp866-8x14
font8x8=cp866-8x8 ...
Для
тех, кому интересно: Возникает вопрос, почему
нельзя использовать напрямую шрифты ср1251, а надо
перокодировать из ср866? Отвечаю: ср866 - кодировка,
разработанная IBM в незапамятные времена, когда о
графике и думать боялись и наряду со многими другими
вшита в BIOS вместе со своими шрифтами. Основным
отличием от ср1251 является то, что она ориентирована
сугубо на текстовый режим работы дисплея, по сему имеет
в своём распоряжении всякого рода псевдографику (ну
например рамочки красивенные рисовать в
MidnightCommander). СР1251 лишена этого в силу своей
графической ориентированности. Поэтому любознательные
могут попробавать написать следующее: ...
keymap=ru.cp1251 #keychange="61 ESC[K"
font8x16=cp1251-8x16 font8x14=cp1251-8x14
font8x8=cp1251-8x8 ... и посмотреть, что
получиться. Во-первых шрифт на самом деле куда менее
красивый, во вторых всякого рода рамочки уже не
рисуются, и, самое главное, некоторые символы
расцениваются как управляющие, из-за чего вообще не
отображаются, либо отображаються с различными приколами.
Ну как преимущество - возможность использования
символов, отсутствующих в 866 и присутствующих в 1251. В
основном же примере используется карта перекодировки из
1251 в 866, и вывод производиться уже 866-ми шрифтами и
кодировкой... Недостаток: символы "ІіЎў№" да и многие
другие вы увидите в виде крючков.
Примичание: Проверте и
при необходимости поправте содержимое файла /etc/ttys.
Оно должо сожержать похожие строки: ttyv0
"/usr/libexec/getty Pc" cons25r on secure ...
ttyv5 "/usr/libexec/getty Pc" cons25r on secure
... т.е. все cons25, если таковые
имеются, должны быть исправлены на cons25r.
Ну
теперь перегрузитесь и проверте: переключите раскладку и
понабирайте русский текст, командой cat попробуйте вывести
какой-либо текст набранный под Виндой и т.д.
3. Наборы CP1251 фонтов для
XFree86
Есть много разных CP1251
фонтов для X11, у меня стоят следующие: * Шрифты cyr-rfx проекта (наиболее полные и
качественные) * Cronyx фонты (Windows CP1251) * Шрифты, сконвертированные из Cronyx-koi8
шрифтов * XRus-1251 шрифты * Micex фонты (Windows CP1251) * Ещё одни Cronyx (Windows CP1251)
Разворачиваете нужные или подходящие вам
шрифты в /usr/X11R6/lib/X11/fonts,
добавляете их в /etc/X11/XF86Config,
например:
... # FontPath
"/usr/X11R6/lib/X11/fonts/local/" FontPath
"/usr/X11R6/lib/X11/fonts/cyrillic/misc/" FontPath
"/usr/X11R6/lib/X11/fonts/cyrillic/75dpi/" FontPath
"/usr/X11R6/lib/X11/fonts/cyrillic/100dpi/" #--lavr
Windows-CP1251 fonts FontPath
"/usr/X11R6/lib/X11/fonts/win-micex/misc/" FontPath
"/usr/X11R6/lib/X11/fonts/win-micex/75dpi/" FontPath
"/usr/X11R6/lib/X11/fonts/win-micex/100dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/CID/"
FontPath "/usr/X11R6/lib/X11/fonts/PEX/"
FontPath "/usr/X11R6/lib/X11/fonts/TTF/"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
FontPath "/usr/local/share/koi8r-ps/" # ...
Можно даже взять шрифты *.ttf из Винды, также
прописав папку с ними в этом файле и выполнив команду
"mkfontdir" в папке с текущим шрифтом. Рестартуете
X11 или прямо в сеансе добавляете их в FontPath:
xset
+fp /usr/X11R6/lib/X11/fonts/win-micex/misc xset +fp
/usr/X11R6/lib/X11/fonts/win-micex/75dpi xset +fp
/usr/X11R6/lib/X11/fonts/win-micex/100dpi
Теперь
смело можно смотреть файлы в Windows-CP1251 кодировке,
набирать текст и свободно переносить его в Винду, и
самое главное - появляется возможность маунтить виндовые
разделы, в которых есть файлы, в имени которых
затусавались символы, отсутствуюющие в кои8!
Для
переключения раскладок в X11 можно воспользоваться
портами FreeBSD:
* /usr/ports/russian/xxkb Ивана Паскаля
* /usr/ports/russian/xruskb Александра
Лукьянова
Либо если вы используете довольна
новый Х-сервер (не ниже XFree86-4.3.0), то
воспользуйтесь встроеным в него xkbd, добавив в XF86Config следующие
строки:
Section "InputDevice" Identifier
"Keyboard1" Driver "Keyboard" Option
"AutoRepeat" "500 30" Option "XkbRules" "xfree86"
Option "XkbModel" "pc104" #Англиская и
белорусская раскладки ( ru - для русской, и т.д. ):
Option "XkbLayout" "us,by" #Переключение по
ctrl+shift Option "XkbOptions"
"grp:ctrl_shift_toggle" Option "XkbVariant"
"winkeys" EndSection
И перезапустите
Х-сервер.
4. Монтирование дисковых
разделов других файловых систем в cp1251 в
FreeBSD
У команды mount и производных от
неё mount_msdos,
mount_ntfs и т.д. имеется куча параметров, среди
которых имеется и параметр -W, задающий файл
перекодировки символов. Для злосчастной кодировки koi8-r
это был файлик из стандартного дистрибутива koi2dos. Теперь это
вчерашний день! Быстренько качаем отсюда файлик win2dos и копируем его в папочку /usr/libdata/msdosfs.
Теперь раздел ФАТ32, к примеру, монтируется
коммандой такого вида:
mount_msdos -Wwin2dos
/dev/ad0s6 /mnt/FAT32
Либо аналогично через
запись в /etc/fstab следующей
строки:
/dev/ad0s6 /mnt/FAT32 msdos
rw,-Wwin2dos,-Lru_RU.CP1251 0 0
Ну вот в
принципе и всё! Теперь вы можете свободно слушать
белорусскую или украинскую музыку назло орущим во всё
горло заядлым юниксоидам о том, что "Кои8 - это круто,
потомучто это не от Майкрософт!"
Ну ещё отмечу,
что некоторые программы, типа того же МС, останутся
рускоязычными, кроме подсказок, которые упрямо будут
выводиться в кои. Проблемы такого рода очень просто
снимаются перекодировкой файла, содержащего эти
подсказки с помощью любой программы конвертации,
например iconv.
_____________________________________________________________
Лаврусик Игорь: freebsd-1251@tut.by
На основе статьи Андрея Лаврентьева: http://unix1.jinr.ru/~lavr/ |
|
Комментарии
пользователей |
Megaded: Ср 03 Ноя, 2004 2:51 pm А win2dos уже
не нужна |
|
сейчас надо пользоваться
опцией -D CP866 вместо -W
win2dos | |
.gif) |
Kotjara: Ср 03 Ноя, 2004 3:48 pm |
|
CP1251 и FreeBSD это
примерно как UNIX и Windows вообще не представляю
ЗАЧЕМ нужна эта локаль. IMHO достаточно cp866 и
KOI8, ну и впоследствии
UTF. | |
.gif) |
Megaded: Ср 03 Ноя, 2004 3:50 pm |
|
Kotjara,
согласен, я вот попробовал, все равно есть символы
косячные, а так в принципе можно
юзать... | |
.gif) |
Varjat: Ср 03 Ноя, 2004 7:26 pm |
|
Kotjara
писал(а): |
CP1251 и FreeBSD это примерно
как UNIX и Windows вообще не представляю ЗАЧЕМ
нужна эта локаль. IMHO достаточно cp866 и KOI8,
ну и впоследствии
UTF. | Для России это дествительно не
очень актуально. Актуально это становится в
Беларуси, где любая другая кодировка непригодна. И
ещё это поубавит вам забот, если вы в локальной
сети с сотней-другой пользователей Windows вдруг
захотели FTP сервер открыть для народа, где
немерено фильмов по русски называется, и музычки
коллектива "Руки вверх" пару гигов, при этом сами
решили пользоваться ихними ресурсами. Я,
например, не вижу ниодного преимущества кодироки
КОИ, кроме как "она исторически сложилась", что в
теперешних условиях звучит весьма
неубедительно. | |
.gif) |
sys: Ср 03 Ноя, 2004 10:02 pm |
|
конечно UTF лучше KOI8
но KOI8 для программиста лучше чем 1251
рекомендую погуглить по этому
вопросу | |
.gif) |
|
Полное время GMT +
2 На страницу 1, 2 След. |
|
Powered
by phpBB © 2001, 2005 phpBB
Group
|