導出特性値

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

[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] PRECISIdentifierClassFreeformClass の2つの文字列クラスを定義しているので、両者で扱いが違う符号位置について SPECIFIC CLASS PROTOCOL VALID (FREE_PVALID_PVAL) と SPECIFIC CLASS DISALLOWED (FREE_DISID_DIS) という値を使っています >>17。 いずれも、文字列クラスが決まれば妥当禁止のいずれかに決まります。

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

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

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

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

安定性

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

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

PVALID, DISALLOWED を参照。

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

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

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