Юникод

Эта статья входит в число готовых статей
Материал из «Знание.Вики»
Логотип Консорциума Юникода

Юнико́д (англ. Unicode) — набор правил для кодирования символов, охватывающий знаки почти всех письменных языков планеты[1][2]. В настоящее время этот стандарт доминирует в Интернет-пространстве. Разработан в 1991 году некоммерческим объединением «Консорциум Юникода» (англ. Unicode Consortium, Unicode Inc.)[3][4]. Использование Юникода делает возможным отображение огромного множества символов различных письменных систем: в одном документе могут сосуществовать китайские иероглифы, математические знаки, буквы греческого алфавита, латиницы и кириллицы, музыковедческие нотные символы без необходимости переключения кодовых страниц[5].

Стандарт делится на две важнейшие части: универсальный набор символов (англ. Universal character set, UCS) и семейство кодировок (англ. Unicode transformation format, UTF). Универсальный набор символов определяет все допустимые по Юникоду символы и присваивает каждому уникальный код в виде неотрицательного целого числа, обычно записываемого в шестнадцатеричном формате с префиксом U+, к примеру, U+040F. Семейство кодировок детализирует способы преобразования этих кодов для передачи их в потоке или в файлах.

Символы в Юникоде распределены по различным областям. Область от U+0000 до U+007F охватывает символы набора ASCII, и коды этих символов совпадают с их представлением в ASCII. Ближе к концу находятся области, охватывающие символы других систем письменности, а также технические символы и знаки препинания. Некоторые коды остаются зарезервированными для будущих добавлений[6]. Письменные символы кириллицы распределены по сегментам от U+0400 до U+052F, от U+2DE0 до U+2DFF и от U+A640 до U+A69F (см. Кириллица в Юникоде)[7].

Общие сведения

Название стандарта отражает три главные характеристики, на достижение которых этот стандарт направлен (About the Unicode Consortium):

  • универсальный (англ. universal) — пригодный для использования с различными мировыми языками;
  • единообразный (англ. uniform) — использует коды символов с фиксированной шириной для эффективного доступа;
  • уникальный (англ. unique) — всегда имеется только одна интерпретация последовательности битов, кодирующих символы.

Юникод включает в себя:

  • универсальный набор символов, или UCS (англ. Universal Character Se), — набор всех включённых в стандарт символов. Каждому символу присваивается собственный код, который можно представить в виде неотрицательного целого числа, записанного в шестнадцатеричной системе счисления. Например, кириллическая буква «я» имеет код U+044F. Коды Юникода разделены на несколько областей по 216 (65 536) символов, называемых плоскостями (англ. planes), обладающими разными названиями и включающими символы с разным назначением. Например, базовая многоязыковая плоскость (англ. Basic Multilingual Plane, BMP), являющаяся также нулевой плоскостью, охватывает диапазон от U+0000 до U+FFFF и содержит символы наиболее употребительных письменностей. Считается, что в версии Юникода 15.0 содержится 149 186 символов (Basic Questions), однако данное число не учитывает некоторые символы (например, управляющие символы), которые подсчитаны в более общей статистике (Unicode® Statistics);
  • семейство кодировок UTF (англ. Unicode Transformation Format), отличающихся количеством байтов, необходимых для записи одного символа: UTF-8, UTF-16 и UTF-32. Кодировки UTF представляют собой алгоритмическое отображение каждой кодовой позиции (за исключением суррогатных кодов от U+D800 до U+DFFF) в уникальную байтовую последовательность (UTF-8, UTF-16, UTF-32 & BOM). Для четырёхбайтовых кодировок имеются разновидности, отличающиеся порядком записи байтов (англ. little-endian или big-endian): UTF-16LE и UTF-16BE, UTF-32LE и UTF-32BE[8].

История

Unicode — универсальный набор кодов для всех символов, вне зависимости от платформы, программы или языка.Консорциум Юникода[9]

К концу 80-х годов XX века возникло множество различных 8-битных кодировок, и их количество продолжало расти. Это было связано как с расширением спектра поддерживаемых языков, так и с желанием создавать кодировки, частично совместимые между собой (характерный пример — появление альтернативной кодировки для русского языка, вызванное использованием западных программ, созданных под кодировку CP437). Это привело к нескольким серьёзным проблемам:

  1. некорректная декодировка символов;
  2. ограниченность набора доступных символов;
  3. сложности при конвертации одной кодировки в другую;
  4. необходимость в дублировании шрифтов.

Некорректная декодировка символов приводила к появлению в документах символов других языков, которые не должны были там быть, или появлению неподходящих псевдографических символов, прозванных русскоязычными пользователями «кракозябрами». В основном это происходило из-за отсутствия стандартизированного способа указания кодировки для файла или потока. Решение видели либо в последовательном внедрении стандарта указания кодировки, либо в использовании универсальной кодировки для всех языков[5].

Ограниченность набора символов. Здесь возможны два варианта решения: либо использование переключения шрифтов в пределах одного документа, либо создание кодировки с расширенным набором символов. Переключение шрифтов давно применялось в текстовых процессорах, причем были популярны шрифты с нестандартной кодировкой, так называемые «dingbat fonts». Как результат, при переносе документа на другую систему эти нестандартные символы превращались в «кракозябры»[5].

Проблема преобразования. Перекодировка между различными кодировками. Сложность конверсии можно было устранить либо созданием конкретных таблиц для каждой пары вариантов кодировки, либо использование промежуточного кодирования, которое включало бы все символы из всех существующих кодировок[10].

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

Наконец, была признана нужда в унифицированной и всеобъемлющей кодировке. Кодировки с переменной длиной символа, что были широко распространены в Восточной Азии, оказались слишком сложными, поэтому решили использовать символы фиксированной ширины. Тогда использование 32-битных символов показалось чрезмерно расточительным, и выбор пал на 16-битные символы.

Первая спецификация Юникода предложила фиксированную 16-битную кодировку, обеспечивающую 216 (65 536) различных кодов. В Юникоде символы теперь обозначали с помощью четырёх шестнадцатеричных цифр (например, U+04F0). Первоначально предполагалось кодировать только символы, необходимые для общего использования, тогда как редко используемые символы должны были занимать кодовые позиции в так называемой «области пользовательских символов» (private use area), первоначально охватывающей коды U+D800…U+F8FF. Для удовлетворения необходимости в преобразовании различных кодировок через Юникод в него были включены все символы из наиболее популярных кодировок.

Со временем было решено взять курс на более амбициозное стремление — кодировать абсолютно все символы. Это привело к значительному расширению кодовой области.ь. В то же время, коды символов перестали восприниматься как 16-битные значения, а приобрели статус абстрактных чисел, способных к различным представлениям внутри компьютера (см. способы представления).

Поскольку в некоторых компьютерных системах, таких как Windows NT[11], фиксированные 16-битные символы уже использовались в качестве стандартного формата кодировки, было решено все основные символы вписывать в первые 65 536 позиций (так называемая англ. Basic Multilingual Plane, BMP). Остальные позиции стали предназначаться для «дополнительных символов» (англ. supplementary characters): знаков древних писем, редко используемых китайских иероглифов, а также математических и музыкальных символов.

Для совместимости с прежними 16-битными системами была разработана схема UTF-16, в рамках которой первые 65 536 кодов, за исключением диапазона U+D800…U+DFFF, представляются непосредственно как 16-битные значения, а остальные символы кодируются с помощью «суррогатных пар» (первое значение из диапазона U+D800. U+DBFF, второе — из U+DC00…U+DFFF). Эта схема использует часть кодового пространства (2048 позиций), зарезервированного для приватного использования.

Так как в UTF-16 можно представить только 220+216−2048 (1 112 064) символов, этот объём и был принят как окончательный размер кодового пространства Юникода (диапазон кодов: 0x000000-0x10FFFF). Хотя область кодировки Юникода была расширена за пределы 216 уже в версии 2.0, первые символы появились в этой «верхней» области лишь в версии 3.1. Влияние данной кодировки в веб-пространстве существенно увеличивается. На начало 2010 года, Юникод использовался примерно на 50 % веб-сайтов[12].

Версии Юникода

Работа над улучшением стандарта продолжается. С каждым обновлением таблицы символов добавляются и изменяются. Параллельно с этим продолжается выпуск новых документов в рамках ISO/IEC 10646.

Первоначальная версия стандарта была представлена в 1991 году, а своей последней редакцией на сегодняшний день является 15.1.0. Версии 1.0—5.0 были опубликованы как книги и снабжены ISBN[13][14]. Нумерация версий стандарта состоит из трех чисел (к примеру, 3.1.1). Последняя цифра меняется при внесении незначительных корректировок в стандарт, при этом новые символы не добавляются (исключением является версия 1.0.1, в которую были включены унифицированные идеограммы китайского, японского и корейского письма)[15]. База символов Юникода (Unicode Character Database) доступна для всех изданий на официальном веб-ресурсе как в виде обычного текста, так и в формате XML. Эти файлы предлагаются по BSD-подобной лицензии.

Версии Юникода
Номер версии Дата публикации ISBN книги Издание ISO/IEC 10646 Количество пись­мен­но­стей[A 1] Количество символов[A 2] Изменения
1.0.0[16] Октябрь 1991 ISBN 0-201-56788-1 (Vol.1) 23 7161 Изначально Юникод содержал символы следующих письменностей: арабское письмо, армянское письмо, бенгальское письмо, чжуиньское письмо, кириллица, деванагари, грузинское письмо, греческое и коптское письмо, гуджарати, гурмукхи, хангыль, еврейское письмо, хирагана, каннада, катакана, лаосское письмо, латиница, малаялам, ория, тамильское письмо, телугу, тайское письмо и тибетское письмо[17]
1.0.1 Июнь 1992 ISBN 0-201-60845-6 (Vol.2) 24 28 359 Добавлены 20 902 унифицированные идеограммы китайского, японского и корейского письма[18]
1.1[19] Июнь 1993 ISO/IEC 10646-1:1993 23 34 233 Добавлено 4306 слогов хангыля, дополнивших уже имеющиеся в кодировке 2350 символов. Удалены символы тибетского письма[20]
2.0[21] Июль 1996 ISBN 0-201-48345-9 ISO/IEC 10646-1:1993 и Amendments 5, 6, 7 24 38 950 Удалены добавленные ранее слоги хангыля, и добавлены 11 172 новых слога хангыля с новыми кодами. Возвращены удалённые ранее символы тибетского письма; символы получили новые коды и были размещены в разных таблицах. Введён механизм суррогатных (англ. surrogate) символов. Выделено место для плоскостей (англ. planes) 15 и 16[22]
2.1[23] Май 1998 ISO/IEC 10646-1:1993, Amendments 5, 6, 7, два символа из Amendment 18 24 38 952 Добавлены символ евро и заменяющий символ[24]
3.0[25] Сентябрь 1999 ISBN 0-201-61633-5 ISO/IEC 10646-1:2000 37 49 259 Добавлены письмо чероки, эфиопское письмо, кхмерское письмо, монгольские письменности, бирманское письмо, огамическое письмо, руны, сингальское письмо, сирийское письмо, тана, канадское слоговое письмо и письмо и, а также символы шрифта Брайля[26]
3.1[27] Март 2001 ISO/IEC 10646-1:2000

ISO/IEC 10646-2:2001

40 94 205 Добавлены дезеретское письмо, готское письмо и древнеиталийское письмо[en], а также символы западной и византийской музыки, 42 711 унифицированных идеограмм китайского, японского и корейского письма. Выделено место для плоскостей 1, 2 и 14[28]
3.2[29] Март 2002 ISO/IEC 10646-1:2000 и Amendment 1

ISO/IEC 10646-2:2001

44 95 221 Добавлены письмо бухид, хануноо[en], байбайин и письмо тагбанва[30]
4.0[31] Апрель 2003 ISBN 0-321-18578-1 ISO/IEC 10646:2003 51 96 447 Добавлены кипрское письмо, письмо лимбу, линейное письмо Б, сомалийское письмо, алфавит шоу, письмо лы и угаритское письмо, а также символы гексаграмм[32]
4.1[33] Март 2005 ISO/IEC 10646:2003 и Amendment 1 59 97 720 Добавлены письмо лонтара, глаголица, письмо кхароштхи, новое письмо лы, древнеперсидская клинопись, силхетское нагари и древнеливийское письмо. Символы коптского письма были отделены от символов греческого письма. Также добавлены символы старых греческих цифр, музыкальные символы Древней Греции и символ гривны (валюты Украины)[34]
5.0[35] Июль 2006 ISBN 0-321-48091-0 ISO/IEC 10646:2003, Amendments 1, 2, четыре символа из Amendment 3 64 99 089 Добавлены балийское письмо, клинопись, письмо нко, монгольское квадратное письмо и финикийское письмо[36]
5.1[37] Апрель 2008 ISO/IEC 10646:2003 и Amendments 1, 2, 3, 4 75 100 713 Добавлены карийское письмо, чамская письменность, письмо кая-ли, письмо лепча, ликийское письмо, лидийское письмо, письмо ол-чики, реджангское письмо, письмо саураштра, сунданское письмо, древнетюркское письмо и письмо ваи. Добавлены символы фестского диска, символы костей для маджонга и домино, заглавная буква эсцет (ẞ), а также буквы латиницы, использовавшиеся в средневековых рукописях для аббревиации[en]. Новыми символами дополнен набор символов бирманского письма[38]
5.2[39] Октябрь 2009 ISO/IEC 10646:2003 и Amendments 1, 2, 3, 4, 5, 6 90 107 361 Добавлены авестийское письмо, письмо бамум, египетское иероглифическое письмо (по списку Гардинера[en], содержащему 1071 символ), имперское арамейское письмо, пахлевийское эпиграфическое письмо[en], парфянское эпиграфическое письмо[en], яванское письмо, письмо кайтхи, письмо лису, письмо манипури, южноаравийское письмо, древнетюркское письмо, самаритянское письмо, письмо ланна и письмо тай-вьет[en]. Добавлены 4149 новых унифицированных идеограмм китайского, японского и корейского письма[en] (CJK-C), символы ведийского письма, символ тенге (валюты Казахстана), а также расширен набор символов чамо старого хангыля[40]
6.0[41] Октябрь 2010 ISO/IEC 10646:2010 и символ индийской рупии 93 109 449 Добавлены батакское письмо, письмо брахми, мандейское письмо. Добавлены символы игральных карт, дорожных знаков, географических карт, алхимии, эмотикона и эмодзи, а также 222 унифицированные идеограммы китайского, японского и корейского письма[en] (CJK-D)[42]
6.1[43] Январь 2012 ISO/IEC 10646:2012 100 110 181 Добавлены письмо чакма, мероитский курсив и мероитские иероглифы, письмо мяо, письмо шарада, письмо соранг-сомпенг[en] и письмо такри[44]
6.2[45] Сентябрь 2012 ISO/IEC 10646:2012 и символ турецкой лиры 100 110 182 Добавлен символ турецкой лиры (валюты Турции)[46]
6.3[47] Сентябрь 2013 ISO/IEC 10646:2012 и шесть символов 100 110 187 Добавлено пять символов для форматирования двунаправленного текста[48]
7.0[49] 16 июня 2014 ISO/IEC 10646:2012, Amendments 1, 2 и символ рубля 123 113 021 Добавлены письмо басса, агванское письмо, стенография Дюплойе, эльбасанское письмо, письмо грантха, письмо ходжики[en], письменность худавади[en], линейное письмо А, письмо махаджани[en], манихейское письмо, письмо кикакуи, письмо моди, письмо мро[en], набатейское письмо, северноаравийское письмо, древнепермское письмо, письмо пахау, пальмирское письмо, письмо по чин хо[en], письмо псалтирь пехлеви[en], сиддхаматрика, письмо тирхута, варанг-кшити и орнамент дингбат[en], а также символ российского рубля и символ азербайджанского маната[50]
8.0[51] 17 июня 2015 ISO/IEC 10646:2014, Amendment 1, символ лари, 9 уни­фи­ци­ро­ван­ных идеограмм ККЯ, 41 эмодзи 129 120 737 Добавлены письмо ахом, анатолийские иероглифы, письмо хатран, письмо мултани, венгерские руны, SignWriting, 5776 Унифицированные идеограммы ККЯ — расширение E, строчные буквы письма чероки, буквы латиницы для немецкой диалектологии, 41 эмодзи, а также пять символов изменения цвета кожи для эмотиконов. Добавлен символ лари (валюты Грузии)[52]
9.0[53] 21 июня 2016 ISO/IEC 10646:2014, Amendments 1, 2, адлам, нева, японские символы для ТВ, 74 эмодзи и символов 135 128 237 Добавлены письмо адлам, письмо бхайкшуки, письмо марчен, письмо нева, письмо осейдж, тангутское письмо, а также 72 эмодзи и японские символы для телевидения[54]
10.0[55] 20 июня 2017 ISO/IEC 10646:2017, 56 эмодзи, 285 символов хэнтайганы, 3 символа квадратного письма Дзанабадзара 139 136 755 Добавлены квадратное письмо Дзанабадзара, письмо соёмбо, гонди Масарама, письмо нюй-шу, письмо хэнтайгана, 7494 Унифицированные идеограммы ККЯ — расширение F, а также 56 эмодзи и символ биткойна[56]
11.0 Июнь 2018 ISO/IEC 10646:2017 146 137 439 Добавлены догра, грузинское письмо мтаврули, гунджалское гонди, ханифи, индийские цифры сийяк, макасарское письмо, медефайдрин, (древне-)согдийское письмо, цифры майя, 5 идеограмм ККЯ, символы сянци и половин звёздочек для оценки, а также 145 эмодзи, четыре символа изменения причёски для эмотиконов и символ копилефта[57]
12.0 Март 2019 ISO/IEC 10646:2017, Amendments 1, 2, а также 62 допол­ни­тель­ных символов 150 137 993 Добавлены элимайское письмо, надинагари[en], хмонг, ванчо, дополнения для письма Полларда, малая кана для старых японских текстов, исторические дроби и символы тамильского письма, буквы лаосского письма для пали, буквы латиницы для транслитерации угаритского, управляющие символы форматирования египетских иероглифов, а также 61 эмодзи[58][59]
12.1 Май 2019 150 137 994 Добавлен квадратный символ эпохи рэйва[60]
13.0 Март 2020 154 143 924 Добавлены хорезмийское письмо, письмо дивес акуру, малое киданьское письмо, езидское письмо, 4969 идеограмм ККЯ (включая 4939 Унифицированные идеограммы ККЯ — расширение G), а также 55 эмодзи, символы Creative Commons и символы для унаследованной вычислительной техники. Выделено место для плоскости 3[61][62]


14.0 Сентябрь 2021 159 144 762 Добавлены письмо тото, кипро-минойское письмо, виткутьское письмо, староуйгурское письмо, тангса, дополнительные буквы латиницы (блоки Расширенная латиница — F, Расширенная латиница — G) для использования в расширениях для МФА, добавление арабского письма для использования в языках Африки, Ирана, Пакистана, Малайзии, Индонезии, Явы и Боснии, а также дополнения для использования в Коране, другие дополнения для поддержки языков Северной Америки, Филиппин, Индии и Монголии, добавление символа сома, нотописи знаменного пения и 37 эмодзи.
15.0 Сентябрь 2022 161 149 251 Добавлены алфавит Нага для языка мундари (≈1950), кави (старояванский), кактовикские цифры, символы кириллицы для записи транскрипции, латинские буквы для записи языка малаялам, 3 лигатуры из турецкого Корана, 1 египетский иероглиф, символы для передачи затёртых египетских иероглифов, символы из джайнизма, звезда бахаизма, символы пяти транснептуновых объектов и 31 эмодзи (включая цвета кожи).
15.1 12 сентября 2023 161 149 878 Добавлены 897 иероглифов китайских имён, которые китайцы хотели расположить на плоскости 0A; 622 из них опознаны как новые. Также 5 символов структуры китайских иероглифов, 10 разных ZWJ-последовательностей эмодзи и 18 последовательностей, изображающих людей, которые смотрят вправо (исключая цвета кожи).
16.0 10 сентября 2024 168 155 063 Добавлены почти 4000 египетских иероглифов, более 600 символов со старых компьютеров, новые письменности тулу[A 3], албанский Тодри, гарай (Сенегал), сунвар Джентича[A 4], гурунг, кират, и ол-онал. 6 латинских символов для записи африканских и индейских языков, кириллическая буква ТЬ для ханты, арабские буквы из пегона и ливийского Корана, два комплекта бирманских цифр, две черты ККЯ, нукта из языка кави, египтологические стрелки. И всего 8 эмодзи, включая автоматически добавившийся остров Сарк (CQ).
Примечания
  1. Включая единственный код (шрифт Брайля), единственную стенографическую систему (стенография Дюплойе), а также катакану, хирагану, жестовое письмо Саттон, исключая хэнтайгану (считается хираганой), два альтернативных грузинских алфавита (считаются грузинским), а также другие нетекстовые: четыре вида нот, черчение, математические знаки. Унифицированные системы (китайские и японские иероглифы; арабский, урду/шахмукхи, пегон и волофал…) считаются за одну; греческий и коптский до версии 4.1, когда их разунифицировали,— тоже. При дальнейшем обновлении данных: файл PropertyValueAliases.txt, раздел «sc», количество строк в этом разделе минус три (последние три — технические).
  2. Включая печатаемые (англ. graphic), управляющие (англ. control) и форматирующие (англ. format) символы; не включая личные символы (англ. private-use), несимвольные позиции (англ. noncharacters), половины суррогатных пар (англ. surrogate code points), неофициально занятые (U+1D548 ажурное ℚ при официальном U+211A — используется, чтобы гарантированно набрать слово одним шрифтом; U+11C09 бхайкшуки начальное слоговое LL — в санскрите буква есть, но не найдена в источниках именно письмом бхайкшуки). Пресс-релизы Юникода дают цифру на 65 меньше — не учитывают управляющие (00…1F, 7F…9F). Стоит признать, что категория этих символов поначалу несколько раз менялась. При дальнейшем обновлении данных: количество заявленных символов + 65.
  3. Древний тулу и близкую к нему систему письменности тигалари: от современного тулу отказались как из-за неустоявшейся системы (унифицируемой с малаяламом), так и из-за разного подхода к древнему и современному письму.
  4. Не путать с брахмийской абугидой тикамули, появившейся позже.

Кодовое пространство

Несмотря на то, что с помощью кодировки UTF-8 можно записать до 221 (2 097 152) различных кодовых позиций, было принято решение ограничиться 1 112 064 для обеспечения совместимости с UTF-16. Однако, и это число значительно превышает текущие потребности — в версии 15.1 задействовано лишь 149 878 кодовых позиций.

Кодовое пространство Unicode подразделяется на 17 плоскостей (англ. planes) по 216 (65 536) символов в каждой. Нулевая плоскость (plane 0), известная как Базовая Многоязычная Плоскость (Basic Multilingual Plane), включает символы наиболее часто используемых письменностей. Все другие плоскости считаются дополнительными (supplementary). Первая плоскость (plane 1) в основном хранит символы исторических письменностей, вторая (plane 2) отведена для редко используемых иероглифов китайского, японского и корейского письма (CJK), а третья (plane 3) зарезервирована для древних китайских иероглифов[63]. Плоскость 14 предназначена для символов, которые имеют специальное назначение. Плоскости 15 и 16 задействованы для личного использования[6].

Для представления символов в системе Unicode применяется формат записи «U+xxxx» (для кодов от 0 до FFFF), а также «U+xxxxx» (для кодов от 10000 до FFFFF) или «U+xxxxxx» (для кодов от 100000 до 10FFFF), где xxx — это шестнадцатеричные цифры. К примеру, код символа «я» равен 044F (U+044F)16 = 110310 в десятичной системе.

Система кодирования

Универсальный кодировочный стандарт (Юникод) представляет собой коллекцию графических символов и соответствующий им способ кодирования для обработки текстовой информации на компьютере.

Под графическими или печатаемыми символами понимаются символы, обладающие видимым отображением. Для графических символов противоположны управляющие и форматирующие символы.

Графические символы включают в себя следующие категории:

  • буквы, присутствующие хотя бы в одном из поддерживаемых алфавитов;
  • цифры;
  • знаки препинания;
  • специальные символы (математические, технические, идеограммы и другие);
  • разделители;
  • диакритические знаки, включая невидимые.

Юникод представляет собой систему линейного кодирования текста. Символы, содержащие дополнительные надстрочные или подстрочные элементы, могут быть закодированы как последовательность кодов по определённым правилам (композитный вариант, composite character) или как единый символ (предварительно составленная форма, precomposed character). С 2014 года считается, что все буквы основных письменностей внесены в Юникод, и если символ доступен в композитном варианте, дублировать его в монолитной форме не требуется.

Общие принципы

Гарантии стабильности
Как только символ добавлен в кодировку, его порядок останется неизменным, и он не будет удалён. Следовательно, каждая новая версия Юникода будет включать все символы предыдущих версий. Если символ признан нежелательным, его использование запрещается. Если требуется изменить порядок символов, делается это через национальные методы сортировки, а не изменением их позиций. Существует также ряд других тонких гарантий стабильности, таких как неизменность таблиц нормализации[64]; Динамическая сборка : Чтобы достигнуть универсальности, Юникод применяет метод динамической компоновки текста. Иногда создаются монолитные символы для удобства, но в основном используется гибкий подход: A + ¨ = Ä.
Логичная последовательность
Символы размещаются примерно в порядке чтения, даже в двунаправленных текстах. Например, арабский текст читается справа налево, а встречающие его европейские цифры — слева направо. Дополнительные знаки, такие как умляуты, находятся после основного символа. Исключения касаются визуального порядка, как в случае с лаосским письмом.
Преобразуемость
Если в важной кодировке один символ представлен двумя разными позициями, Юникод следуе этому же принципу. Преобразование может быть не 1:1, и один символ из другой кодировки может трансформироваться в несколько символов Юникода, и наоборот.
Облачный текст
Юникод кодирует текст без форматирования. Основная идея — хранить достаточно данных, чтобы текст можно было понять при отображении, без дополнительных украшений.
Семантика
Характеристики символов задаются строго, используя форматы CSV и XML.
Символы и глифы
Символы представляют собой единицы смысловой информации. Глифы — это изображения, создаваемые шрифтами для вывода на экран или печать.
Например, шрифт в арабском стиле настали́к включает тысячи глифов, тогда как около 200 символов представляют стандартные элементы арабского языка. И наоборот, разные символы могут иметь идентичный глиф, как это показано в концепции «Унификации».
Нарушение этого правила может быть связано как с историческими особенностями (например, σ≠ς), так и с шрифтовыми сложностями (Ţ≠Ț, последние применяются в молдавском и румынском языках).
Универсальность
Юникод создан для различных пользователей — бизнесменов, учёных, специалистов в области религии и образования, а также для обработки как современных, так и исторических текстов.
Вне рамок Юникода остаются:
  • системы письма, о которых известно недостаточно, а также…; Неполное покрытие : В области Юникода остаются некоторые пробелы:
  • письмена, которые не имеют устоявшихся стандартов среди своих пользователей;
  • системы письма, для которых нет достаточной информации;
  • знаковые (например, пиктографические) скрипты.
Унификация
Юникод стремится избегать избыточных символов. К примеру, буквы «Y» в английском, французском и немецком языках обозначены одной и той же кодовой позицией Y. Аналогично, схожие китайские и японские иероглифы используют одну кодовую позицию.
Тем не менее, есть значимые исключения. Символы из разных письменностей, которые выглядят схоже, получают разные кодовые позиции. Иногда дублирование позиций необходимо для удобства обработки. Например, в Юникоде существует три различных вариации буквы Ð, каждая со своей строчной формой. Штрих математический и штрих, обозначающий мягкость звука — два разных символа, причем последний классифицируется как буква-модификатор. Бывают случаи, когда принцип преобразуемости вступает в конфликт с унификацией — строчная греческая сигма имеет две отдельных формы, каждая на своей кодовой позиции.
Эффективность
Организация Юникода позволяет обеспечить эффективность реализации. Коды символов представляют собой последовательные числа от 0 до 10FFFF16, что упрощает использование таблиц поиска. В UTF-8 и UTF-16 предусмотрен механизм самосинхронизации, а наиболее важные символы можно использовать без предварительной раскодировки. Юникод избегает включения форматирующих символов, которые могли бы изменять внутренние состояния.

Политика консорциума

Консорциум не вносит изменения, а отражает существующую ситуацию[65]. Например, изображения «эмодзи» были включены из-за их обширного применения фирмами японской мобильной связи. Для этого потребовалось пройти сложный процесс добавления символов. В частности, символ российского рубля прошёл процедуру за три месяца после того, как был официально признан, хотя он использовался долгие годы и его регулярно отклоняли для включения в Юникод.

Товарные знаки в Юникод попадают исключительно в особых случаях. Так, в Юникоде отсутствуют флаг Windows или логотип Apple.

Эмодзи не включаются в Юникод, если[66]:

  • Комбинации существующих символов позволяют передать смысл: например, «мыть руки» можно представить как «вода» + «руки». Часто изображают Обыкновенную белку картинкой бурундука.
  • Специфичность термина: в изображении японского блюда суши, например, суши с креветкой, не следует требовать остальных видов суши.
  • Опасность в потоке новых добавлений.
  • Текст на изображении. Консорциум прекратил добавление таких эмодзи.
  • Временность изображения (например, вирус COVID-19). Некоторые компании используют изображение вируса вместо эмодзи «микроорганизм».
  • Нужда в кодировании конкретного изображения (например, интернет-мем).
  • Направленные вариации: начав с Unicode 15.1, их постепенно включают.

Комбинирующие метки

Представление символа «Й» (U+0419) в виде базового символа «И» (U+0418) и комбинирующей метки « ̆» (U+0306).

Символы, используемые в Юникоде, делятся на основные (англ. base characters) и комбинированные (англ. combining marks). Комбинированные метки обычно расположены после основных символов, изменяя их внешний вид специфическим образом. Среди них — диакритические знаки, акцентные знаки. Например, русская буква «Й» может быть представлена в Юникоде с помощью основного символа «И» (U+0418) и комбинированной метки « ̆» (U+0306), визуально добавляющейся сверху.

Комбинированные символы в таблицах Юникода особым образом классифицируются:

  • Nonspacing Mark — непротяжённая метка; она обычно располагается сверху или снизу базового символа, редко изменяя кегельную площадку (например, ï);
  • Enclosing Mark — охватывающая метка; окружает символ со всех сторон, расширяя его кегельную площадку;
  • Spacing Mark — протяжённая метка; представляющая собой глиф перед или после основного символа, обладающий своей собственной кегельной площадкой.

Селекторы варианта начертания (англ. variation selectors) представляют собой отдельный вид комбинируемых символов. Эти селекторы применяются исключительно к тем базовым символам, у которых предопределены различные варианты начертания. В частности, в версии Юникода 5.0 подобные варианты предусмотрены для некоторых математических символов, символов традиционной монгольской письменности и символов монгольского квадратного письма.

См. также

Примечания

  1. Unicode Transcriptions (англ.) (недоступная ссылка). Consortium. Дата обращения: 18 октября 2024. Архивировано 8 апреля 2006 года.
  2. The Unicode® Standard: A Technical Introduction. The Unicode Standard. Дата обращения: 18 октября 2024. Архивировано 10 марта 2010 года.
  3. History of Unicode Release and Publication Dates (недоступная ссылка). The Unicode Standard. Дата обращения: 18 октября 2024. Архивировано 10 января 2010 года.
  4. The Unicode Consortium (недоступная ссылка). The Unicode Standard. Дата обращения: 18 октября 2024. Архивировано 27 июня 2010 года.
  5. 5,0 5,1 5,2 Foreword. The Unicode Standard. Дата обращения: 18 октября 2024. Архивировано 27 июня 2010 года.
  6. 6,0 6,1 General Structure (недоступная ссылка). unicode.org. Дата обращения: unicode.org. Архивировано 27 июня 2010 года.
  7. European Alphabetic Scripts. unicode.org. Дата обращения: 18 октября 2024. Архивировано 27 июня 2010 года.
  8. Юникод. Большая российская энциклопедия. Дата обращения: 18 октября 2024.
  9. Что такое Unicode?. Дата обращения: 18 октября 2024. Архивировано 13 февраля 2006 года.
  10. Unicode 88 (недоступная ссылка). unicode.org. Дата обращения: 18 октября 2024. Архивировано 6 сентября 2017 года.
  11. Unicode and Microsoft Windows NT (англ.) (недоступная ссылка). Microsoft Support. Дата обращения: 18 октября 2024. Архивировано 26 сентября 2009 года.
  12. Unicode используется почти на 50% веб-сайтов. w3pro.ru. Дата обращения: 18 октября 2024. Архивировано 11 июня 2010 года.
  13. History of Unicode Release and Publication Dates. Дата обращения: 18 октября 2024. Архивировано 10 января 2010 года.
  14. Enumerated Versions. unicode.org. Дата обращения: 18 октября 2018. Архивировано 25 декабря 2018 года.
  15. About Versions. unicode.org. Дата обращения: 18 октября 2024. Архивировано 16 июля 2017 года.
  16. Unicode® 1.0 (англ.). Unicode Consortium[en]. unicode.org. Дата обращения: 18 октября 2024. Архивировано 13 декабря 2017 года.
  17. Unicode Data 1.0.0 (англ.). unicode.org. Дата обращения: 18 октября 2024. Архивировано 30 июня 2012 года.
  18. Unicode Data 1.0.1 (англ.). Дата обращения: 18 октября 2024. Архивировано 21 марта 2022 года.
  19. Unicode® 1.1 (англ.). Unicode Consortium[en]. unicode.org. Дата обращения: 18 октября 2024. Архивировано 13 декабря 2017 года.
  20. Unicode Data 1995 (англ.). Дата обращения: 18 октября 2024. Архивировано 21 марта 2022 года.
  21. Unicode 2.0.0 (англ.). Unicode Consortium[en]. unicode.org. Дата обращения: 18 октября 2024. Архивировано 8 июля 2017 года.
  22. Unicode Data 2.0.14 (англ.). Дата обращения: 18 октября 2024. Архивировано 21 марта 2022 года.
  23. Unicode 2.1.0 (англ.). Unicode Consortium. Дата обращения: 18 октября 2024. Архивировано 2 января 2015 года.
  24. Unicode Data 2.1.2 (англ.). Дата обращения: 18 октября 2024. Архивировано 21 марта 2022 года.
  25. Unicode 3.0.0 (англ.). Unicode Consortium[en]. Дата обращения: 18 октября 2024. Архивировано 7 июля 2017 года.
  26. Unicode Data 3.0.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 21 марта 2022 года.
  27. Unicode 3.1.0 (англ.). Unicode Consortium[en]. Дата обращения: 8 декабря 2017. Архивировано 7 июля 2017 года.
  28. Unicode Data 3.1.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 21 марта 2022 года.
  29. Unicode 3.2.0 (англ.). Unicode Consortium[en]. Дата обращения: 18 октября 2024. Архивировано 14 июля 2017 года.
  30. Unicode Data 3.2.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 21 марта 2022 года.
  31. Unicode 4.0.0 (англ.). Unicode Consortium[en]. Дата обращения: 8 декабря 2017. Архивировано 14 июля 2017 года.
  32. Unicode Data 4.0.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 21 марта 2022 года.
  33. Unicode 4.1.0 (англ.). Unicode Consortium[en]. Дата обращения: 18 октября 2024. Архивировано 25 мая 2021 года.
  34. Unicode Data 4.1.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 21 марта 2022 года.
  35. Unicode 5.0.0 (англ.). Unicode Consortium[en] (14 июля 2006). Дата обращения: 18 октября 2024. Архивировано 10 июня 2008 года.
  36. Unicode Data 5.0.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 21 марта 2022 года.
  37. Unicode 5.1.0 (англ.). Unicode Consortium[en] (4 апреля 2008). Дата обращения: 18 октября 2024. Архивировано 10 апреля 2010 года.
  38. Unicode Data 5.1.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 19 апреля 2022 года.
  39. Unicode® 5.2.0 (англ.). Unicode Consortium[en] (1 октября 2009). Дата обращения: 8 декабря 2017. Архивировано 8 ноября 2017 года.
  40. Unicode Data 5.2.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 21 марта 2022 года.
  41. Unicode® 6.0.0 (англ.). Unicode Consortium[en] (11 октября 2010). Дата обращения: 18 октября 2024. Архивировано 8 февраля 2013 года.
  42. Unicode Data 6.0.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 21 марта 2022 года.
  43. Unicode® 6.1.0 (англ.). Unicode Consortium[en] (31 января 2012). Дата обращения: 18 октября 2024. Архивировано 15 июля 2017 года.
  44. Unicode Data 6.1.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 26 марта 2022 года.
  45. Unicode® 6.2.0 (англ.). Unicode Consortium[en] (26 сентября 2012). Дата обращения: 18 октября 2024. Архивировано 12 февраля 2019 года.
  46. Unicode Data 6.2.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 26 марта 2022 года.
  47. Unicode® 6.3.0 (англ.). Unicode Consortium[en] (30 сентября 2012). Дата обращения: 7 декабря 2017. Архивировано 15 июля 2017 года.
  48. Unicode Data 6.3.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 7 апреля 2022 года.
  49. Unicode® 7.0.0 (англ.). Unicode Consortium[en] (16 июня 2014). Дата обращения: 18 октября 2024. Архивировано 15 апреля 2019 года.
  50. Unicode Data 7.0.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 7 апреля 2022 года.
  51. Unicode® 8.0.0 (англ.). Unicode Consortium[en] (17 июня 2015). Дата обращения: 18 октября 2024. Архивировано 28 июня 2016 года.
  52. Unicode Data 8.0.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 24 марта 2021 года.
  53. Unicode® 9.0.0 (англ.). Unicode Consortium[en] (21 июня 2016). Дата обращения: 8 декабря 2017. Архивировано 28 февраля 2020 года.
  54. Unicode Data 9.0.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 7 апреля 2022 года.
  55. Unicode® 10.0.0 (англ.). Unicode Consortium[en] (27 июня 2017). Дата обращения: 18 октября 2024. Архивировано 20 июня 2017 года.
  56. Unicode Data 10.0.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 21 ноября 2021 года.
  57. Unicode Data 11.0.0 (англ.). Дата обращения: 18 октября 2024. Архивировано 8 апреля 2022 года.
  58. The Unicode Blog: Announcing The Unicode® Standard, Version 12.0. Дата обращения: 18 октября 2024. Архивировано 3 июня 2019 года.
  59. Unicode 12.0.0. Дата обращения: 18 октября 2024. Архивировано 30 марта 2021 года.
  60. The Unicode Blog: Unicode Version 12.1 released in support of the Reiwa Era. Дата обращения: 18 октября 2024. Архивировано 7 мая 2019 года.
  61. The Unicode Blog: Announcing The Unicode Standard, Version 13.0. Дата обращения: 18 октября 2024. Архивировано 26 апреля 2022 года.
  62. Unicode 13.0.0. Дата обращения: 18 октября 2024. Архивировано 30 марта 2021 года.
  63. Roadmap to the TIP (Tertiary Ideographic Plane). unicode.org. Дата обращения: 18 октября 2024. Архивировано 29 февраля 2020 года.
  64. Unicode Character Encoding Stability Policy. unicode.org. Дата обращения: 18 октября 2024. Архивировано 15 августа 2012 года.
  65. FAQ — Emoji & Dingbats. unicode.org. Дата обращения: 18 октября 2024. Архивировано 29 апреля 2014 года.
  66. Guidelines for Submitting Unicode® Emoji Proposals. unicode.org. Дата обращения: 18 октября 2024. Архивировано 6 июня 2021 года.

Ссылки