Перейти до вмісту

Блоки Unicode

Unicode ділить свій простір кодів на названі блоки, кожен суміжний діапазон зарезервований для одного сценарію або однієї сімейства символів. Знання того, у якому блоці живе символ, перетворює таємницю — чому цей вставок зломав, чому цей регулярний вираз його пропускає — на запитання, на яке можна відповісти.

Назви блоків — це ідентифікатори, а не опису: вони використовуються дослівно в регулярному виразі як \p{Block=Cyrillic} й у кожному файлі даних Unicode, тож вони залишаються англійською в кожній мові. Те, що перекладається, — це пропозиція поруч із ними.

Це виважений вибір, а не всі приблизно 340 блоків — ті, що виникають при роботі з текстом. Таблиця ASCII охоплює перший блок у повній деталізації; ця сторінка починається там, де та закінчується.

Латинка

5

Latin розповсюджена кількома блоками, саме тому відповідність їй по блоку ніколи цілком не працює.

ДіапазонБлокЩо в ньомуЗразок
U+0000–U+007FBasic LatinASCII, без змін: латинські літери, цифри, розділові знаки, коди керуванняA z 0 ?
U+0080–U+00FFLatin-1 SupplementЗахідноєвропейські наголоси, плюс £ § × ÷ й неперевирна пробілé ñ ü ×
U+0100–U+017FLatin Extended-AЦентральні й східноєвропейські наголоси — č, ł, ő, șč ł ő š
U+0180–U+024FLatin Extended-BДодаткові літери для африканських і фонетичних правописуƒ ǎ ȳ
U+1E00–U+1EFFLatin Extended AdditionalВ'єтнамський й інші багато-наголошені латинські літериạ ế ṛ

Комбінуючі знаки й модифікатори

4

Вони прикріплюються до символу перед ними й не мають ширини самі.

ДіапазонБлокЩо в ньомуЗразок
U+0300–U+036FCombining Diacritical MarksНаголоси застосовані до попереднього символуДругий, розкладений спосіб написати é. Нормалізуйте до NFC, щоб схопити його.◌́ ◌̈ ◌̌
U+02B0–U+02FFSpacing Modifier LettersСупер-маленькі літери й наголоси й тонові знаки IPAʰ ˈ ˚
U+FE00–U+FE0FVariation SelectorsНевидимі селектори, що вибирають текст або емодзі представленняVS16 — це те, що робить ✔ емодзі. Невидимі, але рахується.
U+FE20–U+FE2FCombining Half MarksПоловини знаків, що охоплюють два символи

Інші сценарії

8
ДіапазонБлокЩо в ньомуЗразок
U+0370–U+03FFGreek and CopticГрецька, й коптівські літери, що діляють її блокα Ω π
U+0400–U+04FFCyrillicРосійська, українська, сербська, болгарська й пов'язані алфавітид Я ж
U+0590–U+05FFHebrewГебрейські літери, голосні точки й позначки кантиляціїא ש
U+0600–U+06FFArabicАрабські літери, у їхніх ізольованих формахا ب ي
U+0900–U+097FDevanagariГінді, санскрит, маратні й пов'язані мовиक ह
U+0E00–U+0E7FThaiТаїландські приголосні, голосні й тонові знакиก ท
U+10A0–U+10FFGeorgianГрузинський Mkhedruliა ბ
U+1F00–U+1FFFGreek ExtendedПолітонічна грецька — наголоси класичних текстівᾰ ῶ

Розділові знаки й цифри

5

Джерело більшості невидимих символів, які виживають копіювання-вставляння.

ДіапазонБлокЩо в ньомуЗразок
U+2000–U+206FGeneral PunctuationДефіси, кучеряві лапки, еліпсис — й більшість невидимих пробілівU+200B нульова ширина пробіл й U+2060 слово-з'єднувач живуть тут.– — “ ” …
U+2070–U+209FSuperscripts and SubscriptsСупер й суб-скрипт цифри й літери⁰ ⁴ ₂
U+20A0–U+20CFCurrency SymbolsСимволи валюти Latin-1 не має місця для — €, ₴, ₹, ₺€ ₴ ₺
U+2100–U+214FLetterlike SymbolsСимволи побудовані з літер — ™, №, ℃, ℓ™ ℃ №
U+2150–U+218FNumber FormsЧасткові дроби й римські цифри як єдині символи⅓ ⅕ Ⅷ

Символи й малювання

9
ДіапазонБлокЩо в ньомуЗразок
U+2190–U+21FFArrowsСтрілки в кожному напрямку, одинарні й подвійні← ↔ ⇒
U+2200–U+22FFMathematical OperatorsМатематичні оператори — ∀, ∑, ≠, ∞∀ ∑ ≠
U+2300–U+23FFMiscellaneous TechnicalСимволи клавіатури й технічні — ⌘, ⌥, ⌫, ⏎⌘ ⌥ ⏎
U+2500–U+257FBox DrawingЛінії й кути для термінальних коробок й таблиць─ ┌ ╬
U+2580–U+259FBlock ElementsСуцільні й затінені блоки, що використовуються для графіків бару терміналу█ ▓ ░
U+25A0–U+25FFGeometric ShapesКвадрати, кола, трикутники й діаманти■ ● ▲
U+2600–U+26FFMiscellaneous SymbolsПогода, астрологія, шахи, карти й карткові костюми☀ ★ ♥
U+2700–U+27BFDingbatsТипографські прикраси — відзначити, ножиці, зірки✂ ✓ ➜
U+2800–U+28FFBraille PatternsУсі 256 шаблонів точок шрифту Браїля, що використовуються для терміналу також графіка⠁ ⣿

CJK й повна ширина

6

Форми повної ширини — це окремі символи від їх ASCII близнюків, не шрифт.

ДіапазонБлокЩо в ньомуЗразок
U+3000–U+303FCJK Symbols and PunctuationІдеографічний пробіл й розділові знаки CJKU+3000 — повнофункціональний пробіл й не обрізується більшістю правил пробільного простору.  、 。
U+3040–U+309FHiraganaЯпонська складова система для рідних слів й граматикиあ ん
U+30A0–U+30FFKatakanaЯпонська складова система для запозичених слів й наголосуア ン
U+4E00–U+9FFFCJK Unified IdeographsОсновний блок Хан — майже 21,000 символів, що діляють китайцями, японцями й корейцями日 本 語
U+AC00–U+D7AFHangul SyllablesУсі 11,172 попередньо скомпоновані корейські складиКожен можна також написати як окремі Jamo, що нормалізація узгоджує.한 글
U+FF00–U+FFEFHalfwidth and Fullwidth FormsПовнофункціональні копії ASCII й половина-ширина KatakanaA — не А. Текст, вставлений із форм CJK, часто потребує складання до ASCII.A ! ア

Вище U+FFFF й спеціальні випадки

10

Щось тут займає дві одиниці UTF-16, що звідки беруться помилки довжини рядка.

ДіапазонБлокЩо в ньомуЗразок
U+D800–U+DB7FHigh SurrogatesПерша половина пари UTF-16 — ніколи дійсна сама по собіОдинокий сурогат — це що залишає рядок, розрізаний через емодзі.
U+DC00–U+DFFFLow SurrogatesДруга половина пари UTF-16 — ніколи дійсна сама по собі
U+E000–U+F8FFPrivate Use AreaНе призначено за проектом для приватних угодДе іконки шрифти розмістять свої глифи. Безглуздо без відповідного шрифту.
U+FFF0–U+FFFFSpecialsСимвол заміни й родичі знака порядку байтівU+FFFD — це те, що ви бачите, коли декодер здав.
U+1D400–U+1D7FFMathematical Alphanumeric SymbolsНапівжирна, курсивна, сценарій й подвійно-ударні алфавіти як символиДжерело 𝐟𝐚𝐤𝐞 𝐛𝐨𝐥𝐝 у іменах соціальних мереж. Невідшукуваний.𝐀 𝓪 𝟙
U+1F300–U+1F5FFMiscellaneous Symbols and PictographsБільшість не-обличчя емодзі — погода, предмети, місця, символи🌍 🔥 📄
U+1F600–U+1F64FEmoticonsОбличчя емодзі😀 🙂
U+1F680–U+1F6FFTransport and Map SymbolsТранспортні засоби, трафік й символи карти🚀 🛑
U+1F900–U+1F9FFSupplemental Symbols and PictographsПізніші доповнення емодзі — пізніші обличчя, жести, предмети🤖 🧠
U+E0000–U+E007FTagsНевидимі символи тегів, що використовуються у послідовностях прапорцівТакож вектор для невидимого тексту, що контрабандується всередину звичайно виглядаючого рядка.

FAQ

Яка різниця між блоком й сценарієм?
Блок — це суміжний діапазон кодових точок; сценарій — це система письма, до якої належить символ. Вони не одне й те ж саме й часто розходяться — символи Latin розташовані щонайменше в семи блоках, й блок Combining Diacritical Marks використовується декількома сценаріями одночасно. У регулярному виразі \p{Script=Latin} — це майже завжди те, що ви хочете, а не \p{Block=…}.
Чому рядки сурогату не мають прикладів символів?
Тому що сурогат — це не символ. U+D800–U+DFFF зарезервовані як механізм пари для UTF-16: два з них разом кодують одну кодову точку вище U+FFFF. На своїх вони недійсний текст, що саме тому рядок, розрізаний посередині емодзі, виробляє символ заміни — ви зберегли половину пари.
Чому мій наголошений символ іноді рахується як два?
Тому що є два способи це написати. é може бути однією кодовою точкою із Latin-1 Supplement, або e, за яким слідує комбінуючий гострий наголос із блоку Combining Diacritical Marks. Вони виглядають однаково й порівнюються як нерівні. Нормалізація до NFC схопляє другу форму до першої, й то це інструмент нормалізації для.
Чи емодзі — це один символ?
Рідко. Єдине показане емодзі часто складається з декількох кодових точок — базовий символ, модифікатори тону шкіри, селектори варіацій і з'єднувачі нульової ширини, що біють сім'ю разом. Довжина 1 — це виняток, а не правило, й будь-який код, що розділяє рядки за індексом, врешті-решт розділить один.