Unicode Standard Annex (UAX)
Normative or informative documents that are integral parts of the Unicode Standard. UAX#9 (Bidi Algorithm), UAX#11 (East Asian Width), UAX#15 (Normalization Forms) are key examples.
What is a Unicode Standard Annex (UAX)?
A Unicode Standard Annex (UAX) is a normative technical document that is an integral part of the Unicode Standard. Unlike Unicode Technical Reports (UTRs), which are informative recommendations, UAXes define algorithms and properties that implementations may be required to follow for conformance. Each UAX is updated in lockstep with Unicode version releases and carries a normative weight comparable to the core chapters of the Unicode Standard itself.
UAXes cover the most complex and widely implemented aspects of Unicode text processing — topics too detailed to fit in the core Standard chapters but too important to remain merely advisory.
Key UAXes
UAX #9 — Unicode Bidirectional Algorithm Defines the algorithm that determines the display order of characters in text containing both left-to-right (LTR) and right-to-left (RTL) scripts, such as English mixed with Arabic or Hebrew. The algorithm assigns directional categories to each character and applies a set of rules to determine visual ordering. Every web browser, word processor, and terminal emulator must implement UAX #9 to correctly display mixed-direction text.
UAX #11 — East Asian Width
Assigns each Unicode character one of six width categories (Narrow, Wide, Fullwidth, Halfwidth, Ambiguous, Neutral) for use in fixed-width terminal display and East Asian layout. Critical for wcwidth() implementations and terminal multiplexers.
UAX #14 — Unicode Line Breaking Algorithm Defines an 85-rule algorithm that assigns "line break opportunities" to character pairs. Enables text renderers to know where it is safe to break a line. Essential for all text layout engines, from web browsers to PDF generators.
UAX #15 — Unicode Normalization Forms Specifies the four normalization forms (NFC, NFD, NFKC, NFKD) that convert text to canonical or compatible equivalents. Normalization is foundational to string comparison, search, and storage in virtually every Unicode-aware system.
UAX #29 — Unicode Text Segmentation
Defines grapheme cluster boundaries (what a user perceives as a single character), word boundaries, and sentence boundaries. Implemented by \b word-boundary assertions in regex engines, cursor movement in text editors, and line-breaking in layout engines.
UAX #31 — Unicode Identifiers and Syntax Specifies which Unicode characters may be used in programming language identifiers (variable names, function names, etc.). Python 3, Java, Rust, and many other languages reference UAX #31 for their identifier rules.
UAX #44 — Unicode Character Database
Documents the structure, content, and semantics of the Unicode Character Database (UCD) — the set of data files that encode all Unicode character properties. Essentially the specification for how to read and interpret files like UnicodeData.txt, DerivedCoreProperties.txt, and hundreds of other data files.
UAX Lifecycle
Research (UTR) → Community feedback → Promoted to UAX → Updated each version
A UAX is permanently associated with a Unicode version number. When you reference UAX #15 revision 10, you know exactly which normalization rules apply.
Quick Facts
| Property | Value |
|---|---|
| Normative status | Normative (integral to Unicode Standard) |
| Naming convention | UAX #N (e.g., UAX #15) |
| Update cadence | Every Unicode version release |
| Most implemented | UAX #9 (Bidi), UAX #15 (Normalization), UAX #29 (Segmentation) |
| Identifier rules | UAX #31 (used by Python, Java, Rust, etc.) |
| UCD documentation | UAX #44 |
| Publication URL | unicode.org/reports/ |
Termes associés
Plus dans Norme Unicode
Plan 0 (U+0000–U+FFFF), contenant les caractères les plus courants : latin, grec, …
Unité d'information utilisée pour organiser, contrôler ou représenter des données textuelles — …
Point de code auquel un caractère a été attribué dans une version …
Chinois, Japonais et Coréen — le terme collectif pour le bloc des …
Organisation à but non lucratif qui développe et maintient le standard Unicode. …
La plage complète des points de code Unicode possibles : U+0000 à …
The process of mapping Chinese, Japanese, and Korean ideographs that share a …
The individual consonant and vowel components (jamo) of the Korean Hangul writing …
Norme internationale (ISO/IEC 10646) synchronisée avec Unicode, définissant le même répertoire de …
Points de code définitivement réservés à un usage interne (66 au total) …