The Unicode Standard assigns character properties to each code point. These properties can be used to handle "characters" (code points) in processes, like in line-breaking, script direction right-to-left or applying controls. Slightly inconsequently, some "character properties" are also defined for code points that have no character assigned, and code points that are labeled like "<not a character>". The character properties are described in Standard Annex #44.
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.
A Unicode character is assigned a unique Name (na). The name, in English, 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, 一 CJK UNIFIED IDEOGRAPH-4E00. Formatting characters are named too: NO-BREAK SPACE.
Starting from Unicode version 2.0, the published name for a code point will never change. In the event of a misspelling in a publication, a correct name will later be assigned to the code point as a Character Name Alias. Within the whole range of names, an alias is unique too.
Apart from these normative names, informal names can be assigned. These are usually other commonly used names for a character, used for illustration, but these informal names are not guaranteed to be unique.
These code points do not have a Name (na=""): 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>, <surrogate>. Since these labels contain <>-brackets, they can never appear as a Name, which prevents confusion.
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 version 1.0-names were moved to the property Alias, to provide some backward compatibility.
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||Remarks|
|Lt||Letter, titlecase||Graphic||Character||31||Ligatures containing uppercase followed by lowercase letters (e.g., ?, Lj, Nj, and Dz)|
|Lm||Letter, modifier||Graphic||Character||250||a modifier letter|
|Mc||Mark, spacing combining||Graphic||Character||415|
|Nd||Number, decimal digit||Graphic||Character||610||All these, and only these, have Numeric Type = De[c]|
|Nl||Number, letter||Graphic||Character||236||Numerals composed of letters or letterlike symbols (e.g., Roman numerals)|
|No||Number, other||Graphic||Character||807||E.g., vulgar fractions, superscript and subscript digits|
|Pc||Punctuation, connector||Graphic||Character||10||Includes "_" underscore|
|Pd||Punctuation, dash||Graphic||Character||24||Includes several hyphen characters|
|Ps||Punctuation, open||Graphic||Character||75||Opening bracket characters|
|Pe||Punctuation, close||Graphic||Character||73||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|
|Sm||Symbol, math||Graphic||Character||948||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||57||Currency symbols|
|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 LINE SEPARATOR (LSEP)|
|Zp||Separator, paragraph||Format||Character||1||Only PARAGRAPH SEPARATOR (PSEP)|
|Cc||Other, control||Control||Character||65 (will never change)[c]||No name,[d] <control>|
|Cf||Other, format||Format||Character||152||Includes the soft hyphen, joining control characters (zwnj and zwj), control characters to support bi-directional text, and language tag characters|
|Cs||Other, surrogate||Surrogate||Not (but abstract)||2,048 (will never change)[c]||No name,[d] <surrogate>|
|Co||Other, private use||Private-use||Not (but abstract)||137,468 total (will never change)[c] (, 131,068 )||No name,[d] <private-use>|
|Cn||Other, not assigned||Noncharacter||Not||66 (will never change)[c]||No name,[d] <noncharacter>|
|Reserved||Not||837,091||No name,[d] <reserved>|
This section needs expansion. You can help by adding to it. (February 2012)
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 11.0, there are 25 whitespace characters.
Ideographic, alphabetic, noncharacter.
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 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-Controls). 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:
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. Twelve 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. 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, brackets "" are mirrored this way. Shaping cursive scripts such as Arabic, and mirroring glyphs that have a direction, is not part of the algorithm.
The Case value is Normative in Unicode. It pertains to those scripts with uppercase (aka capital, majuscule) and the lowercase (aka small, minuscule) letters. Case-difference occurs in Adlam, Armenian, Cherokee, Coptic, Cyrillic, Deseret, Glagolitic, Greek, Khutsuri and Mkhedruli Georgian, Latin, Medefaidrin, Old Hungarian, Osage and Warang Citi scripts.
(upper, lower, title, folding--both simple and full)
Characters are classified with a Numeric type. 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. Seventy-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.
Hexadecimal characters are those in the series with hexadecimal values 0...9ABCDEF (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 |
||Basic Latin, capitals||Also |
||Basic Latin, small letters||Also |
||Fullwidth forms, capitals|
||Fullwidth forms, small letters|
|a. ^ "Unicode 11.0 UCD: PropList.txt". 2018-03-15. Retrieved .|
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.
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. 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 291 names assigned as of Unicode version 11.0. Unassigned code points outside of an existing block, have the default value "No_block".
Each assigned character can have a single value for its "Script" property, signifying to which script it belongs. 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: A LATIN CAPITAL LETTER A, and א HEBREW LETTER ALEF.
|ISO 15924||Script in Unicode[e]|
|Afak||439||Afaka||Varies||Not in Unicode, proposal under review by the Unicode Technical Committee|
|Aghb||239||Caucasian Albanian||Caucasian Albanian||L-to-R||7.0||53||Ancient/historic|
|Ahom||338||Ahom, Tai Ahom||Ahom||L-to-R||8.0||58||Ancient/historic|
|Aran||161||Arabic (Nastaliq variant)||R-to-L||Typographic variant of Arabic|
|Armi||124||Imperial Aramaic||Imperial Aramaic||R-to-L||5.2||31||Ancient/historic|
|Bass||259||Bassa Vah||Bassa Vah||L-to-R||7.0||36||Ancient/historic|
|Blis||550||Blissymbols||Varies||Not in Unicode, proposal in initial/exploratory stage|
|Cans||440||Unified Canadian Aboriginal Syllabics||Canadian Aboriginal||L-to-R||3.0||710|
|Cirt||291||Cirth||Varies||Not in Unicode|
|Copt||204||Coptic||Coptic||L-to-R||1.0||137||Ancient/historic, Disunified from Greek in 4.1|
|Cpmn||402||Cypro-Minoan||L-to-R||Not in Unicode|
|Cyrs||221||Cyrillic (Old Church Slavonic variant)||Varies||Ancient/historic, typographic variant of Cyrillic|
|Dupl||755||Duployan shorthand, Duployan stenography||Duployan||L-to-R||7.0||143|
|Egyd||070||Egyptian demotic||R-to-L||Not in Unicode|
|Egyh||060||Egyptian hieratic||R-to-L||Not in Unicode|
|Egyp||050||Egyptian hieroglyphs||Egyptian Hieroglyphs||L-to-R||5.2||1,071||Ancient/historic|
|Elym||128||Elymaic||R-to-L||Not in Unicode, proposal under review by the Unicode Technical Committee|
|Geok||241||Khutsuri (Asomtavruli and Nuskhuri)||Georgian||Varies||Unicode groups Geok and Geor together as "Georgian"|
|Geor||240||Georgian (Mkhedruli and Mtavruli)||Georgian||L-to-R||1.0||173||For Unicode, see also Geok|
|Gong||312||Gunjala Gondi||Gunjala Gondi||L-to-R||11.0||63|
|Gonm||313||Masaram Gondi||Masaram Gondi||L-to-R||10.0||75|
|Grek||200||Greek||Greek||L-to-R||1.0||518||Sometimes expressed as boustrophedon (mirroring of alternate lines rather than purely left-to-right)|
|Hanb||503||Han with Bopomofo (alias for Han + Bopomofo)||Varies||See Hani, Bopo|
|Hang||286||Hangul (Hang?l, Hangeul)||Hangul||L-to-R||1.0||11,739||Hangul syllables relocated in 2.0|
|Hani||500||Han (Hanzi, Kanji, Hanja)||Han||L-to-R||1.0||89,233|
|Hans||501||Han (Simplified variant)||Varies||Subset Hani|
|Hant||502||Han (Traditional variant)||Varies||Subset Hani|
|Hluw||080||Anatolian Hieroglyphs (Luwian Hieroglyphs, Hittite Hieroglyphs)||Anatolian Hieroglyphs||L-to-R||8.0||583||Ancient/historic|
|Hmng||450||Pahawh Hmong||Pahawh Hmong||L-to-R||7.0||127|
|Hmnp||451||Nyiakeng Puachue Hmong||L-to-R||Not in Unicode|
|Hrkt||412||Japanese syllabaries (alias for Hiragana + Katakana)||Katakana or Hiragana||Varies||See Hira, Kana|
|Hung||176||Old Hungarian (Hungarian Runic)||Old Hungarian||R-to-L||8.0||108||Ancient/historic|
|Inds||610||Indus (Harappan)||R-to-L||Not in Unicode, proposal in initial/exploratory stage|
|Ital||210||Old Italic (Etruscan, Oscan, etc.)||Old Italic||L-to-R||3.1||39||Ancient/historic|
|Jamo||284||Jamo (alias for Jamo subset of Hangul)||Varies||Subset Hang|
|Jpan||413||Japanese (alias for Han + Hiragana + Katakana)||Varies||See Hani, Hira and Kana|
|Jurc||510||Jurchen||L-to-R||Not in Unicode|
|Kali||357||Kayah Li||Kayah Li||L-to-R||5.1||47|
|Kitl||505||Khitan large script||L-to-R||Not in Unicode|
|Kits||288||Khitan small script||T-to-B||Not in Unicode|
|Kore||287||Korean (alias for Hangul + Han)||L-to-R||See Hani and Hang|
|Kpel||436||Kpelle||L-to-R||Not in Unicode, proposal in initial/exploratory stage|
|Lana||351||Tai Tham (Lanna)||Tai Tham||L-to-R||5.2||127|
|Latf||217||Latin (Fraktur variant)||Varies||Typographic variant of Latin|
|Latg||216||Latin (Gaelic variant)||L-to-R||Typographic variant of Latin|
|Latn||215||Latin||Latin||L-to-R||1.0||1,353||See Latin script in Unicode|
|Leke||364||Leke||L-to-R||Not in Unicode|
|Lina||400||Linear A||Linear A||L-to-R||7.0||341||Ancient/historic|
|Linb||401||Linear B||Linear B||L-to-R||4.0||211||Ancient/historic|
|Loma||437||Loma||L-to-R||Not in Unicode, proposal in initial/exploratory stage|
|Maya||090||Mayan hieroglyphs||Not in Unicode|
|Medf||265||Medefaidrin (Oberi Okaime, Oberi ?kaim?)||Medefaidrin||L-to-R||11.0||91|
|Mend||438||Mende Kikakui||Mende Kikakui||R-to-L||7.0||213|
|Merc||101||Meroitic Cursive||Meroitic Cursive||R-to-L||6.1||90||Ancient/historic|
|Mero||100||Meroitic Hieroglyphs||Meroitic Hieroglyphs||R-to-L||6.1||32||Ancient/historic|
|Mong||145||Mongolian||Mongolian||T-to-B||3.0||167||Includes Clear, Manchu scripts|
|Moon||218||Moon (Moon code, Moon script, Moon type)||Not in Unicode, proposal in initial/exploratory stage|
|Mtei||337||Meitei Mayek (Meithei, Meetei)||Meetei Mayek||L-to-R||5.2||79|
|Nand||311||Nandinagari||L-to-R||Not in Unicode, proposal under review by the Unicode Technical Committee|
|Narb||106||Old North Arabian (Ancient North Arabian)||Old North Arabian||R-to-L||7.0||32||Ancient/historic|
|Newa||333||Newa, Newar, Newari, Nep?la lipi||Newa||L-to-R||9.0||93|
|Nkdb||085||Naxi Dongba (na²¹?i³³ to³³ba²¹, Nakhi Tomba)||L-to-R||Not in Unicode|
|Nkgb||420||Nakhi Geba (na²¹?i³³ g?²¹ba²¹, 'Na-'Khi ²Gg?-¹baw, Nakhi Geba)||L-to-R||Not in Unicode, proposal in initial/exploratory stage|
|Olck||261||Ol Chiki (Ol Cemet', Ol, Santali)||Ol Chiki||L-to-R||5.1||48|
|Orkh||175||Old Turkic, Orkhon Runic||Old Turkic||R-to-L||5.2||73||Ancient/historic|
|Pauc||263||Pau Cin Hau||Pau Cin Hau||L-to-R||7.0||57|
|Perm||227||Old Permic||Old Permic||L-to-R||7.0||43||Ancient/historic|
|Phli||131||Inscriptional Pahlavi||Inscriptional Pahlavi||R-to-L||5.2||27||Ancient/historic|
|Phlp||132||Psalter Pahlavi||Psalter Pahlavi||R-to-L||7.0||29||Ancient/historic|
|Phlv||133||Book Pahlavi||R-to-L||Not in Unicode|
|Piqd||293||Klingon (KLI pIqaD)||L-to-R||Rejected for inclusion in the Unicode Standard|
|Prti||130||Inscriptional Parthian||Inscriptional Parthian||R-to-L||5.2||30||Ancient/historic|
|Qaaa||900||Reserved for private use (start)||Not in Unicode|
|Qaai||908||(Private use)||Not in Unicode (Before version 5.2, this was used instead of Zinh)|
|Qabx||949||Reserved for private use (end)||Not in Unicode|
|Rjng||363||Rejang (Redjang, Kaganga)||Rejang||L-to-R||5.1||37|
|Rohg||167||Hanifi Rohingya||Hanifi Rohingya||R-to-L||11.0||50|
|Roro||620||Rongorongo||Not in Unicode, proposal in initial/exploratory stage|
|Sara||292||Sarati||Not in Unicode|
|Sarb||105||Old South Arabian||Old South Arabian||R-to-L||5.2||32||Ancient/historic|
|Shui||530||Shuishu||L-to-R||Not in Unicode|
|Sidd||302||Siddham, Siddha?, Siddham?t?k?||Siddham||L-to-R||7.0||92||Ancient/historic|
|Sogo||142||Old Sogdian||Old Sogdian||R-to-L||11.0||40||Ancient/historic|
|Sora||398||Sora Sompeng||Sora Sompeng||L-to-R||6.1||35|
|Sylo||316||Syloti Nagri||Syloti Nagri||L-to-R||4.1||44|
|Syre||138||Syriac (Estrangelo variant)||R-to-L||Typographic variant of Syriac|
|Syrj||137||Syriac (Western variant)||R-to-L||Typographic variant of Syriac|
|Syrn||136||Syriac (Eastern variant)||R-to-L||Typographic variant of Syriac|
|Takr||321||Takri, kr?, kr?||Takri||L-to-R||6.1||66|
|Tale||353||Tai Le||Tai Le||L-to-R||4.0||35|
|Talu||354||New Tai Lue||New Tai Lue||L-to-R||4.1||83|
|Tavt||359||Tai Viet||Tai Viet||L-to-R||5.2||72|
|Teng||290||Tengwar||L-to-R||Not in Unicode|
|Tglg||370||Tagalog (Baybayin, Alibata)||Tagalog||L-to-R||3.2||20|
|Tibt||330||Tibetan||Tibetan||L-to-R||2.0||207||Added in 1.0, removed in 1.1 and reintroduced in 2.0|
|Visp||280||Visible Speech||L-to-R||Not in Unicode|
|Wara||262||Warang Citi (Varang Kshiti)||Warang Citi||L-to-R||7.0||84|
|Wcho||283||Wancho||L-to-R||Not in Unicode|
|Wole||480||Woleai||R-to-L||Not in Unicode, proposal in initial/exploratory stage|
|Xpeo||030||Old Persian||Old Persian||L-to-R||4.1||50||Ancient/historic|
|Zanb||339||Zanabazar Square (Zanabazarin Dörböljin Useg, Xewtee Dörböljin Bicig, Horizontal Square Script)||Zanabazar Square||L-to-R||10.0||72||Ancient/historic|
|Zinh||994||Code for inherited script||Inherited||Inherited||569|
|Zmth||995||Mathematical notation||L-to-R||Not a 'script' in Unicode|
|Zsym||996||Symbols||Not a 'script' in Unicode|
|Zsye||993||Symbols (emoji variant)||Not a 'script' in Unicode|
|Zxxx||997||Code for unwritten documents||Not a 'script' in Unicode|
|Zyyy||998||Code for undetermined script||Common||7,591|
|Zzzz||999||Code for uncoded script||Unknown||976,673||All other code points|
Decompositions, decomposition type, canonical combining class, composition exclusions, and more.
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 and 11.0. The long values for Age begin in a V and use an underscore instead of a dot: V1_1, for example. Codepoints without a specifically assigned age value have the value "NA", with the long form "Unassigned".
Once a character has been defined, it will not be withdrawn or changed in defining properties (code point, name). But it can be declared deprecated: A coded character whose use is strongly discouraged. As of Unicode version 10.0, fifteen characters are deprecated:
The format characters U+206A through U+206F and U+E0001 should not be used at all, but for the other deprecated characters there are recommended alternatives, as shown above.
The Unicode Standard specifies the following boundary-related properties: