Уницоде

Из Википедије, слободне енциклопедије
Иди на навигацију Иди на претрагу
Лого конзорцијума Уницоде

Уникод [1] (најчешће) или Уникод [2] ( енглески Уницоде ) је стандард за кодирање знакова који обухвата знакове скоро свих писаних језика света[3] . Стандард је тренутно преовлађујући стандард на Интернету .

Стандард је 1991. предложио непрофитну организацију „Уницоде Цонсортиум“ ( енгл. Тхе Уницоде Цонсортиум, тхе Уницоде Инц.) [4] [5] . Употреба овог стандарда омогућава кодирање веома великог броја знакова из различитих система писања: у документима кодираним према стандарду Уницоде, кинески знакови , математички симболи, слова грчког алфабета , латиница и ћирилица , симболи музичких нотација постаје непотребна, па стога постаје непотребно мењати кодне странице [6] .

Стандард се састоји од два главна дела: универзалног скупа знакова ( енг. Универсал цхарацтер сет, УЦС) и породице кодирања ( енг. Тхе Уницоде трансформатион тхе формат, тхе УТФ). Универзални скуп знакова наводи знакове које дозвољава Уницоде стандард и сваком карактеру додељује ненегативан цео број, обично написан у хексадецималном облику са U+ префиксом, као што је U+040F . Породица кодирања дефинише како се кодови знакова конвертују за пренос у току или датотеци.

Уницоде кодови су подељени у неколико области. Област са кодовима од У + 0000 до У + 007Ф садржи знакове у АСЦИИ скупу, а кодови за ове знакове су исти као и њихови АСЦИИ кодови. Следе области симбола других система писања, интерпункција и технички симболи. Неки од кодова су резервисани за будућу употребу [7] . Под ћириличним знаковима додељују се области знакова са кодовима од У + 0400 до У + 052Ф, од У + 2ДЕ0 до У + 2ДФФ, од У + А640 до У + А69Ф (погледајте ћирилицу у Уникоду ) [8] .

Предуслови за стварање и развој Уницоде-а

" Уницоде је јединствени код за било који знак, без обзира на платформу, без обзира на програм, без обзира на језик.
Уницоде конзорцијум [9]
"

До краја 1980-их 8-битна кодирања су постала стандард, већ их је постојао велики број, а стално су се појављивала нова. То је било због проширења опсега подржаних језика и жеље да се створе кодирања која су делимично компатибилна једни са другима (типичан пример је појава алтернативног кодирања за руски језик , због експлоатације западног програми креирани за ЦП437 кодирање). Као резултат тога, појавило се неколико проблема:

  1. проблем нетачног декодирања;
  2. проблем ограниченог скупа карактера;
  3. проблем претварања једног кодирања у други;
  4. проблем дуплих фонтова.

Проблем нетачног декодирања довео је до појаве у документу знакова страних језика који нису били предвиђени у документу, или појаву ненаменских псеудографских знакова, које су корисници руског говорног подручја прозвали „кракозјабра“. Проблем је углавном узрокован недостатком стандардизованог обрасца за одређивање кодирања за датотеку или ток. Проблем би се могао решити или доследном имплементацијом стандарда спецификације кодирања, или увођењем заједничког кодирања за све језике. [6]

Проблем ограниченог скупа знакова [6] . Проблем би се могао решити или променом фонтова унутар документа, или увођењем "широког" кодирања. Промена фонтова се одавно практикује у програмима за обраду текста , а често су коришћени и фонтови са нестандардним кодирањем , тзв. „Дингбат фонтови“. Као резултат тога, приликом покушаја преноса документа у други систем, сви нестандардни знакови су се претворили у "кракозиабри".

Проблем претварања једног кодирања у други . Проблем би се могао решити или компајлирањем табела конверзије за сваки пар кодирања, или коришћењем средње конверзије у треће кодирање, укључујући све карактере свих кодирања [10] .

Проблем са дуплираним фонтовима . За свако кодирање креиран је сопствени фонт, чак и ако се скупови знакова у кодовима поклапају делимично или у потпуности. Проблем би се могао решити стварањем "великих" фонтова из којих би се накнадно бирали карактери потребни за дато кодирање. Међутим, то је захтевало стварање јединственог регистра симбола како би се утврдило шта чему одговара.

Препозната је потреба за једним „широким“ кодирањем. Утврђено је да су кодирања променљиве дужине, која се широко користе у источној Азији, претешка за коришћење, па је одлучено да се користе знакови фиксне ширине. Коришћење 32-битних знакова се чинило превише расипничким, па је одлучено да се користе 16-битни.

Прва верзија Уницоде-а је била кодирање са фиксном величином карактера од 16 бита, односно укупан број кодова је био 2 16 (65 536). Од тада, знакови се означавају са четири хексадецималне цифре (на пример, U+04F0 ). Истовремено, планирано је да се у Уницоде кодирају не сви постојећи карактери, већ само они који су неопходни у свакодневном животу. Ретко коришћени симболи морали су да се ставе у „ зону приватне употребе “, која је првобитно заузимала U+D800…U+F8FF . Да би се Уницоде користио и као посредник у међусобном претварању различитих кодирања, у њега су укључени сви карактери представљени у свим најпознатијим кодовима.

Међутим, у будућности је одлучено да се кодирају сви симболи и, у вези са тим, значајно прошири домен кода. Истовремено, кодови знакова почели су да се посматрају не као 16-битне вредности, већ као апстрактни бројеви који се у рачунару могу представити на много различитих начина (погледајте методе представљања ).

Како су у великом броју рачунарских система (на пример, Виндовс НТ [11] ) фиксни 16-битни карактери коришћени као подразумевано кодирање, одлучено је да се сви најважнији знаци кодирају само унутар првих 65 536 позиција ( такозвани енглески.Басиц Мултилингуал Плане, БМП ). Преостали простор се користи за „додатне симболе“ ( енгл. Супплементари Тхе цхарацтерс): системи писања изумрлих језика или ретко коришћени кинески карактери, математички и музички симболи.

За компатибилност са старим 16-битним системима измишљен је УТФ-16 систем, где се првих 65.536 позиција, са изузетком позиција из интервала У + Д800 ... У + ДФФФ, приказује директно као 16-битни бројеви, а остали су представљени као "сурогат парови" (први елемент пара из У + Д800... У + ДБФФ региона, други елемент пара из У + ДЦ00... У + ДФФФ региона). За сурогат парове коришћен је део кодног простора (2048 позиција) додељен за „приватну употребу”.

Пошто УТФ-16 може да прикаже само 2 20 +2 16 −2048 (1 112 064) карактера, овај број је изабран као коначна вредност Уницоде кодног простора (опсег кода: 0к000000-0к10ФФФФ).

Иако је подручје Уницоде кода проширено након 16. фебруара у верзији 2.0, први знакови у "горњој" области постављени су само у верзији 3.1.

Улога овог кодирања у веб сектору стално расте. Почетком 2010. године удео веб сајтова који користе Уницоде био је око 50% [12] .

Уницоде верзије

Рад на финализацији стандарда се наставља. Нове верзије се објављују како се табеле симбола мењају и ажурирају. Паралелно, издају се нови ИСО /ИЕЦ 10646 документи.

Први стандард је објављен 1991. године, последњи у овом тренутку - 2020. Верзије стандарда 1.0-5.0 су објављене као књиге и имају ИСБН [13] [14] .

Број верзије стандарда се састоји од три цифре (на пример, 3.1.1). Трећа цифра се мења када се изврше мање измене стандарда које не додају нове знакове (изузетак је верзија 1.0.1, која додаје обједињене идеограме кинеских, јапанских и корејских слова [ен] ) [15] .

Уницоде база података је доступна за све верзије на званичном сајту иу обичном тексту иу КСМЛ формату. Датотеке се дистрибуирају под лиценцом сличном БСД-у.

Уницоде верзије
Број верзије Датум издавања ИСБН књиге ИСО / ИЕЦ 10646 издање Број система писања Број знакова [А 1] Промене
1.0.0 [16] октобра 1991. године ИСБН 0-201-56788-1 (Вол.1) 24 7161 У почетку је Уницоде садржао знакове следећих писама: арапско писмо , јерменско писмо , бенгалско писмо , жујинско писмо , ћирилица , деванагари , грузијско писмо , грчко и коптско писмо , гуџарати , гурмуки , хангул , хебрејско писмо , хирагана , канада , лао катака , писање , латински , малајалам , орија , тамилски , телугу , тајландски и тибетански [17]
1.0.1 јуна 1992. године ИСБН 0-201-60845-6 (Вол.2) 25 28359 Додато 20 902 обједињених идеограма кинеског, јапанског и корејског писма [ен] [18]
1.1 [19] јуна 1993. године ИСО / ИЕЦ 10646-1: 1993 24 34 233 Додато је 4306 хангул слогова, допуњујући 2350 знакова већ у кодирању. Уклоњени тибетански знакови [20]
2.0 [21] јула 1996. године ИСБН 0-201-48345-9 ИСО / ИЕЦ 10646-1: 1993 и амандмани 5, 6, 7 25 38950 Уклоњени су претходно додати хангул слогови и додато 11.172 нових хангул слогова са новим кодовима. Претходно избрисани знакови тибетанског писма су враћени; симболи су добили нове кодове и смештени су у различите табеле. Уведен механизам сурогат ( енг. сурогат) знакова. Одредите простор за авионе ( енгл. Планес) 15 и 16 [22]
2.1 [23] маја 1998. године ИСО / ИЕЦ 10646-1: 1993, амандмани 5, 6, 7, два знака из амандмана 18 25 38952 Додан симбол евра и симбол за замену [24]
3.0 [25] септембра 1999. године ИСБН 0-201-61633-5 ИСО / ИЕЦ 10646-1: 2000 38 49259 Додатна Гранд Цхерокее , Етиопије , Црвених , монголски , бурмански , Огамиц , Руне , Синхалешки , сиријски , Караула , канадски Силабички и У и Браилле карактера. [26]
3.1 [27] 2001. март ИСО / ИЕЦ 10646-1: 2000

ИСО / ИЕЦ 10646-2: 2001

41 94 205 Додато Десерет писмо , готско писмо и староиталијанско писмо [ен] , као и симболи западне и византијске музике , 42.711 уједињених идеограма кинеског, јапанског и корејског писма [ен] . Додељен простор за авионе 1 , 2 и 14 [28]
3.2 [29] марта 2002 ИСО / ИЕЦ 10646-1: 2000 и амандман 1

ИСО / ИЕЦ 10646-2: 2001

45 95221 Додато бухид писмо , хануноо [ен] , баибаиин и тагбанва писмо [30]
4.0 [31] априла 2003 ИСБН 0-321-18578-1 ИСО / ИЕЦ 10646: 2003 52 96 447 Аддед Кипарски , лимбу , Линеар Б , сомалијски , Схов Алпхабет , Ли и угарски и Хекаграм симболи [32]
4.1 [33] марта 2005 ИСО / ИЕЦ 10646: 2003 и амандман 1 59 97720 Додао Лонтар , глагољицом ,Кхаросхтха , Нови ли , староперсијски клинасто , Силхет Нагари, и Стара либијски . Коптски знакови су одвојени од грчких знакова. Такође су додати симболи старих грчких бројева , музички симболи Древне Грчке и симбол гривне (валуте Украјине ) [34]
5.0 [35] 2006. јул ИСБН 0-321-48091-0 ИСО / ИЕЦ 10646: 2003, Амандмани 1, 2, четири знака из Амандмана 3 64 99,089 Додато балијско писмо , клинописно писмо , писмо Нко , монголско квадратно писмо и феничанско писмо [36]
5.1 [37] априла 2008 ИСО / ИЕЦ 10646: 2003 и амандмани 1, 2, 3, 4 75 100,713 Додао је Пошук , Хам писмо , писмо, Каи-Ли , Лепча , Ликијски , лидијског писмо , писмо ол чики , редзхангское писмо , писмо Саурасхтра , Судански , древних турским писања и слова ваи . Додати симболи фест диска , симболи костију за махјонг и домине , велико слово есцет (ẞ), као и латинична слова која се користе у средњовековним рукописима за скраћеницу [ен] . Бурмански скуп знакова је додат новим знаковима [38]
5.2 [39] октобар 2009 ИСО / ИЕЦ 10646: 2003 и амандмани 1, 2, 3, 4, 5, 6 90 107361 Додато авестанско писмо , бумумско писмо , египатско хијероглифско писмо (према Гардинеровој листи [ен] , које садржи 1071 знак), царско арамејско писмо , пакхлеви епиграфско [ен] , партско епиграфско [ен] , јаванско писмо , писмо Каитхи , писмо , писмо лисице Манипури , јужноарапско писмо , древно турско писмо , самаританско писмо , слово Ланна и слово тајландско-вијетско [ен] . Додато 4149 нових уједињених идеограма кинеског, јапанског и корејског писања [ен] (ЦЈК-Ц), ведских знакова, тенге симбола ( казахстанска валута), а такође је проширен стари скуп знакова хангул чамо [40]
6.0 [41] 2010. октобар ИСО / ИЕЦ 10646: 2010 и симбол индијске рупије 93 109,449 Додато писмо Батак , Брахми писмо , Манда писмо . Додати симболи за карте за играње , путоказе , географске карте , алхемију , емотиконе и емоџије , као и 222 обједињена идеограма кинеског, јапанског и корејског писма [ен] (ЦЈК-Д) [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] [58] [59]
12.0 Март 2019 ISO/IEC 10646:2017, Amendments 1, 2, а также 62 дополнительных символов 150 137 993 Добавлены элимайское письмо, надинагари (англ.) , хмонг, ванчо, дополнения для письма Полларда , малая кана для старых японских текстов, исторические дроби и символы тамильского письма , буквы лаосского письма для пали , буквы латиницы для транслитерации угаритского, управляющие символы форматирования египетских иероглифов, а также 61 эмодзи [60] [61]
12.1 Май 2019 150 137 994 Добавлен квадратный символ эпохи рэйва [62] [63]
13.0 Март 2020 154 143 859 Добавлены хорезмийское письмо , письмо дивес акуру , малое киданьское письмо , езидское письмо , 4969 идеограмм ККЯ (включая 4939 Унифицированные идеограммы ККЯ — расширение G ), а также 55 эмодзи , символы Creative Commons и символы для унаследованной вычислительной техники. Выделено место для плоскости 3 [64] [65]
Примечания
  1. Включая символы графические ( англ. graphic ), управляющие ( англ. control ) и символы форматирования ( англ. format ); не включая символы для частного использования ( англ. private-use ), несимвольные знаки ( англ. noncharacters ) и суррогаты ( англ. surrogate code points ).

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

Хотя форма записи UTF-8 позволяет кодировать до 2 21 (2 097 152) кодовых позиций, было принято решение использовать лишь 1 112 064 для совместимости с UTF-16. Впрочем, даже и этого в данный момент более чем достаточно — в версии 13.0 используется всего 143 859 кодовых позиций.

Кодовое пространство разбито на 17 плоскостей ( англ. planes ) по 2 16 (65 536) символов. Нулевая плоскость ( plane 0 ) называется базовой ( basic ) и содержит символы наиболее употребительных письменностей. Остальные плоскости — дополнительные ( supplementary ). Первая плоскость ( plane 1 ) используется в основном для исторических письменностей, вторая ( plane 2 ) — для редко используемых иероглифов китайского письма (ККЯ) , третья ( plane 3 ) зарезервирована для архаичных китайских иероглифов [66] . Плоскость 14 отведена для символов, используемых по особому назначению. Плоскости 15 и 16 выделены для частного употребления [7] .

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

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

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

Графические символы — это символы, имеющие видимое изображение. Графическим символам противопоставляются управляющие символы и символы форматирования.

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

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

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

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

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

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

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

Эмодзи не вводятся в Юникод, если: [69]

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

Комбинируемые символы

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

Cимволы в Юникоде подразделяются на базовые ( англ. base characters ) и комбинируемые ( англ. combining characters ). Комбинируемые символы обычно следуют за базовым и изменяют его отображение определённым образом. К комбинируемым символам, например, относятся диакритические знаки , знаки ударения. Например, русскую букву «Й» в Юникоде можно записать в виде базового символа «И» (U+0418) и комбинируемого символа « ̆» (U+0306), отображаемого над базовым.

Комбинируемые символы помечены в таблицах символов Юникода особыми категориями:

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

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

Алгоритмы нормализации

Из-за наличия в Юникоде комбинируемых символов одни и те же знаки письменности можно представить различными кодами. Так, например, букву «Й» в примере выше можно записать как отдельным символом, так и сочетанием базового и комбинированного. Из-за этого сравнение строк байт за байтом становится невозможным. Алгоритмы нормализации ( англ. normalization forms ) решают эту проблему, выполняя приведение символов к определённому стандартному виду. Приведение осуществляется путём замены символов на эквивалентные с использованием таблиц и правил. «Декомпозицией» называется замена (разложение) одного символа на несколько составляющих символов, а «композицией», наоборот, — замена (соединение) нескольких составляющих символов на один символ.

В стандарте Юникода определены четыре алгоритма нормализации текста: NFD, NFC, NFKD и NFKC.

NFD

NFD, англ. n ormalization f orm D («D» от англ. d ecomposition ), форма нормализации D — каноническая декомпозиция — алгоритм, согласно которому выполняется рекурсивное разложение составных символов ( англ. precomposed characters ) на последовательность из одного или нескольких простых символов в соответствии с таблицами декомпозиции. Рекурсивное потому, что в процессе разложения составной символ может быть разложен на несколько других, некоторые из которых тоже являются составными, и к которым применяется дальнейшее разложение.

Примеры:

Ω
U+2126
Ω
U+03A9
Å
U+00C5
A
U+0041
̊
U+030A
U+1E69
s
U+0073
̣
U+0323
̇
U+0307
ḍ̇
U+1E0B U+0323
d
U+0064
̣
U+0323
̇
U+0307
q̣̇
U+0071 U+0307 U+0323
q
U+0071
̣
U+0323
̇
U+0307

NFC

NFC, англ. n ormalization f orm C («C» от англ. c omposition ), форма нормализации C — алгоритм, согласно которому последовательно выполняются каноническая декомпозиция и каноническая композиция. Сначала каноническая декомпозиция (алгоритм NFD) приводит текст к форме D. Затем каноническая композиция — операция, обратная NFD, обрабатывает текст от начала к концу с учётом следующих правил:

  • символ S считается начальным , если имеет нулевой класс комбинируемости ( англ. combining class of zero ) согласно таблице символов Юникода;
  • в любой последовательности символов, начинающейся с символа S , символ C блокируется от S , только если между S и C есть какой-либо символ B , который либо является начальным, либо имеет одинаковый или больший класс комбинируемости, чем C . Это правило распространяется только на строки, прошедшие каноническую декомпозицию;
  • символ считается первичным композитом, если имеет каноническую декомпозицию в таблице символов Юникода (или каноническую декомпозицию для хангыля и он не входит в список исключений );
  • символ X может быть первично совмещён с символом Y , если и только если существует первичный композит Z , канонически эквивалентный последовательности < X , Y >;
  • если очередной символ C не блокируется последним встреченным начальным базовым символом L и он может быть успешно первично совмещён с ним, то L заменяется на композит LC , а C удаляется.

Пример:

o
U+006F
̂
U+0302
ô
U+00F4

NFKD

NFKD, англ. n ormalization f orm KD , форма нормализации KD — совместимая декомпозиция — алгоритм, согласно которому последовательно выполняются каноническая декомпозиция и замены символов текста по таблицам совместимой декомпозиции. Таблицы совместимой декомпозиции предусматривают замену на почти эквивалентные символы [70] :

  • похожих на буквы (ℍ и ℌ);
  • обведённых кружками (①);
  • с изменёнными размерами (カ и カ);
  • повёрнутых (︷ и {);
  • степеней (⁹ и ₉);
  • дробей (¼);
  • других (™).

Примеры:

U+210d
H
U+0048
U+2460
1
U+0031
U+FF76
U+30AB
U+FE37
{
U+007B
U+2079
9
U+0039
¼
U+00BC
1 4
U+0031 U+2044 U+0034
U+2122
T M
U+0054 U+004D

NFKC

NFKC, англ. n ormalization f orm KC , форма нормализации KC — алгоритм, согласно которому последовательно выполняются совместимая декомпозиция (алгоритм NFKD) и каноническая композиция (алгоритм NFC).

Примеры

Исходный текст NFD NFC NFKD NFKC
U+FB01
U+FB01
U+FB01
f i
U+0066 U+0069
f i
U+0066 U+0069
2
U+0032 U+2075
2
U+0032 U+2075
2
U+0032 U+2075
2 5
U+0032 U+0035
2 5
U+0032 U+0035
ẛ̣
U+1E9B U+0323
ſ ̣ ̇
U+017F U+0323 U+0307
̣
U+1E9B U+0323
s ̣ ̇
U+0073 U+0323 U+0307
U+1E69
й
U+0439
и ̆
U+0438 U+0306
й
U+0439
и ̆
U+0438 U+0306
й
U+0439
ё
U+0451
е ̈
U+0435 U+0308
ё
U+0451
е ̈
U+0435 U+0308
ё
U+0451
А
U+0410
А
U+0410
А
U+0410
А
U+0410
А
U+0410
U+304C
U+304B U+3099
U+304C
U+304B U+3099
U+304C
U+2167
U+2167
U+2167
V I I I
U+0056 U+0049 U+0049 U+0049
V I I I
U+0056 U+0049 U+0049 U+0049
ç
U+00E7
c ̧
U+0063 U+0327
ç
U+00E7
c ̧
U+0063 U+0327
ç
U+00E7

Двунаправленное письмо

Стандарт Юникод поддерживает письменности языков как с направлением написания слева направо ( англ. left-to-right, LTR ), так и с написанием справа налево ( англ. right-to-left, RTL ) — например, арабское и еврейское письмо. В обоих случаях символы хранятся в «естественном» порядке; их отображение с учётом нужного направления письма обеспечивается приложением.

Кроме того, Юникод поддерживает комбинированные тексты, сочетающие фрагменты с разным направлением письма. Данная возможность называется двунаправленность ( англ. bidirectional text, BiDi ). Некоторые упрощённые обработчики текста (например, в сотовых телефонах) могут поддерживать Юникод, но не иметь поддержки двунаправленности. Все символы Юникода поделены на несколько категорий: пишущиеся слева направо, пишущиеся справа налево, и пишущиеся в любом направлении. Символы последней категории (в основном это знаки пунктуации ) при отображении принимают направление окружающего их текста.

Представленные символы

Юникод включает практически все современные письменности , в том числе:

и другие.

С академическими целями добавлены многие исторические письменности, в том числе: германские руны , древнетюркские руны , древнегреческая письменность , египетские иероглифы , клинопись , письменность майя , этрусский алфавит .

В Юникоде представлен широкий набор математических и музыкальных символов, а также пиктограмм .

Государственные флаги не включены в Юникод напрямую. Для их кодирования используются пары из 26 буквенных символов, предназначенных для представления двухбуквенных кодов стран по стандарту ISO 3166-1 alpha-2 . Эти буквы закодированы в диапазоне от U+1F1E6 🇦 regional indicator symbol letter a (HTML &#127462; ) до U+1F1FF 🇿 regional indicator symbol letter z (HTML &#127487; ).

В Юникод принципиально не включаются логотипы компаний и продуктов, хотя они и встречаются в шрифтах (например, логотип Apple в кодировке MacRoman (0xF0) или логотип Windows в шрифте Wingdings (0xFF)). В юникодовских шрифтах логотипы должны размещаться только в области пользовательских символов. Существуют свободные бесплатные шрифты, включающие в себя логотипы компаний, программных продуктов и другие товарные знаки (например, Шрифт Awesome ru en [71] ).

ISO/IEC 10646

Консорциум Юникода работает в тесной связи с рабочей группой ISO/IEC/JTC1/SC2/WG2, которая занимается разработкой международного стандарта 10646 ( ISO / IEC 10646). Между стандартом Юникода и ISO/IEC 10646 установлена синхронизация, хотя каждый стандарт использует свою терминологию и систему документации.

Сотрудничество Консорциума Юникода с Международной организацией по стандартизации ( англ. International Organization for Standardization, ISO ) началось в 1991 году . В 1993 году ISO выпустила стандарт DIS 10646.1. Для синхронизации с ним Консорциум утвердил стандарт Юникода версии 1.1, в который были внесены дополнительные символы из DIS 10646.1. В результате значения закодированных символов в Unicode 1.1 и DIS 10646.1 полностью совпали.

В дальнейшем сотрудничество двух организаций продолжилось. В 2000 году стандарт Unicode 3.0 был синхронизирован с ISO/IEC 10646-1:2000. Предстоящая третья версия ISO/IEC 10646 будет синхронизирована с Unicode 4.0. Возможно, эти спецификации даже будут опубликованы как единый стандарт.

Аналогично форматам UTF-16 и UTF-32 в стандарте Юникода, стандарт ISO/IEC 10646 также имеет две основные формы кодирования символов: UCS-2 (2 байта на символ, аналогично UTF-16) и UCS-4 (4 байта на символ, аналогично UTF-32). UCS значит универсальный набор кодированных символов ( англ. universal coded character set ). UCS-2 можно считать подмножеством UTF-16 (UTF-16 без суррогатных пар), а UCS-4 является синонимом для UTF-32.

Различия стандартов Юникод и ISO/IEC 10646:

  • небольшие различия в терминологии;
  • ISO/IEC 10646 не включает разделы, необходимые для полноценной реализации поддержки Юникода:
    • нет данных о двоичном кодировании символов;
    • нет описания алгоритмов сравнения ( англ. collation ) и отрисовки ( англ. rendering ) символов;
    • нет перечня свойств символов (например, нет перечня свойств, необходимых для реализации поддержки двунаправленного ( англ. bi-directional ) письма).

Способы представления

Юникод имеет несколько форм представления ( англ. Unicode transformation format, UTF ): UTF-8 , UTF-16 (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE). Была разработана также форма представления UTF-7 для передачи по семибитным каналам, но из-за несовместимости с ASCII она не получила распространения и не включена в стандарт. 1 апреля 2005 года были предложены двешуточные формы представления: UTF-9 и UTF-18 ( RFC 4042 ).

В Microsoft Windows NT и основанных на ней системах Windows 2000 и Windows XP в основном используется форма UTF-16LE. В UNIX -подобных операционных системах GNU/Linux , BSD и Mac OS X принята форма UTF-8 для файлов и UTF-32 или UTF-8 для обработки символов в оперативной памяти .

Punycode — другая форма кодирования последовательностей Unicode-символов в так называемые ACE-последовательности, которые состоят только из алфавитно-цифровых символов, как это разрешено в доменных именах.

UTF-8

UTF-8 — представление Юникода, обеспечивающее наибольшую компактность и обратную совместимость с 7-битной системой ASCII ; текст, состоящий только из символов с номерами меньше 128, при записи в UTF-8 превращается в обычный текст ASCII и может быть отображён любой программой, работающей с ASCII; и наоборот, текст, закодированный 7-битной ASCII может быть отображён программой, предназначенной для работы с UTF-8. Остальные символы Юникода изображаются последовательностями длиной от 2 до 4 байт, в которых первый байт всегда имеет маску 11xxxxxx , а остальные — 10xxxxxx . В UTF-8 не используются суррогатные пары.

Формат UTF-8 был изобретён 2 сентября 1992 года Кеном Томпсоном и Робом Пайком и реализован в ОС Plan 9 [72] . Сейчас стандарт UTF-8 официально закреплён в документах RFC 3629 и ISO/IEC 10646 Annex D.

UTF-16 и UTF-32

UTF-16 — кодировка, позволяющая записывать символы Юникода в диапазонах U+0000…U+D7FF и U+E000…U+10FFFF (общим количеством 1 112 064). При этом каждый символ записывается одним или двумя словами (суррогатная пара). Кодировка UTF-16 описана в приложении Q к международному стандарту ISO/IEC 10646, а также ей посвящён документ IETF RFC 2781 под названием «UTF-16, an encoding of ISO 10646».

UTF-32 — способ представления Юникода, при котором каждый символ занимает ровно 4 байта. Главное преимущество UTF-32 перед кодировками переменной длины заключается в том, что символы Юникод в ней непосредственно индексируемы, поэтому найти символ по номеру его позиции в файле можно чрезвычайно быстро, и получение любого символа n -й позиции при этом является операцией, занимающей всегда одинаковое время. Это также делает замену символов в строках UTF-32 очень простой. Напротив, кодировки с переменной длиной требуют последовательного доступа к символу n -й позиции, что может быть очень затратной по времени операцией. Главный недостаток UTF-32 — это неэффективное использование пространства, так как для хранения любого символа используется четыре байта. Символы, лежащие за пределами нулевой (базовой) плоскости кодового пространства, редко используются в большинстве текстов. Поэтому удвоение, в сравнении с UTF-16, занимаемого строками в UTF-32 пространства, зачастую не оправдано.

Порядок байтов

В потоке данных UTF-16 младший байт может записываться либо перед старшим ( англ. UTF-16 little-endian, UTF-16LE ), либо после старшего ( англ. UTF-16 big-endian, UTF-16BE ). Аналогично существует два варианта четырёхбайтной кодировки — UTF-32LE и UTF-32BE.

Маркер последовательности байтов

Для указания на использование Юникода, в начале текстового файла или потока может передаваться Маркер последовательности байтов ( англ. byte order mark (BOM) ) — символ U+FEFF (неразрывный пробел нулевой ширины). По его виду можно легко различить как формат представления Юникода, так и последовательность байтов. Маркер последовательности байтов может принимать следующий вид:

UTF-8
EF BB BF
UTF-16BE
FE FF
UTF-16LE
FF FE
UTF-32BE
00 00 FE FF
UTF-32LE
FF FE 00 00

Юникод и традиционные кодировки

Внедрение Юникода привело к изменению подхода к традиционным 8-битным кодировкам. Если раньше такая кодировка всегда задавалась непосредственно, то теперь она может задаваться таблицей соответствия между данной кодировкой и Юникодом. Фактически почти все 8-битные кодировки теперь можно рассматривать как форму представления некоторого подмножества Юникода. И это намного упростило создание программ, которые должны работать с множеством разных кодировок: теперь, чтобы добавить поддержку ещё одной кодировки, надо всего лишь добавить ещё одну таблицу перекодировки символов в Юникод.

Кроме того, многие форматы данных позволяют вставлять любые символы Юникода, даже если документ записан в старой 8-битной кодировке. Например, в HTML можно использовать коды с амперсандом .

Реализации

Большинство современных операционных систем в той или иной степени обеспечивает поддержку Юникода.

В операционных системах семейства Windows NT для внутреннего представления имён файлов и других системных строк используется двухбайтовая кодировка UTF-16LE. Системные вызовы, принимающие строковые параметры, существуют в однобайтном и двухбайтном вариантах. Подробнее см. в статье Юникод в операционных системах семейства Microsoft Windows .

UNIX -подобные операционные системы, в том числе GNU/Linux , BSD , OS X , используют для представления Юникода кодировку UTF-8. Большинство программ может работать с UTF-8 как с традиционными однобайтными кодировками, не обращая внимания на то, что символ представляется как несколько последовательных байт. Для работы с отдельными символами строки обычно перекодируются в UCS-4, так что каждому символу соответствует машинное слово .

Одной из первых успешных коммерческих реализаций Юникода стала среда программирования Java . В ней принципиально отказались от 8-битного представления символов в пользу 16-битного. Это решение увеличило расход памяти, но позволило вернуть в программирование важную абстракцию: произвольный одиночный символ (тип char ). В частности, программист мог работать со строкой, как с простым массивом. Успех не был окончательным, Юникод перерос ограничение в 16 бит и к версии J2SE 5.0 произвольный символ снова стал занимать переменное число единиц памяти — один char или два (см. суррогатная пара ).

Сейчас [ когда? ] большинство [ сколько? ] языков программирования поддерживает строки Юникода, хотя их представление может различаться в зависимости от реализации.

Методы ввода

Поскольку ни одна раскладка клавиатуры не может позволить вводить все символы Юникода одновременно, от операционных систем и прикладных программ требуется поддержка альтернативных методов ввода произвольных символов Юникода.

Microsoft Windows

Хотя, начиная с Windows 2000 , служебная программа «Таблица символов» (charmap.exe) поддерживает символы Юникода и позволяет копировать их в буфер обмена , эта поддержка ограничена только базовой плоскостью (коды символов U+0000…U+FFFF). Символы с кодами от U+10000 «Таблица символов» не отображает.

Похожая таблица есть, например, в Microsoft Word .

Иногда можно набрать шестнадцатеричный код, нажать Alt + X , и код будет заменён на соответствующий символ, например, в WordPad , Microsoft Word. В редакторах Alt + X выполняет и обратное преобразование.

Во многих программах MS Windows, чтобы получить символ Unicode, нужно при нажатой клавише Alt набрать десятичное значение кода символа на цифровой клавиатуре . Например, полезными при наборе кириллических текстов будут комбинации Alt+0171 («), Alt+0187 (») и Alt+0769 ( знак ударения ). Интересны также комбинации Alt+0133 (…) и Alt+0151 (—).

Macintosh

В Mac OS 8.5 и более поздних версиях поддерживается метод ввода, называемый «Unicode Hex Input». При зажатой клавише Option требуется набрать четырёхзначный шестнадцатеричный код требуемого символа. Этот метод позволяет вводить символы с кодами, большими U+FFFF, используя пары суррогатов; такие пары операционной системой будут автоматически заменены на одиночные символы. Этот метод ввода перед использованием нужно активизировать в соответствующем разделе системных настроек и затем выбрать как текущий метод ввода в меню клавиатуры.

Начиная с Mac OS X 10.2, существует также приложение «Character Palette», позволяющее выбирать символы из таблицы, в которой можно выделять символы определённого блока или символы, поддерживаемые конкретным шрифтом.

GNU/Linux

В GNOME также есть утилита « Таблица символов » (ранее gucharmap), позволяющая отображать символы определённого блока или системы письма и предоставляющая возможность поиска по названию или описанию символа. Когда код нужного символа известен, его можно ввести в соответствии со стандартом ISO 14755: при зажатых клавишах Ctrl + ⇧ Shift ввести шестнадцатеричный код (начиная с некоторой версии GTK+, ввод кода нужно предварить нажатием клавиши «U» ). Вводимый шестнадцатеричный код может иметь до 32 бит в длину, позволяя вводить любые символы Юникода без использования суррогатных пар.

Все приложения X Window , включая GNOME и KDE , поддерживают ввод при помощи клавиши Compose . Для клавиатур, на которых нет отдельной клавиши Compose , для этой цели можно назначить любую клавишу — например, Caps Lock .

Консоль GNU/Linux также допускает ввод символа Юникода по его коду — для этого десятичный код символа нужно ввести цифрами расширенного блока клавиатуры при зажатой клавише Alt . Можно вводить символы и по их шестнадцатеричному коду: для этого нужно зажать клавишу AltGr , и для ввода цифр A—F использовать клавиши расширенного блока клавиатуры от NumLock до ↵ Enter (по часовой стрелке). Поддерживается также и ввод в соответствии с ISO 14755. Для того чтобы перечисленные способы могли работать, нужно включить в консоли режим Юникода вызовом unicode_start (1) и выбрать подходящий шрифт вызовом setfont (8).

Mozilla Firefox для Linux поддерживает ввод символов по ISO 14755.

Проблемы Юникода

В Юникоде английское «a» и польское «a» — один и тот же символ. Точно так же одним и тем же символом (но отличающимся от «a» латинского) считаются русское «а» и сербское «а». Такой принцип кодирования не универсален; по-видимому, решения «на все случаи жизни» вообще не может существовать.

  • Тексты на китайском , корейском и японском языках имеют традиционное написание сверху вниз, начиная с правого верхнего угла. Переключение горизонтального и вертикального написания для этих языков не предусмотрено в Юникоде — это должно осуществляться средствами языков разметки или внутренними механизмами текстовых процессоров .
  • Наличие или отсутствие в Юникоде разных начертаний одного и того же символа в зависимости от языка. Нужно следить, чтобы текст всегда был правильно помечен как относящийся к тому или другому языку.
    Так, китайские иероглифы могут иметь разные начертания в китайском, японском ( кандзи ) и корейском ( ханча ), но при этом в Юникоде обозначаются одним и тем же символом (так называемая CJK-унификация), хотя упрощённые и полные иероглифы всё же имеют разные коды.
    Аналогично, русский и сербский языки используют разное начертание курсивных букв п и т (в сербском они выглядят как п ( ӣ ) и т ( ш̄ ), см. сербский курсив ).
  • Перевод из строчных букв в заглавные тоже зависит от языка. Например: в турецком существуют буквы İi и Iı — таким образом, турецкие правила изменения регистра конфликтуют с английскими , которые предписывают «i» переводить в «I». Подобные проблемы есть и в других языках — например, в канадском диалекте французского языка регистр переводится немного не так, как во Франции [73] .
  • Даже с арабскими цифрами есть определённые типографские тонкости: цифры бывают «прописными» и « строчными », пропорциональными и моноширинными [74] — для Юникода разницы между ними нет. Подобные нюансы остаются за программным обеспечением.

Некоторые недостатки связаны не с самим Юникодом, а с возможностями обработчиков текста.

  • Файлы нелатинского текста в Юникоде всегда занимают больше места, так как один символ кодируется не одним байтом, как в различных национальных кодировках, а последовательностью байтов (исключение составляет UTF-8 для языков, алфавит которых укладывается в ASCII, а также наличие в тексте символов двух и более языков, алфавит которых не укладывается в ASCII [75] ). Файл шрифта всех символов таблицы Юникод занимает сравнительно много места в памяти и требует бо́льших вычислительных ресурсов, чем шрифт только одного национального языка пользователя [76] . С увеличением мощности компьютерных систем и удешевлением памяти и дискового пространства эта проблема становится всё менее существенной; тем не менее, она остаётся актуальной для портативных устройств, например, для мобильных телефонов.
  • Хотя поддержка Юникода реализована в наиболее распространённых операционных системах, до сих пор не всё прикладное программное обеспечение поддерживает корректную работу с ним. В частности, не всегда обрабатываются метки порядка байтов ( BOM ) и плохо поддерживаются диакритические символы . Проблема является временной и есть следствие сравнительной новизны стандартов Юникода (в сравнении с однобайтовыми национальными кодировками).
  • Производительность всех программ обработки строк (в том числе и сортировок в БД) снижается при использовании Юникода вместо однобайтовых кодировок.

Некоторые редкие системы письма всё ещё не представлены должным образом в Юникоде. Изображение «длинных» надстрочных символов, простирающихся над несколькими буквами, как, например, в церковнославянском языке , пока не реализовано.

«Юникод» или «Уникод»?

«Unicode» — одновременно и имя собственное (или часть имени, например, Unicode Consortium), и имя нарицательное, происходящее из английского языка.

На первый взгляд предпочтительнее использовать написание «Уникод». В русском языке уже есть морфемы «уни-» (слова с латинским элементом «uni-» традиционно переводились и писались через «уни-»: универсальный, униполярный, унификация, униформа) и «код». Напротив, торговые марки, заимствованные из английского языка , обычно передаются посредством практической транскрипции, в которой деэтимологизированное сочетание букв «uni-» записывается в виде «юни-» (« Юнилевер », « Юникс » и т. п.), то есть точно так же, как в случае с побуквенными сокращениями, вроде UNICEF «United Nations International Children's Emergency Fund» — ЮНИСЕФ .

На сайте Консорциума есть специальная страница, где рассматриваются проблемы передачи слова «Unicode» в различных языках и системах письма. Для русской кириллицы указан вариант «Юникод» [1] . В MS Windows также используется вариант «Юникод».

В Википедии на русском языке используется вариант «Юникод» как наиболее распространённый.

См. также

Примечания

  1. 1 2 Unicode Transcriptions (англ.) (недоступная ссылка) . Дата обращения: 10 мая 2010. Архивировано 8 апреля 2006 года.
  2. Уникод в словаре Paratype
  3. The Unicode® Standard: A Technical Introduction (недоступная ссылка) . Дата обращения: 4 июля 2010. Архивировано 10 марта 2010 года.
  4. History of Unicode Release and Publication Dates (недоступная ссылка) . Дата обращения: 4 июля 2010. Архивировано 10 января 2010 года.
  5. The Unicode Consortium (недоступная ссылка) . Дата обращения: 4 июля 2010. Архивировано 27 июня 2010 года.
  6. 1 2 3 Foreword (недоступная ссылка) . Дата обращения: 4 июля 2010. Архивировано 27 июня 2010 года.
  7. 1 2 General Structure (недоступная ссылка) . Дата обращения: 5 июля 2010. Архивировано 27 июня 2010 года.
  8. European Alphabetic Scripts (недоступная ссылка) . Дата обращения: 4 июля 2010. Архивировано 27 июня 2010 года.
  9. Что такое Unicode?
  10. Unicode 88 (недоступная ссылка) . Дата обращения: 8 июля 2010. Архивировано 6 сентября 2017 года.
  11. Unicode and Microsoft Windows NT (англ.) (недоступная ссылка) . Microsoft Support . Дата обращения: 12 ноября 2009. Архивировано 26 сентября 2009 года.
  12. Unicode используется почти на 50% веб-сайтов (недоступная ссылка) . Дата обращения: 9 февраля 2010. Архивировано 11 июня 2010 года.
  13. History of Unicode Release and Publication Dates
  14. Enumerated Versions
  15. About Versions
  16. Unicode® 1.0 (англ.) . Unicode Consortium [en] . Дата обращения: 8 декабря 2017.
  17. Unicode Data 1.0.0 (англ.) . Дата обращения: 4 декабря 2017.
  18. Unicode Data 1.0.1 (англ.) . Дата обращения: 4 декабря 2017.
  19. Unicode® 1.1 (англ.) . Unicode Consortium [en] . Дата обращения: 8 декабря 2017.
  20. Unicode Data 1995 (англ.) . Дата обращения: 4 декабря 2017.
  21. Unicode 2.0.0 (англ.) . Unicode Consortium [en] . Дата обращения: 8 декабря 2017.
  22. Unicode Data 2.0.14 (англ.) . Дата обращения: 4 декабря 2017.
  23. Unicode 2.1.0 (англ.) . Unicode Consortium [en] . Дата обращения: 8 декабря 2017.
  24. Unicode Data 2.1.2 (англ.) . Дата обращения: 4 декабря 2017.
  25. Unicode 3.0.0 (англ.) . Unicode Consortium [en] . Дата обращения: 8 декабря 2017.
  26. Unicode Data 3.0.0 (англ.) . Дата обращения: 4 декабря 2017.
  27. Unicode 3.1.0 (англ.) . Unicode Consortium [en] . Дата обращения: 8 декабря 2017.
  28. Unicode Data 3.1.0 (англ.) . Дата обращения: 4 декабря 2017.
  29. Unicode 3.2.0 (англ.) . Unicode Consortium [en] . Дата обращения: 8 декабря 2017.
  30. Unicode Data 3.2.0 (англ.) . Дата обращения: 4 декабря 2017.
  31. Unicode 4.0.0 (англ.) . Unicode Consortium [en] . Дата обращения: 8 декабря 2017.
  32. Unicode Data 4.0.0 (англ.) . Дата обращения: 4 декабря 2017.
  33. Unicode 4.1.0 (англ.) . Unicode Consortium [en] . Дата обращения: 8 декабря 2017.
  34. Unicode Data 4.1.0 (англ.) . Дата обращения: 4 декабря 2017.
  35. Unicode 5.0.0 (англ.) . Unicode Consortium [en] (14 July 2006). Дата обращения: 8 декабря 2017.
  36. Unicode Data 5.0.0 (англ.) . Дата обращения: 4 декабря 2017.
  37. Unicode 5.1.0 (англ.) . Unicode Consortium [en] (4 April 2008). Дата обращения: 8 декабря 2017.
  38. Unicode Data 5.1.0 (англ.) . Дата обращения: 4 декабря 2017.
  39. Unicode® 5.2.0 (англ.) . Unicode Consortium [en] (1 October 2009). Дата обращения: 8 декабря 2017.
  40. Unicode Data 5.2.0 (англ.) . Дата обращения: 4 декабря 2017.
  41. Unicode® 6.0.0 (англ.) . Unicode Consortium [en] (11 October 2010). Дата обращения: 8 декабря 2017.
  42. Unicode Data 6.0.0 (англ.) . Дата обращения: 4 декабря 2017.
  43. Unicode® 6.1.0 (англ.) . Unicode Consortium [en] (31 January 2012). Дата обращения: 8 декабря 2017.
  44. Unicode Data 6.1.0 (англ.) . Дата обращения: 4 декабря 2017.
  45. Unicode® 6.2.0 (англ.) . Unicode Consortium [en] (26 September 2012). Дата обращения: 7 декабря 2017.
  46. Unicode Data 6.2.0 (англ.) . Дата обращения: 4 декабря 2017.
  47. Unicode® 6.3.0 (англ.) . Unicode Consortium [en] (30 September 2012). Дата обращения: 7 декабря 2017.
  48. Unicode Data 6.3.0 (англ.) . Дата обращения: 4 декабря 2017.
  49. Unicode® 7.0.0 (англ.) . Unicode Consortium [en] (16 June 2014). Дата обращения: 8 декабря 2017.
  50. Unicode Data 7.0.0 (англ.) . Дата обращения: 4 декабря 2017.
  51. Unicode® 8.0.0 (англ.) . Unicode Consortium [en] (17 June 2015). Дата обращения: 8 декабря 2017.
  52. Unicode Data 8.0.0 (англ.) . Дата обращения: 4 декабря 2017.
  53. Unicode® 9.0.0 (англ.) . Unicode Consortium [en] (21 June 2016). Дата обращения: 8 декабря 2017.
  54. Unicode Data 9.0.0 (англ.) . Дата обращения: 6 декабря 2017.
  55. Unicode® 10.0.0 (англ.) . Unicode Consortium [en] (27 June 2017). Дата обращения: 8 декабря 2017.
  56. Unicode Data 10.0.0 (англ.) . Дата обращения: 7 декабря 2017.
  57. Unicode Data 11.0.0 (англ.) . Дата обращения: 12 апреля 2019.
  58. The Unicode Blog: Announcing The Unicode® Standard, Version 11.0
  59. Unicode 11.0.0
  60. The Unicode Blog: Announcing The Unicode® Standard, Version 12.0
  61. Unicode 12.0.0
  62. The Unicode Blog: Unicode Version 12.1 released in support of the Reiwa Era
  63. Unicode 12.1.0
  64. The Unicode Blog: Announcing The Unicode Standard, Version 13.0
  65. Unicode 13.0.0
  66. Roadmap to the TIP (Tertiary Ideographic Plane)
  67. Unicode Character Encoding Stability Policy
  68. 1 2 FAQ — Emoji & Dingbats
  69. Guidelines for Submitting Unicode® Emoji Proposals
  70. Нормализация Unicode
  71. GitHub — FortAwesome/Font-Awesome: The iconic SVG, font, and CSS toolkit
  72. Архивированная копия (недоступная ссылка) . Дата обращения: 27 февраля 2007. Архивировано 29 октября 2006 года. (англ.)
  73. Регистр в Unicode — это непросто
  74. В большинстве шрифтов для ПК реализованы «прописные» (маюскульные) моноширинные цифры.
  75. В некоторых случаях документ (не простой текст) в Юникоде может занимать существенно меньше места, чем документ в однобайтовой кодировке. Например, если некая веб-страница содержит примерно поровну русского и греческого текста, то в однобайтовой кодировке придётся либо русские, либо греческие буквы записывать, используя возможности формата документов, в виде кодов с амперсандом, которые занимают 6—7 байт на символ (при использовании десятичных кодов), то есть в среднем на букву придётся 3,5—4 байта, в то время как UTF-8 занимает только 2 байта на греческую или русскую букву.
  76. Один из файлов шрифтов Arial Unicode имеет размер 24 мегабайта; существует Times New Roman размером 120 мегабайт, он содержит количество символов, близкое к 65536.

Ссылки