* 仕様書

[REFS[
- [53] [CITE[[[The Unicode Standard]], Version 13.0 - ch02.pdf]], [TIME[2020-03-09T17:53:32.000Z]], [TIME[2020-12-20T08:35:03.323Z]] <https://www.unicode.org/versions/latest/ch02.pdf#G14527>
- [33] [CITE[[[The Unicode Standard]], Version 13.0 - ch02.pdf]], [TIME[2020-03-09T17:53:32.000Z]], [TIME[2020-12-20T08:50:38.557Z]] <https://www.unicode.org/versions/latest/ch02.pdf#G14527>
- [46] 
[CITE[[[The Unicode Standard]], Version 13.0 - ch03.pdf]], [TIME[2020-03-09T17:53:34.000Z]], [TIME[2020-12-20T07:20:27.336Z]] 
<https://www.unicode.org/versions/latest/ch03.pdf#G22582>
- [35] [CITE[[[The Unicode Standard]], Version 13.0 - ch03.pdf]], [TIME[2020-03-09T17:53:34.000Z]], [TIME[2020-12-20T02:08:18.239Z]] <https://www.unicode.org/versions/latest/ch03.pdf#G2212>
]REFS]

* 予約済符号点

[19] 
[DFN[[RUBY[予約済][よやくずみ][Reserved]]]]は、
[[符号点型]]の1つです。
[SRC[>>35 D10a]]
[DFN[[RUBYB[未指示済符号点][undesignated code point]]]]
([[未割当符号点]])
です。
[SRC[>>53]]

[20] 
[DFN[[RUBY[予約済符号点][よやくずみふごうてん][reserved code point]]]],
[DFN[[RUBY[未割当符号点][みわりあてふごうてん][unassigned code point]]]]は、
将来の割当のために[[予約]]されている
[[Unicode符号点]]です。
[SRC[>>35 D15]]

[21] 
[[サロゲート符号点]]と[[非文字]]は、
[[割当済符号点]]とみなされますが、
[[割当済文字]]ではありません。
[SRC[>>35 D15]]
[[抽象文字]]が割当できないまたは割当されていないのですが、
しかし[[未割当符号点]]ではありません。

[28] 
ある時点で[[予約済符号点]]であっても、
将来の版の [[Unicode]] では[[抽象文字]]が割り当てられることがあります。
[SRC[>>46 C3]]

[REFS[
- [37] [[未割当済符号点]]の一覧
<https://chars.suikawiki.org/set/%24unicode%3Aundesignated>
- [38] [[符号点型]]
[CODE[Reserved]]
の[[符号点]]の一覧
<https://chars.suikawiki.org/set/%24unicode%3Areserved>
]REFS]

* General Category [CODE[Cn]]

[34] 
[[General Category]] [DFN[[CODE[Cn]]]]
は、
[RUBYB[[[抽象文字]]に割り当てられていない][not assigned to abstract character]][[符号点]]であり、
[[非文字]]と[[未割当符号点]]が含まれます。
[SRC[>>53]]

;; [36] [[抽象文字]]に割り当て[RUBYB[できない][cannot]][[符号点]]たる[[サロゲート符号点]]は、
別に
[CODE[Cs]]
に含まれています。

[REFS[
- [39] 
[[抽象文字]]に割当済でない[[符号点]]の一覧
<https://chars.suikawiki.org/set/%24unicode%3Anot-assigned-to-abstract-character>
]REFS]

* 特性

[25] 
[[未割当済符号点]]にも、他の[[符号点]]同様に[[特性値][文字特性]]があります。

[26] 
全体共通の既定値が設定されている場合もあれば、
[[ブロック]]などの単位で一括して設定された既定値となっていることもあります。

[27] 
[[未割当済符号点]]に[[抽象文字]]が割当されたときに[[特性値][文字特性]]が変更されるかどうかは、
[[特性][文字特性]]によって違います。




[18] [[特性][文字特性]]
[CODE[Age][Age (Unicode)]]
の値
[DFN[[CODE[unassgined]]]]
は、
[[未割当済符号点]]を表します。

[REFS[
- [32] 
[CODE[[[Age][Age (Unicode)]] = [[unassigned]]]]
の文字の一覧
<https://chars.suikawiki.org/set/%24unicode%3AAge%3AUnassigned>
]REFS]

* 処理

[22] 
[[適合処理]]は、
[RUBYB[用途][use]]が[RUBYB[指定][designate]]されていない[[符号点]]が現れたことを示す
(例えば[[レンダリング]]時に[[[RUBYB[欠けたることを示すグリフ][missing glyph]]][〓]]を示したり、
[[ストリーミングプロトコル]]中に適切なエラーを信号したりする)
ことができます。
[SRC[>>35]]

[23] 
しかし[[適合処理]]は、
[[未割当済符号点]]を[[抽象文字]]として解釈してはなりません。
[SRC[>>46 C3, >>35]]

;; [24] 
[[空き領域]]を勝手に使ってはいけないというのは当然の規定のように思えますが、
過去の[[文字コード]]では勝手に[[外字]]割当用に使われることがよくありました。
(規格上禁止されていても平然と使われることもありました。)
[[Unicode]] でもそのような実装例がないわけではありません。


[29] 
[[未割当済符号点]]であっても将来の改訂で[[抽象文字]]が割り当てられる可能性があることに鑑み、
注意しつつ一般的な取り扱いをしたほうが、
将来の版の
[[Unicode]]
に基づくデータに対して[[頑強]]となります。
[SRC[>>46 C3]]

[30] 
[[プロトコル]]や[[アプリケーション]]によっては[[未割当済符号点]]が含まれる[[文字列]]をエラーとすることがあります。
[[識別子]]系の定義で除外されていることが特に多いようです。
そうした仕様にしてしまうと、
将来の版の [[Unicode]]
で追加された[[文字]]が、
仕様や実装の改訂まで使えなくなってしまいます。
更新されないで放置される仕様や実装があると、
[[相互運用性]]に支障が出てしまいます。

[31] 
逆に[[未割当済符号点]]まで認めてしまっているために、
将来の
[[Unicode]]
の版で特殊な用途にその[[符号点]]が使われてしまい、
それを認めていることが都合が悪くなってしまうことがあります。


* UNASSIGNED (導出特性値)

[1] [DFN[[[UNASSIGNED]]]] は、その[[符号位置]]が [[Unicode]] で[[未割り当て]]であることを表す[[導出特性値]]です。
[SRC[>>2]]

** 仕様書

[REFS[
- [6] [CITE@en[RFC 5892 - The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)]] 
-- [2] '''<http://tools.ietf.org/html/rfc5892#page-4>'''
- [13] [CITE@en[RFC 5894 - Internationalized Domain Names for Applications (IDNA): Background, Explanation, and Rationale]]
-- [7] <http://tools.ietf.org/html/rfc5894#section-3.1.4>
-- [14] <http://tools.ietf.org/html/rfc5894#section-7.1.1>
-- [15] <http://tools.ietf.org/html/rfc5894#section-7.7>
- [17] [CITE@en[RFC 7564 - PRECIS Framework: Preparation, Enforcement, and Comparison of Internationalized Strings in Application Protocols]] ([TIME[2015-12-21 04:49:41 +09:00]] 版) <https://tools.ietf.org/html/rfc7564#section-8>
]REFS]

** 定義

[8] [[Unassigned]] カテゴリーの[[符号位置]]の[[導出特性値]]が [[UNASSIGNED]] です。

** 安定性

[9] [[UNASSIGNED]] だった[[符号位置]]に[[文字]]が割り当てられると、他の [[PVALID]]、[[CONTEXT]]、
[[DISALLOWED]] に[[導出特性値]]が変わります。

[10] 既存の[[符号位置]]から[[文字]]が削除されることは無いとされていますが、もしされた場合は
[[RFC 5894]] によれば [[DISALLOWED]] となるようです。

** 処理モデル

[11] [[登録]]も [[lookup]] も、 [[UNASSIGNED]] な[[符号位置]]が含まれていれば失敗します。
これは、もし [[lookup]] だけでも認めてしまうと、将来[[文字]]が割り当てられて [[CONTEXT]] 
になったとき、条件によっては使用が認められないため、あるいは [[DISALLOWED]] 
になったとき、使用が認められないため、将来の版に対応した実装では [[lookup]]
できない[[ラベル]]を古い版に対応した実装では [[lookup]] できてしまい、都合が悪いからです。
[SRC[>>7、>>15]]

** 関連

[12] [[IDNA2003]] では [[AllowUnassigned]] [[フラグ]]がありました。通常 [[lookup]] 
ではこの[[フラグ]]は未設定であり、 [[UNASSIGNED]] な[[符号位置]]を含んでいても失敗にはなりませんでした。

** メモ

[16] 既に主要な[[用字系]]は [[Unicode]] に含められているので、今後追加される[[文字]]は古代文字などであって
>>11 のような問題は無視できるため、未割当であっても [[lookup]] できるようにするべきという主張もあります。
しかし実際には「主要な[[用字系]]は既に含まれている」と言われ続けていますし、
現実に[[漢字]]はどんどん追加されており、その主張は成り立たないとされています。 [SRC[>>15]]

* Unassigned (カテゴリー)

[3] [DFN[[[Unassigned]]]] は、 [[Unicode]] で[[文字]]が (まだ) 割り当てられていない[[符号位置]]を含むカテゴリーです。
[SRC[>>4]]

** 仕様書

[REFS[

- [4] [CITE@en[RFC 5892 - The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)]] ([TIME[2011-02-05 04:10:56 +09:00]] 版) <http://tools.ietf.org/html/rfc5892#section-2.10>
- [42] 
[CITE@en[RFC 7564 - PRECIS Framework: Preparation, Enforcement, and Comparison of Internationalized Strings in Application Protocols]], [TIME[2024-07-07T03:32:57.000Z]] <https://datatracker.ietf.org/doc/html/rfc7564#section-9.10>

]REFS]

** 定義

[5] [[General_Category]] が [[Cn]] であり、かつ [[Noncharacter_Code_Point]] に含まれない[[符号位置]]が、
[[Unassigned]] に含まれます。 [SRC[>>4]]

** 文脈

[43] [[PRECIS]] でも使われます。 [SRC[>>42]]

* 関連

[40] [[Perl]] の[[正規表現]] [CODE[\p]] において [[Unicode符号点]]でないもの
([CODE[U-00110000]] [[以上]]) は (何の変哲もない) [[未割当符号点]]のように扱われます。
[SEE[ [[\p]] ]]

[41] 
[CODE[U+FFF0]]

* メモ