Console tools cyrillic

When I've switched (in 1999) to Debian Linux, I've noticed that console tools package lacks proper cyrillic support.

So, I've started to collect fonts and keyboard layouts. There are lot of people who contributed: Cyril Slobin wrote set of C preprocessor macros to generate keyboard layout, wich insure that no special key would be unmapped in cyrillic mode, Vadim Zhytnikoc contributed set of Unicyr fonts, which can be used with any cyrillic encoding, Anton Zinoviev created and maintains debian console-cyrillic package.

You can download latest version of the package from my ftp site.

Package also includes script to convert console font into X font, which can be used in Dosemu.

README от пакета

Этот пакет содержит кириллические консольные шрифты и таблицы перекодировки для Linux, а также раскладки клавиатуры и прочие полезные вещи.

ЭКРАННЫЕ ШРИФТЫ

Шрифты рассчитаны на использование утилиты consolechars (пакет console-tools из Debian), впрочем с последними kbd они тоже будут работать.

Все шрифты сделаны на базе альтернативной кодировки (cp866). Почему? Потому что использование любой другой кодировки русских букв в качестве физической в текстовом режиме VGA приводит к тому, что горизонтальная псевдографика получается с разрывами. Это аппаратное свойство VGA, которое никак не лечится. Единственный выход - использовать шрифты, в которых псевдографика расположена на тех же позициях, что и в cp437.

Поскольку шрифты этого пакета содержат в себе unicode mapping, сочетание их с Application character map позволит добиться любой требуемой кодировки на консоли. Например:

consolechars -f 866_8x16.psf -m koi8-r.acm 

В пакет входят четыре комплекта шрифтов (каталог psf):

UniCyr_8x*.psf
Шрифты, разработанные Вадимом Житниковым. В этих шрифтах есть все буквы, которые только бывают в стандартных кириллических кодировках: cp866, cp1251, iso8859-5, koi8-r, koi8-u, и в дополнение к ним - все символы, включая псевдографику и математические символы, которые бывают в koi8-r.
alt_8x*.psf
шрифты в альтернативной кодировке (сделаны из alt-8x* из комплекта свежей kbd) Набор символов в этих шрифтах в точности совпадает с набором символов в кодировке koi8-r, поэтому рекомендуется использовать именно их.
Cyr_a8x*.psf
- шрифты Cyr_a8x* которые были в kbd с тех пор как я его впервые увидел (ядро тогда было 1.0.9) Недостаток этих шрифтов в том, что в них отсутствует буква ё (CYRILLIC YO, на случай если в ваших текущих ширифтах ее тоже нет). Таблица Cyr_a.sfm, встроенная в эти шрифты, заменяет ее на e (CYRILLIC IE), что делает тексты удобочитаемыми, но все же...
866_8x*.psf
Шрифты с кодовой страницей 866 (той, что используется в родной русификации MS-DOS и OS/2. В ней есть буква ё но зато отсутствует ряд математических символов, которые есть в кодировке koi8-r. На эти шрифты стоит обратить внимание украинцам и белорусам. Добавьте только koi8-u.acm или acm для той кодировки которую вы используете.
UniCyrX
- Еще одна попытка запихнуть как можно больше символов разных алфавитов в один 256-символьный шрифт. Dmitry Yu. Bolkhovityanov" <D.Yu.Bolkhovityanov@inp.nsk.su>
alt-antiq-8x16
разработанный Алексеем Макаренко (прислан Евгением Осинцевым <osgene@omskelecom.ru>), имеющий ту же кодировку, что и alt*, но отличающийся по начертанию;
alt-sans-8x16 и alt-lenta-8x16
разработанные Вадимом Житниковым и Евгением Осинцевым;
alt-b-8x16 и alt-c-8x16
неизвестного происхождения.

Все шрифты содержат в себе таблицу отображения в unicode. В виде отдельных файлов эти таблицы (alt.sfm и cp866.sfm) находятся в каталоге sfm.

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

В каталоге acm вы найдете acm файлы для наиболее распространенных кодировок русского языка. А также и кодировку koi8-u (к сожалению я не смог достучаться до ее официального сайта www.ua.net, поэтому взял определение с первого же попавшегося сайта, посвященного кирилличиским кодировкам)

РАСКЛАДКИ КЛАВИАТУРЫ

В пакет включена комплект для генерации клавиатуры, основанный на идеях, предложенных Кириллом Злобиным <slobin@ice.ru>. Он находится в каталоге keymaps.

Раскладки клавиатуры получаются с помощью обработки препроцессором C (/usr/bin/cpp) файла кодировки и собственно файла раскладки. При этом используется еще и общий для всех раскладок файл macros.inc

Использование макросов для описаний клавиш позволяет существенно полнее чем в большинстве распространенных раскладок определить комбинации Alt-клавиша, Ctrl-клавиша и т.д., как в русском, так и в латинском режимах.

Командой

cpp cyr-russian.cpp |loadkeys

вы получите раскладку клавиатуры для кодировки koi8-r Для работы с любой другой кодировкой требуется указать в командной строке имя соответствующего .enc файла. Например,

cat cp866.enc cyr-russian.cpp|cpp | loadkeys

В этой раскладке переключателем кириллического/латинского режима по умолчанию является правый Control. Правый Alt - временное (на время пока удерживается клавиша) переключение.

На Windows клавиатурах для переключения можно также использовать как переключатель клавишу системного меню. Клавиша Windows служит временным переключателем.

Эти умолчания можно изменить определив символ ALTSWITCH или WINONLY при генерации раскладки.

cpp -DALTSWITCH cyr-russian.cpp |loadkeys

Символ ALTSWITCH меняет местами функции правого Alt и правого Control. Я предпочитаю этот вариант, так как у меня правый Alt используется также и в X-ах.

Символ WINONLY делает правые Control и ALT эквивалентными левым Control и Alt, оставляя для переключения только клавиши Windows.

По умолчанию клавиша BackSpace генерирует символ Delete (ASCII 127) (потому что так принято в Debian Linux)

Изменить это умолчание можно указав -DBACKSPACE

В комплект входят следующие раскладки клавиатур

Имя файлаЯзыкКодировка по умолчаниюАвтор
cyr-russian.cppРусскийkoi8-rКирил Злобин
cyr-russian-ms.cpp Русский (раскладка microsoft) koi8-rВиктор Вагнер
cyr-belorussian.cppБелорусскийcp1251 Александр Микаэлян
cyr-bulgarian-bds.cppБолгарскийcp1251Антон Зиновиев
cyr-bulgarian-phon.cppБолгарский (фонетическая)cp1251Антон Зиновиев
cyr-serbian.cppСербскийiso8859-5Антон Зиновиев
cyr-ukrainian.cppУкраинскийkoi8-uВиктор Вагнер
cyr-ukrainian1.cppУкраинскийkoi8-uИгорь Власенко
cyr-ukrainian-ms.cppУкраинскийkoi8-uИгорь Власенко
cyr-ukrainian-ms-like1Украинскийkoi8-uНе помню кто
cyr-ukrainian-ms-like2Украинскийkoi8-uНе помню кто

Внимание - раскладка cyr-ukrainian была в свое время сделана мной "щобы було" и не тестировалась. Лучше пользуюйтесь раскладками Игоря Власенко.

Раскладки Игоря Власенко поддерживают дополнительные флаги при препросессировании. См. комментарии в самой раскладке.

Указанная кодировка по умолчанию - та, которая будет использована, если в командной строке CPP не указать файла .enc.

Поддерживаются следующие кодировки: MacCyrillic bulgarian-mik cp1251 cp866 iso8859-5 koi8-r koi8-u utf-8

РУСИФИКАЦИЯ DOSEMU

В каталоге x-window находится шрифт для X-window vga.bdf, который имеет кодировку cp866 и позволяет работать с русским языком в xdosemu.

СКРИПТЫ

В каталоге scripts находятся скрипты, использованные мной для создания этих шрифтов и таблиц.

Скрипт raw2psf берет файл шрифта в формате raw и генерирует файл в формате psf. Вторым аргументом может быть указана таблица отображения шрифта в unicode. Могут быть использованы либо таблицы в формате sfm (текстовая разновидность) либо определения charset которые можно скачать с ftp.unicode.org или взять из дистрибутива catdoc.

Скрипт makeacm генерирует из таблицы в одном из вышеприведенных форматов файл acm. Для этого скрипта необходим модуль Unicode::String, который можно взять со CPAN.

Скрипт dumppsf позволяет сконвертить psf-файл в некоторое текстовое представление, позволяющее посмотреть на шрифт, не загружая его. Вот когда-нибудь напишу обратный конвертер и можно будет редактировать консольные шрифты в vim...

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

Скрипт mkvgafont это shell-овский скрипт, который делает из raw-шрифта для консоли шрифт для X-Window, который можно использовать в DOSEMU

Документация на все перловые скрипты в формате pod встроена в сами скрипты. Вы можете использовать команду perldoc script для ее просмотра или pod2man script для создания полноценной man-страницы.