============================================================= ПРОЕКТ ИНВАРИАНТНОГО ПРЕДСТАВЛЕНИЯ ЦЕРКОВНОСЛАВЯНСКОГО ТЕКСТА (версия 4 системы HIP) ============================================================= I. ОБЩИЕ ПРИНЦИПЫ 1. Инвариантное представление HIP предназначено для записи в "читаемой" форме церковнославянских текстов с сохранением всех деталей правописания. Оно в своей базовой форме не обязано представлять внеязыковые элементы текста и детали верстки: размер шрифта, разного рода отступы, разбиение на строки, столбцы и страницы и т. п. Кодируются только слова (и числа) текста, знаки препинания, пробелы между словами и разбиение на абзацы. Однако базовое HIP содержит возможность отмечать часть текста как "пояснение" (сноски, параллельные места и т. п.). Также имеется возможность обозначать выделение киноварью. 2. Для использования внетекстовой информации (далее она именуется "комментариями") предлагается зарезервировать (пусть не полностью формализуя) механизмы ее возможной вставки. Любая конкретная реализация вставки внетекстовой информации далее называется "расширенным HIP". Примечание 1. Любой текст в виде базового HIP является текстом в расширенном HIP. Любой текст в расширенном HIP можно перевести в базовое HIP, удалив комментарии. Примечание 2 -- о корректности терминологии. Комментарий в "узком" смысле (некая пометка для памяти или кусок текста, "отключенный" от документа) тоже является внетекстовой информацией. 3. HIP является абстрактным 8-битовым представлением текста. Его конкретные реализации могут меняться в соответствии с различными возможными кодировками кириллицы. Поэтому в HIP-файлах разрешается использовать только символы, гарантированно присутствующие во ВСЕХ кодировках, пригодных для русского языка, а именно: 1234567890-=[]\;',./` A...Z А...Я !@#$%^&*()_+{}|:"<>?~ a...z а...я Кроме того, используются два "абстрактных белых символа": пробел и EOL (TAB, BS и проч. приравниваются к пробелу, а VT, FF, EOF и проч. -- к EOL). 4. В базовом HIP визуально неразличимые символы и сочетания символов ("е" русское и "e" латинское, например) обозначают одно и то же. Список "визуально неразличимых" букв: Аа В Ее К М Н Оо Рр Сс Т Уу Хх Aa B Ee K M H Oo Pp Cc T Yy Xx 5. По этой причине (но не только) базовое HIP не замечает пробелов рядом с EOL, рассматривает любое число соседних пробелов как один и любое число пустых строк (строк, состоящих только из пробелов) как одну -- логический конец абзаца. Одиночный символ EOL (пустая строка -- это пара EOL'ов) эквивалентен пробелу. 6. В HIP включено обозначение для явного конца абзаца (см. ниже). Оно эквивалентно паре символов EOL EOL (то есть пустой строке) и так же, как эта пара символов, взаимодействует с соседними пробелами и EOL. 7. Желательно, чтобы HIP-закодированный текст был "читабельным" и без применения каких-либо программ. 8. Также желательно, чтобы HIP-текст как можно проще переводился из uppercase в lowercase и обратно. (Из этих соображений в многобуквенных обозначениях предусмотрены синонимы типа JА и Jа.) II. ПОЧТИ ФОРМАЛЬНАЯ ГРАММАТИКА HIP HIP-ТЕКСТ есть последовательность вида Р[0] С[1] Р[1] С[2] Р[2] ... С[N-1] Р[N-1] С[N] Р[N] где С[1] ... С[N] -- СЛОВА, Р[0] ... Р[N] -- РАЗДЕЛИТЕЛИ (Р[0] и Р[N] могут отсутствовать, остальные элементы обязательны) РАЗДЕЛИТЕЛИ бывают двух сортов: РАЗДЕЛИТЕЛИ_СЛОВ и РАЗДЕЛИТЕЛИ_АБЗАЦЕВ. РАЗДЕЛИТЕЛЬ_СЛОВ есть последовательность пробелов, EOL'ов и КОММЕНТАРИЕВ, содержащая не более одного EOL и не состоящая только из КОММЕНТАРИЕВ. РАЗДЕЛИТЕЛЬ_АБЗАЦЕВ есть последовательность пробелов, EOL'ов, явных символов конца абзаца и КОММЕНТАРИЕВ, не являющаяся РАЗДЕЛИТЕЛЕМ_СЛОВ и не состоящая только из КОММЕНТАРИЕВ. СЛОВО есть последовательность ЗНАКОВ и КОММЕНТАРИЕВ, содержащее хотя бы один ЗНАК. ЗНАКИ бывают такие: ПРОСТОЙ_ЗНАК плюс НАБОР_АКЦЕНТОВ, ЛИГАТУРА плюс НАБОР_АКЦЕНТОВ. ЛИГАТУРА есть последовательность ПРОСТЫХ_ЗНАКОВ, соединенных символом "&". НАБОР_АКЦЕНТОВ может быть пустым, состоящим из одного акцента, либо же придыхание + ударение или титло + ударение. III. ТАБЛИЦА КОДИРОВКИ БАЗОВОГО HIP. 1. КОММЕНТАРИИ: %- мягкий перенос %< переход на красный цвет (киноварь) %> переход на черный цвет (конец киновари) %{...} комментарии, игнорируемые на уровне базового HIP, но могущие содержать информацию о разметке в расширенном HIP; внутри этих комментариев использовать символы { и } можно только при условии сохранения их парности. 2. ПРОСТЫЕ_ЗНАКИ и некоторые ЛИГАТУРЫ: ! символ "!" # знак для 1000 $ (зарезервировано) ( символ "(" ) символ ")" * 8-конечная звездочка (поднятая над строкой) + крестик , символ "," - символ "-" (дефис) . символ "." (точка внизу строки) / символ "/" (обозначение раздела на строки в оригинале при точной передаче цитат) // символ "//" (конец страницы/листа в оригинале при точной передаче цитат) 0..9 арабские цифры : символ ":" ; символ ";" ("удивительная") , "i десятиричное" без точек , "омега красивая" (для "о!" и "оле!") <кс>, <Кс>=<КС> кси <пс>, <Пс>=<ПС> кси ? неясный или неоднозначный символ ?&{...} неясный или неоднозначный символ с пояснениями к нему (в скобках может быть любой HIP-ТЕКСТ) ?&{...|...|...} альтернативный тег @ символ "кавыка" @&{...} символ "кавыка" и соответствующее ей примечание (в скобках может быть любой HIP-ТЕКСТ) ABCEHKMOPTXY синонимы кириллических букв той же формы aceopxy синонимы кириллических букв той же формы DGLR (зарезервировано; про G и Z см. п. IV) bdghklmrt (зарезервировано; про g и z см. п. IV) F, f фита I, i "i десятиричное" (с двумя точками, если нет акцентов) JА=Jа, jа буква "я" в виде лигатуры iа JЕ=Jе, jе буква "iе" JЬ=Jь, jь ять JЭ=Jэ, jэ синоним для Jе/jе JЯ=Jя, jя йотированный юс малый JN=Jn, jn йотированный юс большой N, n юс большой Q, q "о широкое" S, s зело U, u "ик" (знак для 400 или вторая часть диграфа "оу") V, v ижица V", v" ижица с двумя штрихами W, w омега W\т, w\т буква "от" [ символ "[" ] символ "]" _ пустое место, над коим можно ставить диакритические знаки А...Я, а...я соответствующие буквы, с такими только уточнениями: 1) е и э -- угловатое и круглое начертания буквы "е"; 2) Е и Э -- визуально синонимы, но рекомендуется использовать их сообразно с различием в начертании строчного варианта; 3) О, о -- "о узкое"; широкое -- это Q/q; 4) У, у -- гамма-образное начертание (диграф передается как ОU/Оu/оu, буква "ик" -- как U/u); 5) Щ, щ -- слитное начертание, а не диграф (он так и будет: ШТ/Шт/шт); 6) Ы, ы -- начертание Ы, а не ЪI; 7) Я, я -- юс малый. ОU, Оu, оu диграф "оу" (с точки зрения HIP это даже не один символ и даже не лигатура, а просто два знака подряд) 3. АКЦЕНТЫ: " два штриха (для ижицы) ' острое ударение = придыхание тонкое =' острое ударение с придыханием =` тяжелое ударение с придыханием (оно же -- акцент для красивой омеги) \г г-титло \д д-титло \ж ж-титло \з з-титло \о о-титло \р р-титло \с с-титло \т т-титло (в том числе и как элемент буквы "от") \х х-титло \ъ паерок ^ облеченное ударение ` тяжелое ударение ~ простое титло Примечание: \Г = \г, \Д = \д и т. п. 4. Спецсимволы: пробел EOL % начало комментария (см. п. III.1) & лигатурная склейка (см. п. I.8) <...> формат записи именованных символов (список см. в п. II.2; он будет пополняться) <> явный символ конца абзаца {...} вставной HIP-ТЕКСТ (например, сноска или указание параллельного места) IV. ВОЗМОЖНЫЕ ДОПОЛНИТЕЛЬНЫЕ ОБОЗНАЧЕНИЯ (пока в стандарт не входят!): =^ облеченное ударение с придыханием <=> густое придыхание \{...} произвольный надстрочный HIP-ТЕКСТ (например, несколько выносных букв подряд или даже одна выносная буква, но кодируемая более чам одним байтом, типа \{<пс>} или \{jа}) <сноска>&{...} возможное оформление сносок <паралл>&{...} возможное оформление параллельных мест Z, z z-образная буква З , перевернутое зело <Ы>, <ы> буква Ы в форме ЪI Ъ&I, ъ&i то же, но с соединительной черточкой JJЬ, jjь йотированный ять G, g дервь , вариант буквы i ("i с крючком внизу"), используемый в транслитерации глаголицы <Ы_>, <ы_> вариант буквы ы, когда второй элемент -- это "i с крючком" <ЪИ>, <ъи> ЪИ-вариант буквы Ы <ЬИ>, <ьи> ЬИ-вариант буквы Ы <А_>, <а_> вариант юса малого в виде подчеркнутого А <Я.>, <я.> вариант юса малого в виде А с "прогнутой вниз" горизонтальной линией <Я_>, <я_> вариант юса малого с соединенными чертой внизу ножками , вариант юса большого с двумя ножками , зело в виде "z с крючком" <НГ>, <нг> "н с крючком" <ЛГ>, <лг> "л с крючком" <ДГ>, <дг> "д с крючком" Л&Ю, л&ю лигатура ЛЮ М&Ю, м&ю лигатура МЮ <АН>, <ан> носовое А (для глаголицы) <Ч>, <ч> стигма <Ю>, <ю> перевернутое ю О\u, о\u форма буквы "ук" в виде "о с галочкой" <ЦЧ>, <цч> ч-образное "ц" <ШЧ>, <шч> вариатный глиф для "щ" (см. у Востокова) #& знак для 6000 (лигатура из знака для 1000 и перевернутого s) I&А, i&а лигатура iа с соединительной чертой посреди строки (а не сверху, как в JА/jа) <Ъ>, <ъ> высокий вариант Ъ <Т>, <т> высокий вариант Т , высокий вариант ятя I&Ь, i&ь низкий вариант ятя (как бы лигатура ПЬ, а не "стандартное" перечеркнутое Ь) ^ над согласными -- знак мягкости (по начертанию совпадает с облеченным ударением) \v u-образный символ, употреблявшийся в смысле паерка между согласными (конфликта с титлами вроде бы не будет, потому что надстрочной ижицы вробе бы не бывает (а если и бывает, то чем она отличается от надстрочного же ика?) <.:.> <.:.-> и т. п. -- различные составные знаки препинания <(:.> <.:)> "три точки, несовершенно окруженные" <вран>, <колода>, <тьма>, ... крюковая нотация (???) <титло>&{абв} несколько букв (абв) под общим титлом Для точного различения выносных букв с покрытиями и без оных можно изобрести систему такого рода (буква "с" взята только для примера): \с выносная буква в начертании "по умолчанию" (наличие покрытия зависит, вообще говоря, от шрифта) \{с} выносная буква без покрытия \^ покрытие как таковое \{с\^} выносная буква с покрытием