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 labeled 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
Properties are displayed in the following order:[4]
'alias' = corrected name. Obsolete. Now tracked with a separate database, but remains for Unicode 1 names etc.
'bc' = bidi (bidirectional) category [L, R etc]
'bm' = bidi mirrored [N or Y]
'cc' = combining class [position of diacritic]
decomposition type 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 behavior, 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.
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 are named too: U+00A0NO-BREAK SPACE.
The following classes of code point 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>, or <surrogate>. Since these labels contain <>-brackets, they can never appear as a Name, which prevents confusion.
Version 1.0 names
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.
Starting from Unicode version 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+FEFFZERO 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").[1]
As of Unicode version 16.0, thirty-five 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
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".
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]
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
640
S, Symbol
Sm
Symbol, math
Graphic
Character
950
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".
^ abcde"Table 4-9: Construction of Code Point Labels". The Unicode Standard. Unicode Consortium. September 2024. A Code Point Label may be used to identify a nameless code point. E.g. <control-hhhh>, <control-0088>. The Name remains blank, which can prevent inadvertently replacing, in documentation, a Control Name with a true Control code. Unicode also uses <not a character> for <noncharacter>.
Punctuation
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 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 16.0, there are 25 whitespace characters.
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.
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)
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.
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]
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: ‌
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: ‍
^Although ​ is one HTML5 named entity for U+200B, the additional names NegativeMediumSpace, NegativeThickSpace, NegativeThinSpace and NegativeVeryThinSpace (which are names used in the Wolfram Language for negative-advance spaces, which it maps to the Private Use Area)[12][13][14][15] are also defined by HTML5 as aliases for U+200B (e.g. ​).[11]
Casing
The Case value is Normataive 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, Garay, Glagolitic, Greek, Khutsuri and Mkhedruli Georgian, Latin, Medefaidrin, Old Hungarian, Osage, Vithkuqi and Warang Citi scripts.
(upper, lower, title, folding—both simple and full)
This section needs expansion. You can help by adding to it. (March 2022)
Other general characteristics
Ideographic, alphabetic, noncharacter.
This section needs expansion. You can help by adding to it. (March 2022)
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[19] 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:
3.^Bidi_Control characters: Twelve Bidi_Control formatting characters are defined. They are invisible, and have no effect apart from directionality. Nine of them have a unique, overruling BiDi-type that is used by the algorithm. Their type is also their acronym (e.g. character 'LRE' has BiDi type 'LRE').
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.[19] 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
Decimal
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.
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:
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 338 names assigned as of Unicode version 16.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.[20] 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+0041ALATIN CAPITAL LETTER A, and U+05D0אHEBREW LETTER ALEF.
Unicode uses the "Property Value Alias" (Alias) as the script-name. These Alias names are part of Unicode and are published informatively next to ISO 15924. An alias script name may be used in a character name: Palm, Palmyrene → U+10860𐡠PALMYRENE LETTER ALEPH.
Decompositions, decomposition type, canonical combining class, composition exclusions, and more.
This section needs expansion. You can help by adding to it. (March 2022)
Age
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, and 16.0.[21] 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
Once a character has been defined, it will not be removed or reassigned.[22] However, a character may be deprecated, meaning its "use is strongly discouraged".[23] As of Unicode version 15.1, the following fifteen characters are deprecated:[24]
^ abU+0F81ཱྀTIBETAN VOWEL SIGN REVERSED II is itself discouraged (but not deprecated), and is canonically equivalent to the sequence U+0F71 U+0F80.
^ abcdefRather than using this control character to indicate the appropriate appearance for text, appropriate character codes with the correct state should be used.[25]
^ abThis alternative character is in the CJK Symbols and Punctuation block, and is not suitable for mathematical or technical use
^Alternative means of language tagging should be used instead.[26]
Boundaries
The Unicode Standard specifies the following boundary-related properties:
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+00A0NO-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 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+FEFFZERO WIDTH NO-BREAK SPACE has alternate BYTE ORDER MARK.
5. Figment
Several documented labels for C1 control code points which were never actually approved in any standard (figment = feigned, in fiction).
For example, U+0099<control-0099> has 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 and standardized.