
Перед вами обновляемый список самых замечательных «вкусностей» Юникода, а также пакетов и ресурсов
Юникод — это потрясающе! До его появления международная коммуникация была изнурительной: каждый определял свой отдельный расширенный набор символов в верхней половине 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)
- Один ко многим: (β → SS)
Прикладные кодировки Юникода
| Тип кодирования | Пример |
|---|---|
| Объект 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,sU+0073, U+0073 U+0130 İЛатинская заглавная буква «I» с точкой сверху i,̇U+0069, U+0307 U+0149 ʼnЛатинская строчная буква «n» предшествующим апострофом ʼ,nU+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,sU+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,fU+0066, U+0066 U+FB01 fiЛатинская строчная лигатура Fi f,iU+0066, U+0069 U+FB02 flЛатинская строчная лигатура Fl f,lU+0066, U+006C U+FB03 ffiЛатинская строчная лигатура Ffi f,f,iU+0066, U+0066, U+0069 U+FB04 fflЛатинская строчная лигатура Ffl f,f,lU+0066, U+0066, U+006C U+FB05 ſtЛатинская строчная лигатура длинная S T s,tU+0073, U+0074 U+FB06 stЛатинская строчная лигатура St s,tU+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


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

