Unicode character property


The Unicode Standard assigns various properties to each Unicode character and code point.
The properties can be used to handle characters 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.
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.

Semantic elements

Properties are displayed in the following order:
;;;;;;;;;;;;;;
  • alias = corrected name. Obsolete. Now tracked with a separate database, but remains for Unicode 1.0 names.
  • bc = bidi category
  • bm = bidi mirrored
  • cc = combining class
  • decomposition type or = letter + diacritic, ligature X Y, superscript X, font X, initial X, medial X, final X, isolated X, vertical X, etc.
  • gc = general category
  • nv = numeric type and value . If numeric type is 'decimal', all 3 slots are filled. If 'digit', the first will be null. 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

A Unicode character is assigned a unique Name. 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 "-hhhh". For example,. Formatting characters also have names:.
The following Unicode categories do not have a Name value assigned: Controls, Private use, Surrogate, Non-characters and Reserved. They may be referenced, informally, by a generic or specific meta-name, called "Code Point Labels":. Since these labels contain "<" and ">", they can never appear in a Name, which prevents confusion.

Unicode 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 use of alias names. Disused Unicode 1.0 names were moved to the property Alias, to provide backward compatibility.
For example, has the Unicode 1.0 name "LATIN SMALL LETTER BABY GAMMA".

Character name alias

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. For example, has the character name alias "" in order to mitigate the misspelling of "bracket" as in the actual character name; has the character name alias 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 ;
  • Alternate: alternative names for some format characters ;
  • 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.
As of Unicode 17.0, 39 formal character name aliases are defined as corrections for defective character names.
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".

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

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, there are 25 whitespace characters.

Casing

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, corresponds to instead of. Similarly, when corresponds to instead of.
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. converts to if it is at the start or middle of a word, and converts to 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̇́.
Despite the existence of, corresponds to "SS".
Unicode encodes 31 titlecase characters.
  • Other general characteristics

Unicode defines several general character properties in the Unicode Character Database. Some of the most important ones include:
  • Ideographic — Characters that represent ideas or concepts rather than specific sounds. These include most Han characters used in Chinese, Japanese, and Korean writing systems.
  • 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.
  • 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.

    Combining class

Some common codes:
10-199 = various fixed-position classes
Marks which attach to the base letter:
Marks which do not attach to the base letter:

Bidirectional writing

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 text display right-to-left and left-to-right. 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. 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. 12 characters have the property : 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 in the Unicode definition.
Basically, the algorithm determines a sequence of characters with the same strong direction type, taking in account an overruling by the special Bidi-controls. Number strings 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: indicates that the glyph should be mirrored when written R-to-L. The property 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.