Aller au contenu

Blocs Unicode

Unicode divise son espace de code en blocs nommés, chacun une plage contiguë réservée à un script ou une famille de symboles. Savoir dans quel bloc vit un caractère est ce qui transforme un mystère — pourquoi cette colle s'est cassée, pourquoi cette regex la manque — en une question répondable.

Les noms de bloc sont des identifiants, pas des descriptions : ils sont utilisés littéralement dans un regex comme \p{Block=Cyrillic} et dans chaque fichier de données Unicode, donc ils restent en anglais dans chaque langue. Ce qui est traduit est la phrase à côté d'eux.

C'est une sélection curée plutôt que tous les environ 340 blocs — ceux qui se présentent quand on travaille avec du texte. La table ASCII couvre le premier bloc en détail complet ; cette page commence où celle-ci s'arrête.

Latin

5

Le latin est réparti sur plusieurs blocs, c'est pourquoi le faire correspondre par bloc ne fonctionne jamais vraiment.

GammeBlocQu'est-ce que c'estÉchantillon
U+0000–U+007FBasic LatinASCII, inchangé : lettres latines, chiffres, ponctuation, codes de contrôleA z 0 ?
U+0080–U+00FFLatin-1 SupplementAccents européens occidentaux, plus £ § × ÷ et l'espace insécableé ñ ü ×
U+0100–U+017FLatin Extended-AAccents d'Europe centrale et orientale — č, ł, ő, șč ł ő š
U+0180–U+024FLatin Extended-BLettres supplémentaires pour les orthographes africaines et phonétiquesƒ ǎ ȳ
U+1E00–U+1EFFLatin Extended AdditionalVietnamien et autres lettres latines à plusieurs accentsạ ế ṛ

Marques combinatrices et modificateurs

4

Ceux-ci s'attachent au caractère avant eux et n'ont pas de largeur propre.

GammeBlocQu'est-ce que c'estÉchantillon
U+0300–U+036FCombining Diacritical MarksLes accents appliqués au caractère précédentLa deuxième façon, décomposée d'écrire é. Normaliser en NFC pour le réduire.◌́ ◌̈ ◌̌
U+02B0–U+02FFSpacing Modifier LettersLettres en exposant et marques de stress et de ton IPAʰ ˈ ˚
U+FE00–U+FE0FVariation SelectorsSélecteurs invisibles choisissant texte ou présentation emojiVS16 est ce qui transforme ✔ en emoji. Invisible, mais il compte.
U+FE20–U+FE2FCombining Half MarksMoitiés de marques s'étendant sur deux caractères

Autres scripts

8
GammeBlocQu'est-ce que c'estÉchantillon
U+0370–U+03FFGreek and CopticGrec, et les lettres coptes qui partagent son blocα Ω π
U+0400–U+04FFCyrillicRusse, ukrainien, serbe, bulgare et alphabets connexesд Я ж
U+0590–U+05FFHebrewLettres hébraïques, voyelles ponctuées et marques de cantillationא ש
U+0600–U+06FFArabicLettres arabes, sous leurs formes isoléesا ب ي
U+0900–U+097FDevanagariHindi, sanskrit, marathi et langues connexesक ह
U+0E00–U+0E7FThaiConsonnes thaïlandaises, voyelles et marques de tonก ท
U+10A0–U+10FFGeorgianMkhedruli géorgienა ბ
U+1F00–U+1FFFGreek ExtendedGrec polytone — les accents des textes classiquesᾰ ῶ

Ponctuation et nombres

5

La source de la plupart des caractères invisibles qui survivent à une copie-colle.

GammeBlocQu'est-ce que c'estÉchantillon
U+2000–U+206FGeneral PunctuationTirets, guillemets bouclés, points de suspension — et la plupart des espaces invisiblesL'espace de largeur nulle U+200B et le joncteur de mot U+2060 vivent ici.– — “ ” …
U+2070–U+209FSuperscripts and SubscriptsChiffres et lettres en exposant et en indice⁰ ⁴ ₂
U+20A0–U+20CFCurrency SymbolsSignes monétaires que Latin-1 n'a pas de place pour — €, ₴, ₹, ₺€ ₴ ₺
U+2100–U+214FLetterlike SymbolsSymboles construits à partir de lettres — ™, №, ℃, ℓ™ ℃ №
U+2150–U+218FNumber FormsFractions vulgaires et chiffres romains en tant que caractères uniques⅓ ⅕ Ⅷ

Symboles et dessin

9
GammeBlocQu'est-ce que c'estÉchantillon
U+2190–U+21FFArrowsFlèches dans chaque direction, simple et double← ↔ ⇒
U+2200–U+22FFMathematical OperatorsOpérateurs mathématiques — ∀, ∑, ≠, ∞∀ ∑ ≠
U+2300–U+23FFMiscellaneous TechnicalSymboles de clavier et techniques — ⌘, ⌥, ⌫, ⏎⌘ ⌥ ⏎
U+2500–U+257FBox DrawingLignes et coins pour les boîtes de terminal et les tableaux─ ┌ ╬
U+2580–U+259FBlock ElementsBlocs solides et ombrés, utilisés pour les graphiques à barres de terminal█ ▓ ░
U+25A0–U+25FFGeometric ShapesCarrés, cercles, triangles et diamants■ ● ▲
U+2600–U+26FFMiscellaneous SymbolsTemps, astrologie, échecs, cartes et costumes de cartes☀ ★ ♥
U+2700–U+27BFDingbatsOrnements de l'imprimerie — coches, ciseaux, étoiles✂ ✓ ➜
U+2800–U+28FFBraille PatternsLes 256 motifs de points Braille, utilisés également pour les graphiques de terminal⠁ ⣿

CJK et largeur complète

6

Les formes de largeur complète sont des caractères distincts de leurs jumeaux ASCII, pas une police.

GammeBlocQu'est-ce que c'estÉchantillon
U+3000–U+303FCJK Symbols and PunctuationEspace idéographique et ponctuation CJKU+3000 est un espace de largeur complète et n'est pas coupé par la plupart des règles d'espace blanc.  、 。
U+3040–U+309FHiraganaLa syllabaire japonaise pour les mots natifs et la grammaireあ ん
U+30A0–U+30FFKatakanaLa syllabaire japonaise pour les mots d'emprunt et l'emphaseア ン
U+4E00–U+9FFFCJK Unified IdeographsLe bloc Han principal — près de 21 000 caractères partagés par le chinois, le japonais et le coréen日 本 語
U+AC00–U+D7AFHangul SyllablesLes 11 172 syllabes coréennes précomposéesChacun peut également être écrit en tant que Jamo séparé, que la normalisation concilie.한 글
U+FF00–U+FFEFHalfwidth and Fullwidth FormsCopies de largeur complète d'ASCII et demi-largeur KatakanaA n'est pas A. Le texte collé à partir des formes CJK doit souvent être replié en ASCII.A ! ア

Au-dessus de U+FFFF, et les cas spéciaux

10

Tout ici prend deux unités UTF-16, c'est où viennent les bugs de longueur de chaîne.

GammeBlocQu'est-ce que c'estÉchantillon
U+D800–U+DB7FHigh SurrogatesPremière moitié d'une paire UTF-16 — jamais valide seuleUn remplaçant solitaire est ce qu'une chaîne coupée au milieu d'un emoji laisse derrière elle.
U+DC00–U+DFFFLow SurrogatesDeuxième moitié d'une paire UTF-16 — jamais valide seule
U+E000–U+F8FFPrivate Use AreaNon attribué par conception, pour les accords privésOù les polices d'icônes mettent leurs glyphes. Sans sens sans la police correspondante.
U+FFF0–U+FFFFSpecialsLe caractère de remplacement et les parents de la marque d'ordre des octetsU+FFFD est ce que vous voyez quand un décodeur a renoncé à un octet.
U+1D400–U+1D7FFMathematical Alphanumeric SymbolsAlphabets gras, italiques, scriptés et double-frappés en tant que caractèresLa source de 𝐟𝐚𝐤𝐞 𝐛𝐨𝐥𝐝 dans les noms de médias sociaux. Insearchable.𝐀 𝓪 𝟙
U+1F300–U+1F5FFMiscellaneous Symbols and PictographsLa plupart des emojis sans visage — météo, objets, places, symboles🌍 🔥 📄
U+1F600–U+1F64FEmoticonsL'emoji du visage😀 🙂
U+1F680–U+1F6FFTransport and Map SymbolsL'emoji du visage🚀 🛑
U+1F900–U+1F9FFSupplemental Symbols and PictographsVéhicules, circulation et symboles cartographiques🤖 🧠
U+E0000–U+E007FTagsAjouts emoji ultérieurs — faces ultérieures, gestes, objetsCaractères d'étiquette invisibles, utilisés dans les séquences d'indicateurs

FAQ

Quelle est la différence entre un bloc et un script ?
Un bloc est une plage contiguë de points de code ; un script est le système d'écriture auquel appartient un caractère. Ce ne sont pas les mêmes et ils sont souvent en désaccord — les caractères latins sont dispersés sur au moins sept blocs, et le bloc Combining Diacritical Marks est utilisé par plusieurs scripts à la fois. En regex, \p{Script=Latin} est presque toujours ce que vous voulez, pas \p{Block=…}.
Pourquoi les lignes de remplacement n'ont pas d'exemples de caractères ?
Parce qu'un remplaçant n'est pas un caractère. U+D800–U+DFFF sont réservés comme un mécanisme de paire pour UTF-16 : deux d'entre eux ensemble encodent un point de code au-dessus de U+FFFF. Seuls, ils sont du texte invalide, ce qui est exactement pourquoi une chaîne coupée au milieu d'un emoji produit le caractère de remplacement — vous avez conservé la moitié d'une paire.
Pourquoi mon caractère accentué compte-t-il parfois comme deux ?
Parce qu'il y a deux façons de l'écrire. é peut être un point de code d'une supplémentation Latin-1 Supplement, ou e suivi d'une marque diacritique aiguë combinatrice du bloc Combining Diacritical Marks. Ils ont l'air identiques et se comparent comme inégaux. Normaliser en NFC réduit la deuxième forme à la première, et c'est à cela que sert un outil de normalisation.
Un emoji est-il un caractère ?
Rarement. Un seul emoji affiché est souvent plusieurs points de code — un symbole de base, des modificateurs de teinte de peau, des sélecteurs de variation et des joineurs de largeur nulle liant une famille ensemble. Une longueur de 1 est l'exception, pas la règle, et tout code qui découpe les chaînes par index finira par en diviser un.