============================================================= ПРОЕКТ ИНВАРИАНТНОГО ПРЕДСТАВЛЕНИЯ ЦЕРКОВНОСЛАВЯНСКОГО ТЕКСТА (версии 6A и 6B системы HIP) ============================================================= I. ОБЩИЕ ПРИНЦИПЫ 1. Инвариантное представление HIP предназначено для записи в "читаемой" форме церковнославянских текстов с сохранением всех деталей правописания. Оно в своей базовой форме не обязано представлять внеязыковые элементы текста и детали верстки: размер и вид шрифта, разного рода отступы, разбиение на строки, столбцы и страницы и т. п. Кодируются только слова (и числа) текста, знаки препинания, пробелы между словами и разбиение на абзацы. Однако базовое HIP содержит возможность отмечать часть текста как "пояснение" (сноски, параллельные места и т. п.). Также имеется возможность обозначать выделение киноварью. 2. В связи с тем, что церковнославянский язык изменялся со временем и его "современная" версия с достаточно четкими правилами правописания заметно отличается -- в том числе и по набору используемых символов -- от языка старых книг и тем более рукописей, элементы кодировки HIP могут быть отнесены к нескольким "уровням": уровень 0 -- набор символов для современной ц.-сл. печати (приблизительно с середины XIX века до наших дней); уровень 1 -- набор символов, встречающихся в печатных книгах предшествующих эпох, а также символы, применяемые для транслитерации глаголических памятников; уровень 2 -- набор символов, встречающихся в рукописях. Каждый следующий уровень отличается от предыдущего наличием обозначений для дополнительных символов. 3. Для использования внетекстовой информации (далее она именуется "комментариями") зарезервированы (пусть пока не полностью формализованные) механизмы ее возможной вставки. Любая конкретная реализация вставки внетекстовой информации далее называется "расширенным HIP". Примечание 1. Любой текст в виде базового HIP является текстом в расширенном HIP. Любой текст в расширенном HIP можно перевести в базовое HIP, удалив комментарии. Примечание 2 -- о корректности терминологии. Комментарий в "узком" смысле (некая пометка для памяти или кусок текста, "отключенный" от документа) тоже является внетекстовой информацией. 4. HIP является абстрактным 8-битовым представлением текста. Его конкретные реализации могут меняться в соответствии с различными возможными кодировками кириллицы. Поэтому в HIP-файлах разрешается использовать только символы, гарантированно присутствующие во ВСЕХ кодировках, пригодных для русского языка, а именно: 1234567890-=[]\;',./` A...Z А...Я !@#$%^&*()_+{}|:"<>?~ a...z а...я Кроме того, используются два "абстрактных белых символа": пробел и EOL (TAB, BS и проч. приравниваются к пробелу, а VT, FF, EOF и проч. -- к EOL). 5. В HIP визуально неразличимые символы и сочетания символов ("е" русское и "e" латинское, например) обозначают ВО ВСЕХ СИТУАЦИЯХ одно и то же. Более того, мы считаем неразличимыми строчные буквы, если соответствующие прописные неразличимы, и наоборот. Список "неразличимых" букв такой: Аа Вв Ее Кк Мм Нн Оо Рр Сс Тт Уу Хх Aa Bb Ee Kk Mm Hh Oo Pp Cc Tt Yy Xx (Потому в нашем "объединенном" алфавите присутствуют 46 букв: 32 русские + 14 (=26-12) латинских: Dd Ff Gg Ii Jj Ll Nn Qq Rr Ss Uu Vv Ww Zz.) 6. По той же причине визуальной неразличимости (но не только) HIP не замечает пробелов рядом с EOL, рассматривает любое число соседних пробелов как один и любое число пустых строк (строк, состоящих только из пробелов) как одну -- логический конец абзаца. Одиночный символ EOL (пустая строка -- это пара EOL'ов) эквивалентен пробелу. 7. В HIP включено обозначение для явного конца абзаца (см. ниже). Оно эквивалентно паре символов EOL EOL (то есть пустой строке) и так же, как эта пара символов, взаимодействует с соседними пробелами и EOL. 8. Желательно, чтобы HIP-закодированный текст был "читабельным" и без применения каких-либо программ. 9. Также желательно, чтобы HIP-текст как можно проще переводился из uppercase в lowercase и обратно. (Из этих соображений в многобуквенных обозначениях предусмотрены синонимы типа JА и Jа.) 10. В данном документе описываются два варианта кодировки HIP (в основном сходные); в дальнейшем одна из них будет отброшена. А пока они именуются HIP-6A и HIP-6B. В тех случаях, когда между ними разницы нет, говорим просто "HIP-6" или "HIP" (потому что HIP-5 и предыдущие версии считаются более не существующими). II. ПОЧТИ ФОРМАЛЬНАЯ ГРАММАТИКА HIP HIP-ТЕКСТ есть последовательность вида Р[0] С[1] Р[1] С[2] Р[2] ... С[N-1] Р[N-1] С[N] Р[N] где С[1] ... С[N] -- СЛОВА, а Р[0] ... Р[N] -- РАЗДЕЛИТЕЛИ (Р[0] и Р[N] могут отсутствовать, остальные элементы обязательны) РАЗДЕЛИТЕЛИ бывают двух сортов: РАЗДЕЛИТЕЛИ_СЛОВ и РАЗДЕЛИТЕЛИ_АБЗАЦЕВ. РАЗДЕЛИТЕЛЬ_СЛОВ есть последовательность пробелов, EOL'ов и КОММЕНТАРИЕВ, содержащая не более одного EOL и не состоящая только из КОММЕНТАРИЕВ. РАЗДЕЛИТЕЛЬ_АБЗАЦЕВ есть последовательность пробелов, EOL'ов, явных символов конца абзаца и КОММЕНТАРИЕВ, не являющаяся РАЗДЕЛИТЕЛЕМ_СЛОВ и не состоящая только из КОММЕНТАРИЕВ. СЛОВО есть последовательность ЗНАКОВ и КОММЕНТАРИЕВ, содержащее хотя бы один ЗНАК. ЗНАК есть ПРОСТОЙ_ЗНАК или последовательность ПРОСТЫХ_ЗНАКОВ, соединенных символами "&". ПРОСТОЙ_ЗНАК есть БАЗОВЫЙ_ЗНАК за которым следует несколько (в том числе один или ни одного) АКЦЕНТОВ. КОММЕНТАРИЙ есть либо запись %{...}, внутри которой соблюдена парность фигурных скобок, либо байт-символ "%" плюс один непробельный байт-символ, отличный от "{". БАЗОВЫЕ_ЗНАКИ и АКЦЕНТЫ бывают такие: а) один непробельный байт-символ, отличный от: HIP-6A: % \ { } < > & j J HIP-6B: % \ { } < > & j J _ б) запись вида <...>, внутри которой не используются пробелы и байты-символы < > % { } в) один или несколько символов J и (или) j, за которыми следует ПРОСТОЙ_ЗНАК вида а) или б) г) (только в HIP-6B) записи _i _I _w _W _е _Е _о _О _у _У _кс _Кс _КС _пс _Пс _ПС __ _/ д) произвольный HIP-текст в фигурных скобках е) байт-символ "\" плюс один байт-символ ж) запись вида \{...}, внутри которой допустим произвольный HIP-текст Из них АКЦЕНТАМИ являются записи е) и ж), а также байты-символы = $ ' ` ^ ~ " (все остальные суть БАЗОВЫЕ_ЗНАКИ). Примечание 3. При наличии нескольких АКЦЕНТОВ они записываются слева направо и снизу вверх. Поэтому в сочетаниях придыхания с ударением сперва пишем знак придыхания, а потом знак ударения: =' =` =^ $' $` $^ Из тех же соображений акцентированные варианты буквы "от" пишем так: w\т' ("от" с ударением) w\т\ъ ("от" с паерком) w\т~ ("от" с титлом) Примечание 4. Сама же по себе сочетаемость АКЦЕНТОВ друг с другом и с БАЗОВЫМИ_ЗНАКАМИ представляет собой вопрос не HIP-кодировки, а орфографической и типографской корректности текста, а потому в данном документе не оговаривается. III. ТАБЛИЦА КОДИРОВКИ БАЗОВОГО HIP И НЕКОТОРЫХ РАСШИРЕНИЙ. III.1. Алфавит III.1.1. Уровень 0 АБВГД абвгд соответствующие буквы Е е есть <е> "есть якорное" в кодировке HIP-6A _е "есть якорное" в кодировке HIP-6B <Е> формальный прописной вариант для <е> _Е формальный прописной вариант для _е ЖЗИЙКЛМН жзийклмн соответствующие буквы О о он (узкое начертание) <О> <о> он (широкое начертание) в кодировке HIP-6A _О _о он (широкое начертание) в кодировке HIP-6B ПРСТ прст соответствующие буквы У у ук (гаммаобразное начертание) О<У> О<у> о<у> ук (диграф оу) в кодировке HIP-6A О_У О_у о_у ук (диграф оу) в кодировке HIP-6B <У> <у> ик (числовой знак 400) в кодировке HIP-6A _У _у ик (числовой знак 400) в кодировке HIP-6B ФХЦЧШЩЪЫЬ фхцчшщъыь соответствующие буквы Ю ю буква Ю Я я юс малый F f фита I i иже-и десятеричное (с двумя точками, которые исчезают при наличии любого акцента) "i" без точек в кодировке HIP-6A _I _i "i" без точек в кодировке HIP-6B S s зело U u юс большой V v ижица V" v" ижица с двумя штрихами W w омега омега красивая со своим акцентом в HIP-6A _W _w омега красивая со своим акцентом в HIP-6B W\т w\т буква "от" <КС>=<Кс> <кс> кси в кодировке HIP-6A _КС=_Кс _кс кси в кодировке HIP-6B <ПС>=<Пс> <пс> пси в кодировке HIP-6A _ПС=_Пс _пс пси в кодировке HIP-6B JА=Jа jа буква Я в виде "лигатуры" IА JЬ=Jь jь буква ять III.1.2. Уровни 1 и 2 самые частые символы: JЯ=Jя jя йотированный юс малый JU=Ju ju йотированный юс большой JЕ=Jе jе йотированное Е ("лигатура" IЕ) <З> <з> z-образная буква З <Ч> <ч> чашеобразное Ч <Ы> <ы> буква Ы в форме ЪI (другие варианты буквы Ы можно обозначать так: <ЬИ> <ЪИ> <ЬI_> <ЪI_>; если Ь и I еще и черточкой соединены, то тогда <Ь-I> <Ъ-I> <Ь-И> <Ъ-И> <Ь-I_> <Ъ-I_>) для глаголицы и босанчицы: <АН>=<Ан> <ан> носовое А (для глаголицы) G g дервь вариант буквы i ("i с крючком внизу"), используемый в транслитерации глаголицы <Я> <я> вариант юса малого в виде подчеркнутого А <Я_> <я_> вариант юса малого с соединенными чертой внизу ножками <Я.> <я.> вариант юса малого в виде А с "прогнутой вниз" горизонтальной линией прочие варианты букв: <ДГ>=<Дг> <дг> "д с крючком" перевернутое зело = зело в виде "z с крючком" зело в виде "z перечеркнутого" <ЛГ>=<Лг> <лг> "л с крючком" <НГ>=<Нг> <нг> "н с крючком" <О+> <о+> "о" с крестом в середине <О.> <о.> "о" с точкой в середине <О:> <о:> "о" с двумя точками в середине <ОО>=<Оо> <оо> сдвоенное "о" <О.О.>=<О.о.> <о.о.> сдвоенное "о" с точками в середине <|Т|> <|т|> m-образный вариант Т <ОV>=<Оv> <оv> форма буквы "ук" в виде "о с галочкой" (галочка=ижица) <Т> <т> высокий вариант Т <Ц> <ц> ч-(или у-)-образное Ц <Щ> <щ> вариант буквы Щ, выглядящий как Ш, где вместо 3-й палочки нарисовано <ч> <Ъ> <ъ> высокий вариант Ъ = высокий вариант ятя (перекрестие над строкой) = низкий вариант ятя (как бы склеенные гь) = вариант ятя, в котором черта загнута и слева доходит донизу JJЬ=Jjь jjь йотированный ять <Ю> <ю> перевернутое Ю = вариант буквы JА/jа с соединительной чертой по центру (а не сверху) вариант юса большого с двумя ножками вместо трех Л&Ю л&ю лигатура ЛЮ М&Ю м&ю лигатура МЮ Примечание 5. Лигатурные обозначения с символом "&" применяются в том случае, когда составной символ не является новой буквой и его можно без ущерба для орфографической правильности текста заменить последовательностью отдельно написанных букв. В противном случае применяются другие обозначения (см., например, JА, JЕ, <ЛГ>). III.2.3. Возможно также: <С> <с> вариант буквы С, выступающий вниз под строку Ш&Т=Ш&т ш&т знак типа ш\т с общей средней чертой III.2. Диакритика III.2.1. Уровень 0 ' острое ударение ` тяжелое ударение ^ облеченное ударение (оно же -- знак мягкости над согласными) = тонкое придыхание =' тонкое придыхание + острое ударение =^ тонкое придыхание + облеченное ударение =` тонкое придыхание + тяжелое ударение " два штриха (для ижицы) ~ простое титло \г = \Г г-титло \д = \Д д-титло \ж = \Ж ж-титло \з = \З з-титло \о = \О о-титло \р = \Р р-титло \с = \С с-титло \т = \Т т-титло (в том числе и как элемент буквы "от": w\т) \х = \Х х-титло \ч = \Ч ч-титло \ъ = \Ъ паерок III.2.2. Уровни 1 и 2 $ густое придыхание $' густое придыхание + острое ударение $` густое придыхание + тяжелое ударение $^ густое придыхание + облеченное ударение \- покрытие (примерно то же, что титло, но оба края загнуты вниз) \. надстрочная точка \: две надстрочные точки \@ u-образный символ, употреблявшийся в смысле паерка между согласными (кавыка в качестве акцента) \^ взмет (для различения записей \с \{с} \{с}\^ -- неспецифицированное буквенное титло / выносная буква без взмета / выносная буква со взметом) \{...} произвольный надстрочный HIP-ТЕКСТ -- например, несколько выносных букв подряд или даже одна выносная буква, но кодируемая более чам одним байтом, типа \{<пс>} или \{jа} \б, \Б б-титло \в, \В в-титло \и, \И и-титло (два штриха) \к, \К к-титло \л, \Л л-титло \м, \М м-титло \н, \Н н-титло \п, \П п-титло \ц, \Ц ц-титло \ш, \Ш ш-титло III.3. Знаки препинания III.3.1. Уровень 0 ! символ "!" ( символ "(" ) символ ")" , символ "," . символ "." (точка внизу строки) : символ ":" ; символ ";" ("удивительная") [ символ "[" ] символ "]" - символ "-" (дефис) / символ "/" <-> тире III.3.2. Уровни 1 и 2 <.> точка по центру строки <:.> 3 точки треугольником <.:.> 4 точки ромбиком <.|.> 5 точек крестиком <:.-> 3 точки треугольником с хвостом <.:.-> 4 точки ромбиком с хвостом <.|.-> 5 точек крестиком с хвостом III.3.3. Возможно также: <((> открывающие кавычки <))> закрывающие кавычки <|> вертикальная черта <(.)> точка в кружочке III.4. Прочие символы III.4.1. Уровень 0 # знак для 1000 * 8-конечная звездочка (поднятая над строкой) + крестик простой 4-конечный с равными концами <+> крестик красивый <(+)> крестик в круге <\+/> крестик в нижнем полукруге <> явный символ конца абзаца (HIP-6A) _/ явный символ конца абзаца (HIP-6B) <(:.> <.:)> "три точки, несовершенно окруженные" @ символ "кавыка" @&{...} символ "кавыка" и соответствующее ей примечание (в скобках может быть любой HIP-ТЕКСТ) III.4.1'. Уровень 0, дополнительные символы 0...9 арабские цифры _ пустое место, над коим можно ставить диакритические знаки (HIP-6A)