มาตรฐาน Unicode

อักขระนามธรรม

หน่วยข้อมูลที่ใช้สำหรับจัดระเบียบ ควบคุม หรือแทนข้อมูลข้อความ — เป็นเอนทิตีเชิงแนวคิดก่อนที่จะได้รับจุดรหัส

· Updated

What is an Abstract Character?

An abstract character is a unit of information used for the organization, control, or representation of textual data — independent of any particular representation in digital form. The Unicode Standard uses this term to describe what characters fundamentally are: abstract entities defined by their meaning and usage, not by their visual appearance or their encoding.

The abstract character "LATIN SMALL LETTER A" is a single concept shared by its italicized form, its bold form, its Times New Roman rendering, and its Arial rendering. It does not matter which font, size, or style is used — all these are representations of the same abstract character.

Abstract Character vs Glyph vs Code Point

Unicode carefully distinguishes three related but distinct concepts:

Concept Definition Example for "a"
Abstract character The meaning/identity of the character The letter "a" as a concept
Code point The integer assigned to represent this character U+0061
Glyph The visual shape as rendered by a font The pixel pattern for "a" in Arial

One abstract character corresponds to exactly one code point (in most cases). But one abstract character may have many glyphs across different fonts, sizes, and rendering contexts.

The reverse is also interesting: sometimes multiple abstract characters share visually identical glyphs (homoglyphs). U+006C (l), U+0049 (I), and U+007C (|) can look identical in some fonts — but they are three distinct abstract characters.

Abstract Characters and Grapheme Clusters

Complicating the picture slightly: what a user perceives as a single "character" (a grapheme cluster) may correspond to multiple Unicode code points, each representing a separate abstract character.

For example: - The Swedish letter "ä" can be encoded as a single code point U+00E4 (LATIN SMALL LETTER A WITH DIAERESIS) or as two code points: U+0061 (a) + U+0308 (COMBINING DIAERESIS). - In both cases, there is one user-perceived character (grapheme cluster). - In the two-code-point form, there are two abstract characters: the letter "a" and the combining diaeresis.

This is the basis for Unicode normalization: NFD (Canonical Decomposition) breaks composed characters into sequences of abstract characters; NFC (Canonical Composition) recombines them.

Abstract Characters and Encoding

The Unicode Standard defines abstract characters first, then assigns code points to represent them. This ordering is philosophically important: code points are labels for abstract characters, not the characters themselves. The same abstract character could theoretically be assigned a different code point in a hypothetical redesign (though Unicode's stability policies prevent any such change).

import unicodedata

# Two representations of the same abstract character "ä" (ä with diaeresis)
composed = "\u00E4"    # Single code point: ä
decomposed = "\u0061\u0308"  # Two code points: a + combining diaeresis

print(composed == decomposed)   # False — different byte sequences
print(unicodedata.normalize("NFC", decomposed) == composed)  # True — same character
print(unicodedata.normalize("NFD", composed) == decomposed)  # True — decomposed form

Named vs Unnamed Abstract Characters

Most abstract characters in Unicode have official names (e.g., LATIN SMALL LETTER A). However, some categories of code points represent abstract characters without individual names:

  • CJK Unified Ideographs: Named algorithmically (CJK UNIFIED IDEOGRAPH-4E00)
  • Hangul Syllables: Named algorithmically (HANGUL SYLLABLE GA)
  • Control characters: Have names describing their function (NULL, LINE FEED, etc.)

Historical Significance

The concept of abstract character was central to justifying Unicode's approach to CJK unification. Japanese kanji, Chinese hànzì, and Korean hanja often share the same abstract character (the same ideograph with the same meaning and origin), even when they are rendered differently in national typefaces. Unicode assigns a single code point to each abstract CJK character, regardless of its rendering variants — a decision called Han unification.

Quick Facts

Property Value
Defined by Unicode Standard Chapter 3
Relationship to code point 1:1 (usually)
Relationship to glyph 1:many (one character, many fonts/renderings)
Relationship to grapheme cluster Many abstract characters can form 1 cluster
Normalization connection NFD decomposes to sequences of abstract characters
Han unification Multiple CJK writing systems share abstract characters

คำศัพท์ที่เกี่ยวข้อง

เพิ่มเติมใน มาตรฐาน Unicode

Basic Multilingual Plane (BMP)

ระนาบ 0 (U+0000–U+FFFF) ประกอบด้วยอักขระที่ใช้บ่อยที่สุด ได้แก่ Latin, Greek, Cyrillic, CJK, Arabic และสัญลักษณ์ส่วนใหญ่ อักขระในระนาบนี้พอดีกับหนึ่งหน่วยรหัส …

CJK

จีน ญี่ปุ่น และเกาหลี คำรวมสำหรับบล็อกอักษรจีน Han ที่รวมกันและอักษรที่เกี่ยวข้องใน Unicode CJK Unified Ideographs มีอักขระมากกว่า 20,992 …

Han Unification

The process of mapping Chinese, Japanese, and Korean ideographs that share a …

Hangul Jamo

The individual consonant and vowel components (jamo) of the Korean Hangul writing …

ISO 10646 / Universal Character Set

มาตรฐานสากล (ISO/IEC 10646) ที่ซิงโครไนซ์กับ Unicode กำหนดชุดอักขระและจุดรหัสเดียวกัน แต่ไม่มีอัลกอริธึมและคุณสมบัติเพิ่มเติมของ Unicode

Unicode

มาตรฐานการเข้ารหัสอักขระสากลที่กำหนดหมายเลขเฉพาะ (จุดรหัส) ให้กับทุกอักขระในทุกระบบการเขียน เวอร์ชัน 16.0 มีอักขระที่กำหนดแล้ว 154,998 ตัว

Unicode Character Database (UCD)

คอลเลกชันไฟล์ข้อมูลที่อ่านได้ด้วยเครื่องซึ่งกำหนดคุณสมบัติอักขระ Unicode ทั้งหมด รวมถึง UnicodeData.txt, Blocks.txt, Scripts.txt และอื่นๆ

Unicode Standard Annex (UAX)

Normative or informative documents that are integral parts of the Unicode Standard. …

Unicode Technical Report (UTR)

Informational documents published by the Unicode Consortium covering specific topics like security …

ค่าสเกลาร์ Unicode

จุดรหัสใดๆ ยกเว้นจุดรหัส surrogate (U+D800–U+DFFF) ชุดค่าที่ถูกต้องซึ่งสามารถแทนอักขระจริงได้ รวมทั้งสิ้น 1,112,064 ค่า