KOI8-C: расширение кодировки KOI8-R
Дайджест: кодировка KOI8-R дополнена буквами украинского, белорусского,
сербского, македонского языков, буквами ять, фита, ижица, а также некоторыми
типографскими символами; результат называется KOI8-C. Созданы словарь правописания, раскладка клавиатуры и экранные шрифты X window (BDF) для дореформенной русской орфографии.
Summary: (This page is in Russian, in the KOI8-R encoding.) I describe my extension of the KOI8-R encoding which I call "KOI8-C". This new 8-bit Cyrillic encoding can be used for Russian, Ukrainian, Byelorussian, Serbian, Macedonian languages (like the CP1251 code page) but also includes letters for the old (pre-1917) Russian orthography ("yat", "fita", "izhitsa") and some frequently used typographic symbols (same positions as CP1251). The possibility to type texts using old Russian orthography and the extra typographic symbols are the main reasons to use this encoding. I have also created: a keyboard map (xmodmap) and a set of X window screen fonts (BDF) in KOI8-C encoding (fully compatible with KOI8-R and KOI8-U as regards letters); a perl script to print texts to Postscript using a BDF font; and a spell checker for old Russian orthography.
Intro
Кодировка КОИ (KOI8-R) традиционно используется для русскоязычных
текстов, посылаемых электронной почтой и выкладываемых на Интернет. Я
предлагаю расширение этой кодировки -- "KOI8-C", включающее буквы
украинского, белорусского, сербского, македонского языков, а также буквы
устаревшей русской орфографии (ять, фита, ижица) и некоторые типографские
знаки. Позиции дополнительных букв были выбраны с учётом украинской
кодировки (KOI8-U) с украинскими и белорусскими буквами и кодировки CP1252
так, чтобы тексты в кодировках KOI8-R и KOI8-U читались бы без изменений.
Позиции других символов были выбраны в совместимыми с кодировкой CP1252,
чтобы были видны часто (по ошибке) вставляемые в русские (КОИ-8) сетевые
страницы символы специальных кавычек, тире и т.д. Пользуясь KOI8-C, вы
сможете читать тексты на сети, созданные в среде "windows" и
перекодированные в KOI8-R без учёта этих символов, оставляемых без
изменений всеми перекодировщиками CP1252 -> KOI8-R.
По сравнению с KOI8-R, многие символы псевдографики и другие символы,
по историческим причинам находящиеся там, заменены на кириллицу и на
наиболее часто употребляемые типографские знаки. Из таблицы KOI8-R были
удалены символы, которые не используются в современных компьютерных
системах. В частности, шрифты из единственного широко распространённого
набора для X Window в кодировке KOI8-R (пакет "xrus" Андрея Чернова со
шрифтами "-cronyx-" и его производные) никогда не содержали символов,
удалённых мной из таблицы KOI8-R, и, по-видимому, нет программ, которые бы
в них нуждались. Поэтому простая замена KOI8-R на KOI8-C для представления
кириллицы никак не повлияет на текущие компьютерные системы, и в то же
время позволит вводить дополнительные символы кириллицы и типографские
знаки. Скомпилировав lynx с поддержкой KOI8-C, вы сможете полноценно читать
значительно большее количество существующих страниц сети.
Specification
Таблица соответствия KOI8-C и Unicode, в стандартном формате. С помощью этого файла сравнительно легко скомпилировать, например, lynx или links с поддержкой кодировки KOI8-C.
Вот предлагаемое расположение букв старой русской орфографии:
Название Adobe PS Unicode Предлагаемый Клавиша "Русская Символ
буквы name код KOI8-C "QWERTY" Латиница" KOI8-C
Ижица afii10148 0x474=1140 177=0xB1 нет ~V ╠
ижица afii10196 0x475=1141 161=0xA1 нет ~v ║
Фита afii10147 0x472=1138 188=0xBC + ~F ╪
фита afii10195 0x473=1139 172=0xAC = ~f ╛
Ять afii10146 0x462=1122 178=0xB2 ~ E~ ╡
ять afii10194 0x463=1123 162=0xA2 ` e~ ╒
И с точкой afii10055 0x406=1030 182=0xB6 | I~ ╤
и с точкой afii10103 0x456=1110 166=0xA6 \ i~ ╕
Для справки приводим также кодировку букв "ё" и "Ё":
Ё afii10023 0x401=1025 179=0xB3 # Yo, Jo Ё
ё afii10071 0x451=1105 163=0xA3 / yo, jo ё
Предлагаемое расширение поддерживается раскладкой клавиатуры
"jcukeng-koi8-c", шрифтами xcyr-2.3 и перекодировщиком 323 версии 2.5+ (перевод из латиницы и обратно). Есть
также аналогичная раскладка для Windoze 95/98.
Вот пример полной раскладки клавиатуры для программы xruskb (файл типа jcukeng-koi8.xmm).
╡ ╒ | !
1 | " 2 | Ё 3 | ;
4 | : 5 | , 6 | .
7 | * 8 | ( 9 | )
0 | _ - | ╪ ╛ | Backspace
|
Tab | Й
й | Ц ц | У у | К
к | Е е | Н н | Г
г | Шш | Щщ | З з | Х х | Ъ
ъ | ╤ ╕
|
CapsLock | Ф
ф | Ыы | В
в | А а | П п | Р
р | О о | Л л | Д
д | Жж | Э
э | Enter
|
Shift | Я
я | Ч ч | С с | М
м | И и | Т т | Ь
ь | Б б | Юю | ? ё | Shift
|
Ctrl | | Alt | Space | Alt | | Ctrl
|
Пример раскладки русской клавиатуры для KOI8-C
Fonts
Мной также созданы растровые шрифты для X Window, xcyr-2.3-koi8r.tar.gz, аналогичные cronyx
xrus-2.3.1-src.tar.gz Андрея Чернова, но
включающие дополнительные символы кириллицы и прочие знаки из таблицы KOI8-C. Шрифты в вышеприведённом архиве помечены кодировкой KOI8-R для совместимости с существующими программами. Исходники шрифтов см. на SourceForge; их можно свободно распространять и модифицировать. В пакет входит возможность перекодировки из KOI8-C в CP-1251, ISO-8859-5, KOI8-RU. С помощью программ-конверторов bdftofon и pcftofon можно перевести шрифты в формат FON для системы Windoze. Вот минимальный набор шрифтов для Windoze.
Расположение символов в верхней части ASCII-таблицы следующее:
Вид шрифта koi12x24 в xmbdfed
В текущей версии шрифтов (2.3.8) уже откорректированы все символы в интервале 0x80-0xA0.
Имеется также свободно распространяемый TrueType-шрифт Christoph'а Singer'а "XSerif Old Russian" кодировки 1251 и Unicode с некоторыми буквами для устаревшей орфографии (на нестандартных позициях в CP-1251). Мой перекодировщик 323 поддерживает именно эту кодировку. Этот шрифт можно использовать для Unicode-программ. Есть также набор Royal Arial + Royal Times, это Unicode-шрифты на базе стандартных Windoze шрифтов, но содержащие буквы Ять, Фита, Ижица (только normal, нет bold и italic)
Наконец, вот комплект русских шрифтов (740KB; Courier, Helvetica, Times) в кодировке КОИ-8, формата TrueType (имеются не все символы, зато шрифты хорошего качества).
Printing
Для черновой печати текстов старой орфографии теперь можно использовать мою новую программу txtbdf2ps -- для наилучших результатов используйте BDF-шрифт высокого разрешения. С помощью свободно распространяемой программы ttf2bdf можно приготовить BDF-шрифты из шрифтов TrueType. Сделайте это в достаточно высоком разрешении, и принтер не заметит, что вы не используете масштабируемые шрифты! Вы сможете даже отредактировать отдельные буквы, если вас что-то не устраивает, с помощью программы xmbdfed. Я приготовил BDF-шрифт TNR-KOI8C.BDF в кодировке KOI8-C и разрешении 720DPI из Times New Roman (бесплатный Unicode-шрифт, доступный на сайте Micro$oft) и добавил в него буквы ять, фита и ижица. (При печати с помощью него я рекомендую устанавливать lineskip=1, так как высота букв шрифта уже правильно подобрана.)
Texts in old Russian orthography
Я подготовил к помещению в Интернет книгу И. Солоневича "Россия в
концлагере", изданную в Болгарии в 1938 году в дореформенной орфографии. Прочитайте первую главу книги для проверки шрифтов. (Для сканирования и распознавания была использована программа Presto OCR Pro 3.0.)
Я собираю тексты в старой орфографии. Вот пока что вся моя коллекция.
Прочтите введение в старое правописание и более полный свод правил.
Russian spellchecking
Для проверки правописания русскоязычных документов можно использовать свободно распространяемую программу ispell. К ней имеются орфографические словари многих языков, также свободно распространяемые. Я подготовил словарь для дореформенной орфографии oldrus-ispell, на базе прекрасного словаря для современного русского правописания А. И. Лебедева. Текущая версия
0.99f4p16
отражает версию
0.99f4
словаря rus-ispell. (См. инструкции в этих файлах. Пока что всё работает только под Unix!) Словарь может быть собран в кодировках KOI8-C или CP-1251. (См. проект на SourceForge: там можно скачать самые что ни на есть свежие версии.)
Грамматика старой орфографии поддерживается полностью. Начато систематическое добавление в словарь грамматической информации и расширение состава порождаемых форм по сравнению с rus-ispell.
Convert from new to old orthography
А вот -- экспериментальный конвертор новой орфографии в старую. Конвертор годится только для перевода отдельных слов (синтаксический анализ текста не производится). В пакет oldrus-ispell входит скрипт text_new2old.pl, который способен эффективно переводить большие тексты из современной орфографии в старую. (Конечно, некоторые слова невозможно однозначно перевести в старую орфографию; в таких случаях скрипт может выдать несколько вариантов.) Имеется также адаптация этого скрипта для систем M$ Windows: скачайте text_n2o.exe и следуйте ReadMe.txt.
Пишите мне