Этот восхитительный Юникод

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.


Перед вами обновляемый список самых замечательных «вкусностей» Юникода, а также пакетов и ресурсов

Юникод — это потрясающе! До его появления международная коммуникация была изнурительной: каждый определял свой отдельный расширенный набор символов в верхней половине ASCII (так называемые кодовые страницы). Это порождало конфликты. Просто подумайте, что немцам приходилось договариваться с корейцами, где чья кодовая страница на 127 символа. К счастью, появился Юникод и унифицировал коммуникации. Стандарт Юникод 8.0 охватывает более 120 000 символов из более 129 письменностей. И современные, и древние, и до сих пор не расшифрованные. Юникод поддерживает текст слева направо и справа налево, наложение символов и включает самые разные культурные, политические, религиозные символы и эмодзи. Юникод потрясающе человечен, а его возможности сильно недооцениваются.

Содержание


  • Краткое введение
    • Какие символы входят в Стандарт Юникод?
    • Кодировки символов Юникода
    • Поговорим о цифрах
    • Суррогатные пары UTF-16
    • Вычисление суррогатных пар
    • Композиция и декомпозиция
    • Мифы о Юникоде
    • Прикладные кодировки Юникода
    • Исходный код
  • Список удивительных символов
    • Специальные символы
    • Идентификаторы переменных могут включать пробелы!
    • Модификаторы
    • Коллизии преобразований в верхнем регистре
    • Коллизии преобразований в нижнем регистре
  • Причуды и устранение неполадок
    • Сопоставления одного ко многим
  • Отличные пакеты и библиотеки
  • Эмодзи
    • Многообразие
  • Переменные и методы с креативными названиями
    • Скрипт рекурсивного переименования тегов HTML
  • Шрифты Юникода
  • Дополнительные ресурсы
  • Более глубокое исследование самого Юникода
  • Общая карта
    • Карта основной многоязычной плоскости
    • Блоки Юникода
  • Принципы Стандарта Юникод
  • Версии Юникода

Краткое введение


Какие символы входят в Стандарт Юникод?


Стандарт Юникод определяет коды для символов основных современных языков. Это европейские алфавитные письменности, ближневосточные письменности справа налево и многие письменности Азии.

Стандарт также содержит знаки пунктуации, диакритические знаки, математические символы, технические символы, стрелки, дингбаты, эмодзи и т. д. Он предоставляет коды для диакритических знаков, изменяющих знаки символов, такие как тильда (~). Они используются в сочетании с основными для представления акцентированных символов (например, ñ). В целом, Юникод версии 9.0 предоставляет коды для 128 172 символов из мировых алфавитов, наборов идеограмм и коллекций символов.

Большинство символов общего пользования помещаются в первые 64K кодовых точек, область кодового пространства, которая называется основной многоязычной плоскостью, или BMP для краткости. Есть ещё шестнадцать других дополнительных плоскостей, доступных для кодирования других символов, с более чем 850 000 неиспользуемых кодовых точек. Они могут пригодиться для добавления новых символов в будущие версии стандарта.

Стандарт Юникод также резервирует кодовые точки для частного использования. Вендоры или конечные пользователи могут назначать их в своих собственных системах для своих символов или использовать со специализированными шрифтами. На BMP находится 6400 кодовых точек для частного использования и ещё 131 068 дополнительных кодовых точек частного использования, если 6400 недостаточно для конкретных приложений.

Кодировки символов Юникода


Стандарты кодирования символов определяют не только идентичность каждого символа и его числовое значение или кодовую точку, но и то, как это значение представлено в битах.

Стандарт Юникод определяет три формы кодирования, которые позволяют передавать одни и те же данные: это байт, слово и двойное слово (то есть 8, 16 или 32 бит на единицу кода). Все три формы кодируют один и тот же общий набор символов и могут быть эффективно преобразованы друг в друга без потери данных. Консорциум Юникод полностью одобряет использование любой из этих форм кодирования в качестве согласованного способа реализации Стандарта Юникод.

UTF-8 популярен для HTML и подобных протоколов. UTF-8 — это способ преобразования всех символов Юникода в кодировку переменной байтовой длины. Его преимущество в том, что символы Юникода, соответствующие знакомому набору ASCII, имеют те же байтовые значения, что и ASCII, а символы Юникода, преобразованные в UTF-8, могут использоваться с большим количеством существующего программного обеспечения без серьёзной доработки ПО.

UTF-16 популярен во многих средах, где необходимо сбалансировать эффективный доступ к символам с экономичным хранением. Он достаточно компактен, и все часто используемые символы помещаются в один 16-битный кодовый блок, в то время как все остальные символы доступны через пары 16-битных кодовых блоков.

UTF-32 полезен там, где объём памяти не вызывает беспокойства, но требуется доступ к символам по единому коду фиксированной ширины. Здесь каждый символ Юникода кодируется в одном 32-разрядном кодовом блоке.

Все три формы кодирования требуют для каждого символа не более 4 байт (или 32 бит).

Поговорим о цифрах


Набор символов Юникода разделён на 17 основных сегментов (плоскостей), которые далее делятся на блоки. В каждой плоскости есть место для 65 536 (216) кодовых точек, что создаёт в сумме 1 114 112 кодовых точек. Есть две «плоскости частного использования» (№ 16 и № 17), которые выделяются для использования на усмотрение компаний/пользователей. В них 131 072 кодовые точки.

№ Название Диапазон
1. Основная многоязычная плоскость (от U+0000 до U+FFFF)
2. Дополнительная многоязычная плоскость (от U+10000 до U+1FFFF)
3. Дополнительная идеографическая плоскость (от U+20000 до U+2FFFF)
4. Третичная идеографическая плоскость (от U+30000 до U+3FFFF)
5. Плоскость 5 (не используется) (от U+40000 до U+4FFFF)
6. Плоскость 6 (не используется) (от U+50000 до U+5FFFF)
7. Плоскость 7 (не используется) (от U+60000 до U+6FFFF)
8. Плоскость 8 (не используется) (от U+70000 до U+7FFFF)
9. Плоскость 9 (не используется) (от U+80000 до U+8FFFF)
10. Плоскость 10 (не используется) (от U+90000 до U+9FFFF)
11. Плоскость 11 (не используется) (от U+A0000 до U+AFFFF)
12. Плоскость 12 (не используется) (от U+B0000 до U+BFFFF)
13. Плоскость 13 (не используется) (от U+C0000 до U+CFFFF)
14. Плоскость 14 (не используется) (от U+D0000 до U+DFFFF)
15. Специализированная дополнительная плоскость (от U+E0000 до U+EFFFF)
16. Дополнительная область для частного использования — A (от U+F0000 до U+FFFFF)
17. Дополнительная область для частного использования — B (от U+100000 до U+10FFFF)

Первая плоскость называется основной многоязычной плоскостью или BMP. Она содержит кодовые точки от U+0000 до U+FFFF, то есть наиболее часто используемые символы. Остальные шестнадцать плоскостей (U+010000 → U+10FFFF) называются дополнительными или астральными.

Суррогатные пары UTF-16


Символы вне основной плоскости, как тетраграмматон, означающий центр (U+1D306), можно закодировать в UTF-16 только двумя 16-битными кодовыми единицами: 0xD834 0xDF06. Это называется суррогатной парой. Обратите внимание, что суррогатная пара представляет только один символ.

Первая кодовая единица суррогатной пары всегда находится в диапазоне от 0xD800 до 0xDBFF и называется верхней частью пары.

Вторая кодовая единица суррогатной пары всегда находится в диапазоне от 0xDC00 до 0xDFFF и называется нижней частью пары.

Матиас Байненс

Суррогатная пара: представление одного абстрактного символа, состоящего из последовательности двух 16-разрядных кодовых единиц, где первое значение пары является верхней суррогатной кодовой единицей, а второе — нижней суррогатной кодовой единицей. Суррогатные пары используются только в UTF-16.

Unicode 8.0 Глава 3.8 − Суррогаты

Вычисление суррогатных пар


Юникодовский символ «Куча дерьма» (U+1F4A9) в UTF-16 придётся кодировать как суррогатную пару, т. е. два суррогата. Чтобы преобразовать любую кодовую точку в суррогатную пару, используйте такой алгоритм (на JavaScript). Имейте в виду, что мы используем шестнадцатеричную нотацию.

 var High_Surrogate = function(Code_Point){ return Math.floor((Code_Point - 0x10000) / 0x400) + 0xD800 };
 var Low_Surrogate  = function(Code_Point){ return (Code_Point - 0x10000) % 0x400 + 0xDC00 };

 // Reverses The Conversion
 var Code_Point = function(High_Surrogate, Low_Surrogate){
	return (High_Surrogate - 0xD800) * 0x400 + Low_Surrogate - 0xDC00 + 0x10000;
 };

 > var codepoint = 0x1F4A9;   					// 0x1F4A9 == 128169
 > High_Surrogate(codepoint).toString(16)
 "d83d"  										// 0xD83D == 55357
 > Low_Surrogate(codepoint).toString(16)
 "dca9"  										// 0xDCA9 == 56489

 > String.fromCharCode(  High_Surrogate(codepoint) , Low_Surrogate(codepoint) );
  ""
> String.fromCodePoint(0x1F4A9)
  ""
 > '\ud83d\udca9'
  ""

Композиция и декомпозиция


Юникод включает в себя механизм для изменения формы символа, который значительно расширяет поддерживаемый набор глифов. Это касается комбинируемых диакритических знаков. Они вставляются после главного знака. На один и тот же знак можно наложить несколько комбинируемых диакритических знаков. Юникод также содержит предварительно составленные версии большинства таких комбинаций для нормального использования.

Некоторые последовательности символов также можно представить в виде одного символа, который называется предварительно составленным символом (precomposed character), он же составной символ (composite character). Например, символ [ü] можно закодировать как единственную кодовую точку U+00FC или как базовый символ U+0075 (u), за которым следует несамостоятельный знак U+0308 (¨). Стандарт Юникод кодирует составные символы для совместимости с установленными стандартами, такими как Latin 1, который включает в себя множество составных символов, таких как [ü] и [ñ].

Составные символы можно разложить для согласованности или анализа. Например, при сортировке имён по алфавиту символ [ü] можно разложить на [u], за которым следует несамостоятельный знак [¨]. После такой декомпозиции алгоритму проще работать с последовательностью символов. Это позволяет упростить сортировку в языках, где модификаторы символов не влияют на алфавитный порядок. Стандарт Юникод устанавливает порядок декомпозиции для всех составных символов. Он также определяет формы нормализации для обеспечения уникальных представлений символов.

Мифы о Юникоде


Из слайдов презентации Марка Дэвиса «Мифы Юникода».

  • Юникод — это просто 16-битный код. — Некоторые ошибочно полагают, что Юникод — это просто 16-битный код, в котором каждый символ занимает 16 бит, и поэтому существует 65 536 возможных символов. На самом деле это не совсем так. Это самый распространённый миф о Юникоде, так что если вы тоже так думали раньше, не расстраивайтесь.
  • Можно взять для своих нужд любую кодовую точку, которая не используется. — Нет. Когда-нибудь это место займёт другой символ. Вместо этого используйте плоскости для частного использования или области без символов в каждой плоскости, где по стандарту не будет никаких символов.
  • Каждая кодовая точка Юникода представляет символ. — Нет. Есть много точек без символов (FFFE, FFFF, 1FFFE и др.) Кроме того, суррогатные кодовые точки, приватные и неиспользуемые кодовые точки, а также управляющие/форматирующие «символы» (RLM, ZWNJ и др.)
  • В Юникоде заканчивается место. — Если бы оно заполнялось линейно, то закончилось бы в 2140 году. Но место не заполняется линейно. Планы на будущее см. здесь.
  • Все знаки сопоставляются один к одному. — Нет. Возможны варианты:
    • Один ко многим: (β → SS)
    • С учётом контекста: (…Σ ←→ …ς и в то же время …ΣΤ… ←→ …στ…)
    • С учётом локали: (I ←→ ı и в то же время İ ←→ i)

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


Тип кодирования Пример
Объект HTML (десятичный)
Объект HTML (hex)
Управляющий код URL %F0%9F%96%96
UTF-8 (hex) 0xF0 0x9F 0x96 0x96 (f09f9696)
UTF-8 (бинарный) 11110000:10011111:10010110:10010110
UTF-16/UTF-16BE (hex) 0xD83D 0xDD96 (d83ddd96)
UTF-16LE (hex) 0x3DD8 0x96DD (3dd896dd)
UTF-32/UTF-32BE (hex) 0x0001F596 (0001f596)
UTF-32LE (hex) 0x96F50100 (96f50100)
Восьмеричная управляющая последовательность \360\237\226\226

Исходный код


Тип кодирования Пример
JavaScript \u1F596
JSON \u1F596
C \u1F596
C++ \u1F596
Java \u1F596
Python \u1F596
Perl \x{1F596}
Ruby \u{1F596}
CSS \01F596

Список удивительных символов



Совместный доступ к документу может быстро превратить редактирование в письменную рэп-битву, ведущуюся все более запутанной расстановкой управляющих от U+202a до U+202e

Специальные символы


Консорциум Unicode опубликовал диаграмму общей пунктуации, где можете найти более подробную информацию.

Символ Название Описание
'' U+FEFF Неразрывный пробел нулевой ширины (Byte Order Mark — BOM) Обладает важным свойством однозначности при изменении порядка байтов. У него также нулевая ширина и невидимость. В неподходщем программном обеспечении (например, интерпретаторе PHP) это приводит к всевозможным примерам забавного поведения.
'￯' '\uFFEF' Обратный BOM Не приравнивается к символу, кроме начала текста.
'​' '\u200B' Неразрывное пространство нулевой ширины Символ без внешнего вида и без эффекта, кроме предотвращения образования лигатур.
' ' U+00A0 Неразрывный пробел Заставляет соседние символы держаться вместе. Хорошо известен как   в HTML.
'­' U+00AD Мягкий дефис В HTML работает как пространство нулевой ширины, но при встрече с концом строки (и только в этом случае) показывает дефис.
'‍' U+200D Знак нулевой ширины (с объединением) Заставляет соединяться соседние символы (например, арабские символы или поддерживаемые эмодзи). Можно использовать для последовательно скомбинированных эмодзи.
'⁠' U+2060 Соединитель слов То же самое, что и U+00A0, но совершенно невидимый. Хорошо подходит для @font-face в Twitter.
' ' U+1680 Огам знак пробела Отмечает пробел, который выглядит как тире. Отлично паодходит, чтобы приблизить программистов к безумию: 1 + 2 === 3.
';' U+037E Греческий знак вопроса Похож на точку с запятой. Также забавный способ троллить разработчиков.
'‭' U+202D Изменяет направление текста слева-направо.
'‮'‭ ‭ U+202E Изменяет направление текста справа-налево.
'ꓸ' U+A4F8 Лису буква tone mya ti Двойник для точки.
'ꓹ' U+A4F9 Лису буква tone na po Двойник для запятой.
'ꓼ' U+A4FC Лису буква tone mya na Двойник для точки с запятой.
'ꓽ' U+A4FD Лису буква tone mya jeu Двойник для двоеточия.
'︀' Вариантные селекторы (от U+FE00 до U+FE0F и от U+E0100 до U+E01EF) Блок из 256 символов нулевой ширины, которые обладают свойством ID_Continue, то есть могут использоваться в именах переменных (не первая буква). Что делает их особенными, так это то, что над ними проходит курсор мыши, поскольку они объединяют символы, в отличие от большинства других символов нулевой ширины.
'ᅟ' U+115F Заполнитель хангыль чхосон По сути, заполняет пространство. Визуализируется как символ нулевой ширины (невидимый), если явно не поддерживается при визуализации. Обозначен как ID_Start
'ᅠ' U+1160 Заполнитель чунсон Возможно, заполняет пространство? Визуализируется как символ нулевой ширины (невидимый), если явно не поддерживается при визуализации. Обозначен как ID_Start
'ㅤ' U+3164 Заполнитель хангыль В целом, заполняет пространство. Визуализируется как символ нулевой ширины (невидимый), если явно не поддерживается при визуализации. Обозначен как ID_Start

Подожди… что я только что прочитал?

Идентификаторы переменных могут включать пробелы!


U+3164 Заполнитель хангыль отображается в виде широкого пробела. Если символ явно не поддерживается в рендеринге, то отображается как полностью невидимый (и не занимает место, т. е. «нулевой ширины»). Это означает, что вы никогда не увидите уродливый символ замены символов (�).

Я пока не уверен, почему U+3164 указано вести себя таким образом. Интересно, что U+3164 был добавлен в Юникод в версии 1.1 (1993) — так что у специалистов Консорциума было много времени, чтобы его продумать. Во всяком случае, вот несколько примеров.

> var ᅟ = 'foo';
undefined
> ᅟ
'foo'


> var ㅤ= alert;
undefined
> var foo = 'bar'
undefined
> if ( foo ===ㅤ`baz` ){} 	// alert
undefined


> var varㅤfooㅤ\u{A60C}ㅤπ = 'bar';
undefined
> varㅤfooㅤꘌㅤπ
'bar'

**Примечание:** я тестировал рендеринг U+3164 на Ubuntu и OS X со следующими параметрами: `node`, `php`, `ruby`, `python3.5`, `scala`, `vim`, `cat`, `chrome`+`github gist'. Atom — единственная система, которая терпит неудачу, (некорректно) отображая пустые поля. Мне ещё предстоит проверить код в Emacs и Sublime. Насколько я понимаю, Консорциум Юникод не будет переназначать или переименовывать символы или кодовые точки, но его можно убедить изменить свойства символов, таких как ID_Start и ID_Continue.

Модификаторы


Объединитель нулевой ширины (ZWJ) является непечатным символом в компьютерном наборе некоторых сложных шрифтов, таких как арабский или любой индийский шрифт. При помещении между двумя символами, которые в противном случае не были бы связаны, ZWJ заставляет их печататься в объединённой форме.

Разъединитель нулевой ширины (ZWNJ) — это непечатный символ в компьютерных наборах письменностей с лигатурами. При размещении между двумя символами, которые в противном случае были бы соединены в лигатуру, ZWNJ заставляет их печататься в их окончательной и первоначальной формах, соответственно. Действует как пробел, но используется в том случае, когда желательно удерживать слова рядом друг с другом или соединить слово с его морфемой.

> 'a'
 "a"

> 'a\u{0308}'
 "ä"

> 'a\u{20DE}\u{0308}'
 "a⃞̈"

> 'a\u{20DE}\u{0308}\u{20DD}'
 "a⃞̈⃝"

// Modifying Invisible Characters
> '\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}'
 "‎‎‎‎‎‎‎‎‎‎"

> '\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}'.length
 10

Коллизии преобразований в верхнем регистре


Символ Кодовая точка Результат
ß 0x00DF SS
ı 0x0131 I
ſ 0x017F S
ff 0xFB00 FF
fi 0xFB01 FI
fl 0xFB02 FL
ffi 0xFB03 FFI
ffl 0xFB04 FFL
ſt 0xFB05 ST
st 0xFB06 ST

Коллизии преобразований в нижнем регистре


Символ Кодовая точка Результат
K 0x212A k

Причуды и устранение неполадок


  • Длина строки обычно определяется по количеству кодовых точек. Это означает, что суррогатные пары будут считаться двумя символами. На символ может быть наложено нескольких диакритических знаков: a + ̈ == ̈a. Это увеличивает длину строки, производя только один символ.
  • Аналогично, обращение строки часто становится нетривиальной задачей. Опять же, суррогатные пары и диакритические знаки следует обращать вместе. ES Reverser предлагает довольно хорошее решение.
  • Сопоставления верхнего и нижнего регистра не всегда совпадают. Они могут выражаться и такими отношениями:

    • Один ко многим: (ß → SS )
    • С учётом контекста: (…Σ ←→ …ς и …ΣΤ… ←→ …στ… )
    • С учётом локали: ( I ←→ ı и İ ←→ i )

    Сопоставления одного ко многим


    Большинство нижеприведенных символов выражают свои сопоставления «один ко многим» в верхнем регистре, а другие в нижнем. В принципе, список можно разделить на две части.

    Кодовая точка Символ Название Сопоставленный символ Сопоставленные кодовые точки
    U+00DF ß Латинская строчная буква эсцет (S острое) s, s U+0073, U+0073
    U+0130 İ Латинская заглавная буква «I» с точкой сверху i, ̇ U+0069, U+0307
    U+0149 ʼn Латинская строчная буква «n» предшествующим апострофом ʼ, n U+02BC, U+006E
    U+01F0 ǰ Латинская строчная буква «j» с гачеком j, ̌ U+006A, U+030C
    U+0390 ΐ Греческая строчная буква йота с диалитика и тонос ι, ̈, ́ U+03B9, U+0308, U+0301
    U+03B0 ΰ Греческая строчная буква ипсилон с диалитика и тонос υ, ̈, ́ U+03C5, U+0308, U+0301
    U+0587 և Армянская строчная лигатура ech yiwn ե, ւ U+0565, U+0582
    U+1E96 ẖ Латинская строчная буква h с линией снизу h, ̱ U+0068, U+0331
    U+1E97 ẗ Латинская строчная буква t с диэрезисом t, ̈ U+0074, U+0308
    U+1E98 ẘ Латинская строчная буква w с кольцом выше w, ̊ U+0077, U+030A
    U+1E99 ẙ Латинская строчная буква y с кольцом выше y, ̊ U+0079, U+030A
    U+1E9A ẚ Латинская строчная буква a с правой половинкой кольца a, ʾ U+0061, U+02BE
    U+1E9E ẞ Латинская заглавная буква острая s s, s U+0073, U+0073
    U+1F50 ὐ Греческая строчная буква ипсилон с псили υ, ̓ U+03C5, U+0313
    U+1F52 ὒ Греческая строчная буква ипсилон с псили и вария υ, ̓, ̀ U+03C5, U+0313, U+0300
    U+1F54 ὔ Греческая строчная буква ипсилон с псили и оксия υ, ̓, ́ U+03C5, U+0313, U+0301
    U+1F56 ὖ Греческая строчная буква ипсилон с псили и периспоменти υ, ̓, ͂ U+03C5, U+0313, U+0342
    U+1F80 ᾀ Греческая строчная буква альфа с псили и ипогеграммены ἀ, ι U+1F00, U+03B9
    U+1F81 ᾁ Греческая строчная буква альфа с дасия и ипогеграммены ἁ, ι U+1F01, U+03B9
    U+1F82 ᾂ Греческая строчная буква альфа с псили и вария и ипогеграммены ἂ, ι U+1F02, U+03B9
    U+1F83 ᾃ Греческая строчная буква альфа с дасия и вария и ипогеграммены ἃ, ι U+1F03, U+03B9
    U+1F84 ᾄ Греческая строчная буква альфа с псили и оксия и ипогеграммены ἄ, ι U+1F04, U+03B9
    U+1F85 ᾅ Греческая строчная буква альфа с дасия и оксия и ипогеграммены ἅ, ι U+1F05, U+03B9
    U+1F86 ᾆ Греческая строчная буква альфа с псили и периспоменти и ипогеграммены ἆ, ι U+1F06, U+03B9
    U+1F87 ᾇ Греческая строчная буква альфа с дасия и периспоменти и ипогеграммены ἇ, ι U+1F07, U+03B9
    U+1F88 ᾈ Греческая заглавная буква альфа с псили и просгеграммены ἀ, ι U+1F00, U+03B9
    U+1F89 ᾉ Греческая заглавная буква альфа с дасия и просгеграммены ἁ, ι U+1F01, U+03B9
    U+1F8A ᾊ Греческая заглавная буква альфа с псили и вария и просгеграммены ἂ, ι U+1F02, U+03B9
    U+1F8B ᾋ Греческая заглавная буква альфа с дасия и вария и просгеграммены ἃ, ι U+1F03, U+03B9
    U+1F8C ᾌ Греческая заглавная буква альфа с псили и оксия и просгеграммены ἄ, ι U+1F04, U+03B9
    U+1F8D ᾍ Греческая заглавная буква альфа с дасия и оксия и просгеграммены ἅ, ι U+1F05, U+03B9
    U+1F8E ᾎ Греческая заглавная буква альфа с псили и периспоменти и просгеграммены ἆ, ι U+1F06, U+03B9
    U+1F8F ᾏ Греческая заглавная буква альфа с дасия и периспоменти и просгеграммены ἇ, ι U+1F07, U+03B9
    U+1F90 ᾐ Греческая строчная буква эта с псили и ипогеграммены ἠ, ι U+1F20, U+03B9
    U+1F91 ᾑ Греческая строчная буква эта с дасия и ипогеграммены ἡ, ι U+1F21, U+03B9
    U+1F92 ᾒ Греческая строчная буква эта с псили и вария и ипогеграммены ἢ, ι U+1F22, U+03B9
    U+1F93 ᾓ Греческая строчная буква эта с дасия и вария и ипогеграммены ἣ, ι U+1F23, U+03B9
    U+1F94 ᾔ Греческая строчная буква эта с псили и оксия и ипогеграммены ἤ, ι U+1F24, U+03B9
    U+1F95 ᾕ Греческая строчная буква эта с дасия и оксия и ипогеграммены ἥ, ι U+1F25, U+03B9
    U+1F96 ᾖ Греческая строчная буква эта с псили и периспоменти и ипогеграммены ἦ, ι U+1F26, U+03B9
    U+1F97 ᾗ Греческая строчная буква эта с дасия и периспоменти и ипогеграммены ἧ, ι U+1F27, U+03B9
    U+1F98 ᾘ Греческая заглавная буква эта с псили и просгеграммены ἠ, ι U+1F20, U+03B9
    U+1F99 ᾙ Греческая заглавная буква эта с дасия и просгеграммены ἡ, ι U+1F21, U+03B9
    U+1F9A ᾚ Греческая заглавная буква эта с псили и вария и просгеграммены ἢ, ι U+1F22, U+03B9
    U+1F9B ᾛ Греческая заглавная буква эта с дасия и вария и просгеграммены ἣ, ι U+1F23, U+03B9
    U+1F9C ᾜ Греческая заглавная буква эта с псили и оксия и просгеграммены ἤ, ι U+1F24, U+03B9
    U+1F9D ᾝ Греческая заглавная буква эта с дасия и оксия и просгеграммены ἥ, ι U+1F25, U+03B9
    U+1F9E ᾞ Греческая заглавная буква эта с псили и периспоменти и просгеграммены ἦ, ι U+1F26, U+03B9
    U+1F9F ᾟ Греческая заглавная буква эта с дасия и периспоменти и просгеграммены ἧ, ι U+1F27, U+03B9
    U+1FA0 ᾠ Греческая строчная буква омега с псили и ипогеграммены ὠ, ι U+1F60, U+03B9
    U+1FA1 ᾡ Греческая строчная буква омега с дасия и ипогеграммены ὡ, ι U+1F61, U+03B9
    U+1FA2 ᾢ Греческая строчная буква омега с псили и вария и ипогеграммены ὢ, ι U+1F62, U+03B9
    U+1FA3 ᾣ Греческая строчная буква омега с дасия и вария и ипогеграммены ὣ, ι U+1F63, U+03B9
    U+1FA4 ᾤ Греческая строчная буква омега с псили и оксия и ипогеграммены ὤ, ι U+1F64, U+03B9
    U+1FA5 ᾥ Греческая строчная буква омега с дасия и оксия и ипогеграммены ὥ, ι U+1F65, U+03B9
    U+1FA6 ᾦ Греческая строчная буква омега с псили и периспоменти и ипогеграммены ὦ, ι U+1F66, U+03B9
    U+1FA7 ᾧ Греческая строчная буква омега с дасия и периспоменти и ипогеграммены ὧ, ι U+1F67, U+03B9
    U+1FA8 ᾨ Греческая заглавная буква омега с псили и просгеграммены ὠ, ι U+1F60, U+03B9
    U+1FA9 ᾩ Греческая заглавная буква омега с дасия и просгеграммены ὡ, ι U+1F61, U+03B9
    U+1FAA ᾪ Греческая заглавная буква омега с псили и вария и просгеграммены ὢ, ι U+1F62, U+03B9
    U+1FAB ᾫ Греческая заглавная буква омега с дасия и вария и просгеграммены ὣ, ι U+1F63, U+03B9
    U+1FAC ᾬ Греческая заглавная буква омега с псили и оксия и просгеграммены ὤ, ι U+1F64, U+03B9
    U+1FAD ᾭ Греческая заглавная буква омега с дасия и оксия и просгеграммены ὥ, ι U+1F65, U+03B9
    U+1FAE ᾮ Греческая заглавная буква омега с псили и периспоменти и просгеграммены ὦ, ι U+1F66, U+03B9
    U+1FAF ᾯ Греческая заглавная буква омега с дасия и периспоменти и просгеграммены ὧ, ι U+1F67, U+03B9
    U+1FB2 ᾲ Греческая строчная буква альфа с вария и ипогеграммены ὰ, ι U+1F70, U+03B9
    U+1FB3 ᾳ Греческая строчная буква альфа с ипогеграммены α, ι U+03B1, U+03B9
    U+1FB4 ᾴ Греческая строчная буква альфа с оксия и ипогеграммены ά, ι U+03AC, U+03B9
    U+1FB6 ᾶ Греческая строчная буква альфа с периспоменти α, ͂ U+03B1, U+0342
    U+1FB7 ᾷ Греческая строчная буква альфа с периспоменти и ипогеграммены α, ͂, ι U+03B1, U+0342, U+03B9
    U+1FBC ᾼ Греческая заглавная буква альфа с просгеграммены α, ι U+03B1, U+03B9
    U+1FC2 ῂ Греческая строчная буква эта с вария и ипогеграммены ὴ, ι U+1F74, U+03B9
    U+1FC3 ῃ Греческая строчная буква эта с ипогеграммены η, ι U+03B7, U+03B9
    U+1FC4 ῄ Греческая строчная буква эта с оксия и ипогеграммены ή, ι U+03AE, U+03B9
    U+1FC6 ῆ Греческая строчная буква эта с периспоменти η, ͂ U+03B7, U+0342
    U+1FC7 ῇ Греческая строчная буква эта с периспоменти и ипогеграммены η, ͂, ι U+03B7, U+0342, U+03B9
    U+1FCC ῌ Греческая заглавная буква эта с просгеграммены η, ι U+03B7, U+03B9
    U+1FD2 ῒ Греческая строчная буква йота с диалитика и вария ι, ̈, ̀ U+03B9, U+0308, U+0300
    U+1FD3 ΐ Греческая строчная буква йота с диалитика и оксия ι, ̈, ́ U+03B9, U+0308, U+0301
    U+1FD6 ῖ Греческая строчная буква йота с периспоменти ι, ͂ U+03B9, U+0342
    U+1FD7 ῗ Греческая строчная буква йота с диалитика и периспоменти ι, ̈, ͂ U+03B9, U+0308, U+0342
    U+1FE2 ῢ Греческая строчная буква ипсилон с диалитика и вария υ, ̈, ̀ U+03C5, U+0308, U+0300
    U+1FE3 ΰ Греческая строчная буква ипсилон с диалитика и оксия υ, ̈, ́ U+03C5, U+0308, U+0301
    U+1FE4 ῤ Греческая строчная буква rho с псили ρ, ̓ U+03C1, U+0313
    U+1FE6 ῦ Греческая строчная буква ипсилон с периспоменти υ, ͂ U+03C5, U+0342
    U+1FE7 ῧ Греческая строчная буква ипсилон с диалитика и периспоменти υ, ̈, ͂ U+03C5, U+0308, U+0342
    U+1FF2 ῲ Греческая строчная буква омега с вария и ипогеграммены ὼ, ι U+1F7C, U+03B9
    U+1FF3 ῳ Греческая строчная буква омега с ипогеграммены ω, ι U+03C9, U+03B9
    U+1FF4 ῴ Греческая строчная буква омега с оксия и ипогеграммены ώ, ι U+03CE, U+03B9
    U+1FF6 ῶ Греческая строчная буква омега с периспоменти ω, ͂ U+03C9, U+0342
    U+1FF7 ῷ Греческая строчная буква омега с периспоменти и ипогеграммены ω, ͂, ι U+03C9, U+0342, U+03B9
    U+1FFC ῼ Греческая заглавная буква омега с просгеграммены ω, ι U+03C9, U+03B9
    U+FB00 ff Латинская строчная лигатура Ff f, f U+0066, U+0066
    U+FB01 fi Латинская строчная лигатура Fi f, i U+0066, U+0069
    U+FB02 fl Латинская строчная лигатура Fl f, l U+0066, U+006C
    U+FB03 ffi Латинская строчная лигатура Ffi f, f, i U+0066, U+0066, U+0069
    U+FB04 ffl Латинская строчная лигатура Ffl f, f, l U+0066, U+0066, U+006C
    U+FB05 ſt Латинская строчная лигатура длинная S T s, t U+0073, U+0074
    U+FB06 st Латинская строчная лигатура St s, t U+0073, U+0074
    U+FB13 ﬓ Армянская строчная лигатура Men Now մ, ն U+0574, U+0576
    U+FB14 ﬔ Армянская строчная лигатура Men Ech մ, ե U+0574, U+0565
    U+FB15 ﬕ Армянская строчная лигатура Men Ini մ, ի U+0574, U+056B
    U+FB16 ﬖ Армянская строчная лигатура Vew Now վ, ն U+057E, U+0576
    U+FB17 ﬗ Армянская строчная лигатура Men Xeh մ, խ U+0574, U+056D

    Отличные пакеты и библиотеки


    • PhantomScript — :ghost: :flashlight: Выполнение невидимого JavaScript и социальная инженерия
    • ESReverser — Обращение строка на JavaScript с учётом Юникода.
    • mimic — Некорректное использование Юникода
    • python-ftfy — Пытается создать максимальную корректное и цельное представление текста, поступившего в Юникоде.
    • vim-troll-stopper — Защита вашего кода от юникод-троллей.

    Эмодзи


    • Диаграмма эмодзи от Консорциума Юникод
    • Emojipedia — Информация о конкретном эмодзи, новостной блог.
    • emojitracker — Использование эмодзи в реальном времени в Twitter.
    • World Translation Foundation — Исследование, продвижение, а также словарь эмодзи.
    • Can I Emoji? — Отображает текущее состояние нативной поддержки эмодзи в iOS, Android и Windows.
    • Как зарегистрировать доменное имя с эмодзи

    Многообразие


    Консорциум Unicode приложил огромные усилия для лучшего отражения человеческого многообразия (diversity), включая культурные практики. Вот отчёт Консорциума о многообразии.

    Теперь доступны эмодзи для разных гендерных ситуаций, включая однополые семьи, держащиеся руки и поцелуи. Последний функционал — это составные последовательности эмодзи. Основные примеры:

    Кодовые точки Рецепт Сочетание
    U+1F469 U+200D U+2764 U+FE0F U+200D U+1F469 ️‍ ️‍ ️‍ couple with heart: woman, woman
    U+1F468 U+200D U+1F468 U+200D U+1F467 U+200D U+1F466

    Кроме того, эмодзи теперь поддерживают модификаторы цвета кожи.

    В Юникоде версии 8.0 (середина 2015 года) появилось пять символов-модификаторов символов для оттенков человеческой кожи. Эти символы основаны на шести оттенках по шкале Фицпатрика, признанного стандарта в дерматологии (в интернете много примеров этой шкалы, таких как FitzpatrickSkinType.pdf). Точные оттенки зависят от реализации.

    Отчёт Консорциума Unicode о многообразии

    Код Название Примеры
    U+1F3FB Модификатор эмодзи для шкалы Фицпатрика типы-1-2
    U+1F3FC Модификатор эмодзи для шкалы Фицпатрика тип-3
    U+1F3FD Модификатор эмодзи для шкалы Фицпатрика тип-4
    U+1F3FE Модификатор эмодзи для шкалы Фицпатрика тип-5
    U+1F3FF Модификатор эмодзи для шкалы Фицпатрика тип-6

    Просто выбирайте нужный эмодзи, указав один из модификаторов цвета кожи \u{1F466}\u{1F3FE}.


    + 

     → 



    Переменные и методы с креативными названиями


    Примеры на JavaScript (ES6)

    Обычно символы, обозначенные свойством ID_START, можно ставить в начале названия переменной. Символы, обозначенные свойством ID_CONTINUE, можно ставить после первого символа в имени переменной.

    // How convenient!
    var π = Math.PI;
    
    // Sometimes, you just have to use the Bad Parts of JavaScript:
    var ಠ_ಠ = eval;
    
    // Code, Y U NO WORK?!
    var ლ_ಠ益ಠ_ლ = 42;
    
    // How about a JavaScript library for functional programming?
    var λ = function() {};
    
    // Obfuscate boring variable names for great justice
    var \u006C\u006F\u006C\u0077\u0061\u0074 = 'heh';
    
    // …or just make up random ones
    var Ꙭൽↈⴱ = 'huh';
    
    // While perfectly valid, this doesn’t work in most browsers:
    var foo\u200Cbar = 42;
    
    // This is *not* a bitwise left shift (`<<`):
    var 〱〱 = 2;
    // This is, though:
    〱〱 << 〱〱; // 8
    
    // Give yourself a discount:
    var price_9̶9̶_89 = 'cheap';
    
    // Fun with Roman numerals
    var Ⅳ = 4;
    var Ⅴ = 5;
    Ⅳ + Ⅴ; // 9
    
    // Cthulhu was here
    var Hͫ̆̒̐ͣ̊̄ͯ͗͏̵̗̻̰̠̬͝ͅE̴̷̬͎̱̘͇͍̾ͦ͊͒͊̓̓̐_̫̠̱̩̭̤͈̑̎̋ͮͩ̒͑̾͋͘Ç̳͕̯̭̱̲̣̠̜͋̍O̴̦̗̯̹̼ͭ̐ͨ̊̈͘͠M̶̝̠̭̭̤̻͓͑̓̊ͣͤ̎͟͠E̢̞̮̹͍̞̳̣ͣͪ͐̈T̡̯̳̭̜̠͕͌̈́̽̿ͤ̿̅̑Ḧ̱̱̺̰̳̹̘̰́̏ͪ̂̽͂̀͠ = 'Zalgo';

    А вот некоторые юникодовские классы CSS от Дэвида Уолша.

    <!-- place this within the document head -->
    <meta charset="UTF-8" />
    
    <!-- error message -->
    <div class="ಠ_ಠ">You do not have access to this page.</div>
    
    <!-- success message -->
    <div class="">Your changes have been saved successfully!</div>

    .ಠ_ಠ {
    	border: 1px solid #f00;
    }
    
    . {
    	background: lightgreen;
    }

    Скрипт рекурсивного переименования тегов HTML


    Если вы хотите переименовать все свои HTML-теги в нечто невидимое, вот скрипт, который вам нужен.

    Только обратите внимание, что HTML поддерживает не все символы Юникода.

    // U+1160 HANGUL JUNGSEONG FILLER
    transformAllTags('ᅠ');
    
    // An actual HTML element node designed to look like a comment node, using the U+01C3 LATIN LETTER RETROFLEX CLICK 
    //	<ǃ-- name="viewport" content="width=device-width"></ǃ-->
    transformAllTags('ǃ--');
    
    // or even <ᅠ⃝
    transformAllTags('\u{1160}\u{20dd}');
    
    // and for a bonus, all existing tag names will have each character ensquared. h⃞t⃞m⃞l⃞
    transformAllTags();
    
    
    function transformAllTags (newName){
       // querySelectorAll doesn't actually return an array.
       Array.from(document.querySelectorAll('*'))
         .forEach(function(x){
             transformTag(x, newName);
       });
    }
    
    function wonky(str){
      return str.split('').join('\u{20de}') + '\u{20de}';
    }
    
    function transformTag(tagIdOrElem, tagType){
        var elem = (tagIdOrElem instanceof HTMLElement) ? tagIdOrElem : document.getElementById(tagIdOrElem);
        if(!elem || !(elem instanceof HTMLElement))return;
        var children = elem.childNodes;
        var parent = elem.parentNode;
        var newNode = document.createElement(tagType||wonky(elem.tagName));
        for(var a=0;a<elem.attributes.length;a++){
            newNode.setAttribute(elem.attributes[a].nodeName, elem.attributes[a].value);
        }
        for(var i= 0,clen=children.length;i<clen;i++){
            newNode.appendChild(children[0]); //0...always point to the first non-moved element
        }
        newNode.style.cssText = elem.style.cssText;
        parent.replaceChild(newNode,elem);
    }

    Вот что он поддерживает:

    function testBegin(str){
     try{
        eval(`document.createElement( '${str}' );`)
        return true;
     }
     catch(e){ return false; }
    }
    
    function testContinue(str){
     try{
        eval(`document.createElement( 'a${str}' );`)
        return true;
     }
     catch(e){ return false; }
    }

    А вот некоторые результаты:

    // Test if dashes can start an HTML Tag
    > testBegin('-')
    < false
    
    > testContinue('-')
    < true
    
    > testBegin('ᅠ-')	// Prepend dash with U+1160 HANGUL JUNGSEONG FILLER
    < true

    Шрифты Юникода


    Ни один шрифт TrueType или OpenType не способен охватить все символы UTF-8, поскольку есть жёсткое ограничение на 65 535 символов в шрифте. Если у нас более 1,1 миллиона глифов UTF-8, то для полного покрытия придётся делать семейство шрифтов.

    • https://en.wikipedia.org/wiki/Unicode_font#List_of_Unicode_fonts
    • https://www.unifont.org/fontguide/

    Дополнительные ресурсы


    • «Абсолютный минимум, который каждый разработчик должен обязательно, совершенно точно знать о Юникоде и наборах символов» — Джоэл Спольски
    • «Что каждый программист обязательно, совершенно точно должен знать о кодировках и наборах символов для работы с текстом»
    • Список рекомендованной литературы от Консорциума Юникод
    • Space Yourself — руководство по интервалам от Smashing Magazine
    • «У JavaScript проблема Юникода»
    • Креативные юзернеймы и захват учётной записи Spotify

    Более глубокое исследование самого Юникода


    • Shapecatcher — нарисуйте символ, который вы ищете.
    • Похожие символы Юникода
    • База данных символов Юникода
    • Дампы базы Codepoints.net
    • Список блоков в пространстве Юникода
    • Таблицы символов Юникода
    • Таблицы регистров в Юникоде
    • Таблица нормализации для Юникода
    • FAQ по Юникоду

    Общая карта


    Карта основной многоязычной плоскости


    Каждое нумерованное поле представляет собой 256 кодовых точек.



    Китайские, японские и корейские (ККЯ) письменности объединены одним цветом как символы ККЯ (CJK). В процессе, который называется унификацией Хань, распознаются общие символы и составляется список «унифицированных идеограмм ККЯ».

    Блоки Юникода


    Стандарт Юникод объединяет группы символов в блоки. Вот полный список блоков по всем 17-ти плоскостям.

    Название От До # кодовых точек
    Основная латиница U+0000 U+007F 128
    Дополнение к латинице — 1 U+0080 U+00FF 128
    Расширенная латиница — A U+0100 U+017F 128
    Расширенная латиница — B U+0180 U+024F 208
    Расширения МФА U+0250 U+02AF 96
    Модификаторы букв U+02B0 U+02FF 80
    Комбинируемые диакритические знаки U+0300 U+036F 112
    Греческое и коптское письмо U+0370 U+03FF 135
    Кириллица U+0400 U+04FF 256
    Дополнение к кириллице U+0500 U+052F 48
    Армянское письмо U+0530 U+058F 89
    Еврейское письмо U+0590 U+05FF 87
    Арабское письмо U+0600 U+06FF 255
    Сирийское письмо U+0700 U+074F 77
    Дополнение к арабскому письму U+0750 U+077F 48
    Тана U+0780 U+07BF 50
    Нко U+07C0 U+07FF 59
    Самаритянское письмо U+0800 U+083F 61
    Мандейское письмо U+0840 U+085F 29
    Расширенное арабское письмо — A U+08A0 U+08FF 50
    Девангари U+0900 U+097F 128
    Бенгальское письмо U+0980 U+09FF 93
    Гурмукхи U+0A00 U+0A7F 79
    Гуджарати U+0A80 U+0AFF 85
    Ория U+0B00 U+0B7F 90
    Тамильское письмо U+0B80 U+0BFF 72
    Телугу U+0C00 U+0C7F 96
    Каннада U+0C80 U+0CFF 87
    Малаялам U+0D00 U+0D7F 100
    Сингальское письмо U+0D80 U+0DFF 90
    Тайское письмо U+0E00 U+0E7F 87
    Лаосское письмо U+0E80 U+0EFF 67
    Тибетское письмо U+0F00 U+0FFF 211
    Бирманское письмо U+1000 U+109F 160
    Грузинское письмо U+10A0 U+10FF 88
    Элементы хангыля U+1100 U+11FF 256
    Эфиопское письмо U+1200 U+137F 358
    Дополнение к эфиопскому письму U+1380 U+139F 26
    Чероки U+13A0 U+13FF 92
    Канадское слоговое письмо U+1400 U+167F 640
    Огамическое письмо U+1680 U+169F 29
    Руны U+16A0 U+16FF 89
    Байбайин U+1700 U+171F 20
    Хануноо U+1720 U+173F 23
    Бухид U+1740 U+175F 20
    Тагбанва U+1760 U+177F 18
    Кхмерское письмо U+1780 U+17FF 114
    Старомонгольское письмо U+1800 U+18AF 156
    Расширенное канадское слоговое письмо U+18B0 U+18FF 70
    Лимбу U+1900 U+194F 68
    Лы U+1950 U+197F 35
    Ныа U+1980 U+19DF 83
    Кхмерские символы U+19E0 U+19FF 32
    Лонтара U+1A00 U+1A1F 30
    Ланна U+1A20 U+1AAF 127
    Расширенные комбинируемые диакритические знаки U+1AB0 U+1AFF 15
    Балийское письмо U+1B00 U+1B7F 121
    Сунданское письмо U+1B80 U+1BBF 64
    Батакское письмо U+1BC0 U+1BFF 56
    Лепча U+1C00 U+1C4F 74
    Ол-чики U+1C50 U+1C7F 48
    Дополнение к сунданскому письму U+1CC0 U+1CCF 8
    Расширения Веды U+1CD0 U+1CFF 41
    Фонетические расширения U+1D00 U+1D7F 128
    Дополнение к фонетическим расширениям U+1D80 U+1DBF 64
    U+1DFF Дополнение к комбинируемым диакритическим знакам U+1DC0 U+1DFF 58
    Дополнительная расширенная латиница U+1E00 U+1EFF 256
    Расширенное греческое письмо U+1F00 U+1FFF 233
    Основная пунктуация U+2000 U+206F 111
    Надстрочные и подстрочные знаки U+2070 U+209F 42
    Знаки валют U+20A0 U+20CF 31
    Комбинируемые диакритические знаки для символов U+20D0 U+20FF 33
    Буквоподобные символы U+2100 U+214F 80
    Числовые формы U+2150 U+218F 60
    Стрелки U+2190 U+21FF 112
    Математические операторы U+2200 U+22FF 256
    Разные технические знаки U+2300 U+23FF 251
    Пиктограммы управляющих символов U+2400 U+243F 39
    Оптическое распознавание символов U+2440 U+245F 11
    Обрамлённые буквы и цифры U+2460 U+24FF 160
    Псевдографика U+2500 U+257F 128
    Блочные элементы U+2580 U+259F 32
    Геометрические фигуры U+25A0 U+25FF 96
    Разные символы U+2600 U+26FF 256
    Dingbats U+2700 U+27BF 192
    Разные математические символы — A U+27C0 U+27EF 48
    Дополнительные стрелки — A U+27F0 U+27FF 16
    Шрифт Брайля U+2800 U+28FF 256
    Дополнительные стрелки — B U+2900 U+297F 128
    Разные математические символы — B U+2980 U+29FF 128
    Дополнительные математические операторы U+2A00 U+2AFF 256
    Разные символы и стрелки U+2B00 U+2BFF 206
    Глаголица U+2C00 U+2C5F 94
    Расширенная латиница — C U+2C60 U+2C7F 32
    Коптское письмо U+2C80 U+2CFF 123
    Дополнение к грузинскому письму U+2D00 U+2D2F 40
    Древнеливийское письмо U+2D30 U+2D7F 59
    Расширенное эфиопское письмо U+2D80 U+2DDF 79
    Расширенная кириллица — A U+2DE0 U+2DFF 32
    Дополнительная пунктуация U+2E00 U+2E7F 67
    Дополнение к ключам ККЯ U+2E80 U+2EFF 115
    Ключи Канси U+2F00 U+2FDF 214
    Идеографические пояснительные символы U+2FF0 U+2FFF 12
    Символы и пунктуация ККЯ U+3000 U+303F 64
    Хирагана U+3040 U+309F 93
    Катакана U+30A0 U+30FF 96
    Чжуинь фухао U+3100 U+312F 41
    Совместимые элементы хангыля U+3130 U+318F 94
    Камбун U+3190 U+319F 16
    Расширенное чжуинь фухао U+31A0 U+31BF 27
    Черты ККЯ U+31C0 U+31EF 36
    Фонетические расширения катаканы U+31F0 U+31FF 16
    Обрамлённые буквы и месяцы ККЯ U+3200 U+32FF 254
    Совместимые элементы ККЯ U+3300 U+33FF 256
    Унифицированные идеограммы ККЯ — расширение A U+3400 U+4DBF 6191
    Гексаграммы «Книги Перемен» U+4DC0 U+4DFF 64
    Унифицированные идеограммы ККЯ U+4E00 U+9FFF 20941
    Слоговое письмо и U+A000 U+A48F 1165
    Ключи письма и U+A490 U+A4CF 55
    Лису U+A4D0 U+A4FF 48
    Ваи U+A500 U+A63F 300
    Расширенная кириллица — B U+A640 U+A69F 96
    Бамум U+A6A0 U+A6FF 88
    Символы изменения тона U+A700 U+A71F 32
    Расширенная латиница — D U+A720 U+A7FF 159
    Силхетское нагари U+A800 U+A82F 44
    Общеиндийские числовые формы U+A830 U+A83F 10
    Монгольское квадратное письмо U+A840 U+A87F 56
    Саураштра U+A880 U+A8DF 81
    Расширенное деванагари U+A8E0 U+A8FF 30
    Кая-ли U+A900 U+A92F 48
    Реджанг U+A930 U+A95F 37
    Расширенные элементы хангыля — A U+A960 U+A97F 29
    Яванское письмо U+A980 U+A9DF 91
    Расширенное бирманское письмо — B U+A9E0 U+A9FF 31
    Чамское письмо U+AA00 U+AA5F 83
    Расширенное бирманское письмо — A U+AA60 U+AA7F 32
    Тай-вьет U+AA80 U+AADF 72
    Расширения манипури U+AAE0 U+AAFF 23
    Расширенное эфиопское письмо — A U+AB00 U+AB2F 32
    Расширенная латиница — E U+AB30 U+AB6F 54
    Дополнение к чероки U+AB70 U+ABBF 80
    Манипури U+ABC0 U+ABFF 56
    Слоговое письмо хангыля U+AC00 U+D7AF 2
    Расширенные элементы хангыля — B U+D7B0 U+D7FF 72
    Верхняя часть суррогатных пар U+D800 U+DB7F 2
    Верхняя часть суррогатных пар для частного использования U+DB80 U+DBFF 2
    Нижняя часть суррогатных пар U+DC00 U+DFFF 2
    Область для частного использования U+E000 U+F8FF 2
    Совместимые идеограммы ККЯ U+F900 U+FAFF 472
    Алфавитные формы представления U+FB00 U+FB4F 58
    Арабские формы представления — A U+FB50 U+FDFF 643
    Вариантные селекторы U+FE00 U+FE0F 16
    Вертикальные формы U+FE10 U+FE1F 10
    Комбинируемые полузнаки U+FE20 U+FE2F 16
    Совместимые формы ККЯ U+FE30 U+FE4F 32
    Малые вариантные формы U+FE50 U+FE6F 26
    Арабские формы представления — B U+FE70 U+FEFF 141
    Полуширинные и полноширинные формы U+FF00 U+FFEF 225
    Специальные символы U+FFF0 U+FFFF 7
    Слоги линейного письма Б U+10000 U+1007F 88
    Идеограммы линейного письма Б U+10080 U+100FF 123
    Эгейские цифры U+10100 U+1013F 57
    Древнегреческие цифры U+10140 U+1018F 77
    Древние символы U+10190 U+101CF 13
    Фестский диск U+101D0 U+101FF 46
    Ликийское письмо U+10280 U+1029F 29
    Карийское письмо U+102A0 U+102DF 49
    Коптские цифры епакты U+102E0 U+102FF 28
    Древнеиталийское письмо U+10300 U+1032F 36
    Готское письмо U+10330 U+1034F 27
    Древнепермское письмо U+10350 U+1037F 43
    Угаритское письмо U+10380 U+1039F 31
    Древнеперсидское письмо U+103A0 U+103DF 50
    Дезеретское письмо U+10400 U+1044F 80
    Алфавит Шоу U+10450 U+1047F 48
    Сомалийское письмо U+10480 U+104AF 40
    Эльбасанское письмо U+10500 U+1052F 40
    Агванское письмо U+10530 U+1056F 53
    Линейное письмо А U+10600 U+1077F 341
    Кипрское письмо U+10800 U+1083F 55
    Имперское арамейское письмо U+10840 U+1085F 31
    Пальмирское письмо U+10860 U+1087F 32
    Набатейское письмо U+10880 U+108AF 40
    Хатран U+108E0 U+108FF 26
    Финикийское письмо U+10900 U+1091F 29
    Лидийское письмо U+10920 U+1093F 27
    Мероитские иероглифы U+10980 U+1099F 32
    Мероитский курсив U+109A0 U+109FF 90
    Кхароштхи U+10A00 U+10A5F 65
    Древнее южноаравийское письмо U+10A60 U+10A7F 32
    Древнее северноаравийское письмо U+10A80 U+10A9F 32
    Манихейское письмо U+10AC0 U+10AFF 51
    Авестийское письмо U+10B00 U+10B3F 61
    Парфянское эпиграфическое письмо U+10B40 U+10B5F 30
    Пахлевийское эпиграфическое письмо U+10B60 U+10B7F 27
    Псалтирь пахлеви U+10B80 U+10BAF 29
    Древнетюркское руническое письмо U+10C00 U+10C4F 73
    Венгерские руны U+10C80 U+10CFF 108
    Цифры руми U+10E60 U+10E7F 31
    Брахми U+11000 U+1107F 109
    Кайтхи U+11080 U+110CF 66
    Соранг-сомпенг U+110D0 U+110FF 35
    Чакма U+11100 U+1114F 67
    Махаджани U+11150 U+1117F 39
    Шарада U+11180 U+111DF 94
    Сингальские архаические цифры U+111E0 U+111FF 20
    Ходжики U+11200 U+1124F 61
    Мултани U+11280 U+112AF 38
    Худабади U+112B0 U+112FF 69
    Грантха U+11300 U+1137F 85
    Тирхута U+11480 U+114DF 82
    Сиддхаматрика U+11580 U+115FF 92
    Моди U+11600 U+1165F 79
    Такри U+11680 U+116CF 66
    Ахом U+11700 U+1173F 57
    Варанг-кшити U+118A0 U+118FF 84
    По Чин Хо U+11AC0 U+11AFF 57
    Клинопись U+12000 U+123FF 922
    Клинописные цифры и пунктуация U+12400 U+1247F 116
    Раннединастическая клинопись U+12480 U+1254F 196
    Египетские иероглифы U+13000 U+1342F 1071
    Анатолийские иероглифы U+14400 U+1467F 583
    Дополнение к бамуму U+16800 U+16A3F 569
    Мро U+16A40 U+16A6F 43
    Басса U+16AD0 U+16AFF 36
    Пахау U+16B00 U+16B8F 127
    Мяо U+16F00 U+16F9F 133
    Дополнение к кане U+1B000 U+1B0FF 2
    Стенография Дюплойе U+1BC00 U+1BC9F 143
    Форматирующие символы стенографии U+1BCA0 U+1BCAF 4
    Византийские музыкальные символы U+1D000 U+1D0FF 246
    Музыкальные символы U+1D100 U+1D1FF 231
    Древнегреческая нотопись U+1D200 U+1D24F 70
    Символы «Канона великого сокровенного» U+1D300 U+1D35F 87
    Цифры счётных палочек U+1D360 U+1D37F 18
    Математические буквы и цифры U+1D400 U+1D7FF 996
    SignWriting U+1D800 U+1DAAF 672
    Кикакуи U+1E800 U+1E8DF 213
    Арабские математические алфавитные символы U+1EE00 U+1EEFF 143
    Кости для маджонга U+1F000 U+1F02F 44
    Кости для домино U+1F030 U+1F09F 100
    Игральные карты U+1F0A0 U+1F0FF 82
    Дополнение к обрамлённым буквам и цифрам U+1F100 U+1F1FF 173
    Дополнение к обрамлённым идеографическим символам U+1F200 U+1F2FF 57
    Разные символы и пиктограммы U+1F300 U+1F5FF 766
    Эмотиконы U+1F600 U+1F64F 80
    Орнаментные символы U+1F650 U+1F67F 48
    Транспортные и картографические символы U+1F680 U+1F6FF 98
    Алхимические символы U+1F700 U+1F77F 116
    Расширенные геометрические фигуры U+1F780 U+1F7FF 85
    Дополнительные стрелки — C U+1F800 U+1F8FF 148
    Дополнительные символы и пиктограммы U+1F900 U+1F9FF 15
    Унифицированные идеограммы ККЯ — расширение B U+20000 U+2A6DF 42676
    Унифицированные идеограммы ККЯ — расширение C U+2A700 U+2B73F 60
    Унифицированные идеограммы ККЯ — расширение D U+2B740 U+2B81F 27
    Унифицированные идеограммы ККЯ — расширение E U+2B820 U+2CEAF 2
    Дополнение к совместимым иероглифам ККЯ U+2F800 U+2FA1F 542
    Tags U+E0000 U+E007F 97
    Дополнение к вариантным селекторам U+E0100 U+E01EF 240
    Дополнительная область для частного использования — A U+F0000 U+FFFFF 4
    Дополнительная область для частного использования — B U+100000 U+10FFFF 4

    Принципы Стандарта Юникод


    Стандарт Юникод устанавливает следующие фундаментальные принципы:

    • Универсальность — каждую когда-либо используемую письменную система следует уважать и представить в стандарте.
    • Логический порядок — в двунаправленном тексте символы хранятся в логическом порядке, а не в соответствии с представлением.
    • Эффективность — документация должна быть эффективной и полной.
    • Унификация — если разные культуры или языки используют один и тот же символ, он должен быть включен только один раз. Это ведёт к следующему пункту.
    • Символы, а не глифы — кодируются только символы, а не глифы. В двух словах, глифы являются фактической графической репрезентацией.
    • Динамическая композиция — новые символы могут быть составлены из других, уже стандартизированных символов. Например, символ [Ä] может состоять из символа [A] и символа диерезиса [¨].
    • Семантика — включённые символы должны быть чётко определены и отличаться от других.
    • Стабильность — однажды определённые, символы никогда не будут удалены, а их кодовые точки никогда не будут переназначены. В случае ошибки кодовая точка считается устаревшей.
    • Обычный текст — символы в стандарте являются текстом, они никогда не могут быть разметкой или метасимволами.
    • Конвертируемость — любая другая используемая кодировка должна иметь возможность быть представленной в терминах кодировки Юникода.

    Источник: описание принципов c codepoints.net.

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


    • Версия 11.0 (черновик)
    • Версия 10.0 (последняя версия, опубликована 20.06.2017 г.)
    • Версия 9.0
    • Версия 8.0
    • Версия 7.0
    • Версия 6.3
    • Версия 6.2
    • Версия 6.1
    • Версия 6.0
    • Версия 5.2
    • Версия 5.1
    • Версия 5.0 (недоступна)
    • Версия 4.0.1
    • Версия 4.0
Источник: https://habr.com/ru/post/485148/


Интересные статьи

Интересные статьи

На работе я занимаюсь поддержкой пользователей и обслуживанием коробочной версии CRM Битрикс24, в том числе и написанием бизнес-процессов. Нужно отметить, что на самом деле я не «чист...
Если честно, к Д7 у меня несколько неоднозначное отношение. В некоторых местах я попискиваю от восторга, а в некоторых хочется топать ногами и ругаться неприличными словами.
Каждый лишний элемент на сайте — это кнопка «Не купить», каждая непонятность или трудность, с которой сталкивается клиент — это крестик, закрывающий в браузере вкладку с вашим интернет-магазином.
Эта статья посвящена одному из способов сделать в 1с-Битрикс форму в всплывающем окне. Достоинства метода: - можно использовать любые формы 1с-Битрикс, которые выводятся компонентом. Например, добавле...
Основанная в 1998 году компания «Битрикс» заявила о себе в 2001 году, запустив первый в России интернет-магазин программного обеспечения Softkey.ru.