Preskočiť na obsah

Unicode bloky

Unicode delí svoj kódový priestor na pomenované bloky, z ktorých každý je súvislý rozsah vyhradený jednému písmu alebo jednej rodine symbolov. Vedieť, v ktorom bloku znak žije, je to, čo zmení záhadu — prečo sa toto vloženie pokazilo, prečo ho tento regex nenašiel — na otázku, ktorá má odpoveď.

Názvy blokov sú identifikátory, nie opisy: používajú sa doslovne v regexe ako \p{Block=Cyrillic} a v každom dátovom súbore Unicode, takže zostávajú v každom jazyku po anglicky. Prekladá sa veta vedľa nich.

Ide o vybranú množinu, nie o všetkých približne 340 blokov — sú tu tie, ktoré sa vynoria pri práci s textom. Prvý blok pokrýva do detailu tabuľka ASCII; táto stránka začína tam, kde tá končí.

Latinka

5

Latinka je rozložená vo viacerých blokoch, a preto jej hľadanie podľa bloku nikdy úplne nevyjde.

RozsahBlokČo v ňom jeUkážka
U+0000–U+007FBasic LatinASCII bez zmeny: latinské písmená, číslice, interpunkcia, riadiace kódyA z 0 ?
U+0080–U+00FFLatin-1 SupplementZápadoeurópska diakritika, plus £ § × ÷ a nezlomiteľná medzeraé ñ ü ×
U+0100–U+017FLatin Extended-AStredoeurópska a východoeurópska diakritika — č, ł, ő, șč ł ő š
U+0180–U+024FLatin Extended-BĎalšie písmená pre africké a fonetické pravopisyƒ ǎ ȳ
U+1E00–U+1EFFLatin Extended AdditionalVietnamské a iné latinské písmená s viacerými akcentmiạ ế ṛ

Kombinujúce a modifikačné znaky

4

Pripájajú sa k predchádzajúcemu znaku a samy nemajú šírku.

RozsahBlokČo v ňom jeUkážka
U+0300–U+036FCombining Diacritical MarksAkcenty pripájané k predchádzajúcemu znakuDruhý, rozložený spôsob zápisu é. Normalizácia na NFC ho zlúči.◌́ ◌̈ ◌̌
U+02B0–U+02FFSpacing Modifier LettersHorné indexy písmen a znaky prízvuku a tónu z IPAʰ ˈ ˚
U+FE00–U+FE0FVariation SelectorsNeviditeľné selektory voliace textové alebo emoji zobrazenieVS16 je to, čo zmení ✔ na emoji. Neviditeľné, ale počíta sa.
U+FE20–U+FE2FCombining Half MarksPolovice znakov roztiahnutých cez dva znaky

Ďalšie písma

8
RozsahBlokČo v ňom jeUkážka
U+0370–U+03FFGreek and CopticGrécka abeceda a koptské písmená, ktoré s ňou delia blokα Ω π
U+0400–U+04FFCyrillicRuská, ukrajinská, srbská, bulharská a príbuzné azbukyд Я ж
U+0590–U+05FFHebrewHebrejské písmená, vokalizačné body a kantilačné znakyא ש
U+0600–U+06FFArabicArabské písmená v izolovaných podobáchا ب ي
U+0900–U+097FDevanagariHindčina, sanskrit, maráthčina a príbuzné jazykyक ह
U+0E00–U+0E7FThaiThajské spoluhlásky, samohlásky a tónové znakyก ท
U+10A0–U+10FFGeorgianGruzínske Mkhedruliა ბ
U+1F00–U+1FFFGreek ExtendedPolytonická gréčtina — akcenty klasických textovᾰ ῶ

Interpunkcia a čísla

5

Zdroj väčšiny neviditeľných znakov, ktoré prežijú kopírovanie.

RozsahBlokČo v ňom jeUkážka
U+2000–U+206FGeneral PunctuationPomlčky, typografické úvodzovky, výpustka — a väčšina neviditeľných medzierŽijú tu U+200B medzera nulovej šírky a U+2060 spojovník slov.– — “ ” …
U+2070–U+209FSuperscripts and SubscriptsČíslice a písmená v hornom a dolnom indexe⁰ ⁴ ₂
U+20A0–U+20CFCurrency SymbolsMenové znaky, na ktoré v Latin-1 nezostalo miesto — €, ₴, ₹, ₺€ ₴ ₺
U+2100–U+214FLetterlike SymbolsSymboly zložené z písmen — ™, №, ℃, ℓ™ ℃ №
U+2150–U+218FNumber FormsZlomky a rímske číslice ako jednotlivé znaky⅓ ⅕ Ⅷ

Symboly a kreslenie

9
RozsahBlokČo v ňom jeUkážka
U+2190–U+21FFArrowsStrelky do všetkých strán, jednoduché aj dvojité← ↔ ⇒
U+2200–U+22FFMathematical OperatorsMatematické operátory — ∀, ∑, ≠, ∞∀ ∑ ≠
U+2300–U+23FFMiscellaneous TechnicalKlávesové a technické symboly — ⌘, ⌥, ⌫, ⏎⌘ ⌥ ⏎
U+2500–U+257FBox DrawingLinky a rohy na rámy a tabuľky v termináli─ ┌ ╬
U+2580–U+259FBlock ElementsPlné a šrafované bloky, používané na stĺpcové grafy v termináli█ ▓ ░
U+25A0–U+25FFGeometric ShapesŠtvorce, kruhy, trojuholníky a diamanty■ ● ▲
U+2600–U+26FFMiscellaneous SymbolsPočasie, astrológia, šach, karty a kartové farby☀ ★ ♥
U+2700–U+27BFDingbatsTlačiarenské ozdoby — fajky, nožnice, hviezdy✂ ✓ ➜
U+2800–U+28FFBraille PatternsVšetkých 256 braillových vzorov, používaných aj na grafiku v termináli⠁ ⣿

CJK a plná šírka

6

Znaky plnej šírky sú iné znaky než ich ASCII dvojčatá, nie iný font.

RozsahBlokČo v ňom jeUkážka
U+3000–U+303FCJK Symbols and PunctuationIdeografická medzera a CJK interpunkciaU+3000 je medzera plnej šírky a väčšina pravidiel na biele znaky ju neodstrihne.  、 。
U+3040–U+309FHiraganaJaponská slabičná abeceda pre pôvodné slová a gramatikuあ ん
U+30A0–U+30FFKatakanaJaponská slabičná abeceda pre prevzaté slová a zdôraznenieア ン
U+4E00–U+9FFFCJK Unified IdeographsHlavný blok znakov Han — takmer 21 000 znakov spoločných čínštine, japonštine a kórejčine日 本 語
U+AC00–U+D7AFHangul SyllablesVšetkých 11 172 predskladaných kórejských slabíkKaždú možno zapísať aj ako samostatné Jamo, čo zmieruje normalizácia.한 글
U+FF00–U+FFEFHalfwidth and Fullwidth FormsKópie ASCII v plnej šírke a katakana v polovičnejA nie je A. Text vložený z CJK formulárov často treba zložiť na ASCII.A ! ア

Nad U+FFFF a špeciálne prípady

10

Všetko tu zaberá dve UTF-16 jednotky, a odtiaľ pochádzajú chyby v dĺžke reťazca.

RozsahBlokČo v ňom jeUkážka
U+D800–U+DB7FHigh SurrogatesPrvá polovica UTF-16 páru — samostatne nikdy platnáOsamotený surrogate je to, čo zostane po reťazci prerezanom cez emoji.
U+DC00–U+DFFFLow SurrogatesDruhá polovica UTF-16 páru — samostatne nikdy platná
U+E000–U+F8FFPrivate Use AreaZámerne nepriradené, pre súkromné dohodySem dávajú ikonové fonty svoje glyfy. Bez zodpovedajúceho fontu bez významu.
U+FFF0–U+FFFFSpecialsNáhradný znak a príbuzní značky poradia bajtovU+FFFD je to, čo vidíte, keď dekodér nad nejakým bajtom vzdal.
U+1D400–U+1D7FFMathematical Alphanumeric SymbolsTučné, kurzívne, písané a dvojito ryté abecedy ako znakyZdroj 𝐤𝐫𝐢𝐤𝐥𝐚𝐯𝐞𝐣 „tučnej“ v menách na sieťach. Nedohľadateľné.𝐀 𝓪 𝟙
U+1F300–U+1F5FFMiscellaneous Symbols and PictographsVäčšina emoji bez tvárí — počasie, predmety, miesta, symboly🌍 🔥 📄
U+1F600–U+1F64FEmoticonsEmoji tvárí😀 🙂
U+1F680–U+1F6FFTransport and Map SymbolsVozidlá, doprava a mapové symboly🚀 🛑
U+1F900–U+1F9FFSupplemental Symbols and PictographsNeskoršie prírastky emoji — ďalšie tváre, gestá, predmety🤖 🧠
U+E0000–U+E007FTagsNeviditeľné tag znaky, používané v sekvenciách vlajokZároveň nástroj na prepašovanie neviditeľného textu vnútri normálne vyzerajúceho reťazca.

Časté otázky

Aký je rozdiel medzi blokom a písmom (script)?
Blok je súvislý rozsah kódových bodov; písmo je systém, do ktorého znak patrí. Nie je to to isté a často si to protirečí — latinské znaky sú rozptýlené najmenej v siedmich blokoch a blok Combining Diacritical Marks používa niekoľko písiem naraz. V regexe je takmer vždy správne \p{Script=Latin}, nie \p{Block=…}.
Prečo nemajú riadky so surrogates žiadne ukážky?
Pretože surrogate nie je znak. U+D800–U+DFFF sú vyhradené ako párový mechanizmus pre UTF-16: dva spolu kódujú jeden kódový bod nad U+FFFF. Samostatne sú neplatný text, a presne preto reťazec prerezaný v strede emoji vyprodukuje náhradný znak — zostala vám polovica páru.
Prečo sa mi znak s diakritikou niekedy počíta ako dva?
Pretože existujú dva spôsoby, ako ho zapísať. é môže byť jeden kódový bod z Latin-1 Supplement, alebo e nasledované kombinujúcim dlhým akcentom z bloku Combining Diacritical Marks. Vyzerajú rovnako a porovnajú sa ako nerovné. Normalizácia na NFC druhú podobu zlúči do prvej, a práve na to je nástroj na normalizáciu.
Je emoji jeden znak?
Zriedka. Jedno zobrazené emoji je často niekoľko kódových bodov — základný symbol, modifikátory odtieňa pleti, variačné selektory a spojovníky nulovej šírky držiace rodinu spolu. Dĺžka 1 je výnimka, nie pravidlo, a každý kód, ktorý reťazce reže podľa indexu, raz jedno rozpolí.