Recent from talks
Nothing was collected or created yet.
Unicode character property
View on WikipediaThe Unicode Standard assigns various properties to each Unicode character and code point.[1][2]
The properties can be used to handle characters (code points) in processes, like in line-breaking, script direction right-to-left or applying controls. Some "character properties" are also defined for code points that have no character assigned and code points that are labelled like "<not a character>". The character properties are described in Standard Annex #44.[2]
Properties have levels of forcefulness: normative, informative, contributory, or provisional. For simplicity of specification, a character property can be assigned by specifying a continuous range of code points that have the same property.[3]
Semantic elements
[edit]Properties are displayed in the following order:[4]
[code];[name];[gc];[cc];[bc];[decomposition];[nv-dec];[nv-dig];[nv-num];[bm];[alias];;[upper case];[lower case];[title case]
alias= corrected name. Obsolete. Now tracked with a separate database, but remains for Unicode 1.0 names.bc= bidi (bidirectional) category [L, R etc]bm= bidi mirrored [N or Y]cc= combining class [position of diacritic]decompositiontype or <mapping> = letter + diacritic, ligature X Y, superscript X, font X, initial X, medial X, final X, isolated X, vertical X, etc.gc= general category [letter, symbol, digit, punctuation, case behaviour, etc.]nv= numeric type and value [of a digit]. If numeric type is 'decimal', all 3 slots are filled. If 'digit', the first will be null. (This has been discontinued.) If 'numeric', then the first two will be null and only the last will be used.
The property between alias and upper case is obsolete and is now null for all Unicode characters.
Name and alias
[edit]A Unicode character is assigned a unique Name (na).[1] The name is composed of uppercase letters A–Z, digits 0–9, hyphen-minus and space. Some sequences are excluded: names beginning with a space or hyphen, names ending with a space or hyphen, repeated spaces or hyphens, and space after hyphen are not allowed. The name is guaranteed to be unique within Unicode, and can be used to identify a code point and its character. Ideographic characters, of which there are tens of thousands, are named in the pattern "cjk unified ideograph-hhhh". For example, U+4E00 一 CJK UNIFIED IDEOGRAPH-4E00. Formatting characters also have names: U+00A0 NO-BREAK SPACE.
The following Unicode categories do not have a Name value assigned: Controls (General Category: Cc), Private use (Co), Surrogate (Cs), Non-characters (Cn) and Reserved (Cn). They may be referenced, informally, by a generic or specific meta-name, called "Code Point Labels": <control>, <control-0088>, <reserved>, <noncharacter-hhhh>, <private-use-hhhh>, or <surrogate>. Since these labels contain "<" and ">", they can never appear in a Name, which prevents confusion.
Unicode 1.0 names
[edit]In version 2.0 of Unicode, many names were changed. From then on the rule "a name will never change" came into effect, including the strict (normative) use of alias names. Disused Unicode 1.0 names were moved to the property Alias, to provide backward compatibility.
For example, U+0264 ɤ LATIN SMALL LETTER RAMS HORN has the Unicode 1.0 name "LATIN SMALL LETTER BABY GAMMA".
Character name alias
[edit]Starting from Unicode 2.0, the published name for a code point will never change. Therefore, in the event of a character name being misspelled or if the character name is completely wrong or seriously misleading, a formal Character Name Alias may be assigned to the character, and this alias may be used by applications instead of the actual defective character name.[1] For example, U+FE18 ︘ PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET has the character name alias "PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET" in order to mitigate the misspelling of "bracket" as "brakcet" [sic] in the actual character name; U+A015 ꀕ YI SYLLABLE WU has the character name alias "YI SYLLABLE ITERATION MARK" because, contrary to the character name, it does not have a fixed syllabic value.
In addition to character name aliases which are corrections to defective character names, some characters are assigned aliases which are alternative names or abbreviations. Five types of character name aliases are defined in the Unicode Standard:
- Correction: corrections for misspelled or seriously incorrect character names;
- Control: ISO 6429 names for C0 and C1 control functions (which are not assigned character names in the Unicode Standard);
- Alternate: alternative names for some format characters (only U+FEFF ZERO WIDTH NO-BREAK SPACE which has the alias "BYTE ORDER MARK");
- Figment: Documented labels for some C1 control code functions which are not actual names in any standard;
- Abbreviation: Abbreviations or acronyms for control codes, format characters, spaces, and variation selectors.
All formal character name aliases follow the rules for permissible character names, and are guaranteed to be unique within both the character name alias and the character name namespaces (for this reason, the ISO 6429 name "BELL" is not defined as an alias for U+0007 <control-0007> because U+1F514 is named "BELL"; U+0007 instead has the alias "ALERT").[1]
As of Unicode 17.0, 39 formal character name aliases are defined as corrections for defective character names.[5]
Apart from these normative names, informal names may be shown in the Unicode code charts. These are other commonly used names for a character, and do not have the same character restriction. These informal names are not guaranteed to be unique, and may be changed or removed in later versions of the standard.
General Category
[edit]Each code point is assigned a value for General Category. This is one of the character properties that are also defined for unassigned code points and code points that are defined "not a character".
| General Category (Unicode Character Property)[a] | |||||
|---|---|---|---|---|---|
| Value | Category Major, minor | Basic type[b] | Character assigned[b] | Count[c] (as of 17.0) |
Remarks |
| L, Letter; LC, Cased Letter (Lu, Ll, and Lt only)[d] | |||||
| Lu | Letter, uppercase | Graphic | Character | 1,886 | |
| Ll | Letter, lowercase | Graphic | Character | 2,283 | |
| Lt | Letter, titlecase | Graphic | Character | 31 | Digraphs consisting of an uppercase letter followed by a lowercase letter (e.g., Dž, Lj, Nj, and Dz) |
| Lm | Letter, modifier | Graphic | Character | 410 | A modifier letter |
| Lo | Letter, other | Graphic | Character | 141,062 | An ideograph or a letter in a unicase alphabet |
| M, Mark | |||||
| Mn | Mark, nonspacing | Graphic | Character | 2,059 | |
| Mc | Mark, spacing combining | Graphic | Character | 471 | |
| Me | Mark, enclosing | Graphic | Character | 13 | |
| N, Number | |||||
| Nd | Number, decimal digit | Graphic | Character | 770 | All these, and only these, have Numeric Type = De[e] |
| Nl | Number, letter | Graphic | Character | 239 | Numerals composed of letters or letterlike symbols (e.g., Roman numerals) |
| No | Number, other | Graphic | Character | 915 | E.g., vulgar fractions, superscript and subscript digits, vigesimal digits |
| P, Punctuation | |||||
| Pc | Punctuation, connector | Graphic | Character | 10 | Includes spacing underscore characters such as "_", and other spacing tie characters. Unlike other punctuation characters, these may be classified as "word" characters by regular expression libraries.[f] |
| Pd | Punctuation, dash | Graphic | Character | 27 | Includes several hyphen characters |
| Ps | Punctuation, open | Graphic | Character | 79 | Opening bracket characters |
| Pe | Punctuation, close | Graphic | Character | 77 | Closing bracket characters |
| Pi | Punctuation, initial quote | Graphic | Character | 12 | Opening quotation mark. Does not include the ASCII "neutral" quotation mark. May behave like Ps or Pe depending on usage |
| Pf | Punctuation, final quote | Graphic | Character | 10 | Closing quotation mark. May behave like Ps or Pe depending on usage |
| Po | Punctuation, other | Graphic | Character | 641 | |
| S, Symbol | |||||
| Sm | Symbol, math | Graphic | Character | 960 | Mathematical symbols (e.g., +, −, =, ×, ÷, √, ∊, ≠). Does not include parentheses and brackets, which are in categories Ps and Pe. Also does not include !, *, -, or /, which despite frequent use as mathematical operators, are primarily considered to be "punctuation". |
| Sc | Symbol, currency | Graphic | Character | 64 | Currency symbols |
| Sk | Symbol, modifier | Graphic | Character | 125 | |
| So | Symbol, other | Graphic | Character | 7,468 | |
| Z, Separator | |||||
| Zs | Separator, space | Graphic | Character | 17 | Includes the space, but not TAB, CR, or LF, which are Cc |
| Zl | Separator, line | Format | Character | 1 | Only U+2028 LINE SEPARATOR (LSEP) |
| Zp | Separator, paragraph | Format | Character | 1 | Only U+2029 PARAGRAPH SEPARATOR (PSEP) |
| C, Other | |||||
| Cc | Other, control | Control | Character | 65 (will never change)[e] | No name,[g] <control> |
| Cf | Other, format | Format | Character | 170 | Includes the soft hyphen, joining control characters (ZWNJ and ZWJ), control characters to support bidirectional text, and language tag characters |
| Cs | Other, surrogate | Surrogate | Not (only used in UTF-16) | 2,048 (will never change)[e] | No name,[g] <surrogate> |
| Co | Other, private use | Private-use | Character (but no interpretation specified) | 137,468 total (will never change)[e] (6,400 in BMP, 131,068 in Planes 15–16) | No name,[g] <private-use> |
| Cn | Other, not assigned | Noncharacter | Not | 66 (will not change unless the range of Unicode code points is expanded)[e] | No name,[g] <noncharacter> |
| Reserved | Not | 814,664 | No name,[g] <reserved> | ||
| |||||
Punctuation
[edit]Characters have separate properties to denote they are a punctuation character. The properties all have a Yes/No values: Dash, Quotation_Mark, Sentence_Terminal, Terminal_Punctuation. The Punctuation property refers to characters that are used to divide or structure text, and these are classified into different types based on their roles. Unicode assigns these punctuation characters specific categories.
Whitespace
[edit]Whitespace is a commonly used concept for a typographic effect. Basically it covers invisible characters that have a spacing effect in rendered text. It includes spaces, tabs, and new line formatting controls. In Unicode, such a character has the property set WSpace=yes. In version 17.0, there are 25 whitespace characters.
| Name | Code point | Width box | May break? | In IDN? |
Script | Block | General category |
Notes | |
|---|---|---|---|---|---|---|---|---|---|
| character tabulation | U+0009 | 9 | Yes | No | Common | Basic Latin | Other, control |
HT, Horizontal Tab. HTML/XML named entity: 	, LaTeX: \tab, C escape: \t
| |
| line feed | U+000A | 10 | Is a line-break | Common | Basic Latin | Other, control |
LF, Line feed. HTML/XML named entity: 
, C escape: \n
| ||
| line tabulation | U+000B | 11 | Is a line-break | Common | Basic Latin | Other, control |
VT, Vertical Tab. C escape: \v
| ||
| form feed | U+000C | 12 | Is a line-break | Common | Basic Latin | Other, control |
FF, Form feed. C escape: \f
| ||
| carriage return | U+000D | 13 | Is a line-break | Common | Basic Latin | Other, control |
CR, Carriage return. C escape: \r
| ||
| space | U+0020 | 32 | Yes | No | Common | Basic Latin | Separator, space |
Most common (normal ASCII space). LaTeX: \
| |
| next line | U+0085 | 133 | Is a line-break | Common | Latin-1 Supplement |
Other, control |
NEL, Next line. LaTeX: \\
| ||
| no-break space | U+00A0 | 160 | No | No | Common | Latin-1 Supplement |
Separator, space |
Non-breaking space: identical to U+0020, but not a point at which a line may be broken. HTML/XML named entity: ,  , LaTeX: ~
| |
| ogham space mark | U+1680 | 5760 | Yes | No | Ogham | Ogham | Separator, space |
Used for interword separation in Ogham text. Normally a vertical line in vertical text or a horizontal line in horizontal text, but may also be a blank space in "stemless" fonts. Requires an Ogham font. | |
| en quad | U+2000 | 8192 | Yes | No | Common | General Punctuation |
Separator, space |
Width of one en. U+2002 is canonically equivalent to this character; U+2002 is preferred. | |
| em quad | U+2001 | 8193 | Yes | No | Common | General Punctuation |
Separator, space |
Also known as "mutton quad". Width of one em. U+2003 is canonically equivalent to this character; U+2003 is preferred. | |
| en space | U+2002 | 8194 | Yes | No | Common | General Punctuation |
Separator, space |
Also known as "nut". Width of one en. U+2000 En Quad is canonically equivalent to this character; U+2002 is preferred. HTML/XML named entity:  , LaTeX: \enspace (the LaTeX en space is a no-break space)
| |
| em space | U+2003 | 8195 | Yes | No | Common | General Punctuation |
Separator, space |
Also known as "mutton". Width of one em. U+2001 Em Quad is canonically equivalent to this character; U+2003 is preferred. HTML/XML named entity:  , LaTeX: \quad
| |
| three-per-em space | U+2004 | 8196 | Yes | No | Common | General Punctuation |
Separator, space |
Also known as "thick space". One third of an em wide. HTML/XML named entity:  , LaTeX: \; (the LaTeX thick space is a no-break space)
| |
| four-per-em space | U+2005 | 8197 | Yes | No | Common | General Punctuation |
Separator, space |
Also known as "mid space". One fourth of an em wide. HTML/XML named entity:  
| |
| six-per-em space | U+2006 | 8198 | Yes | No | Common | General Punctuation |
Separator, space |
One sixth of an em wide. In computer typography, sometimes equated to U+2009. | |
| figure space | U+2007 | 8199 | No | No | Common | General Punctuation |
Separator, space |
Figure space. In fonts with monospaced digits, equal to the width of one digit. HTML/XML named entity:  
| |
| punctuation space | U+2008 | 8200 | Yes | No | Common | General Punctuation |
Separator, space |
As wide as the narrow punctuation in a font, i.e. the advance width of the period or comma.[6] HTML/XML named entity:  
| |
| thin space | U+2009 | 8201 | Yes | No | Common | General Punctuation |
Separator, space |
Thin space; one-fifth (sometimes one-sixth) of an em wide. Recommended for use as a thousands separator for measures made with SI units. Unlike U+2002 to U+2008, its width may get adjusted in typesetting.[7] HTML/XML named entity:  ,  , LaTeX: \, (the LaTeX thin space is a no-break space)
| |
| hair space | U+200A | 8202 | Yes | No | Common | General Punctuation |
Separator, space |
Thinner than a thin space. HTML/XML named entity:  ,  
| |
| line separator | U+2028 | 8232 | Is a line-break | Common | General Punctuation |
Separator, line |
|||
| paragraph separator | U+2029 | 8233 | Is a line-break | Common | General Punctuation |
Separator, paragraph |
|||
| narrow no-break space | U+202F | 8239 | No | No | Common | General Punctuation |
Separator, space |
Narrow no-break space. Similar in function to U+00A0 No-Break Space. When used with Mongolian, its width is usually one third of the normal space; in other context, its width sometimes resembles that of the Thin Space (U+2009). LaTeX: \,
| |
| medium mathematical space | U+205F | 8287 | Yes | No | Common | General Punctuation |
Separator, space |
MMSP. Used in mathematical formulae. Four-eighteenths of an em.[8] In mathematical typography, the widths of spaces are usually given in integral multiples of an eighteenth of an em, and 4/18 em may be used in several situations, for example between the a and the + and between the + and the b in the expression a + b.[9] HTML/XML named entity:  , LaTeX: \: (the LaTeX medium space is a no-break space)
| |
| ideographic space | U+3000 | 12288 | Yes | No | Common | CJK Symbols and Punctuation |
Separator, space |
As wide as a CJK character cell (fullwidth). Used, for example, in tai tou. | |
| Name | Code point | Width box | May break? | In IDN? |
Script | Block | General category |
Notes | |
|---|---|---|---|---|---|---|---|---|---|
| mongolian vowel separator | U+180E | 6158 | | Yes | No | Mongolian | Mongolian | Other, Format |
MVS. A narrow space character, used in Mongolian to cause the final two characters of a word to take on different shapes.[10] It is no longer classified as space character (i.e. in Zs category) in Unicode 6.3.0, even though it was in previous versions of the standard. |
| zero width space | U+200B | 8203 | | Yes | No | ? | General Punctuation |
Other, Format |
ZWSP, zero-width space. Used to indicate word boundaries to text processing systems when using scripts that do not use explicit spacing. It is similar to the soft hyphen, with the difference that the latter is used to indicate syllable boundaries, and should display a visible hyphen when the line breaks at it. HTML/XML named entity: ​[11][c]
|
| zero width non-joiner | U+200C | 8204 | | Yes | Context-dependent[16] | ? | General Punctuation |
Other, Format |
ZWNJ, zero-width non-joiner. When placed between two characters that would otherwise be connected, a ZWNJ causes them to be printed in their final and initial forms, respectively. HTML/XML named entity: ‌
|
| zero width joiner | U+200D | 8205 | | Yes | Context-dependent[17] | ? | General Punctuation |
Other, Format |
ZWJ, zero-width joiner. When placed between two characters that would otherwise not be connected, a ZWJ causes them to be printed in their connected forms. Can also be used to display joining forms in isolation. Depending on whether a ligature or conjunct is expected by default, can either induce (as in emoji and in Sinhala) or suppress (as in Devanagari) substitution with a single glyph, whilst still permitting use of individual joining forms (unlike ZWNJ). HTML/XML named entity: ‍
|
| word joiner | U+2060 | 8288 | | No | No | ? | General Punctuation |
Other, Format |
WJ, word joiner. Similar to U+200B, but not a point at which a line may be broken. HTML/XML named entity: ⁠
|
| zero width non-breaking space | U+FEFF | 65279 | | No | No | ? | Arabic Presentation Forms-B |
Other, Format |
Zero-width non-breaking space. Used primarily as a Byte Order Mark. Use as an indication of non-breaking is deprecated as of Unicode 3.2; see U+2060 instead. |
|
Casing
[edit]The Case value is normative in Unicode. It pertains to those scripts with uppercase and lowercase letters. Case-difference occurs in Adlam, Armenian, Beria Erfe, Cherokee, Coptic, Cyrillic, Deseret, Garay, Glagolitic, Greek, Khutsuri and Mkhedruli Georgian, Latin, Medefaidrin, Old Hungarian, Osage, Vithkuqi and Warang Citi scripts.
Different languages have different case mapping rules.
In Turkish, U+0069 i LATIN SMALL LETTER I corresponds to U+0130 İ LATIN CAPITAL LETTER I WITH DOT ABOVE instead of U+0049 I LATIN CAPITAL LETTER I. Similarly, U+0049 I LATIN CAPITAL LETTER I when corresponds to U+0131 ı LATIN SMALL LETTER DOTLESS I instead of U+0069 i LATIN SMALL LETTER I.
In Nawdm, the letter Ĥ corresponds to ɦ in lowercase instead of the usual case mappings being Ĥĥ and Ɦɦ.
In Greek, the letter sigma has different lowercase forms depending on where it is in a word. U+03A3 Σ GREEK CAPITAL LETTER SIGMA converts to U+03C3 σ GREEK SMALL LETTER SIGMA if it is at the start or middle of a word, and converts to U+03C2 ς GREEK SMALL LETTER FINAL SIGMA if it is at the end of a word.
In Lithuanian, the dot in lowercase i and j is preserved when followed by accents. For example: Í in lowercase is i̇́.[19]
Despite the existence of U+1E9E ẞ LATIN CAPITAL LETTER SHARP S, U+00DF ß LATIN SMALL LETTER SHARP S corresponds to "SS".
Unicode encodes 31 titlecase characters.
- U+01C5 Dž LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
- U+01C8 Lj LATIN CAPITAL LETTER L WITH SMALL LETTER J
- U+01CB Nj LATIN CAPITAL LETTER N WITH SMALL LETTER J
- U+01F2 Dz LATIN CAPITAL LETTER D WITH SMALL LETTER Z
- U+1F88 ᾈ GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
- U+1F89 ᾉ GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
- U+1F8A ᾊ GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
- U+1F8B ᾋ GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
- U+1F8C ᾌ GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
- U+1F8D ᾍ GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
- U+1F8E ᾎ GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
- U+1F8F ᾏ GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
- U+1F98 ᾘ GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
- U+1F99 ᾙ GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
- U+1F9A ᾚ GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
- U+1F9B ᾛ GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
- U+1F9C ᾜ GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
- U+1F9D ᾝ GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
- U+1F9E ᾞ GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
- U+1F9F ᾟ GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
- U+1FA8 ᾨ GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
- U+1FA9 ᾩ GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
- U+1FAA ᾪ GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
- U+1FAB ᾫ GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
- U+1FAC ᾬ GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
- U+1FAD ᾭ GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
- U+1FAE ᾮ GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
- U+1FAF ᾯ GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
- U+1FBC ᾼ GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
- U+1FCC ῌ GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
- U+1FFC ῼ GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
Other general characteristics
[edit]Unicode defines several general character properties in the Unicode Character Database (UAX #44). Some of the most important ones include:
- Ideographic — Characters that represent ideas or concepts rather than specific sounds. These include most Han (CJK) characters used in Chinese, Japanese, and Korean writing systems.[20]
- Alphabetic — Characters that are considered letters in an alphabetic or syllabic writing system. This includes Latin, Greek, Cyrillic letters, as well as characters from syllabaries like Hiragana.[21]
- Noncharacter — Code points that are permanently reserved for internal use and are not assigned to any abstract character. These include U+FDD0 through U+FDEF, and any code ending in FFFE or FFFF (such as U+1FFFE, U+10FFFF).[22]
Combining class
[edit]Some common codes:
- 0 = spacing letter, symbol or modifier (e.g. a, (, ʰ)
- 1 = overlay
- 6 = Han reading (CJK diacritic reading marks)
- 7 = nukta (diacritic nukta in Brahmic scripts)
- 8 = kana voicing marks
- 9 = virama
10–199 = various fixed-position classes
Marks which attach to the base letter:
- 200 = attached at bottom left
- 202 = attached directly below (e.g. cedilla on ç)
- 204 = attached at bottom right
- 208 = attached to left
- 210 = attached to right
- 212 = attached to top left
- 214 = attached directly above
- 216 = attached at top right
Marks which do not attach to the base letter:
- 218 = bottom left
- 220 = directly below (e.g. ring on n̥)
- 222 = below right
- 224 = left
- 226 = right
- 228 = above left
- 230 = above (e.g. acute accent on á)
- 232 = above right
- 233 = double below (subtends two bases)
- 234 = double above (extends two bases)
- 240 = iota subscript (only that Greek diacritic)
Bidirectional writing
[edit]Six character properties pertain to bi-directional writing: Bidi_Class, Bidi_Control, Bidi_Mirrored, Bidi_Mirroring_Glyph, Bidi_Paired_Bracket and Bidi_Paired_Bracket_Type.
One of Unicode's major features is support of bi-directional (Bidi) text display right-to-left (R-to-L) and left-to-right (L-to-R). The Unicode Bidirectional Algorithm UAX9[23] describes the process of presenting text with altering script directions. For example, it enables a Hebrew quote in an English text. The Bidi_Character_Type marks a character's behaviour in directional writing. To override a direction, Unicode has defined special formatting control characters (Bidi-Control characters). These characters can enforce a direction, and by definition only affect bi-directional writing.
Each code point has a property called Bidi_Class. It defines its behaviour in a bidirectional text as interpreted by the algorithm:
| Type[2] | Description | Strength | Directionality | General scope | Bidi_Control character[3] |
|---|---|---|---|---|---|
| L | Left-to-Right | Strong | L-to-R | Most alphabetic and syllabic characters, Chinese characters, non-European or non-Arabic digits, LRM character, ... | U+200E LEFT-TO-RIGHT MARK (LRM) |
| R | Right-to-Left | Strong | R-to-L | Adlam, Garay, Hebrew, Mandaic, Mende Kikakui, N'Ko, Samaritan, ancient scripts like Kharoshthi and Nabataean, RLM character, ... | U+200F RIGHT-TO-LEFT MARK (RLM) |
| AL | Arabic Letter | Strong | R-to-L | Arabic, Hanifi Rohingya, Sogdian, Syriac, and Thaana alphabets, and most punctuation specific to those scripts, ALM character, ... | U+061C ARABIC LETTER MARK (ALM) |
| EN | European Number | Weak | European digits, Eastern Arabic-Indic digits, Coptic epact numbers, ... | ||
| ES | European Separator | Weak | plus sign, minus sign, ... | ||
| ET | European Number Terminator | Weak | degree sign, currency symbols, ... | ||
| AN | Arabic Number | Weak | Arabic-Indic digits, Arabic decimal and thousands separators, Rumi digits, Hanifi Rohingya digits, ... | ||
| CS | Common Number Separator | Weak | colon, comma, full stop, no-break space, ... | ||
| NSM | Nonspacing Mark | Weak | Characters in General Categories Mark, nonspacing, and Mark, enclosing (Mn, Me) | ||
| BN | Boundary Neutral | Weak | Default ignorables, non-characters, control characters other than those explicitly given other types | ||
| B | Paragraph Separator | Neutral | paragraph separator, appropriate Newline Functions, higher-level protocol paragraph determination | ||
| S | Segment Separator | Neutral | Tabs | ||
| WS | Whitespace | Neutral | space, figure space, line separator, form feed, General Punctuation block spaces (smaller set than the Unicode whitespace list) | ||
| ON | Other Neutrals | Neutral | All other characters, including object replacement character | ||
| LRE | Left-to-Right Embedding | Explicit | L-to-R | LRE character only | U+202A LEFT-TO-RIGHT EMBEDDING (LRE) |
| LRO | Left-to-Right Override | Explicit | L-to-R | LRO character only | U+202D LEFT-TO-RIGHT OVERRIDE (LRO) |
| RLE | Right-to-Left Embedding | Explicit | R-to-L | RLE character only | U+202B RIGHT-TO-LEFT EMBEDDING (RLE) |
| RLO | Right-to-Left Override | Explicit | R-to-L | RLO character only | U+202E RIGHT-TO-LEFT OVERRIDE (RLO) |
| Pop Directional Format | Explicit | PDF character only | U+202C POP DIRECTIONAL FORMATTING (PDF) | ||
| LRI | Left-to-Right Isolate | Explicit | L-to-R | LRI character only | U+2066 LEFT-TO-RIGHT ISOLATE (LRI) |
| RLI | Right-to-Left Isolate | Explicit | R-to-L | RLI character only | U+2067 RIGHT-TO-LEFT ISOLATE (RLI) |
| FSI | First Strong Isolate | Explicit | FSI character only | U+2068 FIRST STRONG ISOLATE (FSI) | |
| PDI | Pop Directional Isolate | Explicit | PDI character only | U+2069 POP DIRECTIONAL ISOLATE (PDI) | |
Notes
| |||||
In normal situations, the algorithm can determine the direction of a text by this character property. To control more complex Bidi situations, e.g. when an English text has a Hebrew quote, extra options are added to Unicode. 12 characters have the property Bidi_Control=Yes: ALM, FSI, LRE, LRI, LRM, LRO, PDF, PDI, RLE, RLI, RLM and RLO as named in the table. These are invisible formatting control characters, only used by the algorithm and with no effect outside of bidirectional formatting.[23] Despite the name, they are formatting characters, not control characters, and have General category Other, format (Cf) in the Unicode definition.
Basically, the algorithm determines a sequence of characters with the same strong direction type (R-to-L or L-to-R), taking in account an overruling by the special Bidi-controls. Number strings (Weak types) are assigned a direction according to their strong environment, as are Neutral characters. Finally, the characters are displayed per a string's direction.
Two character properties are relevant to determining a mirror image of a glyph in bidirectional text: Bidi_Mirrored=Yes indicates that the glyph should be mirrored when written R-to-L. The property Bidi_Mirroring_Glyph=U+hhhh can then point to the mirrored character. For example, parentheses (, ) are mirrored this way. Shaping cursive scripts such as Arabic, and mirroring glyphs that have a direction, is not part of the algorithm.
Numeric values and types
[edit]Decimal
[edit]Characters are classified with a Numeric type.[1] Characters such as fractions, subscripts, superscripts, Roman numerals, currency numerators, encircled numbers, and script-specific digits are type Numeric. They have a numeric value that can be decimal, including zero and negatives, or a vulgar fraction. If there is not such a value, as with most of the characters, the numeric type is "None".
The characters that do have a numeric value are separated in three groups: Decimal (De), Digit (Di) and Numeric (Nu, i.e. all other). "Decimal" means the character is a straight decimal digit. Only characters that are part of a contiguous encoded range 0..9 have numeric type Decimal. Other digits, like superscripts, have numeric type Digit. All numeric characters like fractions and Roman numerals end up with the type "Numeric". The intended effect is that a simple parser can use these decimal numeric values, without being distracted by say a numeric superscript or a fraction. Eighty-three CJK Ideographs that represent a number, including those used for accounting, are typed Numeric.
On the other hand, characters that could have a numeric value as a second meaning are still marked Numeric type None, and have no numeric value. E.g. Latin letters can be used in paragraph numbering like "II.A.1.b", but the letters "I", "A" and "b" are not numeric (type None) and have no numeric value.
| Numeric Type[a][b] (Unicode character property) | ||||
|---|---|---|---|---|
| Numeric type | Code | Has numeric value | Example | Remarks |
| Not numeric | <none> |
No |
|
Numeric Value="NaN" |
| Decimal | De |
Yes |
|
Straight digit (decimal-radix). Corresponds both ways with General Category=Nd[a] |
| Digit | Di |
Yes |
|
Decimal, but in typographic context |
| Numeric | Nu |
Yes |
|
Numeric value, but not decimal-radix |
| a. ^ "Section 4.6: Numeric Value". The Unicode Standard. Unicode Consortium. September 2025. | ||||
| b. ^ "Unicode Derived Numeric Types". Unicode Character Database. Unicode Consortium. 2025-06-30. | ||||
Hexadecimal digits
[edit]Hexadecimal characters are those in the series with hexadecimal values 0123456789ABCDEF (sixteen characters, decimal value 0–15). The character property Hex_Digit is set to Yes when a character is in such a series:
Characters in Unicode marked Hex_Digit=Yes[a]
| |||
|---|---|---|---|
0123456789ABCDEF |
Basic Latin, capitals | Also ASCII_Hex_Digit=Yes
| |
0123456789abcdef |
Basic Latin, small letters | Also ASCII_Hex_Digit=Yes
| |
0123456789ABCDEF |
Fullwidth forms, capitals | ||
0123456789abcdef |
Fullwidth forms, small letters | ||
| a. ^ "Unicode 17.0 UCD: PropList.txt". 2025-06-30. Retrieved 2025-09-11. | |||
Forty-four characters are marked as Hex_Digit. The ones in the Basic Latin block are also marked as ASCII_Hex_Digit.
Unicode has no separate characters for hexadecimal values. A consequence is, that when using regular characters it is not possible to determine whether hexadecimal value is intended, or even whether a value is intended at all. That should be determined at a higher level, e.g. by prepending 0x to a hexadecimal number or by context. The only feature is that Unicode can note that a sequence can or can not be a hexadecimal value.
Block
[edit]A block is a uniquely named, contiguous range of code points. It is identified by its first and last code point. Blocks do not overlap, nor do they extend across planes. The number of code points in each block must be a multiple of 16. A block may contain code points that are reserved, not-assigned, etc. Each character that is assigned, has a single "block name" value from the 346 names assigned as of Unicode version 17.0. Unassigned code points outside of an existing block have the default value "No_block".
| Plane | Block range | Block name | Code points[a] | Assigned characters | Scripts[b][c][d][e][f] |
|---|---|---|---|---|---|
| 0 BMP | U+0000..U+007F | Basic Latin[g] | 128 | 128 | Latin (52 characters), Common (76 characters) |
| 0 BMP | U+0080..U+00FF | Latin-1 Supplement[h] | 128 | 128 | Latin (64 characters), Common (64 characters) |
| 0 BMP | U+0100..U+017F | Latin Extended-A | 128 | 128 | Latin |
| 0 BMP | U+0180..U+024F | Latin Extended-B | 208 | 208 | Latin |
| 0 BMP | U+0250..U+02AF | IPA Extensions | 96 | 96 | Latin |
| 0 BMP | U+02B0..U+02FF | Spacing Modifier Letters | 80 | 80 | Bopomofo (2 characters), Latin (14 characters), Common (64 characters) |
| 0 BMP | U+0300..U+036F | Combining Diacritical Marks | 112 | 112 | Inherited |
| 0 BMP | U+0370..U+03FF | Greek and Coptic | 144 | 135 | Coptic (14 characters), Greek (117 characters), Common (4 characters) |
| 0 BMP | U+0400..U+04FF | Cyrillic | 256 | 256 | Cyrillic (254 characters), Inherited (2 characters) |
| 0 BMP | U+0500..U+052F | Cyrillic Supplement | 48 | 48 | Cyrillic |
| 0 BMP | U+0530..U+058F | Armenian | 96 | 91 | Armenian |
| 0 BMP | U+0590..U+05FF | Hebrew | 112 | 88 | Hebrew |
| 0 BMP | U+0600..U+06FF | Arabic | 256 | 256 | Arabic (238 characters), Common (6 characters), Inherited (12 characters) |
| 0 BMP | U+0700..U+074F | Syriac | 80 | 77 | Syriac |
| 0 BMP | U+0750..U+077F | Arabic Supplement | 48 | 48 | Arabic |
| 0 BMP | U+0780..U+07BF | Thaana | 64 | 50 | Thaana |
| 0 BMP | U+07C0..U+07FF | NKo | 64 | 62 | N’Ko |
| 0 BMP | U+0800..U+083F | Samaritan | 64 | 61 | Samaritan |
| 0 BMP | U+0840..U+085F | Mandaic | 32 | 29 | Mandaic |
| 0 BMP | U+0860..U+086F | Syriac Supplement | 16 | 11 | Syriac |
| 0 BMP | U+0870..U+089F | Arabic Extended-B | 48 | 43 | Arabic |
| 0 BMP | U+08A0..U+08FF | Arabic Extended-A | 96 | 96 | Arabic (95 characters), Common (1 character) |
| 0 BMP | U+0900..U+097F | Devanagari | 128 | 128 | Devanagari (122 characters), Common (2 characters), Inherited (4 characters) |
| 0 BMP | U+0980..U+09FF | Bengali | 128 | 96 | Bengali |
| 0 BMP | U+0A00..U+0A7F | Gurmukhi | 128 | 80 | Gurmukhi |
| 0 BMP | U+0A80..U+0AFF | Gujarati | 128 | 91 | Gujarati |
| 0 BMP | U+0B00..U+0B7F | Oriya | 128 | 91 | Oriya |
| 0 BMP | U+0B80..U+0BFF | Tamil | 128 | 72 | Tamil |
| 0 BMP | U+0C00..U+0C7F | Telugu | 128 | 101 | Telugu |
| 0 BMP | U+0C80..U+0CFF | Kannada | 128 | 92 | Kannada |
| 0 BMP | U+0D00..U+0D7F | Malayalam | 128 | 118 | Malayalam |
| 0 BMP | U+0D80..U+0DFF | Sinhala | 128 | 91 | Sinhala |
| 0 BMP | U+0E00..U+0E7F | Thai | 128 | 87 | Thai (86 characters), Common (1 character) |
| 0 BMP | U+0E80..U+0EFF | Lao | 128 | 83 | Lao |
| 0 BMP | U+0F00..U+0FFF | Tibetan | 256 | 211 | Tibetan (207 characters), Common (4 characters) |
| 0 BMP | U+1000..U+109F | Myanmar | 160 | 160 | Myanmar |
| 0 BMP | U+10A0..U+10FF | Georgian | 96 | 88 | Georgian (87 characters), Common (1 character) |
| 0 BMP | U+1100..U+11FF | Hangul Jamo | 256 | 256 | Hangul |
| 0 BMP | U+1200..U+137F | Ethiopic | 384 | 358 | Ethiopic |
| 0 BMP | U+1380..U+139F | Ethiopic Supplement | 32 | 26 | Ethiopic |
| 0 BMP | U+13A0..U+13FF | Cherokee | 96 | 92 | Cherokee |
| 0 BMP | U+1400..U+167F | Unified Canadian Aboriginal Syllabics | 640 | 640 | Canadian Aboriginal |
| 0 BMP | U+1680..U+169F | Ogham | 32 | 29 | Ogham |
| 0 BMP | U+16A0..U+16FF | Runic | 96 | 89 | Runic (86 characters), Common (3 characters) |
| 0 BMP | U+1700..U+171F | Tagalog | 32 | 23 | Tagalog |
| 0 BMP | U+1720..U+173F | Hanunoo | 32 | 23 | Hanunoo (21 characters), Common (2 characters) |
| 0 BMP | U+1740..U+175F | Buhid | 32 | 20 | Buhid |
| 0 BMP | U+1760..U+177F | Tagbanwa | 32 | 18 | Tagbanwa |
| 0 BMP | U+1780..U+17FF | Khmer | 128 | 114 | Khmer |
| 0 BMP | U+1800..U+18AF | Mongolian | 176 | 158 | Mongolian (155 characters), Common (3 characters) |
| 0 BMP | U+18B0..U+18FF | Unified Canadian Aboriginal Syllabics Extended | 80 | 70 | Canadian Aboriginal |
| 0 BMP | U+1900..U+194F | Limbu | 80 | 68 | Limbu |
| 0 BMP | U+1950..U+197F | Tai Le | 48 | 35 | Tai Le |
| 0 BMP | U+1980..U+19DF | New Tai Lue | 96 | 83 | New Tai Lue |
| 0 BMP | U+19E0..U+19FF | Khmer Symbols | 32 | 32 | Khmer |
| 0 BMP | U+1A00..U+1A1F | Buginese | 32 | 30 | Buginese |
| 0 BMP | U+1A20..U+1AAF | Tai Tham | 144 | 127 | Tai Tham |
| 0 BMP | U+1AB0..U+1AFF | Combining Diacritical Marks Extended | 80 | 58 | Inherited |
| 0 BMP | U+1B00..U+1B7F | Balinese | 128 | 127 | Balinese |
| 0 BMP | U+1B80..U+1BBF | Sundanese | 64 | 64 | Sundanese |
| 0 BMP | U+1BC0..U+1BFF | Batak | 64 | 56 | Batak |
| 0 BMP | U+1C00..U+1C4F | Lepcha | 80 | 74 | Lepcha |
| 0 BMP | U+1C50..U+1C7F | Ol Chiki | 48 | 48 | Ol Chiki |
| 0 BMP | U+1C80..U+1C8F | Cyrillic Extended-C | 16 | 11 | Cyrillic |
| 0 BMP | U+1C90..U+1CBF | Georgian Extended | 48 | 46 | Georgian |
| 0 BMP | U+1CC0..U+1CCF | Sundanese Supplement | 16 | 8 | Sundanese |
| 0 BMP | U+1CD0..U+1CFF | Vedic Extensions | 48 | 43 | Common (16 characters), Inherited (27 characters) |
| 0 BMP | U+1D00..U+1D7F | Phonetic Extensions | 128 | 128 | Cyrillic (2 characters), Greek (15 characters), Latin (111 characters) |
| 0 BMP | U+1D80..U+1DBF | Phonetic Extensions Supplement | 64 | 64 | Greek (1 character), Latin (63 characters) |
| 0 BMP | U+1DC0..U+1DFF | Combining Diacritical Marks Supplement | 64 | 64 | Inherited |
| 0 BMP | U+1E00..U+1EFF | Latin Extended Additional | 256 | 256 | Latin |
| 0 BMP | U+1F00..U+1FFF | Greek Extended | 256 | 233 | Greek |
| 0 BMP | U+2000..U+206F | General Punctuation | 112 | 111 | Common (109 characters), Inherited (2 characters) |
| 0 BMP | U+2070..U+209F | Superscripts and Subscripts | 48 | 42 | Latin (15 characters), Common (27 characters) |
| 0 BMP | U+20A0..U+20CF | Currency Symbols | 48 | 34 | Common |
| 0 BMP | U+20D0..U+20FF | Combining Diacritical Marks for Symbols | 48 | 33 | Inherited |
| 0 BMP | U+2100..U+214F | Letterlike Symbols | 80 | 80 | Greek (1 character), Latin (4 characters), Common (75 characters) |
| 0 BMP | U+2150..U+218F | Number Forms | 64 | 60 | Latin (41 characters), Common (19 characters) |
| 0 BMP | U+2190..U+21FF | Arrows | 112 | 112 | Common |
| 0 BMP | U+2200..U+22FF | Mathematical Operators | 256 | 256 | Common |
| 0 BMP | U+2300..U+23FF | Miscellaneous Technical | 256 | 256 | Common |
| 0 BMP | U+2400..U+243F | Control Pictures | 64 | 42 | Common |
| 0 BMP | U+2440..U+245F | Optical Character Recognition | 32 | 11 | Common |
| 0 BMP | U+2460..U+24FF | Enclosed Alphanumerics | 160 | 160 | Common |
| 0 BMP | U+2500..U+257F | Box Drawing | 128 | 128 | Common |
| 0 BMP | U+2580..U+259F | Block Elements | 32 | 32 | Common |
| 0 BMP | U+25A0..U+25FF | Geometric Shapes | 96 | 96 | Common |
| 0 BMP | U+2600..U+26FF | Miscellaneous Symbols | 256 | 256 | Common |
| 0 BMP | U+2700..U+27BF | Dingbats | 192 | 192 | Common |
| 0 BMP | U+27C0..U+27EF | Miscellaneous Mathematical Symbols-A | 48 | 48 | Common |
| 0 BMP | U+27F0..U+27FF | Supplemental Arrows-A | 16 | 16 | Common |
| 0 BMP | U+2800..U+28FF | Braille Patterns | 256 | 256 | Braille |
| 0 BMP | U+2900..U+297F | Supplemental Arrows-B | 128 | 128 | Common |
| 0 BMP | U+2980..U+29FF | Miscellaneous Mathematical Symbols-B | 128 | 128 | Common |
| 0 BMP | U+2A00..U+2AFF | Supplemental Mathematical Operators | 256 | 256 | Common |
| 0 BMP | U+2B00..U+2BFF | Miscellaneous Symbols and Arrows | 256 | 254 | Common |
| 0 BMP | U+2C00..U+2C5F | Glagolitic | 96 | 96 | Glagolitic |
| 0 BMP | U+2C60..U+2C7F | Latin Extended-C | 32 | 32 | Latin |
| 0 BMP | U+2C80..U+2CFF | Coptic | 128 | 123 | Coptic |
| 0 BMP | U+2D00..U+2D2F | Georgian Supplement | 48 | 40 | Georgian |
| 0 BMP | U+2D30..U+2D7F | Tifinagh | 80 | 59 | Tifinagh |
| 0 BMP | U+2D80..U+2DDF | Ethiopic Extended | 96 | 79 | Ethiopic |
| 0 BMP | U+2DE0..U+2DFF | Cyrillic Extended-A | 32 | 32 | Cyrillic |
| 0 BMP | U+2E00..U+2E7F | Supplemental Punctuation | 128 | 94 | Common |
| 0 BMP | U+2E80..U+2EFF | CJK Radicals Supplement | 128 | 115 | Han |
| 0 BMP | U+2F00..U+2FDF | Kangxi Radicals | 224 | 214 | Han |
| 0 BMP | U+2FF0..U+2FFF | Ideographic Description Characters | 16 | 16 | Common |
| 0 BMP | U+3000..U+303F | CJK Symbols and Punctuation | 64 | 64 | Han (15 characters), Hangul (2 characters), Common (43 characters), Inherited (4 characters) |
| 0 BMP | U+3040..U+309F | Hiragana | 96 | 93 | Hiragana (89 characters), Common (2 characters), Inherited (2 characters) |
| 0 BMP | U+30A0..U+30FF | Katakana | 96 | 96 | Katakana (93 characters), Common (3 characters) |
| 0 BMP | U+3100..U+312F | Bopomofo | 48 | 43 | Bopomofo |
| 0 BMP | U+3130..U+318F | Hangul Compatibility Jamo | 96 | 94 | Hangul |
| 0 BMP | U+3190..U+319F | Kanbun | 16 | 16 | Common |
| 0 BMP | U+31A0..U+31BF | Bopomofo Extended | 32 | 32 | Bopomofo |
| 0 BMP | U+31C0..U+31EF | CJK Strokes | 48 | 39 | Common |
| 0 BMP | U+31F0..U+31FF | Katakana Phonetic Extensions | 16 | 16 | Katakana |
| 0 BMP | U+3200..U+32FF | Enclosed CJK Letters and Months | 256 | 255 | Hangul (62 characters), Katakana (47 characters), Common (146 characters) |
| 0 BMP | U+3300..U+33FF | CJK Compatibility | 256 | 256 | Katakana (88 characters), Common (168 characters) |
| 0 BMP | U+3400..U+4DBF | CJK Unified Ideographs Extension A | 6,592 | 6,592 | Han |
| 0 BMP | U+4DC0..U+4DFF | Yijing Hexagram Symbols | 64 | 64 | Common |
| 0 BMP | U+4E00..U+9FFF | CJK Unified Ideographs | 20,992 | 20,992 | Han |
| 0 BMP | U+A000..U+A48F | Yi Syllables | 1,168 | 1,165 | Yi |
| 0 BMP | U+A490..U+A4CF | Yi Radicals | 64 | 55 | Yi |
| 0 BMP | U+A4D0..U+A4FF | Lisu | 48 | 48 | Lisu |
| 0 BMP | U+A500..U+A63F | Vai | 320 | 300 | Vai |
| 0 BMP | U+A640..U+A69F | Cyrillic Extended-B | 96 | 96 | Cyrillic |
| 0 BMP | U+A6A0..U+A6FF | Bamum | 96 | 88 | Bamum |
| 0 BMP | U+A700..U+A71F | Modifier Tone Letters | 32 | 32 | Common |
| 0 BMP | U+A720..U+A7FF | Latin Extended-D | 224 | 204 | Latin (199 characters), Common (5 characters) |
| 0 BMP | U+A800..U+A82F | Syloti Nagri | 48 | 45 | Syloti Nagri |
| 0 BMP | U+A830..U+A83F | Common Indic Number Forms | 16 | 10 | Common |
| 0 BMP | U+A840..U+A87F | Phags-pa | 64 | 56 | Phags Pa |
| 0 BMP | U+A880..U+A8DF | Saurashtra | 96 | 82 | Saurashtra |
| 0 BMP | U+A8E0..U+A8FF | Devanagari Extended | 32 | 32 | Devanagari |
| 0 BMP | U+A900..U+A92F | Kayah Li | 48 | 48 | Kayah Li (47 characters), Common (1 character) |
| 0 BMP | U+A930..U+A95F | Rejang | 48 | 37 | Rejang |
| 0 BMP | U+A960..U+A97F | Hangul Jamo Extended-A | 32 | 29 | Hangul |
| 0 BMP | U+A980..U+A9DF | Javanese | 96 | 91 | Javanese (90 characters), Common (1 character) |
| 0 BMP | U+A9E0..U+A9FF | Myanmar Extended-B | 32 | 31 | Myanmar |
| 0 BMP | U+AA00..U+AA5F | Cham | 96 | 83 | Cham |
| 0 BMP | U+AA60..U+AA7F | Myanmar Extended-A | 32 | 32 | Myanmar |
| 0 BMP | U+AA80..U+AADF | Tai Viet | 96 | 72 | Tai Viet |
| 0 BMP | U+AAE0..U+AAFF | Meetei Mayek Extensions | 32 | 23 | Meetei Mayek |
| 0 BMP | U+AB00..U+AB2F | Ethiopic Extended-A | 48 | 32 | Ethiopic |
| 0 BMP | U+AB30..U+AB6F | Latin Extended-E | 64 | 60 | Latin (56 characters), Greek (1 character), Common (3 characters) |
| 0 BMP | U+AB70..U+ABBF | Cherokee Supplement | 80 | 80 | Cherokee |
| 0 BMP | U+ABC0..U+ABFF | Meetei Mayek | 64 | 56 | Meetei Mayek |
| 0 BMP | U+AC00..U+D7AF | Hangul Syllables | 11,184 | 11,172 | Hangul |
| 0 BMP | U+D7B0..U+D7FF | Hangul Jamo Extended-B | 80 | 72 | Hangul |
| 0 BMP | U+D800..U+DB7F | High Surrogates | 896 | 0 | Unknown |
| 0 BMP | U+DB80..U+DBFF | High Private Use Surrogates | 128 | 0 | Unknown |
| 0 BMP | U+DC00..U+DFFF | Low Surrogates | 1,024 | 0 | Unknown |
| 0 BMP | U+E000..U+F8FF | Private Use Area | 6,400 | 6,400 | Unknown |
| 0 BMP | U+F900..U+FAFF | CJK Compatibility Ideographs | 512 | 472 | Han |
| 0 BMP | U+FB00..U+FB4F | Alphabetic Presentation Forms | 80 | 58 | Armenian (5 characters), Hebrew (46 characters), Latin (7 characters) |
| 0 BMP | U+FB50..U+FDFF | Arabic Presentation Forms-A | 688 | 656 | Arabic (654 characters), Common (2 characters) |
| 0 BMP | U+FE00..U+FE0F | Variation Selectors | 16 | 16 | Inherited |
| 0 BMP | U+FE10..U+FE1F | Vertical Forms | 16 | 10 | Common |
| 0 BMP | U+FE20..U+FE2F | Combining Half Marks | 16 | 16 | Cyrillic (2 characters), Inherited (14 characters) |
| 0 BMP | U+FE30..U+FE4F | CJK Compatibility Forms | 32 | 32 | Common |
| 0 BMP | U+FE50..U+FE6F | Small Form Variants | 32 | 26 | Common |
| 0 BMP | U+FE70..U+FEFF | Arabic Presentation Forms-B | 144 | 141 | Arabic (140 characters), Common (1 character) |
| 0 BMP | U+FF00..U+FFEF | Halfwidth and Fullwidth Forms | 240 | 225 | Hangul (52 characters), Katakana (55 characters), Latin (52 characters), Common (66 characters) |
| 0 BMP | U+FFF0..U+FFFF | Specials | 16 | 5 | Common |
| 1 SMP | U+10000..U+1007F | Linear B Syllabary | 128 | 88 | Linear B |
| 1 SMP | U+10080..U+100FF | Linear B Ideograms | 128 | 123 | Linear B |
| 1 SMP | U+10100..U+1013F | Aegean Numbers | 64 | 57 | Common |
| 1 SMP | U+10140..U+1018F | Ancient Greek Numbers | 80 | 79 | Greek |
| 1 SMP | U+10190..U+101CF | Ancient Symbols | 64 | 14 | Greek (1 character), Common (13 characters) |
| 1 SMP | U+101D0..U+101FF | Phaistos Disc | 48 | 46 | Common (45 characters), Inherited (1 character) |
| 1 SMP | U+10280..U+1029F | Lycian | 32 | 29 | Lycian |
| 1 SMP | U+102A0..U+102DF | Carian | 64 | 49 | Carian |
| 1 SMP | U+102E0..U+102FF | Coptic Epact Numbers | 32 | 28 | Common (27 characters), Inherited (1 character) |
| 1 SMP | U+10300..U+1032F | Old Italic | 48 | 39 | Old Italic |
| 1 SMP | U+10330..U+1034F | Gothic | 32 | 27 | Gothic |
| 1 SMP | U+10350..U+1037F | Old Permic | 48 | 43 | Old Permic |
| 1 SMP | U+10380..U+1039F | Ugaritic | 32 | 31 | Ugaritic |
| 1 SMP | U+103A0..U+103DF | Old Persian | 64 | 50 | Old Persian |
| 1 SMP | U+10400..U+1044F | Deseret | 80 | 80 | Deseret |
| 1 SMP | U+10450..U+1047F | Shavian | 48 | 48 | Shavian |
| 1 SMP | U+10480..U+104AF | Osmanya | 48 | 40 | Osmanya |
| 1 SMP | U+104B0..U+104FF | Osage | 80 | 72 | Osage |
| 1 SMP | U+10500..U+1052F | Elbasan | 48 | 40 | Elbasan |
| 1 SMP | U+10530..U+1056F | Caucasian Albanian | 64 | 53 | Caucasian Albanian |
| 1 SMP | U+10570..U+105BF | Vithkuqi | 80 | 70 | Vithkuqi |
| 1 SMP | U+105C0..U+105FF | Todhri | 64 | 52 | Todhri |
| 1 SMP | U+10600..U+1077F | Linear A | 384 | 341 | Linear A |
| 1 SMP | U+10780..U+107BF | Latin Extended-F | 64 | 57 | Latin |
| 1 SMP | U+10800..U+1083F | Cypriot Syllabary | 64 | 55 | Cypriot |
| 1 SMP | U+10840..U+1085F | Imperial Aramaic | 32 | 31 | Imperial Aramaic |
| 1 SMP | U+10860..U+1087F | Palmyrene | 32 | 32 | Palmyrene |
| 1 SMP | U+10880..U+108AF | Nabataean | 48 | 40 | Nabataean |
| 1 SMP | U+108E0..U+108FF | Hatran | 32 | 26 | Hatran |
| 1 SMP | U+10900..U+1091F | Phoenician | 32 | 29 | Phoenician |
| 1 SMP | U+10920..U+1093F | Lydian | 32 | 27 | Lydian |
| 1 SMP | U+10940..U+1095F | Sidetic | 32 | 26 | Sidetic |
| 1 SMP | U+10980..U+1099F | Meroitic Hieroglyphs | 32 | 32 | Meroitic Hieroglyphs |
| 1 SMP | U+109A0..U+109FF | Meroitic Cursive | 96 | 90 | Meroitic Cursive |
| 1 SMP | U+10A00..U+10A5F | Kharoshthi | 96 | 68 | Kharoshthi |
| 1 SMP | U+10A60..U+10A7F | Old South Arabian | 32 | 32 | Old South Arabian |
| 1 SMP | U+10A80..U+10A9F | Old North Arabian | 32 | 32 | Old North Arabian |
| 1 SMP | U+10AC0..U+10AFF | Manichaean | 64 | 51 | Manichaean |
| 1 SMP | U+10B00..U+10B3F | Avestan | 64 | 61 | Avestan |
| 1 SMP | U+10B40..U+10B5F | Inscriptional Parthian | 32 | 30 | Inscriptional Parthian |
| 1 SMP | U+10B60..U+10B7F | Inscriptional Pahlavi | 32 | 27 | Inscriptional Pahlavi |
| 1 SMP | U+10B80..U+10BAF | Psalter Pahlavi | 48 | 29 | Psalter Pahlavi |
| 1 SMP | U+10C00..U+10C4F | Old Turkic | 80 | 73 | Old Turkic |
| 1 SMP | U+10C80..U+10CFF | Old Hungarian | 128 | 108 | Old Hungarian |
| 1 SMP | U+10D00..U+10D3F | Hanifi Rohingya | 64 | 50 | Hanifi Rohingya |
| 1 SMP | U+10D40..U+10D8F | Garay | 80 | 69 | Garay |
| 1 SMP | U+10E60..U+10E7F | Rumi Numeral Symbols | 32 | 31 | Arabic |
| 1 SMP | U+10E80..U+10EBF | Yezidi | 64 | 47 | Yezidi |
| 1 SMP | U+10EC0..U+10EFF | Arabic Extended-C | 64 | 21 | Arabic |
| 1 SMP | U+10F00..U+10F2F | Old Sogdian | 48 | 40 | Old Sogdian |
| 1 SMP | U+10F30..U+10F6F | Sogdian | 64 | 42 | Sogdian |
| 1 SMP | U+10F70..U+10FAF | Old Uyghur | 64 | 26 | Old Uyghur |
| 1 SMP | U+10FB0..U+10FDF | Chorasmian | 48 | 28 | Chorasmian |
| 1 SMP | U+10FE0..U+10FFF | Elymaic | 32 | 23 | Elymaic |
| 1 SMP | U+11000..U+1107F | Brahmi | 128 | 115 | Brahmi |
| 1 SMP | U+11080..U+110CF | Kaithi | 80 | 68 | Kaithi |
| 1 SMP | U+110D0..U+110FF | Sora Sompeng | 48 | 35 | Sora Sompeng |
| 1 SMP | U+11100..U+1114F | Chakma | 80 | 71 | Chakma |
| 1 SMP | U+11150..U+1117F | Mahajani | 48 | 39 | Mahajani |
| 1 SMP | U+11180..U+111DF | Sharada | 96 | 96 | Sharada |
| 1 SMP | U+111E0..U+111FF | Sinhala Archaic Numbers | 32 | 20 | Sinhala |
| 1 SMP | U+11200..U+1124F | Khojki | 80 | 65 | Khojki |
| 1 SMP | U+11280..U+112AF | Multani | 48 | 38 | Multani |
| 1 SMP | U+112B0..U+112FF | Khudawadi | 80 | 69 | Khudawadi |
| 1 SMP | U+11300..U+1137F | Grantha | 128 | 86 | Grantha (85 characters), Inherited (1 character) |
| 1 SMP | U+11380..U+113FF | Tulu-Tigalari | 128 | 80 | Tulu Tigalari |
| 1 SMP | U+11400..U+1147F | Newa | 128 | 97 | Newa |
| 1 SMP | U+11480..U+114DF | Tirhuta | 96 | 82 | Tirhuta |
| 1 SMP | U+11580..U+115FF | Siddham | 128 | 92 | Siddham |
| 1 SMP | U+11600..U+1165F | Modi | 96 | 79 | Modi |
| 1 SMP | U+11660..U+1167F | Mongolian Supplement | 32 | 13 | Mongolian |
| 1 SMP | U+11680..U+116CF | Takri | 80 | 68 | Takri |
| 1 SMP | U+116D0..U+116FF | Myanmar Extended-C | 48 | 20 | Myanmar |
| 1 SMP | U+11700..U+1174F | Ahom | 80 | 65 | Ahom |
| 1 SMP | U+11800..U+1184F | Dogra | 80 | 60 | Dogra |
| 1 SMP | U+118A0..U+118FF | Warang Citi | 96 | 84 | Warang Citi |
| 1 SMP | U+11900..U+1195F | Dives Akuru | 96 | 72 | Dives Akuru |
| 1 SMP | U+119A0..U+119FF | Nandinagari | 96 | 65 | Nandinagari |
| 1 SMP | U+11A00..U+11A4F | Zanabazar Square | 80 | 72 | Zanabazar Square |
| 1 SMP | U+11A50..U+11AAF | Soyombo | 96 | 83 | Soyombo |
| 1 SMP | U+11AB0..U+11ABF | Unified Canadian Aboriginal Syllabics Extended-A | 16 | 16 | Canadian Aboriginal |
| 1 SMP | U+11AC0..U+11AFF | Pau Cin Hau | 64 | 57 | Pau Cin Hau |
| 1 SMP | U+11B00..U+11B5F | Devanagari Extended-A | 96 | 10 | Devanagari |
| 1 SMP | U+11B60..U+11B7F | Sharada Supplement | 32 | 8 | Sharada |
| 1 SMP | U+11BC0..U+11BFF | Sunuwar | 64 | 44 | Sunuwar |
| 1 SMP | U+11C00..U+11C6F | Bhaiksuki | 112 | 97 | Bhaiksuki |
| 1 SMP | U+11C70..U+11CBF | Marchen | 80 | 68 | Marchen |
| 1 SMP | U+11D00..U+11D5F | Masaram Gondi | 96 | 75 | Masaram Gondi |
| 1 SMP | U+11D60..U+11DAF | Gunjala Gondi | 80 | 63 | Gunjala Gondi |
| 1 SMP | U+11DB0..U+11DEF | Tolong Siki | 64 | 54 | Tolong Siki |
| 1 SMP | U+11EE0..U+11EFF | Makasar | 32 | 25 | Makasar |
| 1 SMP | U+11F00..U+11F5F | Kawi | 96 | 87 | Kawi |
| 1 SMP | U+11FB0..U+11FBF | Lisu Supplement | 16 | 1 | Lisu |
| 1 SMP | U+11FC0..U+11FFF | Tamil Supplement | 64 | 51 | Tamil |
| 1 SMP | U+12000..U+123FF | Cuneiform | 1,024 | 922 | Cuneiform |
| 1 SMP | U+12400..U+1247F | Cuneiform Numbers and Punctuation | 128 | 116 | Cuneiform |
| 1 SMP | U+12480..U+1254F | Early Dynastic Cuneiform | 208 | 196 | Cuneiform |
| 1 SMP | U+12F90..U+12FFF | Cypro-Minoan | 112 | 99 | Cypro Minoan |
| 1 SMP | U+13000..U+1342F | Egyptian Hieroglyphs | 1,072 | 1,072 | Egyptian Hieroglyphs |
| 1 SMP | U+13430..U+1345F | Egyptian Hieroglyph Format Controls | 48 | 38 | Egyptian Hieroglyphs |
| 1 SMP | U+13460..U+143FF | Egyptian Hieroglyphs Extended-A | 4,000 | 3,995 | Egyptian Hieroglyphs |
| 1 SMP | U+14400..U+1467F | Anatolian Hieroglyphs | 640 | 583 | Anatolian Hieroglyphs |
| 1 SMP | U+16100..U+1613F | Gurung Khema | 64 | 58 | Gurung Khema |
| 1 SMP | U+16800..U+16A3F | Bamum Supplement | 576 | 569 | Bamum |
| 1 SMP | U+16A40..U+16A6F | Mro | 48 | 43 | Mro |
| 1 SMP | U+16A70..U+16ACF | Tangsa | 96 | 89 | Tangsa |
| 1 SMP | U+16AD0..U+16AFF | Bassa Vah | 48 | 36 | Bassa Vah |
| 1 SMP | U+16B00..U+16B8F | Pahawh Hmong | 144 | 127 | Pahawh Hmong |
| 1 SMP | U+16D40..U+16D7F | Kirat Rai | 64 | 58 | Kirat Rai |
| 1 SMP | U+16E40..U+16E9F | Medefaidrin | 96 | 91 | Medefaidrin |
| 1 SMP | U+16EA0..U+16EDF | Beria Erfe | 64 | 50 | Beria Erfe |
| 1 SMP | U+16F00..U+16F9F | Miao | 160 | 149 | Miao |
| 1 SMP | U+16FE0..U+16FFF | Ideographic Symbols and Punctuation | 32 | 12 | Han (9 characters), Khitan Small Script (1 character), Nushu (1 character), Tangut (1 character) |
| 1 SMP | U+17000..U+187FF | Tangut | 6,144 | 6,144 | Tangut |
| 1 SMP | U+18800..U+18AFF | Tangut Components | 768 | 768 | Tangut |
| 1 SMP | U+18B00..U+18CFF | Khitan Small Script | 512 | 471 | Khitan Small Script |
| 1 SMP | U+18D00..U+18D7F | Tangut Supplement | 128 | 31 | Tangut |
| 1 SMP | U+18D80..U+18DFF | Tangut Components Supplement | 128 | 115 | Tangut |
| 1 SMP | U+1AFF0..U+1AFFF | Kana Extended-B | 16 | 13 | Katakana |
| 1 SMP | U+1B000..U+1B0FF | Kana Supplement | 256 | 256 | Hiragana (255 characters), Katakana (1 character) |
| 1 SMP | U+1B100..U+1B12F | Kana Extended-A | 48 | 35 | Hiragana (32 characters), Katakana (3 characters) |
| 1 SMP | U+1B130..U+1B16F | Small Kana Extension | 64 | 9 | Hiragana (4 characters), Katakana (5 characters) |
| 1 SMP | U+1B170..U+1B2FF | Nushu | 400 | 396 | Nüshu |
| 1 SMP | U+1BC00..U+1BC9F | Duployan | 160 | 143 | Duployan |
| 1 SMP | U+1BCA0..U+1BCAF | Shorthand Format Controls | 16 | 4 | Common |
| 1 SMP | U+1CC00..U+1CEBF | Symbols for Legacy Computing Supplement | 704 | 695 | Common |
| 1 SMP | U+1CEC0..U+1CEFF | Miscellaneous Symbols Supplement | 64 | 34 | Common |
| 1 SMP | U+1CF00..U+1CFCF | Znamenny Musical Notation | 208 | 185 | Common (116 characters), Inherited (69 characters) |
| 1 SMP | U+1D000..U+1D0FF | Byzantine Musical Symbols | 256 | 246 | Common |
| 1 SMP | U+1D100..U+1D1FF | Musical Symbols | 256 | 233 | Common (211 characters), Inherited (22 characters) |
| 1 SMP | U+1D200..U+1D24F | Ancient Greek Musical Notation | 80 | 70 | Greek |
| 1 SMP | U+1D2C0..U+1D2DF | Kaktovik Numerals | 32 | 20 | Common |
| 1 SMP | U+1D2E0..U+1D2FF | Mayan Numerals | 32 | 20 | Common |
| 1 SMP | U+1D300..U+1D35F | Tai Xuan Jing Symbols | 96 | 87 | Common |
| 1 SMP | U+1D360..U+1D37F | Counting Rod Numerals | 32 | 25 | Common |
| 1 SMP | U+1D400..U+1D7FF | Mathematical Alphanumeric Symbols | 1,024 | 996 | Common |
| 1 SMP | U+1D800..U+1DAAF | Sutton SignWriting | 688 | 672 | SignWriting |
| 1 SMP | U+1DF00..U+1DFFF | Latin Extended-G | 256 | 37 | Latin |
| 1 SMP | U+1E000..U+1E02F | Glagolitic Supplement | 48 | 38 | Glagolitic |
| 1 SMP | U+1E030..U+1E08F | Cyrillic Extended-D | 96 | 63 | Cyrillic |
| 1 SMP | U+1E100..U+1E14F | Nyiakeng Puachue Hmong | 80 | 71 | Nyiakeng Puachue Hmong |
| 1 SMP | U+1E290..U+1E2BF | Toto | 48 | 31 | Toto |
| 1 SMP | U+1E2C0..U+1E2FF | Wancho | 64 | 59 | Wancho |
| 1 SMP | U+1E4D0..U+1E4FF | Nag Mundari | 48 | 42 | Mundari |
| 1 SMP | U+1E5D0..U+1E5FF | Ol Onal | 48 | 44 | Ol Onal |
| 1 SMP | U+1E6C0..U+1E6FF | Tai Yo | 64 | 55 | Tai Yo |
| 1 SMP | U+1E7E0..U+1E7FF | Ethiopic Extended-B | 32 | 28 | Ethiopic |
| 1 SMP | U+1E800..U+1E8DF | Mende Kikakui | 224 | 213 | Mende Kikakui |
| 1 SMP | U+1E900..U+1E95F | Adlam | 96 | 88 | Adlam |
| 1 SMP | U+1EC70..U+1ECBF | Indic Siyaq Numbers | 80 | 68 | Common |
| 1 SMP | U+1ED00..U+1ED4F | Ottoman Siyaq Numbers | 80 | 61 | Common |
| 1 SMP | U+1EE00..U+1EEFF | Arabic Mathematical Alphabetic Symbols | 256 | 143 | Arabic |
| 1 SMP | U+1F000..U+1F02F | Mahjong Tiles | 48 | 44 | Common |
| 1 SMP | U+1F030..U+1F09F | Domino Tiles | 112 | 100 | Common |
| 1 SMP | U+1F0A0..U+1F0FF | Playing Cards | 96 | 82 | Common |
| 1 SMP | U+1F100..U+1F1FF | Enclosed Alphanumeric Supplement | 256 | 200 | Common |
| 1 SMP | U+1F200..U+1F2FF | Enclosed Ideographic Supplement | 256 | 64 | Hiragana (1 character), Common (63 characters) |
| 1 SMP | U+1F300..U+1F5FF | Miscellaneous Symbols and Pictographs | 768 | 768 | Common |
| 1 SMP | U+1F600..U+1F64F | Emoticons | 80 | 80 | Common |
| 1 SMP | U+1F650..U+1F67F | Ornamental Dingbats | 48 | 48 | Common |
| 1 SMP | U+1F680..U+1F6FF | Transport and Map Symbols | 128 | 119 | Common |
| 1 SMP | U+1F700..U+1F77F | Alchemical Symbols | 128 | 128 | Common |
| 1 SMP | U+1F780..U+1F7FF | Geometric Shapes Extended | 128 | 103 | Common |
| 1 SMP | U+1F800..U+1F8FF | Supplemental Arrows-C | 256 | 171 | Common |
| 1 SMP | U+1F900..U+1F9FF | Supplemental Symbols and Pictographs | 256 | 256 | Common |
| 1 SMP | U+1FA00..U+1FA6F | Chess Symbols | 112 | 102 | Common |
| 1 SMP | U+1FA70..U+1FAFF | Symbols and Pictographs Extended-A | 144 | 120 | Common |
| 1 SMP | U+1FB00..U+1FBFF | Symbols for Legacy Computing | 256 | 250 | Common |
| 2 SIP | U+20000..U+2A6DF | CJK Unified Ideographs Extension B | 42,720 | 42,720 | Han |
| 2 SIP | U+2A700..U+2B73F | CJK Unified Ideographs Extension C | 4,160 | 4,160 | Han |
| 2 SIP | U+2B740..U+2B81F | CJK Unified Ideographs Extension D | 224 | 222 | Han |
| 2 SIP | U+2B820..U+2CEAF | CJK Unified Ideographs Extension E | 5,776 | 5,774 | Han |
| 2 SIP | U+2CEB0..U+2EBEF | CJK Unified Ideographs Extension F | 7,488 | 7,473 | Han |
| 2 SIP | U+2EBF0..U+2EE5F | CJK Unified Ideographs Extension I | 624 | 622 | Han |
| 2 SIP | U+2F800..U+2FA1F | CJK Compatibility Ideographs Supplement | 544 | 542 | Han |
| 3 TIP | U+30000..U+3134F | CJK Unified Ideographs Extension G | 4,944 | 4,939 | Han |
| 3 TIP | U+31350..U+323AF | CJK Unified Ideographs Extension H | 4,192 | 4,192 | Han |
| 3 TIP | U+323B0..U+3347F | CJK Unified Ideographs Extension J | 4,304 | 4,298 | Han |
| 14 SSP | U+E0000..U+E007F | Tags | 128 | 97 | Common |
| 14 SSP | U+E0100..U+E01EF | Variation Selectors Supplement | 240 | 240 | Inherited |
| 15 PUA-A | U+F0000..U+FFFFF | Supplementary Private Use Area-A | 65,536 | 65,534 | Unknown |
| 16 PUA-B | U+100000..U+10FFFF | Supplementary Private Use Area-B | 65,536 | 65,534 | Unknown |
| |||||
Script
[edit]Each assigned character can have a single value for its "Script" property, signifying to which script it belongs.[24] The value is a four-letter code in the range Aaaa-Zzzz, as available in ISO 15924, which is mapped to a writing system. Apart from when describing the background and usage of a script, Unicode does not use a connection between a script and languages that use that script. So "Hebrew" refers to the Hebrew script, not to the Hebrew language.
The special code Zyyy for "Common" allows a single value for a character that is used in multiple scripts. The code Zinh "Inherited script", used for combining characters and certain other special-purpose code points, indicates that a character "inherits" its script identity from the character with which it is combined. (Unicode formerly used the private code Qaai for this purpose.) The code Zzzz "Unknown" is used for all characters that do not belong to a script (i.e. the default value), such as symbols and formatting characters. Overall, characters of a single script can be scattered over multiple blocks, like Latin characters. And the other way around too: multiple scripts can be present is a single block, e.g. block Letterlike Symbols contains characters from the Latin, Greek and Common scripts.
When the Script is "" (blank), according to Unicode the character does not belong to a script. This pertains to symbols, because the existing ISO script codes "Zmth" (Mathematical notation), "Zsym" (Symbol), and "Zsye" (Symbol, emoji variant) are not used in Unicode. The "Script" property is also blank for code points that are not a typographic character like controls, substitutes, and private use code points.
If there is a specific script alias name in ISO 15924, it is used in the character name: U+0041 A LATIN CAPITAL LETTER A, and U+05D0 א HEBREW LETTER ALEF.
| ISO 15924 | Script in Unicode[e] | |||||||
|---|---|---|---|---|---|---|---|---|
| Code | ISO number | ISO formal name | Directionality | Unicode Alias[f] | Version | Characters | Notes | Description |
| Adlm | 166 | Adlam | right-to-left script |
Adlam | 9.0 | 88 | Ch 19.9 | |
| Afak | 439 | Afaka | left-to-right |
— Not in Unicode, proposal is explored[i] | ||||
| Aghb | 239 | Caucasian Albanian | left-to-right |
Caucasian Albanian | 7.0 | 53 | Ancient/historic | Ch 8.11 |
| Ahom | 338 | Ahom, Tai Ahom | left-to-right |
Ahom | 8.0 | 65 | Ancient/historic | Ch 15.16 |
| Arab | 160 | Arabic | right-to-left script |
Arabic | 1.0 | 1,413 | Ch 9.2 | |
| Aran | 161 | Arabic (Nastaliq variant) | right-to-left script |
— Typographic variant of Arabic (see § Arab) | ||||
| Armi | 124 | Imperial Aramaic | right-to-left script |
Imperial Aramaic | 5.2 | 31 | Ancient/historic | Ch 10.4 |
| Armn | 230 | Armenian | left-to-right |
Armenian | 1.0 | 96 | Ch 7.6 | |
| Avst | 134 | Avestan | right-to-left script |
Avestan | 5.2 | 61 | Ancient/historic | Ch 10.7 |
| Bali | 360 | Balinese | left-to-right |
Balinese | 5.0 | 127 | Ch 17.3 | |
| Bamu | 435 | Bamum | left-to-right |
Bamum | 5.2 | 657 | Ch 19.6 | |
| Bass | 259 | Bassa Vah | left-to-right |
Bassa Vah | 7.0 | 36 | Ancient/historic | Ch 19.7 |
| Batk | 365 | Batak | left-to-right |
Batak | 6.0 | 56 | Ch 17.6 | |
| Beng | 325 | Bengali (Bangla) | left-to-right |
Bengali | 1.0 | 96 | Ch 12.2 | |
| Berf | 258 | Beria Erfe | left-to-right and top-down |
Beria Erfe | 17.0 | 50 | ||
| Bhks | 334 | Bhaiksuki | left-to-right |
Bhaiksuki | 9.0 | 97 | Ancient/historic | Ch 14.3 |
| Blis | 550 | Blissymbols | varies | — Not in Unicode, proposal is explored[i] | ||||
| Bopo | 285 | Bopomofo | left-to-right, right-to-left script |
Bopomofo | 1.0 | 77 | Ch 18.3 | |
| Brah | 300 | Brahmi | left-to-right |
Brahmi | 6.0 | 115 | Ancient/historic | Ch 14.1 |
| Brai | 570 | Braille | left-to-right, right-to-left script |
Braille | 3.0 | 256 | Ch 21.1 | |
| Bugi | 367 | Buginese | left-to-right |
Buginese | 4.1 | 30 | Ch 17.2 | |
| Buhd | 372 | Buhid | left-to-right |
Buhid | 3.2 | 20 | Ch 17.1 | |
| Cakm | 349 | Chakma | left-to-right |
Chakma | 6.1 | 71 | Ch 13.11 | |
| Cans | 440 | Unified Canadian Aboriginal Syllabics | left-to-right |
Canadian Aboriginal | 3.0 | 726 | Ch 20.2 | |
| Cari | 201 | Carian | left-to-right, right-to-left script |
Carian | 5.1 | 49 | Ancient/historic | Ch 8.5 |
| Cham | 358 | Cham | left-to-right |
Cham | 5.1 | 83 | Ch 16.10 | |
| Cher | 445 | Cherokee | left-to-right |
Cherokee | 3.0 | 172 | Ch 20.1 | |
| Chis | 298 | Chisoi | left-to-right |
— Not in Unicode, proposal is mature[ii] | ||||
| Chrs | 109 | Chorasmian | right-to-left script, top-to-bottom |
Chorasmian | 13.0 | 28 | Ancient/historic | Ch 10.8 |
| Cirt | 291 | Cirth | varies | — Not in Unicode | ||||
| Copt | 204 | Coptic | left-to-right |
Coptic | 1.0 | 137 | Ancient/historic, disunified from Greek in 4.1 | Ch 7.3 |
| Cpmn | 402 | Cypro-Minoan | left-to-right |
Cypro Minoan | 14.0 | 99 | Ancient/historic | Ch 8.4 |
| Cprt | 403 | Cypriot syllabary | right-to-left script |
Cypriot | 4.0 | 55 | Ancient/historic | Ch 8.3 |
| Cyrl | 220 | Cyrillic | left-to-right |
Cyrillic | 1.0 | 508 | Includes typographic variant Old Church Slavonic (see § Cyrs) | Ch 7.4 |
| Cyrs | 221 | Cyrillic (Old Church Slavonic variant) | left-to-right |
— Typographic variant of Cyrillic (see § Cyrl); Ancient/historic | ||||
| Deva | 315 | Devanagari (Nagari) | left-to-right |
Devanagari | 1.0 | 164 | Ch 12.1 | |
| Diak | 342 | Dives Akuru | left-to-right |
Dives Akuru | 13.0 | 72 | Ancient/historic | Ch 15.15 |
| Dogr | 328 | Dogra | left-to-right |
Dogra | 11.0 | 60 | Ancient/historic | Ch 15.18 |
| Dsrt | 250 | Deseret (Mormon) | left-to-right |
Deseret | 3.1 | 80 | Ch 20.4 | |
| Dupl | 755 | Duployan shorthand, Duployan stenography | left-to-right |
Duployan | 7.0 | 143 | Ch 21.6 | |
| Egyd | 070 | Egyptian demotic | mixed | — Not in Unicode | ||||
| Egyh | 060 | Egyptian hieratic | mixed | — Not in Unicode | ||||
| Egyp | 050 | Egyptian hieroglyphs | right-to-left script, left-to-right, bottom-to-top, top-to-bottom |
Egyptian Hieroglyphs | 5.2 | 5,105 | Ancient/historic | Ch 11.4 |
| Elba | 226 | Elbasan | left-to-right |
Elbasan | 7.0 | 40 | Ancient/historic | Ch 8.10 |
| Elym | 128 | Elymaic | right-to-left script |
Elymaic | 12.0 | 23 | Ancient/historic | Ch 10.9 |
| Ethi | 430 | Ethiopic (Geʻez) | left-to-right |
Ethiopic | 3.0 | 523 | Ch 19.1 | |
| Gara | 164 | Garay | right-to-left script |
Garay | 16.0 | 69 | ||
| Geok | 241 | Khutsuri (Asomtavruli and Nuskhuri) | left-to-right |
Georgian | Unicode groups Khutsori, Asomtavruli and Nuskhuri into 'Georgian' (see § Geok). Similarly, Mkhedruli and Mtavruli are 'Georgian' (see § Geor) | Ch 7.7 | ||
| Geor | 240 | Georgian (Mkhedruli and Mtavruli) | left-to-right |
Georgian | 1.0 | 173 | In Unicode this also includes Nuskhuri (Geok) | Ch 7.7 |
| Glag | 225 | Glagolitic | left-to-right |
Glagolitic | 4.1 | 134 | Ancient/historic | Ch 7.5 |
| Gong | 312 | Gunjala Gondi | left-to-right |
Gunjala Gondi | 11.0 | 63 | Ch 13.15 | |
| Gonm | 313 | Masaram Gondi | left-to-right |
Masaram Gondi | 10.0 | 75 | Ch 13.14 | |
| Goth | 206 | Gothic | left-to-right |
Gothic | 3.1 | 27 | Ancient/historic | Ch 8.9 |
| Gran | 343 | Grantha | left-to-right |
Grantha | 7.0 | 85 | Ancient/historic | Ch 15.14 |
| Grek | 200 | Greek | left-to-right |
Greek | 1.0 | 518 | Directionality sometimes as boustrophedon | Ch 7.2 |
| Gujr | 320 | Gujarati | left-to-right |
Gujarati | 1.0 | 91 | Ch 12.4 | |
| Gukh | 397 | Gurung Khema | left-to-right |
Gurung Khema | 16.0 | 58 | ||
| Guru | 310 | Gurmukhi | left-to-right |
Gurmukhi | 1.0 | 80 | Ch 12.3 | |
| Hanb | 503 | Han with Bopomofo (alias for Han + Bopomofo) | mixed | — See § Hani, § Bopo | ||||
| Hang | 286 | Hangul (Hangŭl, Hangeul) | left-to-right, vertical right-to-left |
Hangul | 1.0 | 11,739 | Hangul syllables relocated in 2.0 | Ch 18.6 |
| Hani | 500 | Han (Hanzi, Kanji, Hanja) | top-to-bottom, columns right-to-left (historically) | Han | 1.0 | 103,351 | Ch 18.1 | |
| Hano | 371 | Hanunoo (Hanunóo) | left-to-right, bottom-to-top |
Hanunoo | 3.2 | 21 | Ch 17.1 | |
| Hans | 501 | Han (Simplified variant) | varies | — Subset of Han (Hanzi, Kanji, Hanja) (see § Hani) | ||||
| Hant | 502 | Han (Traditional variant) | varies | — Subset of § Hani | ||||
| Hatr | 127 | Hatran | right-to-left script |
Hatran | 8.0 | 26 | Ancient/historic | Ch 10.12 |
| Hebr | 125 | Hebrew | right-to-left script |
Hebrew | 1.0 | 134 | Ch 9.1 | |
| Hira | 410 | Hiragana | vertical right-to-left, left-to-right |
Hiragana | 1.0 | 381 | Ch 18.4 | |
| Hluw | 080 | Anatolian Hieroglyphs (Luwian Hieroglyphs, Hittite Hieroglyphs) | left-to-right |
Anatolian Hieroglyphs | 8.0 | 583 | Ancient/historic | Ch 11.6 |
| Hmng | 450 | Pahawh Hmong | left-to-right |
Pahawh Hmong | 7.0 | 127 | Ch 16.11 | |
| Hmnp | 451 | Nyiakeng Puachue Hmong | left-to-right |
Nyiakeng Puachue Hmong | 12.0 | 71 | Ch 16.12 | |
| Hntl | 504 | Han (Traditional variant) with Latin (alias for Hant + Latn) | — See § Hant and § Latn | |||||
| Hrkt | 412 | Japanese syllabaries (alias for Hiragana + Katakana) | vertical right-to-left, left-to-right |
Katakana or Hiragana | See § Hira, § Kana | Ch 18.4 | ||
| Hung | 176 | Old Hungarian (Hungarian Runic) | right-to-left script |
Old Hungarian | 8.0 | 108 | Ancient/historic | Ch 8.8 |
| Inds | 610 | Indus (Harappan) | right-to-left script, boustrophedon |
— Not in Unicode, proposal is explored[i] | ||||
| Ital | 210 | Old Italic (Etruscan, Oscan, etc.) | right-to-left script, left-to-right |
Old Italic | 3.1 | 39 | Ancient/historic | Ch 8.6 |
| Jamo | 284 | Jamo (alias for Jamo subset of Hangul) | varies | — Subset of § Hang | ||||
| Java | 361 | Javanese | left-to-right |
Javanese | 5.2 | 90 | Ch 17.4 | |
| Jpan | 413 | Japanese (alias for Han + Hiragana + Katakana) | varies | — See § Hani, § Hira and § Kana | ||||
| Jurc | 510 | Jurchen | left-to-right |
— Not in Unicode | ||||
| Kali | 357 | Kayah Li | left-to-right |
Kayah Li | 5.1 | 47 | Ch 16.9 | |
| Kana | 411 | Katakana | vertical right-to-left, left-to-right |
Katakana | 1.0 | 321 | Ch 18.4 | |
| Kawi | 368 | Kawi | left-to-right |
Kawi | 15.0 | 87 | Ancient/historic | Ch 17.9 |
| Khar | 305 | Kharoshthi | right-to-left script |
Kharoshthi | 4.1 | 68 | Ancient/historic | Ch 14.2 |
| Khmr | 355 | Khmer | left-to-right |
Khmer | 3.0 | 146 | Ch 16.4 | |
| Khoj | 322 | Khojki | left-to-right |
Khojki | 7.0 | 65 | Ancient/historic | Ch 15.7 |
| Kitl | 505 | Khitan large script | left-to-right |
— Not in Unicode | ||||
| Kits | 288 | Khitan small script | vertical right-to-left |
Khitan Small Script | 13.0 | 472 | Ancient/historic | Ch 18.12 |
| Knda | 345 | Kannada | left-to-right |
Kannada | 1.0 | 92 | Ch 12.8 | |
| Kore | 287 | Korean (alias for Hangul + Han) | left-to-right | — See § Hani, § Hang | ||||
| Kpel | 436 | Kpelle | left-to-right |
— Not in Unicode, proposal is explored[i] | ||||
| Krai | 396 | Kirat Rai | left-to-right |
Kirat Rai | 16.0 | 58 | ||
| Kthi | 317 | Kaithi | left-to-right |
Kaithi | 5.2 | 68 | Ancient/historic | Ch 15.2 |
| Lana | 351 | Tai Tham (Lanna) | left-to-right |
Tai Tham | 5.2 | 127 | Ch 16.7 | |
| Laoo | 356 | Lao | left-to-right |
Lao | 1.0 | 83 | Ch 16.2 | |
| Latf | 217 | Latin (Fraktur variant) | left-to-right |
— Typographic variant of Latin (see § Latn) | ||||
| Latg | 216 | Latin (Gaelic variant) | left-to-right |
— Typographic variant of Latin (see § Latn) | ||||
| Latn | 215 | Latin | left-to-right |
Latin | 1.0 | 1,492 | See also: Latin script in Unicode | Ch 7.1 |
| Leke | 364 | Leke | left-to-right |
— Not in Unicode | ||||
| Lepc | 335 | Lepcha (Róng) | left-to-right |
Lepcha | 5.1 | 74 | Ch 13.12 | |
| Limb | 336 | Limbu | left-to-right |
Limbu | 4.0 | 68 | Ch 13.6 | |
| Lina | 400 | Linear A | left-to-right |
Linear A | 7.0 | 341 | Ancient/historic | Ch 8.1 |
| Linb | 401 | Linear B | left-to-right |
Linear B | 4.0 | 211 | Ancient/historic | Ch 8.2 |
| Lisu | 399 | Lisu (Fraser) | left-to-right |
Lisu | 5.2 | 49 | Ch 18.9 | |
| Loma | 437 | Loma | left-to-right |
— Not in Unicode, proposal is explored[i] | ||||
| Lyci | 202 | Lycian | left-to-right |
Lycian | 5.1 | 29 | Ancient/historic | Ch 8.5 |
| Lydi | 116 | Lydian | right-to-left script |
Lydian | 5.1 | 27 | Ancient/historic | Ch 8.5 |
| Mahj | 314 | Mahajani | left-to-right |
Mahajani | 7.0 | 39 | Ancient/historic | Ch 15.6 |
| Maka | 366 | Makasar | left-to-right |
Makasar | 11.0 | 25 | Ancient/historic | Ch 17.8 |
| Mand | 140 | Mandaic, Mandaean | right-to-left script |
Mandaic | 6.0 | 29 | Ch 9.5 | |
| Mani | 139 | Manichaean | right-to-left script |
Manichaean | 7.0 | 51 | Ancient/historic | Ch 10.5 |
| Marc | 332 | Marchen | left-to-right |
Marchen | 9.0 | 68 | Ancient/historic | Ch 14.5 |
| Maya | 090 | Mayan hieroglyphs | mixed | — Not in Unicode | ||||
| Medf | 265 | Medefaidrin (Oberi Okaime, Oberi Ɔkaimɛ) | left-to-right |
Medefaidrin | 11.0 | 91 | Ch 19.10 | |
| Mend | 438 | Mende Kikakui | right-to-left script |
Mende Kikakui | 7.0 | 213 | Ch 19.8 | |
| Merc | 101 | Meroitic Cursive | right-to-left script |
Meroitic Cursive | 6.1 | 90 | Ancient/historic | Ch 11.5 |
| Mero | 100 | Meroitic Hieroglyphs | right-to-left script |
Meroitic Hieroglyphs | 6.1 | 32 | Ancient/historic | Ch 11.5 |
| Mlym | 347 | Malayalam | left-to-right |
Malayalam | 1.0 | 118 | Ch 12.9 | |
| Modi | 324 | Modi, Moḍī | left-to-right |
Modi | 7.0 | 79 | Ancient/historic | Ch 15.12 |
| Mong | 145 | Mongolian | vertical left-to-right, left-to-right |
Mongolian | 3.0 | 168 | Mong includes Clear and Manchu scripts | Ch 13.5 |
| Moon | 218 | Moon (Moon code, Moon script, Moon type) | mixed | — Not in Unicode, proposal is explored[i] | ||||
| Mroo | 264 | Mro, Mru | left-to-right |
Mro | 7.0 | 43 | Ch 13.8 | |
| Mtei | 337 | Meitei Mayek (Meithei, Meetei) | left-to-right |
Meetei Mayek | 5.2 | 79 | Ch 13.7 | |
| Mult | 323 | Multani | left-to-right |
Multani | 8.0 | 38 | Ancient/historic | Ch 15.10 |
| Mymr | 350 | Myanmar (Burmese) | left-to-right |
Myanmar | 3.0 | 243 | Ch 16.3 | |
| Nagm | 295 | Nag Mundari | left-to-right |
Nag Mundari | 15.0 | 42 | ||
| Nand | 311 | Nandinagari | left-to-right |
Nandinagari | 12.0 | 65 | Ancient/historic | Ch 15.13 |
| Narb | 106 | Old North Arabian (Ancient North Arabian) | right-to-left script |
Old North Arabian | 7.0 | 32 | Ancient/historic | Ch 10.1 |
| Nbat | 159 | Nabataean | right-to-left script |
Nabataean | 7.0 | 40 | Ancient/historic | Ch 10.10 |
| Newa | 333 | Newa, Newar, Newari, Nepāla lipi | left-to-right |
Newa | 9.0 | 97 | Ch 13.3 | |
| Nkdb | 085 | Naxi Dongba (na²¹ɕi³³ to³³ba²¹, Nakhi Tomba) | left-to-right |
— Not in Unicode | ||||
| Nkgb | 420 | Naxi Geba (na²¹ɕi³³ gʌ²¹ba²¹, 'Na-'Khi ²Ggŏ-¹baw, Nakhi Geba) | left-to-right |
— Not in Unicode, proposal is explored[i] | ||||
| Nkoo | 165 | N’Ko | right-to-left script |
NKo | 5.0 | 62 | Ch 19.4 | |
| Nshu | 499 | Nüshu | vertical right-to-left |
Nushu | 10.0 | 397 | Ch 18.8 | |
| Ogam | 212 | Ogham | bottom-to-top, left-to-right |
Ogham | 3.0 | 29 | Ancient/historic | Ch 8.14 |
| Olck | 261 | Ol Chiki (Ol Cemet’, Ol, Santali) | left-to-right |
Ol Chiki | 5.1 | 48 | Ch 13.10 | |
| Onao | 296 | Ol Onal | left-to-right |
Ol Onal | 16.0 | 44 | ||
| Orkh | 175 | Old Turkic, Orkhon Runic | right-to-left script |
Old Turkic | 5.2 | 73 | Ancient/historic | Ch 14.8 |
| Orya | 327 | Oriya (Odia) | left-to-right |
Oriya | 1.0 | 91 | Ch 12.5 | |
| Osge | 219 | Osage | left-to-right |
Osage | 9.0 | 72 | Ch 20.3 | |
| Osma | 260 | Osmanya | left-to-right |
Osmanya | 4.0 | 40 | Ch 19.2 | |
| Ougr | 143 | Old Uyghur | mixed | Old Uyghur | 14.0 | 26 | Ancient/historic | Ch 14.11 |
| Palm | 126 | Palmyrene | right-to-left script |
Palmyrene | 7.0 | 32 | Ancient/historic | Ch 10.11 |
| Pauc | 263 | Pau Cin Hau | left-to-right |
Pau Cin Hau | 7.0 | 57 | Ch 16.13 | |
| Pcun | 015 | Proto-Cuneiform | left-to-right |
— Not in Unicode | ||||
| Pelm | 016 | Proto-Elamite | left-to-right |
— Not in Unicode | ||||
| Perm | 227 | Old Permic | left-to-right |
Old Permic | 7.0 | 43 | Ancient/historic | Ch 8.13 |
| Phag | 331 | Phags-pa | vertical left-to-right |
Phags-pa | 5.0 | 56 | Ancient/historic | Ch 14.4 |
| Phli | 131 | Inscriptional Pahlavi | right-to-left script |
Inscriptional Pahlavi | 5.2 | 27 | Ancient/historic | Ch 10.6 |
| Phlp | 132 | Psalter Pahlavi | right-to-left script |
Psalter Pahlavi | 7.0 | 29 | Ancient/historic | Ch 10.6 |
| Phlv | 133 | Book Pahlavi | mixed | — Not in Unicode | ||||
| Phnx | 115 | Phoenician | right-to-left script |
Phoenician | 5.0 | 29 | Ancient/historic[g] | Ch 10.3 |
| Piqd | 293 | Klingon (KLI pIqaD) | left-to-right |
— Rejected for inclusion in Unicode[iii][iv] | ||||
| Plrd | 282 | Miao (Pollard) | left-to-right |
Miao | 6.1 | 149 | Ch 18.10 | |
| Prti | 130 | Inscriptional Parthian | right-to-left script |
Inscriptional Parthian | 5.2 | 30 | Ancient/historic | Ch 10.6 |
| Psin | 103 | Proto-Sinaitic | mixed | — Not in Unicode | ||||
| Qaaa-Qabx | 900-949 | Reserved for private use (range) | — Not in Unicode | |||||
| Ranj | 303 | Ranjana | left-to-right |
— Not in Unicode | ||||
| Rjng | 363 | Rejang (Redjang, Kaganga) | left-to-right |
Rejang | 5.1 | 37 | Ch 17.5 | |
| Rohg | 167 | Hanifi Rohingya | right-to-left script |
Hanifi Rohingya | 11.0 | 50 | Ch 16.14 | |
| Roro | 620 | Rongorongo | mixed | — Not in Unicode, proposal is explored[i] | ||||
| Runr | 211 | Runic | left-to-right, boustrophedon |
Runic | 3.0 | 86 | Ancient/historic | Ch 8.7 |
| Samr | 123 | Samaritan | right-to-left script, top-to-bottom |
Samaritan | 5.2 | 61 | Ch 9.4 | |
| Sara | 292 | Sarati | mixed | — Not in Unicode | ||||
| Sarb | 105 | Old South Arabian | right-to-left script |
Old South Arabian | 5.2 | 32 | Ancient/historic | Ch 10.2 |
| Saur | 344 | Saurashtra | left-to-right |
Saurashtra | 5.1 | 82 | Ch 13.13 | |
| Seal | 590 | (Small) Seal | varies | — Not in Unicode, proposal is explored[i] | ||||
| Sgnw | 095 | SignWriting | vertical left-to-right |
SignWriting | 8.0 | 672 | Ch 21.7 | |
| Shaw | 281 | Shavian (Shaw) | left-to-right |
Shavian | 4.0 | 48 | Ch 8.15 | |
| Shrd | 319 | Sharada, Śāradā | left-to-right |
Sharada | 6.1 | 104 | Ch 15.3 | |
| Shui | 530 | Shuishu | left-to-right | — Not in Unicode | ||||
| Sidd | 302 | Siddham, Siddhaṃ, Siddhamātṛkā | left-to-right |
Siddham | 7.0 | 92 | Ancient/historic | Ch 15.5 |
| Sidt | 180 | Sidetic | right-to-left script |
Sidetic | 17.0 | 26 | Ancient/historic | |
| Sind | 318 | Khudawadi, Sindhi | left-to-right |
Khudawadi | 7.0 | 69 | Ch 15.9 | |
| Sinh | 348 | Sinhala | left-to-right |
Sinhala | 3.0 | 111 | Ch 13.2 | |
| Sogd | 141 | Sogdian | horizontal and vertical writing in East Asian scripts, top-to-bottom |
Sogdian | 11.0 | 42 | Ancient/historic | Ch 14.10 |
| Sogo | 142 | Old Sogdian | right-to-left script |
Old Sogdian | 11.0 | 40 | Ancient/historic | Ch 14.9 |
| Sora | 398 | Sora Sompeng | left-to-right |
Sora Sompeng | 6.1 | 35 | Ch 15.17 | |
| Soyo | 329 | Soyombo | left-to-right |
Soyombo | 10.0 | 83 | Ancient/historic | Ch 14.7 |
| Sund | 362 | Sundanese | left-to-right |
Sundanese | 5.1 | 72 | Ch 17.7 | |
| Sunu | 274 | Sunuwar | left-to-right |
Sunuwar | 16.0 | 44 | ||
| Sylo | 316 | Syloti Nagri | left-to-right |
Syloti Nagri | 4.1 | 45 | Ancient/historic | Ch 15.1 |
| Syrc | 135 | Syriac | right-to-left script |
Syriac | 3.0 | 88 | Includes typographic variants Estrangelo (see § Syre), Western (§ Syrj), and Eastern (§ Syrn) | Ch 9.3 |
| Syre | 138 | Syriac (Estrangelo variant) | right-to-left script |
— Typographic variant of Syriac (see § Syrc) | ||||
| Syrj | 137 | Syriac (Western variant) | right-to-left script |
— Typographic variant of Syriac (see § Syrc) | ||||
| Syrn | 136 | Syriac (Eastern variant) | right-to-left script |
— Typographic variant of Syriac (see § Syrc) | ||||
| Tagb | 373 | Tagbanwa | left-to-right |
Tagbanwa | 3.2 | 18 | Ch 17.1 | |
| Takr | 321 | Takri, Ṭākrī, Ṭāṅkrī | left-to-right |
Takri | 6.1 | 68 | Ch 15.4 | |
| Tale | 353 | Tai Le | left-to-right |
Tai Le | 4.0 | 35 | Ch 16.5 | |
| Talu | 354 | New Tai Lue | left-to-right |
New Tai Lue | 4.1 | 83 | Ch 16.6 | |
| Taml | 346 | Tamil | left-to-right |
Tamil | 1.0 | 123 | Ch 12.6 | |
| Tang | 520 | Tangut | vertical right-to-left, left-to-right |
Tangut | 9.0 | 7,059 | Ancient/historic | Ch 18.11 |
| Tavt | 359 | Tai Viet | left-to-right |
Tai Viet | 5.2 | 72 | Ch 16.8 | |
| Tayo | 380 | Tai Yo | vertical right-to-left |
Tai Yo | 17.0 | 55 | ||
| Telu | 340 | Telugu | left-to-right |
Telugu | 1.0 | 101 | Ch 12.7 | |
| Teng | 290 | Tengwar | left-to-right |
— Not in Unicode | ||||
| Tfng | 120 | Tifinagh (Berber) | right-to-left script, left-to-right, top-to-bottom, bottom-to-top |
Tifinagh | 4.1 | 59 | Ch 19.3 | |
| Tglg | 370 | Tagalog (Baybayin, Alibata) | left-to-right |
Tagalog | 3.2 | 23 | Ch 17.1 | |
| Thaa | 170 | Thaana | right-to-left script |
Thaana | 3.0 | 50 | Ch 13.1 | |
| Thai | 352 | Thai | left-to-right |
Thai | 1.0 | 86 | Ch 16.1 | |
| Tibt | 330 | Tibetan | left-to-right |
Tibetan | 2.0 | 207 | Added in 1.0, removed in 1.1 and reintroduced in 2.0 | Ch 13.4 |
| Tirh | 326 | Tirhuta | left-to-right |
Tirhuta | 7.0 | 82 | Ch 15.11 | |
| Tnsa | 275 | Tangsa | left-to-right |
Tangsa | 14.0 | 89 | Ch 13.18 | |
| Todr | 229 | Todhri | left-to-right |
Todhri | 16.0 | 52 | Ancient/historic | |
| Tols | 299 | Tolong Siki | left-to-right |
Tolong Siki | 17.0 | 54 | ||
| Toto | 294 | Toto | left-to-right |
Toto | 14.0 | 31 | Ch 13.17 | |
| Tutg | 341 | Tulu-Tigalari | left-to-right |
Tulu Tigalari | 16.0 | 80 | Ancient/historic | |
| Ugar | 040 | Ugaritic | left-to-right |
Ugaritic | 4.0 | 31 | Ancient/historic | Ch 11.2 |
| Vaii | 470 | Vai | left-to-right |
Vai | 5.1 | 300 | Ch 19.5 | |
| Visp | 280 | Visible Speech | left-to-right |
— Not in Unicode | ||||
| Vith | 228 | Vithkuqi | left-to-right |
Vithkuqi | 14.0 | 70 | Ancient/historic | Ch 8.12 |
| Wara | 262 | Warang Citi (Varang Kshiti) | left-to-right |
Warang Citi | 7.0 | 84 | Ch 13.9 | |
| Wcho | 283 | Wancho | left-to-right |
Wancho | 12.0 | 59 | Ch 13.16 | |
| Wole | 480 | Woleai | left-to-right |
— Not in Unicode, proposal is explored[i] | ||||
| Xpeo | 030 | Old Persian | left-to-right |
Old Persian | 4.1 | 50 | Ancient/historic | Ch 11.3 |
| Xsux | 020 | Cuneiform, Sumero-Akkadian | left-to-right |
Cuneiform | 5.0 | 1,234 | Ancient/historic | Ch 11.1 |
| Yezi | 192 | Yezidi | right-to-left script |
Yezidi | 13.0 | 47 | Ancient/historic | Ch 9.6 |
| Yiii | 460 | Yi | left-to-right |
Yi | 3.0 | 1,220 | Ch 18.7 | |
| Zanb | 339 | Zanabazar Square (Zanabazarin Dörböljin Useg, Xewtee Dörböljin Bicig, Horizontal Square Script) | left-to-right |
Zanabazar Square | 10.0 | 72 | Ancient/historic | Ch 14.6 |
| Zinh | 994 | Code for inherited script | Inherited | 684 | ||||
| Zmth | 995 | Mathematical notation | — Not a 'script' in Unicode | |||||
| Zsye | 993 | Symbols (emoji variant) | — Not a 'script' in Unicode | |||||
| Zsym | 996 | Symbols | — Not a 'script' in Unicode | |||||
| Zxxx | 997 | Code for unwritten documents | — Not a 'script' in Unicode | |||||
| Zyyy | 998 | Code for undetermined script | Common | 9,123 | ||||
| Zzzz | 999 | Code for uncoded script | Unknown | 954,246 | In Unicode: All other code points | |||
Notes
| ||||||||
References
| ||||||||
Normalization properties
[edit]Decompositions, decomposition type, canonical combining class, composition exclusions, and more.
This section needs expansion. You can help by adding to it. (March 2022) |
Age
[edit]Age is the version of the standard in which the code point was first designated. The version number is shortened to the numbering major.minor', although there more detailed version numbers are used: versions 4.0.0 and 4.0.1 both are named 4.0 as Age. Given the releases, Age can be from the range: 1.1, 2.0, 2.1, 3.0, 3.1, 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, 6.0, 6.1, 6.2, 6.3, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 12.1, 13.0, 14.0, 15.0, 15.1, 16.0 and 17.0.[25] The long values for Age begin in a V and use an underscore instead of a dot: V1_1, for example.[2] Codepoints without a specifically assigned age value have the value "NA", with the long form "Unassigned".
Deprecated
[edit]Once a character has been defined, it will not be removed or reassigned.[26] However, a character may be deprecated, meaning its "use is strongly discouraged".[27] As of Unicode version 17.0, the following fifteen characters are deprecated:[28]
| Deprecated characters in Unicode | ||||
|---|---|---|---|---|
| Codepoint | Character name | Recommended alternative | Remarks | |
| U+0149 | LATIN SMALL LETTER N PRECEDED BY APOSTROPHE | U+02BC U+006E | ʼn | |
| U+0673 | ARABIC LETTER ALEF WITH WAVY HAMZA BELOW | U+0627 U+065F | اٟ | |
| U+0F77 | TIBETAN VOWEL SIGN VOCALIC RR | U+0FB2 U+0F81[a] | ྲཱྀ | |
| U+0F79 | TIBETAN VOWEL SIGN VOCALIC LL | U+0FB3 U+0F81[a] | ླཱྀ | |
| U+17A3 | KHMER INDEPENDENT VOWEL QAQ | U+17A2 | អ | |
| U+17A4 | KHMER INDEPENDENT VOWEL QAA | U+17A2 U+17B6 | អា | |
| U+206A | INHIBIT SYMMETRIC SWAPPING | None[b] | ||
| U+206B | ACTIVATE SYMMETRIC SWAPPING | None[b] | ||
| U+206C | INHIBIT ARABIC FORM SHAPING | None[b] | ||
| U+206D | ACTIVATE ARABIC FORM SHAPING | None[b] | ||
| U+206E | NATIONAL DIGIT SHAPES | None[b] | ||
| U+206F | NOMINAL DIGIT SHAPES | None[b] | ||
| U+2329 | LEFT-POINTING ANGLE BRACKET | U+3008[c] | 〈 | U+27E8 ⟨ MATHEMATICAL LEFT ANGLE BRACKET is recommended for mathematical and other technical use |
| U+232A | RIGHT-POINTING ANGLE BRACKET | U+3009[c] | 〉 | U+27E9 ⟩ MATHEMATICAL RIGHT ANGLE BRACKET is recommended for mathematical and other technical use |
| U+E0001 | LANGUAGE TAG | None[d] | ||
| ||||
Boundaries
[edit]The Unicode Standard specifies the following boundary-related properties:
- Grapheme cluster
- Word
- Line
- Sentence
This section needs expansion. You can help by adding to it. (January 2025) |
Alias name
[edit]Unicode can assign alias names to code points. These names are unique over all names (including regular ones), so they can be used as identifier. There are five possible reasons to add an alias:
- 1. Abbreviation
- Commonly occurring abbreviations or acronyms for control codes, format characters, spaces, and variation selectors.
- For example, U+00A0 NO-BREAK SPACE has alias NBSP. Sometimes presented in a box: NBSP.
- 2. Control
- ISO 6429 names for C0 and C1 control functions and similar commonly occurring names, are added as an alias to the character.
- For example, U+0008 <control-0008> has the alias BACKSPACE.
- 3. Correction
- This is a correction for a "serious problem" in the primary character name, usually an error.
- For example, U+2118 ℘ SCRIPT CAPITAL P is actually a lowercase p, and so is given alias name WEIERSTRASS ELLIPTIC FUNCTION: "actually this has the form of a lowercase calligraphic p, despite its name, and through the alias the correct spelling is added." In descriptions, with preceding symbol ※.
- 4. Alternate
- A widely used alternate name for a character.
- Example: U+FEFF ZERO WIDTH NO-BREAK SPACE has the alternate alias BYTE ORDER MARK.
- 5. Figment
- Several documented labels for C1 control code points which were never actually approved in any standard (figment meaning "feigned, in fiction").
- For example, U+0099 <control-0099> has the figment alias SINGLE GRAPHIC CHARACTER INTRODUCER. This name is an architectural concept from early drafts of ISO/IEC 10646-1, but it was never approved or standardized.
External links
[edit]- Unicode Character Database, annex #44, explaining the different properties
- UnicodeData.txt – a list of all Unicode characters, with their properties
References
[edit]- ^ a b c d e "The Unicode Standard, Chapter 4: Character Properties". The Unicode Consortium. September 2025. Retrieved 2025-09-21.
- ^ a b c "Unicode Standard Annex #44: Unicode Character Database". Unicode. 2024-08-27.
- ^ "Unicode Standard Annex #44: Unicode Character Database, 4.2.3 Code Point Ranges". Unicode. 2024-08-27.
- ^ UnicodeData.txt
- ^ "UCD: Name Aliases". Unicode Character Database. Unicode Consortium. 2024-04-24.
- ^ "Character design standards – space characters". Character design standards. Microsoft. 1998–1999. Archived from the original on March 14, 2010. Retrieved 2009-05-18.
- ^ The Unicode Standard 5.0, printed edition, p. 205; also available at "Chapter 6 — Writing Systems and Punctuation" (PDF). The Unicode Standard 5.0, electronic edition. Unicode Consortium. 2006-07-14. p. 11 (205). Retrieved 2022-12-22.
- ^ "General Punctuation" (PDF). The Unicode Standard 5.1. Unicode Inc. 1991–2008. Retrieved 2009-05-13.
- ^ Sargent, Murray III (2006-08-29). "Unicode Nearly Plain Text Encoding of Mathematics (Version 2)". Unicode Technical Note #28. Unicode Inc. pp. 19–20. Retrieved 2009-05-19.
- ^ Gillam, Richard (2002). Unicode Demystified: A Practical Programmer's Guide to the Encoding Standard. Addison-Wesley. ISBN 0-201-70052-2.
- ^ a b Hickson, Ian. "12.5 Named character references". HTML Standard. WHATWG.
- ^ Wolfram. "\[NegativeThickSpace]". Wolfram Language Documentation.
- ^ Wolfram. "\[NegativeMediumSpace]". Wolfram Language Documentation.
- ^ Wolfram. "\[NegativeThinSpace]". Wolfram Language Documentation.
- ^ Wolfram. "\[NegativeVeryThinSpace]". Wolfram Language Documentation.
- ^ Faltstrom, P., ed. (August 2010). "Zero Width Non-Joiner". The Unicode Code Points and Internationalized Domain Names for Applications (IDNA). IETF. sec. A.1. doi:10.17487/RFC5892. RFC 5892. Retrieved September 4, 2019.
- ^ Faltstrom, P., ed. (August 2010). "Zero Width Joiner". The Unicode Code Points and Internationalized Domain Names for Applications (IDNA). IETF. sec. A.2. doi:10.17487/RFC5892. RFC 5892. Retrieved September 4, 2019.
- ^ "Unicode Standard Annex #44, Unicode Character Database".
- ^ "Unicode Character Database: Special Casing Data". 2024-05-10.
- ^ "Ideograph (or ideogram)". Unicode Glossary. Retrieved 2025-09-19.
- ^ "Alphabetic Property". Unicode Character Database. Retrieved 2025-09-19.
- ^ "Noncharacter Code Point". Unicode Glossary. Retrieved 2025-09-19.
- ^ a b "Unicode Standard Annex #9: Unicode Bidirectional Algorithm". The Unicode Standard. 2024-09-02.
- ^ "Unicode Standard Annex #24: Unicode Script Property". The Unicode Standard. 2024-07-31.
- ^ "UCD: Derived Age". Unicode Character Database. Unicode Consortium. 2025-07-30.
- ^ "Unicode Character Encoding Stability Policies". Unicode. Unicode Consortium. 2024-01-09. Retrieved 2024-01-13.
Once a character is encoded, it will not be moved or removed.
- ^ "The Unicode Standard, D13 Deprecated character". 2025. Retrieved 2025-09-21.
- ^ "PropList.txt". Unicode. Unicode Consortium. 2025-06-30. Retrieved 2025-09-21.
- ^ "Chapter 23.3: Deprecated Format Characters". 2025. Retrieved 2025-09-11.
- ^ "23.9: Tag Characters, Deprecated Use for Language Tagging". 2025. Retrieved 2025-09-11.
Unicode character property
View on GrokipediaOverview
Definition and Purpose
Unicode character properties are metadata attributes assigned to each code point in the Unicode standard, ranging from U+0000 to U+10FFFF, that describe the behavior, category, or semantics of characters to facilitate various aspects of text processing, collation, rendering, and internationalization.[3] These properties provide essential information about how characters should be handled in software applications, extending beyond mere encoding to include details such as directionality, combining behavior, and numeric values.[1] The primary purpose of Unicode character properties is to ensure consistent and predictable handling of text across diverse applications and platforms, including font selection, line breaking, text normalization, and search functionality. By standardizing these attributes, properties enable interoperability in globalized computing environments, supporting the rendering of bidirectional scripts, segmentation of words and sentences, and accurate collation for sorting.[3] For instance, the General Category property distinguishes letters from symbols, aiding in tasks like uppercase conversion or punctuation detection without delving into specific implementations.[1] Introduced with Unicode 1.0 in October 1991, character properties have evolved significantly in subsequent versions to accommodate an expanding repertoire of global scripts and to align with the development of ISO/IEC 10646, the international standard for universal character encoding.[4] This evolution emphasizes support for diverse writing systems while maintaining compatibility with legacy encodings. Properties are classified as normative, which must be adhered to for conformance to the standard (such as those governing bidirectional rendering), or informative, serving as guidelines that may inform but do not strictly require implementation.[1]Classification of Properties
Unicode character properties are classified into several types based on the nature of their values, as defined in the Unicode Character Property Model. Binary properties are boolean, taking true or false values, such as White_Space, which identifies characters that separate tokens in text processing.[1] Enumerated properties have a finite set of named values, for example, General_Category with values like Letter or Mark, used to categorize characters for rendering and analysis.[1] Catalog properties involve extensible lists of strings, such as Name_Alias, which provides alternative names for characters. Numeric properties assign integer or rational numbers, like Numeric_Value for digits and fractions. String properties map to sequences of code points, including Decomposition_Mapping for normalization forms.[1] Stability levels for properties are governed by the Unicode Character Encoding Stability Policy to ensure reliable text processing across versions. Immutable properties, such as the code point assignment and character Name, never change once established, providing foundational guarantees since Unicode 2.0. Deprecated properties are discouraged for new implementations but remain supported for backward compatibility, like certain legacy aliases. Provisional properties lack full stability commitments and may be revised, particularly for specialized areas like Unihan data. These policies were last updated on January 9, 2024.[5][2] Properties are further tiered by usage to guide implementation priorities. Core or normative properties are essential for Unicode conformance, including Bidi_Class for bidirectional text layout. Supplementary properties support advanced features, such as those for emoji handling. Informative properties offer non-normative guidance, like ISO_Comment for additional annotations, without conformance requirements. Contributory properties, such as Other_Alphabetic, contribute to derived normative ones but are not used independently.[2] By Unicode 17.0 released in 2025, the Unicode Character Database specifies over 100 properties when accounting for main, contributory, and alias variants, enabling diverse applications from text rendering to search algorithms. Emerging properties, like Emoji_Presentation added in Unicode 6.0 in 2010, exemplify expansions for modern digital communication, classifying characters that default to emoji-style presentation.[2][6]Naming and Identification
Character Names
Each Unicode character that is formally assigned a code point receives a unique official name, serving as its primary identifier within the standard. These names are defined in the Unicode Character Database (UCD) via the Name property and follow a strict format: all uppercase English words separated by single spaces, with no abbreviations except in specific predefined cases, such as algorithmic names for Hangul syllables or CJK ideographs. For example, the character at code point U+0041 is named "LATIN CAPITAL LETTER A". This naming convention has been in place since the initial release of Unicode 1.0 in 1991, providing a consistent way to reference characters independently of their visual representation.[7] In the original Unicode 1.0, some character names differed slightly from their modern forms to accommodate alignment with the emerging ISO/IEC 10646 standard. For instance, the name for U+0009 was "HORIZONTAL TABULATION," but it was later revised to "CHARACTER TABULATION" to match ISO nomenclature. These legacy Unicode 1.0 names are preserved for historical reference in the obsolete Unicode_1_Name field of the UnicodeData.txt file, which has not been updated since Unicode 6.2.0 and is no longer actively used. No substantive changes to names have occurred since Unicode 2.0 in 1996, when the current stability rules were established.[3][8] The immutability of character names is enforced by the Unicode Consortium's Character Encoding Stability Policy, which prohibits alterations to assigned names to maintain compatibility across implementations and versions, with exceptions only for documented clerical corrections. This stability extends to all formally named characters, ensuring that software and data processing systems can rely on consistent identifiers over time. Supplementary synonyms or abbreviations, such as "A" for U+0041, are provided via the separate NameAliases property rather than altering the official name.[5][9] Control characters receive descriptive names that reflect their function, such as "NULL" for U+0000 or "LINE FEED" for U+000A, often including aliases from standards like ISO/IEC 6429. In contrast, characters in the Private Use Areas (e.g., E000–F8FF) have no official names, allowing implementers to define their own without conflicting with the standard. By Unicode 17.0, over 154,000 characters—out of a total of 159,801 encoded characters—have been assigned official names, encompassing scripts, symbols, and controls from around the world.[10][11][12]Aliases and Abbreviations
In Unicode, the Name_Alias property defines official synonyms for character names, providing alternative identifiers that support compatibility and correction of historical naming issues. Introduced in Unicode 4.0 in 2003, this property categorizes aliases into types such as corrections (for fixing erroneous names), abbreviations (short forms), control (standard names for control characters), alternate (variant formal names), and figment (for obsolete or fictional usages). For instance, the character U+0000 has the official name "NULL" along with aliases "NUL" (abbreviation) and "NULL" (control type). These aliases are documented in the NameAliases.txt file within the Unicode Character Database (UCD) and ensure uniqueness across the entire namespace of character names and aliases.[2][13] Abbreviated names, especially for control codes, were formalized and stabilized in Unicode 3.0 in 2000 to promote consistent usage in technical documentation and software. Examples include "NUL" for NULL (U+0000), "LF" for LINE FEED (U+000A), and "BEL" for ALERT (U+0007), which offer concise representations while preserving the full descriptive names. These abbreviations are particularly valuable for control and format characters, where brevity aids in debugging, scripting, and legacy protocol integration without altering core semantics.[2][13] The primary role of aliases and abbreviations is to enhance interoperability with older systems, improve human readability in code and charts, and accommodate naming evolutions without breaking existing implementations. While not required for Unicode conformance, they are integral to practical applications, such as in the International Components for Unicode (ICU) library, where they enable flexible character lookup and property querying in internationalization routines. Deprecated aliases, including some from pre-Unicode 1.0 eras that were retired for namespace hygiene, are excluded from current lists; the authoritative compilation resides in UAX #44 (Unicode Character Database standard, version 17.0.0, August 2025).[2][14]Categorical Assignments
General Category
The General Category property is a normative Unicode character property that provides a basic classification for every Unicode code point based on its primary usage in text, such as letters, marks, numbers, punctuation, symbols, separators, or other characters.[3] Defined in the Unicode Character Database (UCD), it uses two-letter abbreviations to denote 30 specific values, grouped into seven major classes: Letter (L), Mark (M), Number (N), Punctuation (P), Symbol (S), Separator (Z), and Other (C).[15] Introduced as normative in Unicode 1.0, the property has remained stable in structure while expanding to accommodate new characters and scripts, with assignments guiding core text processing behaviors like segmentation and rendering.[16] The major classes encompass broad syntactic roles, with subcategories offering finer distinctions. For instance, the Letter class (L) includes Uppercase Letter (Lu, e.g., U+0041 LATIN CAPITAL LETTER A), Lowercase Letter (Ll, e.g., U+0061 LATIN SMALL LETTER A), Titlecase Letter (Lt, e.g., U+01C5 LATIN CAPITAL LETTER D WITH SMALL LETTER Z), Modifier Letter (Lm), and Other Letter (Lo). The Mark class (M) covers combining elements like Nonspacing Mark (Mn, e.g., U+0300 COMBINING GRAVE ACCENT for diacritics) and Spacing Combining Mark (Mc). Number (N) features Decimal Number (Nd, e.g., U+0030 DIGIT ZERO), while Separator (Z) includes Space Separator (Zs, e.g., U+0020 SPACE) and Line Separator (Zl, e.g., U+2028 LINE SEPARATOR). Punctuation (P) breaks down into types such as Connector Punctuation (Pc, e.g., U+005F LOW LINE for underscores linking words) and Other Punctuation (Po, e.g., U+0021 EXCLAMATION MARK). Symbol (S) has Currency Symbol (Sc, e.g., U+0024 DOLLAR SIGN) and Other Symbol (So, for icons like flags). The Other class (C) handles controls like Control (Cc, e.g., U+0009 CHARACTER TABULATION).[15] These subcategories influence key text operations: casing behaviors apply primarily to cased letters (Lu, Ll, Lt), enabling uppercase, lowercase, and titlecase mappings in normalization; sorting algorithms weight categories differently, treating letters as primary keys ahead of symbols or punctuation; and rendering engines use them for layout, such as positioning nonspacing marks over base letters or inserting line breaks at separators.[17][18] For example, Connector Punctuation like the underscore affects word boundary detection in searches, while Format controls (Cf in C) like zero-width spaces guide bidirectional rendering without visible impact.[19] Updates to the General Category have focused on assigning new code points to existing values rather than introducing novel categories, ensuring compatibility across Unicode versions. In Unicode 15.0 (2022) and 16.0 (2023), thousands of characters from scripts like Kawi and Tamil Supplement were classified using established subcategories, such as Lo for ideographic letters, supporting consistent processing for emerging writing systems. This stability aids implementations in distinguishing syntactic roles from script-specific traits, as seen in interactions with the Script property for multilingual text.[20][21]Script Property
The Script property is a normative Unicode character property that assigns a single script value to each Unicode code point to identify its primary writing system affiliation.[22] This enumerated property partitions the entire Unicode codespace, with over 170 explicit script values as of Unicode 17.0, including examples such as Latn for the Latin script and Arab for the Arabic script. Special values include Zyyy for the Common script, which covers characters shared across multiple scripts like punctuation and symbols; Zinh for Inherited, used for non-spacing marks that inherit their script from a base character; and Zzzz for Unknown, applied to unassigned or private-use code points.[22] The property's guidelines and values are detailed in Unicode Standard Annex #24, with the latest revision (39) aligned to Unicode 17.0 released in 2025.[22] For characters that belong to multiple scripts based on usage, the Script_Extensions property provides a set of applicable script values, enabling more precise handling of multi-script scenarios.[22] Introduced in Unicode 6.0 in 2010, this property extends the primary Script value; for instance, Han characters may have Script_Extensions including Hani alongside Jpan for Japanese or Hans for simplified Chinese. It is particularly useful for ideographic scripts where context determines the associated writing system.[22] The Script property plays a critical role in text processing applications, such as selecting appropriate fonts by segmenting text runs according to script boundaries, supporting script-specific input methods for keyboard layouts and composition, and aiding bidirectional text resolution by identifying script-level directionality rules.[22] Provisional scripts, which are added experimentally before full stability, exemplify ongoing expansion; Tangut was introduced as a provisional script in Unicode 10.0 in 2017 to support the ancient Tangut writing system. More recent additions include Khitan_Small_Script in Unicode 13.0 in 2020, representing the historical Khitan small script used in medieval China. Emoji characters are typically assigned to the Common script (Zyyy) or specific scripts like Zinh for inherited modifiers, allowing flexible rendering across diverse contexts without strict script isolation.[22] While the Script property focuses on writing system affiliation and may overlap with the General Category for certain marks, it remains distinct in emphasizing linguistic and cultural grouping.[22]Block Assignment
The Block property is an informative catalog property in the Unicode Standard that assigns each encoded character to one of over 330 predefined blocks, which are contiguous ranges of code points organized thematically to reflect shared cultural, linguistic, or functional characteristics.[23] For example, the Basic Latin block covers U+0000–U+007F for standard ASCII characters, while the much larger CJK Unified Ideographs block spans U+4E00–U+9FFF (and extensions) for thousands of East Asian ideographs.[24] This property was introduced in Unicode 1.0 in 1991 as a way to structure the character repertoire. The primary purpose of the Block property is to support practical implementation in software and systems, such as optimizing memory allocation for character processing or enabling font subsets that load only blocks relevant to a given script or language.[25] Block names remain stable across Unicode versions to ensure backward compatibility, but block sizes vary significantly, from as few as 16 code points (e.g., Spacing Modifier Letters, U+02B0–U+02FF) to the full 65,536 code points in certain planes like the Private Use Areas.[26] Blocks are defined as fixed, non-overlapping contiguous ranges, with any unassigned code points within a block explicitly noted in the Unicode Character Database; these gaps allow for future expansions without redefining existing assignments.[24] As the standard evolves, new blocks are added to accommodate emerging scripts and symbols—for instance, the Kawi block (U+11F00–U+11F3F) was introduced in Unicode 15.0 in 2022 to encode the medieval Kawi script from Southeast Asia. In Unicode 17.0, released in September 2025, additional blocks such as Sidetic (U+10940–U+1095F) were incorporated to support newly encoded historical scripts.[12] The standard includes two large Supplementary Private Use Area blocks (U+E000–U+F8FF and U+F0000–U+FFFFD) reserved for private agreements between vendors, ensuring they do not conflict with standard assignments.[11] While block assignments often align with script distributions for technical efficiency, the Script property offers a more granular classification based on linguistic usage, potentially spanning multiple blocks.[27]Combining and Decomposition
Canonical Combining Class
The Canonical Combining Class property assigns a numeric value from 0 to 254 to each Unicode character to specify its role and positioning in sequences of combining marks during canonical reordering. This property is normative, requiring exact adherence in implementations for Unicode normalization conformance, and serves primarily to define a stable ordering algorithm that groups and sorts diacritics based on their typical attachment points relative to a base character. Characters with class 0 (Not_Reordered) include base letters, symbols, and certain non-combining marks that anchor sequences without participating in reordering, while combining characters receive values reflecting visual positions such as below, above, or attached sides.[28] The classes are organized into major groups that facilitate predictable sorting: for instance, class 1 (Overlay) applies to diacritics that superimpose directly on the base glyph, class 7 (Nukta) to dot-like modifiers in Brahmi-derived scripts like Devanagari, and class 9 (Virama) to vowel-suppressing marks in Indic writing systems. Positional classes dominate for non-spacing marks, including 200 (Attached_Below_Left) for marks joined low on the left, 220 (Below) for under-base attachments such as certain emoji modifiers, and 230 (Above) for overhead diacritics like U+0301 COMBINING ACUTE ACCENT. Enclosing marks (general category Me) typically receive class 0 or 1, while spacing marks (Mc) often use 0 or low numbers to preserve their width in sequences. The full set of named classes covers diverse script needs, with values 10–199 reserved for future fixed-position classes and the highest used value 240 (Iota_Subscript).[29] In practice, the Canonical Combining Class enables the stable sorting of combining sequences in ascending order by class value, ensuring that canonically equivalent strings—such as a base letter with a dot below followed by a dot above versus the reverse—yield identical representations in normalized forms like NFC (Normalization Form C) or NFD (Normalization Form D). This reordering prevents rendering inconsistencies across systems, as unsorted diacritics might visually overlap or misalign in some fonts or languages. For example, the sequence <U+0061, U+0307, U+0323> (a with dot above then dot below) reorders to <U+0061, U+0323, U+0307> during normalization, with classes 230 and 220 respectively, to match the canonical below-before-above convention. Emoji combining sequences, such as skin tone modifiers (e.g., U+1F3FB with class 220), integrate via these classes to maintain compatibility with general text normalization.[30] Updates to the Canonical Combining Class are infrequent to preserve stability, with new values introduced only when necessary for script support; the last significant expansion occurred in Unicode 3.2 (2002), adding positional classes for scripts like Mongolian and improved Indic handling. Subsequent additions, such as class 220 for below-positioned emoji modifiers in Unicode 8.0 (2015), have been limited and targeted, ensuring backward compatibility in normalization processes.[28][31]Decomposition and Normalization
The Decomposition_Type property is an enumerated Unicode character property that categorizes the type of decomposition mapping assigned to a code point in the UnicodeData.txt file.[2] It distinguishes between normative canonical decompositions, which preserve semantic equivalence, and informative compatibility decompositions, which handle variant forms such as stylistic or formatting alternatives.[2] Common values include Canonical for standard equivalences (e.g., precomposed accented letters), Compat for compatibility mappings (e.g., ligatures to separate letters), Font for font-specific variants (e.g., blackletter forms), and NoDecomp (or None) as the default for characters lacking any decomposition.[32] For instance, U+00E9 (LATIN SMALL LETTER E WITH ACUTE) has Decomposition_Type=Canonical and maps to the sequence<U+0065, U+0301> (e + COMBINING ACUTE ACCENT).[2]
Decomposition mappings form the basis for Unicode normalization, which standardizes text representations to ensure consistent processing across systems.[33] The four primary normalization forms are defined in Unicode Standard Annex #15: NFD applies canonical decomposition followed by stable sorting of combining marks; NFC extends NFD by adding canonical composition to produce compact forms; NFKD uses compatibility decomposition with sorting; and NFKC combines compatibility decomposition, sorting, and composition.[33] These algorithms recursively decompose characters, reorder components based on the Canonical Combining Class for stability, and recompose where possible using primary and secondary composition rules to avoid ambiguities.[33] The latest revision of UAX #15, dated July 30, 2025, aligns with Unicode 17.0.0 and includes stability guarantees for existing mappings. In Unicode 17.0 (2025), minor adjustments to some canonical decompositions were made for consistency, such as aligning overlays with U+0338 COMBINING LONG SOLIDUS OVERLAY in certain mathematical characters, while preserving overall stability.[33][34]
Compatibility decompositions, indicated by Decomposition_Type=Compat or subtypes like Narrow, Wide, Super, and Sub, expand variant representations—such as half-width forms or circled letters—into their base equivalents, enabling lossy but useful transformations.[2] These are particularly valuable in search and collation applications, where NFKC normalization unifies visually similar items (e.g., mapping FULLWIDTH A (U+FF21) to LATIN CAPITAL LETTER A (U+0041)) to improve matching accuracy without preserving original formatting distinctions.[33] However, such mappings can affect round-trip fidelity, requiring careful selection of forms based on use case.[33]
Emoji handling saw notable advancements in Unicode 9.0 (released June 21, 2016), with new decomposition rules supporting complex sequences like skin tone modifiers and zero-width joiner (ZWJ) combinations, ensuring they integrate properly into normalization without treating ZWJ sequences as traditional decompositions.[35]
Directional Behavior
Bidirectional Class
The Bidirectional Class, formally known as Bidi_Class in the Unicode Character Database, is an enumerated property that assigns directional categories to characters to facilitate the correct rendering of mixed left-to-right (LTR) and right-to-left (RTL) text, as defined in Unicode Standard Annex #9: The Bidirectional Algorithm (UAX #9).[36][2] This property is essential for scripts such as Arabic and Hebrew, where text directionality must be resolved algorithmically to determine embedding levels and visual ordering without altering the logical sequence of characters.[36] With over 20 distinct values, Bidi_Class ensures consistent bidirectional behavior across Unicode implementations, serving as the foundational input for the UBA's resolution phases.[2] The classes are grouped into four main categories: strong, weak, neutral, and explicit embedding or isolation controls. Strong classes include L (Left-to-Right) for characters like Latin letters, R (Right-to-Left) for Hebrew letters, and AL (Right-to-Left Arabic) for Arabic letters, which establish a character's inherent direction.[36] Weak classes, such as EN (European Number) for Western digits, AN (Arabic Number) for Arabic-Indic digits, ES (European Separator), ET (European Terminator), CS (Common Separator), NSM (Nonspacing Mark), and BN (Boundary Neutral), inherit direction based on surrounding context to handle numerals and punctuation in mixed scripts.[36] Neutral classes—B (Paragraph Separator), S (Segment Separator), WS (Whitespace), and ON (Other Neutral)—lack strong directionality and adopt the embedding level of adjacent text, often requiring algorithmic resolution.[36] Explicit classes, including LRE/LRO (Left-to-Right Embedding/Override), RLE/RLO (Right-to-Left Embedding/Override), PDF (Pop Directional Format), and the isolate controls LRI (Left-to-Right Isolate), RLI (Right-to-Left Isolate), FSI (First Strong Isolate), and PDI (Pop Directional Isolate), allow programmatic control over directional scoping.[36] These categories collectively guide the UBA in assigning paragraph and embedding levels to resolve ambiguities in bidirectional text flow.[36] For instance, the Latin capital A (U+0041) is assigned L, ensuring it flows left-to-right, while the Arabic letter Alef (U+0627) receives AL, promoting right-to-left progression.[2] Similarly, the European digit 0 (U+0030) is EN, adapting to nearby strong directions, and a space (U+0020) is WS, treated as neutral.[2] Bidi_Class assignments have been stable since their introduction in Unicode 1.1 (1993), with no retroactive changes to existing characters to maintain compatibility in legacy systems.[2] Extensions via isolate classes were introduced in Unicode 6.3 (2013) to provide finer-grained control, limiting directional effects to isolated segments and reducing nesting issues in complex layouts, such as those involving paired brackets that may relate to mirroring behaviors.[36] The property's data is derived and documented in files like DerivedBidiClass.txt, with the latest updates aligned to Unicode 17.0 (September 2025).[2]Mirroring and Overrides
The Bidi_Mirrored property is a binary Unicode character property that specifies whether a character's glyph should be visually mirrored when its resolved directionality in the bidirectional algorithm is right-to-left (RTL).[36] This ensures semantic consistency in mixed-direction text, such as displaying an opening parenthesis as its mirrored counterpart in RTL contexts. For instance, the character U+0028 LEFT PARENTHESIS, which has Bidi_Mirrored=Yes, is rendered as a right parenthesis glyph (equivalent to U+0029) when embedded in RTL runs.[36] Similarly, U+003C LESS-THAN SIGN mirrors to U+003E GREATER-THAN SIGN.[37] The property is applied during the final reordering step of the Unicode Bidirectional Algorithm (UAX #9, Rule L4), where implementations must depict such characters with appropriate mirrored glyphs, though exact graphical mirroring is not required if it adheres to font conventions.[36] Defined since Unicode 1.1, Bidi_Mirrored is normative and listed in the UnicodeData.txt file (field 9) and BidiMirroring.txt for paired mappings.[2] To manage explicit directionality in bidirectional text, Unicode provides directional formatting characters that override or isolate the natural flow, grouped under the Bidi_Control binary property, which is true for these invisible controls.[36] This property identifies characters affecting the algorithm's embedding levels or isolates, ensuring precise control without altering surrounding text direction.[2] Key examples include the Left-to-Right Mark (LRM, U+200E) and Right-to-Left Mark (RLM, U+200F), zero-width characters that enforce LTR or RTL direction for adjacent neutrals, introduced in Unicode 1.1. For stronger overrides, the Pop Directional Formatting character (PDF, U+202C) terminates embedding or override scopes initiated by others, added alongside embedding initiators like Left-to-Right Embedding (LRE, U+202A), Right-to-Left Embedding (RLE, U+202B), Left-to-Right Override (LRO, U+202D), and Right-to-Left Override (RLO, U+202E) in Unicode 2.0 (1996). These allow forcing direction over sequences, such as rendering English quotes correctly within Arabic text, while PDF restores the prior state.[36] Following Unicode 6.3 (2013), isolate initiators were introduced to limit the scope of directional changes and reduce nesting issues, also marked by Bidi_Control=Yes.[36] These include Left-to-Right Isolate (LRI, U+2066), which starts an LTR-isolated embedding; Right-to-Left Isolate (RLI, U+2067) for RTL; First Strong Isolate (FSI, U+2068), which bases direction on the first strong character; and Pop Directional Isolate (PDI, U+2069) to end isolates. Unlike earlier overrides, isolates prevent interaction with outer text, promoting safer bidi handling in complex layouts like user interfaces or markup.[36] All Bidi_Control characters are processed early in the algorithm to adjust embedding levels without visible impact, supporting symmetric glyph rendering via Bidi_Mirrored where applicable.[36]Numeric Attributes
Numeric Type
The Numeric_Type property is an enumerated character property defined in the Unicode Standard that classifies characters based on their numeric significance and usage in numeral systems. It indicates whether a character contributes to numeric representation and specifies the subtype of that role, facilitating tasks such as number parsing, formatting, and collation in software implementations. This property is normative and derived from specific fields in the UnicodeData.txt file within the Unicode Character Database (UCD).[2] The possible values of Numeric_Type are None (the default for characters without numeric meaning), Decimal, Digit, and Numeric. The Decimal value applies to characters that represent the decimal digits 0 through 9 and can be used in forming base-10 numbers, such as U+0030 DIGIT ZERO or characters from other scripts like U+0660 ARABIC-INDIC DIGIT ZERO. The Digit value is assigned to characters that denote digits 0 through 9 but are not suitable for standard decimal arithmetic, often including superscript or subscript forms, for example U+00B2 SUPERSCRIPT TWO with a digit value of 2. The Numeric value covers characters with broader numeric interpretations, including integers greater than 9, fractions, or other rational numbers, such as U+215E VULGAR FRACTION ONE QUARTER representing 0.25.[2][2][2] Derivation of Numeric_Type follows rules from the UCD: a character receives Decimal if UnicodeData fields 6 (Decimal Digit Value), 7 (Digit Value), and 8 (Numeric Value) are all non-empty; Digit if fields 7 and 8 are non-empty but field 6 is empty; and Numeric if only field 8 is non-empty. For CJK Unified Ideographs, numeric types are derived from Unihan data tags like kPrimaryNumeric. Since Unicode 4.0, the set of characters with Numeric_Type=Decimal has been co-extensive with the General_Category value Nd (Decimal Digit Number). The Numeric_Type categorizes the role of a character in numeric contexts, while the companion Numeric_Value property supplies the precise magnitude associated with it.[2][2] Stability policies ensure reliability for implementations: Numeric_Type values are immutable once assigned to a character, with no new assignments of Digit since Unicode 6.1.0, as the distinction from Numeric was deemed less useful for modern applications. Since Unicode 3.2, these values have been stable in a way that supports consistent collation behavior without requiring changes to existing data. From Unicode 6.0.0 onward, Decimal characters appear only in contiguous ranges of 10 consecutive code points with values 0-9, and from Unicode 6.2.0, no Number category characters (Nd, Nl, No) can have Numeric_Type=None.[5][5][5] The property evolves with additions for historical and ancient scripts to preserve cultural numeral systems. For instance, Unicode 12.0 (2019) introduced the Ottoman Siyaq Numbers block (U+1ED00–U+1ED4F), where characters like U+1ED01 OTTOMAN SIYAQ NUMBER ONE and fractional forms such as U+1ED3C OTTOMAN SIYAQ FRACTION ONE HALF are assigned Numeric_Type=Numeric to represent accounting values from Ottoman Turkish documents. Similarly, Unicode 11.0 (2018) added Mayan Numerals (U+1D2E0–U+1D2FF), with characters like U+1D2E1 MAYAN NUMERAL ONE receiving Numeric_Type=Numeric for values up to 19 in the vigesimal system. More recently, Unicode 17.0 (2025) added Tolong Siki digits (U+11DE0–U+11DE9) with Numeric_Type=Decimal for the Kurukh language.[38] These updates expand support for fractional and non-decimal notations without altering established types.Numeric Value
The Numeric_Value property in the Unicode Character Database (UCD) specifies the numerical meaning assigned to characters that function as numerals, such as digits or fractional symbols. It provides either an integer value or a rational fraction for characters classified under relevant Numeric_Type categories, while remaining undefined for non-numeric characters. This property enables software to interpret and process these characters in numerical contexts, such as calculations or sorting.[39] Values are formatted as decimal integers for whole numbers, like "1" for U+0031 DIGIT ONE, or as rational fractions in the form "a/b" for parts of a whole, such as "1/2" for U+00BD VULGAR FRACTION ONE HALF or "3/4" for U+00BE VULGAR FRACTION THREE QUARTERS. These formats support precise handling in applications, including rendering and arithmetic operations. In collation processes, Numeric_Value informs the Unicode Collation Algorithm to sort numeric sequences correctly within text, preventing issues like "10" appearing after "2" in lexical ordering.[40][41] Examples illustrate its use across scripts: the contiguous ASCII decimal digits U+0030 through U+0039 carry values "0" through "9", forming the basis of modern positional numeral systems. Compatibility characters like superscript digits, such as U+00B2 SUPERSCRIPT TWO with value "2", preserve numeric semantics from legacy encodings like ISO 8859-1. In Unicode 11.0 (2018), Numeric_Value was extended to Indic Siyaq fractions, for instance "1/4" for U+1ECAD INDIC SIYAQ FRACTION ONE QUARTER, accommodating historical notations from South Asian manuscripts.Temporal and Legacy Aspects
Age Property
The Age property specifies the Unicode version in which a given code point was first assigned and became stable.[2] It serves as a catalog property that tracks the historical introduction of characters, ensuring that implementations can reference the exact release where a character gained normative status.[2] This property is normative and immutable once set, meaning the age of a character never changes in subsequent versions.[2] The values of the Age property are enumerated using a version identifier format, such as V1_1 for Unicode 1.1 or V17_0 for Unicode 17.0, reflecting the major and minor version numbers.[2] Unassigned code points receive no age value, typically denoted as "NA" or "Unassigned" in data files.[42] These values are derived from the Unicode Character Database file DerivedAge.txt, which lists ranges of code points by their introduction version.[2] In practice, the Age property facilitates version-specific text processing, such as rendering fallbacks for older systems or filtering characters in regular expressions—for instance, the pattern\p{age=V3_0} matches all code points assigned up to and including Unicode 3.0.[2] It supports compatibility across software that may not fully implement the latest Unicode releases, allowing selective handling of newer characters without affecting legacy content.[2] Every assigned character receives an age at the time of its encoding, promoting backward compatibility as the standard evolves.[2]
Representative examples illustrate its application: the Basic Latin block, including characters like U+0041 LATIN CAPITAL LETTER A, has an age of V1_1, introduced in June 1993.[42][43] Emoji from version 14.0, such as U+1FAE0 MELTING FACE, carry V14_0, added in September 2021.[42][44] More recent additions in Unicode 17.0, like U+1FAEA DISTORTED FACE, are assigned V17_0 upon the version's release on September 9, 2025.[42][45]
Deprecated and Obsolete Properties
In the Unicode Standard, deprecated properties are those that remain part of the Unicode Character Database (UCD) for backward compatibility but are strongly discouraged from use in new implementations or APIs, as they have been supplanted by more robust alternatives or are considered defective.[2] This policy aligns with the Unicode Consortium's stability guidelines, ensuring that no property is ever removed once stabilized, thereby preventing disruptions in existing software while encouraging migration to current standards; for instance, the Conformance Clause in the Unicode Standard mandates support for normative properties but permits avoidance of deprecated ones where possible.[5] Obsolete properties, a subset of deprecated ones, lack any ongoing practical use case and are retained solely for historical or legacy data access.[2] A prominent example is the ISO_Comment property, which was introduced to track annotations for characters derived from ISO 10646 but became obsolete as of Unicode 5.2.0 (2009) and fully deprecated in Unicode 6.0.0 (2010) once chart generation processes no longer required it, with its values now defaulting to null strings for all code points.[2] Similarly, the Hyphen property, deprecated in Unicode 6.0.0, was replaced by the more comprehensive Line_Break property for handling hyphenation in text processing.[2] Other deprecated properties include Grapheme_Link (from Unicode 5.0.0), which redundantly duplicated the behavior of Combining Class value 9, and normalization-related ones like Expands_On_NFC, Expands_On_NFD, Expands_On_NFKC, Expands_On_NFKD, and FC_NFKC_Closure (all from Unicode 6.0.0), which proved less useful for modern decomposition checks and were supplanted by updated normalization algorithms.[2] The Unicode_1_Name property, reflecting legacy names from Unicode 1.0, was declared obsolete in Unicode 6.2.0 (2012) and is no longer updated or used in official documentation.[2] For legacy handling, properties like Other_ID_Continue serve as compatibility mechanisms, listing characters that qualified as ID_Continue in prior Unicode versions but no longer do under current identifier rules in UTS #31, allowing software upgrades to maintain conformance without breaking existing identifier validity.[46] This ensures that applications processing legacy data, such as programming languages or file systems, can continue to recognize valid sequences while transitioning to recommended properties like ID_Continue; however, reliance on such legacy properties may introduce security risks or inconsistencies in bidirectional text or normalization if not carefully managed during upgrades.[46] Recent updates include the removal of data file attributes in Unicode 17.0.0 (2025) for several long-deprecated properties, such as Gr_Link (alias for Grapheme_Link), Hyphen, isc (ISO 10646 comment), kGB7, kJa, XO_NFC, XO_NFD, XO_NFKC, XO_NFKD, and FC_NFKC, streamlining the UCD without altering their stabilized values.[12] Earlier, Unicode 14.0 (2021) deprecated certain property aliases to consolidate naming conventions, though no major properties were obsoleted at that time.[47] These changes underscore the ongoing effort to phase out obsolete elements while preserving the Age property's role in tracking when properties were active.[2]Boundary and Formatting Rules
Grapheme Cluster Boundaries
Grapheme cluster boundaries define the edges between user-perceived characters in Unicode text, treating sequences of one or more code points as a single unit for operations like cursor movement, selection, and text rendering. Unlike individual code points, grapheme clusters approximate what users intuitively see as a single character, such as a base letter combined with diacritics or complex emoji compositions. This segmentation is specified in Unicode Standard Annex #29 (UAX #29), which provides a default algorithm for identifying these boundaries in a language-independent manner.[48] The algorithm relies on several character properties to determine breaks. Primarily, it uses the Grapheme_Cluster_Break (GCB) property, which categorizes characters into values such as Control, CR, LF, Extend, ZWJ, Regional_Indicator, SpacingMark, and others derived from the General_Category (e.g., Nonspacing_Mark) and Canonical_Combining_Class. Binary properties like Grapheme_Extend (a superset including GCB=Extend or ZWJ) and the legacy Grapheme_Base further aid in identifying base characters versus extenders, ensuring no breaks occur between a base and its attachments. These properties enable the rules to handle diverse scripts, from Latin accented letters to Indic conjuncts.[48] The default grapheme cluster algorithm consists of pairwise rules that prohibit (×) or allow (÷) breaks between adjacent characters, processed from left to right with higher-precedence rules overriding lower ones. Core rules include no break after control characters or line breaks (e.g., GB4: (Control | CR | LF) ÷), Hangul syllable formation (e.g., GB6: L × (L | V | LV | LVT) for leading jamo), and crucially, no break between a grapheme base and extenders (e.g., GB9: × (Extend | ZWJ), treating combining marks like U+0300 (grave accent) as attached to a preceding base). A final catch-all rule (GB999: Any ÷ Any) permits breaks elsewhere. For instance, the sequence "ä" (U+0061 LATIN SMALL LETTER A followed by U+0308 COMBINING DIAERESIS) forms a single grapheme cluster with no internal boundary, as the diaeresis has GCB=Extend.[48] Extensions to the basic rules support modern emoji and flags. Rule GB11 prohibits breaks within zero-width joiner (ZWJ) sequences of extended pictographic characters (e.g., 👨👩👧 U+1F468 ZWJ U+1F469 ZWJ U+1F467 forms a single family emoji cluster), added in Unicode 9.0 (2016) to align with Unicode Technical Standard #51 (UTS #51). Similarly, rules GB12 and GB13 handle regional indicator pairs for flags (e.g., 🇺🇸 U+1F1FA REGIONAL INDICATOR U+1F1F8 REGIONAL INDICATOR as one cluster), introduced in Unicode 10.0 (2017) to prevent splitting bicolor flags. These updates ensure emoji sequences, which may span multiple code points, are treated holistically as user-perceived units.[48][6]Line Breaking Properties
The line breaking properties in Unicode classify characters according to their behavior in determining possible line break points within text, enabling consistent wrapping across scripts and languages.[49] These properties form the basis of the Unicode Line Breaking Algorithm, which processes sequences of characters to identify mandatory, prohibited, or optional breaks, supporting diverse typographic traditions such as space-delimited Western text, width-based East Asian layouts, and syllable-bound Brahmic scripts.[49] Assigned as a normative Unicode character property, the line break class for each code point specifies how it interacts with adjacent characters in break opportunity resolution.[49] The properties are divided into non-tailorable classes, which enforce fixed behavior across implementations, and tailorable classes, which allow customization for language-specific or stylistic needs.[49] Non-tailorable classes include mandatory breaks like carriage returns and line feeds, while tailorable ones handle ambiguities in alphabetic, ideographic, or numeric contexts.[49] The full set of 34 classes is detailed in the Unicode data file LineBreak.txt, where each Unicode character is mapped to one class based on its typographic role, with the Unambiguous_Hyphen (HH) class added in Unicode 17.0 (2024).[50][12] For example, spaces (class SP) permit indirect breaks after them, whereas word joiners (class WJ) prohibit breaks on either side to preserve compound words.[49] In the line breaking algorithm, these properties are applied through a sequence of rules (LB1 to LB31) that resolve break opportunities symbolically: "÷" for allowed breaks, "×" for prohibited ones, and context-dependent logic for contingencies.[49] Mandatory breaks (e.g., class BK) always trigger a line end, while combining marks (class CM) attach to the preceding base character without allowing intervening breaks.[49] Tailoring might adjust classes like AL (alphabetic) to prevent breaks within words in certain languages, and special handling applies to sequences such as Hangul syllables (classes H2, H3, JL, JV, JT) or emoji modifiers (classes EB, EM).[49] The algorithm also accounts for overrides like zero-width spaces (class ZW) to insert explicit break points.[49] The following table summarizes the line break property values, grouped by category for clarity:| Category | Class | Description |
|---|---|---|
| Non-tailorable Classes | BK | Mandatory break (e.g., paragraph separator). |
| CR | Carriage return (break after, except before LF). | |
| LF | Line feed (break after). | |
| NL | Next line (break after). | |
| SG | Surrogate (invalid in well-formed text). | |
| WJ | Word joiner (no break before or after). | |
| ZW | Zero width space (break opportunity). | |
| GL | Non-breaking "glue" (no break before or after, e.g., NBSP). | |
| SP | Space (indirect break after). | |
| ZWJ | Zero width joiner (no break in sequences). | |
| CM | Combining mark (no break from preceding base). | |
| Break Opportunities | B2 | Break before and after (e.g., em dash). |
| BA | Break after (e.g., sentence-terminal punctuation). | |
| BB | Break before (e.g., dictionary punctuation). | |
| HY | Hyphen (break after, except in numerics). | |
| HH | Unambiguous hyphen (break after, except word-initial). | |
| CB | Contingent break (depends on additional data, e.g., inline objects). | |
| Prohibiting Breaks | CL | Close punctuation (no break before, e.g., right bracket). |
| CP | Close parenthesis (no break before, e.g., ) ]. | |
| EX | Exclamation/interrogation (no break before, e.g., ! ?). | |
| IN | Inseparable (indirect breaks only between pairs). | |
| NS | Nonstarter (indirect break before, e.g., interrobang). | |
| OP | Open punctuation (no break after, e.g., ( [ ). | |
| QU | Quotation (opening/closing behavior, e.g., “ ”). | |
| Numeric Context | IS | Infix numeric separator (no break around numerics, e.g., . ,). |
| NU | Numeric (forms expressions, e.g., digits). | |
| PO | Postfix numeric (no break after numerics, e.g., %). | |
| PR | Prefix numeric (no break before numerics, e.g., $). | |
| SY | Symbol allowing break after (no break before, e.g., /). | |
| Other Characters | AI | Ambiguous (behaves as AL or ID based on East Asian width). |
| AK | Aksara (Brahmic syllable consonant). | |
| AL | Alphabetic (normal text characters). | |
| AP | Aksara pre-base (Brahmic repha). | |
| AS | Aksara start (Brahmic independent vowel). | |
| CJ | Conditional Japanese starter (behaves as NS or ID). | |
| EB | Emoji base (no break from following modifier). | |
| EM | Emoji modifier (no break from preceding base). | |
| H2 | Hangul LV syllable. | |
| H3 | Hangul LVT syllable. | |
| HL | Hebrew letter (alphabetic with hyphen/slash rules). | |
| ID | Ideographic (break before/after, except numerics). | |
| JL | Hangul L jamo. | |
| JV | Hangul V jamo. | |
| JT | Hangul T jamo. | |
| RI | Regional indicator (pairs kept together). | |
| SA | Complex context-dependent (e.g., Thai; requires analysis). | |
| VF | Virama final (Brahmic final consonant). | |
| VI | Virama (Brahmic conjoining). | |
| XX | Unknown (unassigned or private use). |
