До появления стандарта Unicode для работы с текстами использовались 8-ми битные кодировки, в которых для представления каждого отдельного символа отводился один байт, что позволяло кодировать до 255 символов. Стандарт ASCII регламентировал использование кодов первой половины байта (7 бит, коды от 0 до 127): цифры, строчные и заглавные латинские буквы, знаки. Коды второй половины байта (от 128 до 255) использовались для кодирования национальных алфавитов (кодовые страницы). Такая кодировка была проста в использовании, а текст эффективно расходовал ограниченную память. Однако 8-ми битная кодировка имела ряд существенных недостатков - в первую очередь, ограниченный диапазон кодов, поэтому была непригодна для кодирования иероглифов и других языков с большим количеством букв. Также в тексте можно было использовать кроме латинских букв только один национальный алфавит. А для русского языка различными международными организациями и компаниями использовались различные системы кодировок, что создавало определенные неудобства: KOI8-R, ISO 8859-5, CP866, Windows 1251, MacCyrillic.
Стандарт Unicode для кодирования символов взял за основу 16 бит, что позволяет кодировать более 65 тысяч знаков - этого хватило для всех современных и большинства древних языков. Сейчас Unicode использует уже 32 бит, что дает 4 миллиарда значений - этого хватит для различных вариантов начертания символов всех древних языков. Для экономии памяти, чтобы не выделять для каждого символа всегда 4 байта, используется стандарт кодирования символов UTF-8 переменной длинны (от 1 до 4 байт), совместимый с 7-битной кодировкой ASCII и Unicode. В настоящее время большинство типографий и интернет-ресурсов несмотря на развитие Unicode продолжают использовать древние (по компьютерным меркам) нестандартные 8-битные славянские шрифты, несовместимые как между собой, так и со стандартом Unicode.
Первые версии Unicode не учитывали всех особенностей церковно-славянского языка, но позже были добавлены недостающие славянские буквы, а также надстрочные буквы для сокращенной записи слов. В большинстве современных шрифтов отсутствует полный набор старославянских кириллических знаков. Хотя некоторые шрифты и позволяют отображать церковно-славянские тексты, но они малопригодны из-за плохого позиционирования надстрочных знаков над славянскими буквами, различными по высоте и ширине. Для правильного отображения церковно-славянских текстов желательно разрабатывать шрифты со всеми возможными комбинациями букв и надстрочных знаков, но, к сожалению, Unicode не предусматривает отдельного диапазона для таких лигатур, как, например, имеется для древнегреческого языка. Такое упущение Unicode можно компенсировать возможностями OpenType шрифтов, где любые комбинации букв и знаков при отображении текста могут быть автоматически скорректированы или заменены на отдельную лигатуру программой-скриптом внутри шрифта.
Для полноценного набора славянских текстов со множеством букв и надстрочных знаков недостаточно стандартной клавиатуры с русской раскладкой, поэтому для популярных текстовых редакторов были разработаны специальные программы-макросы, которые позволяют относительно легко вводить славянские буквы и корректировать их согласно правилам церковно-славянской грамматики. Но программы-макросы генерируют не буквы, а их коды для последующего отображения с помощью соответствующего шрифта, что приводит к привязке каждой отдельной программы-макроса к конкретному шрифту со специфической кодировкой, что не позволяет использовать программу для набора текста с иным шрифтом с другой кодировкой. Также для передачи или публикации в интернете славянского теста необходимо прилагать используемый шрифт с соответствующей кодировкой, чтобы гарантировать правильность отображения всех славянских букв и знаков.
Уже давно назрела острая необходимость в координации действий всего сообщества разработчиков славянских шрифтов для выработки общих правил и рекомендаций по переходу на использование единой кодировки Unicode. Для старославянского языка с большим разнообразием вариантов начертания букв и сокращения слов в разных рукописях следует объединить усилия для систематизации накопленной информации и внесения дополнений в новые версии Unicode. Для церковно-славянского языка с единообразным начертанием букв и четкими правилами сокращения слов лучшим решением было бы проработать все варианты сочетания букв и надстрочных знаков и выделить для церковно-славянского языка новый отдельный диапазон кодов в Unicode, как это сделано для древнегреческого языка.
Более подробная информация, а также популярные славянские шрифты и макрос для набора славянских текстов доступны на сайте Ірмологїй. Однако представленная на сайте информация за 20 лет заметно устарела и уже не во всем актуальна: 8-ми битные шрифты и кодовые страницы уже в прошлом, появились дополнительные кириллические диапазоны Unicode, современные текстовые редакторы и интернет-браузеры корректно отображают надстрочные знаки и все славянские буквы.
| буквы | название | звук | коды букв | надстрочный вариант |
|---|---|---|---|---|
| А а | а̓́зъ | [а] | 0410 0430 | 2DF6 |
| Б б | бꙋ́ки | [б] | 0411 0431 | 2DE0 |
| В в | вѣ́ди | [в] | 0412 0432 | 2DE1 |
| Г г | глаго́ль | [г] | 0413 0433 | 2DE2 |
| Д д | добро̀ | [д] | 0414 0434 | 2DE3 |
| Е є е | є̓́сть | [э] | 0415 0454 0435 | 2DF7 |
| Ж ж | живѣ́те | [ж] | 0416 0436 | 2DE4 |
| Ѕ ѕ | ѕѣлѡ̀ | [з] | 0405 0455 | |
| З з | землѧ̀ | 0417 0437 | 2DE5 | |
| И и | и̓́же | [и] | 0418 0438 | A675 |
| І і ї | и̓̀ | 0406 0456 0457 | A676 | |
| К к | ка́кѡ | [к] | 041A 043A | 2DE6 |
| Л л | лю́ди | [л] | 041B 043B | 2DE7 |
| М м | мы́слѣте | [м] | 041C 043C | 2DE8 |
| Н н | на́шъ | [н] | 041D 043D | 2DE9 |
| Ѻ ѻ о | ѻ̓́нъ | [о] | 047A 047B 043E | 2DEA |
| Ѡ ѡ | ѡ̓ме́га | 0460 0461 | A67B | |
| Ѽ ѽ | 047C 047D | |||
| Ꙍ ꙍ | A64C A64D | |||
| Ѿ ѿ | ѿ | [от] | 047E 047F | |
| П п | поко́й | [п] | 041F 043F | 2DEB |
| Р р | рцы̀ | [р] | 0420 0440 | 2DEC |
| С с | сло́во | [с] | 0421 0442 | 2DED |
| Т т | тве́рдо | [т] | 0422 0442 | 2DEE |
| Ѹ ѹ | ѹ̓́къ | [у] | 0478 0479 | A677 |
| Ꙋ ꙋ | A64A A64B | 2DF9 | ||
| Ф ф | фе́ртъ | [ф] | 0424 0444 | A69E |
| Х х | хе́ръ | [х] | 0425 0445 | 2DEF |
| Ц ц | цы̀ | [ц] | 0426 0446 | 2DF0 |
| Ч ч | че́рвь | [ч] | 0427 0447 | 2DF1 |
| Ш ш | ша̀ | [ш] | 0428 0448 | 2DF2 |
| Щ щ | ща̀ | [щ] | 0429 0449 | 2DF3 |
| Ъ ъ | є̓́ръ | [-] | 042A 044A | A678 |
| Ы ы | є̓ры̀ | [ъи] | 042B 044B | A679 |
| Ь ь | є̓́рь | [-] | 042C 044C | A67A |
| Ѣ ѣ | ꙗ̓́ть | [е] | 0462 0463 | 2DFA |
| Ю ю | ю̓̀ | [йу] | 042E 044E | 2DFB |
| Ꙗ ꙗ | ꙗ̓̀ | [йа] | A656 A657 | 2DFC |
| Ѧ ѧ | ю̓́съ | 0466 0467 | 2DFD | |
| Ѯ ѯ | ѯѝ | [кс] | 046E 046F | |
| Ѱ ѱ | ѱѝ | [пс] | 0470 0471 | |
| Ѳ ѳ | ѳита̀ | [ф] | 0472 0473 | 2DF4 |
| Ѵ ѵ | ѵ̓́жица | [в] | 0474 0475 | |
| Ѷ ѷ | [и] | 0476 0477 |
| буквы | название | звук | коды букв | надстрочный вариант |
|---|---|---|---|---|
| Ꙉ ꙉ | гервь | [г] | A648 A649 | |
| Ꙁ ꙁ | земля | [з] | A640 A641 | |
| Ү ү | червь | [ч] | ||
| Ꙑ ꙑ | еры | [ъи] | A650 A651 | |
| Ѥ ѥ | йотированная Е | [йе] | 0464 0465 | A69F |
| Ѩ ѩ | юс малый йотированный | [йэ] | 0468 0469 | |
| Ѫ ѫ | юс большой | [о] | 046A 046B | 2DFE |
| Ѭ ѭ | юс большой йотированный | [йо] | 046C 046D | 2DFF |
Примечание: для некоторых букв и надстрочных знаков возможны варианты кодов из разных диапазонов, что является дискуссионным вопросом.
| знак | название | варианты кодов |
|---|---|---|
| а́ | острое ударение | 0301 |
| а̀ | тупое ударение | 0300 |
| а̑ | облеченное ударение | 0311, 0484 |
| а̓ | придыхание | 0313, 0486 |
| а҃ | титло | 0483, A66F |
| а҇ | покрытие | 0303, 0487 |
| а͠а | 0360 | |
| а̾ | паерок | 033E, A67D |
| ӑ | кавыка | 0306, A67C |
Примечание: для надстрочных знаков для заглавных букв с большей высотой нет отдельных кодов, поэтому необходимо предусмотреть для них отдельные лигатуры в шрифте и подстановку в программном коде OpenType.
| знак | название | код |
|---|---|---|
| ҂ | тысяча | 0482 |
| ꙾ | кавыка | A67E |
| ꙳ | звездочка | A673 |
| 🕀 | знаки типикона | 1F540 |
| 🕁 | 1F541 | |
| 🕂 | 1F542 | |
| 🕃 | 1F543 | |
| 🕄 | 1F544 | |
| 🕅 | 1F545 |