プロパティ

Age プロパティ

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

· 更新日

What Is the Age Property?

The Age property records the Unicode version in which a character was first assigned a code point. This property allows developers and researchers to determine which version of Unicode introduced a particular character—essential for compatibility testing, font planning, and detecting whether a string contains characters newer than a supported Unicode version.

Age values are version strings like 1.1, 2.0, 3.0, ..., 15.1. A code point that has never been assigned has an implied age of Unassigned. The property is immutable: a character's Age never changes once assigned, even if its properties (name, category) are later corrected.

Checking Age in Python

Python's unicodedata module does not expose Age directly, but the unicodedata.unidata_version string tells you which Unicode version the module implements. To check a character's introduction version you can use the unicodedata module's character lookup or a third-party library:

import unicodedata
import sys

# The Unicode version Python's unicodedata module implements
print(unicodedata.unidata_version)   # e.g., "15.1.0"
print(sys.version)

# For Age lookups, use the 'unicodedata2' or 'unicodedataplus' package
# pip install unicodedataplus
try:
    import unicodedataplus as udp
    for char in ["A", "€", "😀", "\U0001F600"]:
        age = udp.age(char)
        name = unicodedata.name(char, "<unnamed>")
        print(f"  U+{ord(char):04X}  Age={age:6}  {name}")
except ImportError:
    print("Install unicodedataplus for Age support")

# U+0041  Age=1.1    LATIN CAPITAL LETTER A
# U+20AC  Age=2.1    EURO SIGN
# U+1F600 Age=6.1    GRINNING FACE

Why Age Matters

Emoji support timelines: Emoji characters have been added across many Unicode versions. Age tells you whether a character requires Unicode 6.0+ (face emoji), 8.0+ (skin tone modifiers), or 13.0+ (newer additions). Mobile operating systems typically lag Unicode releases by 12–24 months.

Legacy system compatibility: A database or file format limited to Unicode 3.0 cannot store CJK Extension B characters (added in 4.1) or any emoji. Age detection lets you validate input against a maximum supported version.

Font auditing: Font engineers use Age to prioritize glyph development—newer characters with high Age values may not yet be covered by commonly deployed fonts.

Notable Age Milestones

Version Year Notable Additions
1.1 1993 Latin, Greek, Cyrillic, CJK core, Hebrew, Arabic
2.1 1998 Euro sign €, many combining marks
4.1 2005 CJK Extension B (42,711 characters)
6.0 2010 Emoji (first large batch, 722 characters)
8.0 2015 Skin tone modifiers
13.0 2020 55 new emoji, Chorasmian, Yezidi scripts
15.1 2023 Latest release

Quick Facts

Property Value
Unicode property name Age
Type Enumerated (version string)
Python built-in No (use unicodedataplus or regex package)
Immutability Age never changes after assignment
Unassigned value Unassigned (implied)
Spec reference Unicode Standard Annex #44, DerivedAge.txt

関連用語

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

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つの主要クラス(文字・記号・数字・句読点・記号・区切り・その他)にグループ化されています。

互換等価

同じ抽象的内容を持つが外観が異なる場合がある2つの文字シーケンス。正規等価より広い概念。例:fi ≈ fi、² ≈ 2。