derived property

導出特性値 (文字コード)

[1] 導出特性値 (derived property value) は、 IDN のラベルにおいて利用可能な文字を決定するための特性値です。 その特性値の決定方法は IDNA2008 仕様書群に属する文書の一つ、 RFC 5892 によって定められています。 PRECIS (RFC 7564) でもそのバリエーションを定義しています。

仕様書

特性値

[18] IDNA2008 は次の4つの特性値を使っています。

[4] PVALID (プロトコル妥当)
ラベルで原則として利用できます
[5] CONTEXT (文脈的規則必須)
ラベルで場合によっては利用できます
[6] DISALLOWED (禁止)
ラベルで利用できません
[7] UNASSIGNED (未割当)
文字が割り当てられていません

[9] すべての符号位置はこの4種類のいずれかの特性値を持ちます。>>2 1.

[19] PRECIS は IdentifierClass と FreeformClass の2つの文字列クラスを定義しているので、両者で扱いが違う符号位置について SPECIFIC CLASS PROTOCOL VALID (FREE_PVAL、ID_PVAL) と SPECIFIC CLASS DISALLOWED (FREE_DIS、ID_DIS) という値を使っています >>17。 いずれも、文字列クラスが決まれば妥当か禁止のいずれかに決まります。

実際には ID_PVAL と FREE_DIS は使っていません。

定義

[10] 符号位置符号の IDNA2008 導出特性値は、次のようにして決定します >>2 3.。

  1. [26] 次の条件のうち、最初に一致したものを実行します。
    [11] 符号が Exceptions に含まれる
    Exceptions で指定された値を返します。
    [12] それ以外で、 符号が BackwardCompatible に含まれる
    BackwardCompatible で指定された値を返します。
    [13] それ以外で、 符号が Unassigned に含まれる
    UNASSIGNED を返します。
    [14] それ以外で、 符号が LDH に含まれる
    PVALID を返します。
    [15] それ以外で、 符号が JoinControl に含まれる
    CONTEXTJ を返します。
    [16] それ以外で、 符号が Unstable, IgnorableProperties, IgnorableBlocks, OldHangulJamo のいずれかに含まれる
    DISALLOWED を返します。
    [20] それ以外で、 符号が LetterDigits に含まれる
    PVALID を返します。
    [21] それ以外
    DISALLOWED を返します。

[27] 符号位置符号の PRECIS 導出特性値は、次のようにして決定します >>17。

  1. [28] 次の条件のうち、最初に一致したものを実行します。
    符号が Exceptions に含まれる
    Exceptions で指定された値を返します。
    それ以外で、 符号が BackwardCompatible に含まれる
    BackwardCompatible で指定された値を返します。
    それ以外で、 符号が Unassigned に含まれる
    UNASSIGNED を返します。
    それ以外で、 符号が ASCII7 に含まれる
    PVALID を返します。
    それ以外で、 符号が JoinControl に含まれる
    CONTEXTJ を返します。
    それ以外で、 符号が OldHangulJamo, PrecisIgnorableProperties, Controls のいずれかに含まれる
    DISALLOWED を返します。
    それ以外で、 符号が HasCompat に含まれる
    ID_DIS または FREE_PVAL を返します。
    それ以外で、 符号が LetterDigits に含まれる
    PVALID を返します。
    それ以外で、 符号が OtherLetterDigits, Spaces, Symbols, Punctuation のいずれかに含まれる
    ID_DIS または FREE_PVAL を返します。
    それ以外
    DISALLOWED を返します。
[29] 複数の文字カテゴリーに属する文字があるので、評価の順序を変えてはいけません。

[30] この定義で参照される文字カテゴリーは、 IDNA2008 および PRECIS で規定されています。

特性値の一覧

[23] RFC 5892 は特性値の決定のための方法を定めているだけとされています >>2 1.。 RFC 5892 の附属書には Unicode 5.2 での特性値の一覧が示されています >>2 B. が、 参考 (non-normative) とされています >>2 4.。

[22] 特性値の一覧は IANA登録簿 (>>3) も存在しますが、それも参考です >>24。 RFC 5892 によればこの一覧は指定専門家 (designated expert) によって Unicode 5.2 とそれ以降の版について IANA が登録簿を作るとされています >>2 5.1。 Unicode の版が新しくなる度に更新されることになっているようです >>24。 その作成の過程や指定専門家の評価において問題があれば IESG に通知するべき (should) とされており、特性値の導出の方法の変更には IETF評価が必要とされています >>2 5.1。

[25] 2011年8月に IANA 登録簿が Unicode 6.0.0 対応に更新されています。ぱっとみた感じ UNASSIGNED から新規に文字が割り当てられて PVALID や DISALLOWED になった変更ばかりのようです。

[32] PRECIS 版のIANA登録簿も別途用意されています >>31。

[44] 各特性値を持つ符号位置の一覧が >>41、>>40 にあります。 JSON 形式のデータファイルが >>42 (説明が >>43) にあります。

安定性

[8] 導出特性値は Unicode の特性の値から定まるので、 Unicode の改訂により特性値が変わると、導出特性値が変わってしまうこともないとはいえません。 その場合には BackwardCompatible を使って調整するとされています >>2 1.。

[34] IDNA2008 は PVALID や DISALLOWED に一旦決定したら Unicode の改訂により変更することはないとしていましたが、 Unicode 6.0.0 で変更しています。

PVALID, DISALLOWED を参照。

[36] PRECIS は IDNA の Unicode 7.0 対応のための調査で再検討の必要が指摘されたとして、 将来の非互換な改訂を予告しています >>35。

[37] おそらくそのためなのでしょう、 IDNA 用の IANA登録簿は Unicode 6.3.0 版を最後に更新されておらず、 PRECIS 用の IANA登録簿も Unicode 6.3.0 版となっています。

PRECIS が出版された2015年には既に Unicode 8.0.0 も出版されています。

歴史

[45] Microsoft Word - Proposal-derived-idna-property-2.docx - 21227-derived-idna-prop.pdf, , https://www.unicode.org/L2/L2021/21227-derived-idna-prop.pdf