プロパティ

名前エイリアス

安定性ポリシーによりUnicode名は変更できないため、文字の代替名を提供します。修正・略語・誤称の修正に使われます。

· Updated

What Are Name Aliases?

A Name Alias is an alternate, officially recognized name for a Unicode character. While every assigned character has a formal Name property (or a generated name like <CJK UNIFIED IDEOGRAPH-4E2D>), some characters have additional aliases for several reasons:

  • Correction: The formal name contains a historical error that cannot be changed (Unicode names are immutable once published), so a corrected name is provided as a Correction alias.
  • Control code names: Characters in the C0 and C1 control ranges (U+0000–U+001F, U+007F–U+009F) have formal names like NULL or no readable name at all; their familiar abbreviations (NUL, LF, CR, DEL) are registered as Control aliases.
  • Abbreviations: Widely used short names like ZWSP (for ZERO WIDTH SPACE) or BOM (for BYTE ORDER MARK).
  • Figments: Names that appeared in published Unicode data due to errors and were then retracted.

The BOM Case Study

One of the most instructive examples is U+FEFF:

  • Formal name: ZERO WIDTH NO-BREAK SPACE
  • Name alias (Abbreviation): ZWNBSP
  • Name alias (Alternate): BYTE ORDER MARK
  • Name alias (Abbreviation): BOM

The name ZERO WIDTH NO-BREAK SPACE is the historical, immutable name. The BOM function—indicating byte order in UTF-16/UTF-32 streams—was added later, but Unicode names cannot be changed. The alias BYTE ORDER MARK documents the actual common use.

import unicodedata

# unicodedata.name() returns the formal name only
print(unicodedata.name("\uFEFF"))
# ZERO WIDTH NO-BREAK SPACE

# unicodedata.lookup() works with both formal names and aliases
bom_by_alias = unicodedata.lookup("BYTE ORDER MARK")
print(f"U+{ord(bom_by_alias):04X}")
# U+FEFF

# Control character aliases
nul = unicodedata.lookup("NUL")          # U+0000
cr  = unicodedata.lookup("CARRIAGE RETURN")  # U+000D
lf  = unicodedata.lookup("LINE FEED")    # U+000A
print(ord(nul), ord(cr), ord(lf))
# 0 13 10

Alias Types

The Unicode Standard defines five alias types:

Type Description Example
correction Fixes a published name error U+FE18 → correct name
control C0/C1 familiar abbreviation U+0009 → TAB
figment Erroneous name, retracted U+E000 entry
alternate Alternative widely-used name U+FEFF → BYTE ORDER MARK
abbreviation Short form of the name U+FEFF → BOM

Quick Facts

Property Value
Unicode property name Name_Alias
Short alias na1 (for first alias)
Python unicodedata.lookup() Supports aliases since Python 3.x
Python unicodedata.name() Returns formal name only
Immutability of formal Name Names cannot change; aliases provide corrections
Spec reference Unicode Standard Annex #44, NameAliases.txt

関連用語

プロパティ のその他の用語

Age プロパティ

文字が最初に割り当てられたUnicodeバージョン。システムやソフトウェアバージョン間での文字サポートを判断するのに役立ちます。

East Asian Width

Unicode property (UAX#11) classifying characters as Narrow, Wide, Fullwidth, Halfwidth, Ambiguous, or …

Joining Type

Unicode property controlling how Arabic and Syriac characters connect to adjacent characters. …

Script Extensions

Unicode property listing all scripts that use a character, broader than the …

ケースマッピング

文字を大文字・小文字・タイトルケースに変換するルール。ロケール依存の場合があり(トルコ語のI問題)、1対多のマッピングもあります(ß → SS)。

スクリプト

文字が属する文字体系(例:ラテン、キリル、漢字)。Unicode 16.0は168個のスクリプトを定義し、Scriptプロパティはセキュリティと混在スクリプト検出に重要です。

デフォルト無視文字

サポートしていないプロセスで目に見える効果なく無視できる文字で、異体字セレクター・ゼロ幅文字・言語タグなどが含まれます。

ブロック

名前付きの連続したコードポイント範囲(例:基本ラテン = U+0000〜U+007F)。Unicode 16.0は336個のブロックを定義し、すべてのコードポイントはちょうど1つのブロックに属します。

ミラープロパティ

RTLコンテキストでグリフを水平に反転すべき文字。例:( → )、[ → ]、{ → }、« → »。

一般カテゴリー

すべてのコードポイントを30個のカテゴリ(Lu・Ll・Nd・Soなど)の1つに分類する体系で、7つの主要クラス(文字・記号・数字・句読点・記号・区切り・その他)にグループ化されています。