IDC (Unicode)

[19] Unicode表意文字的記述 (Ideographic Description) ブロック12符号位置表意文字的記述文字 (Ideographic Description Character) (IDC) は、漢字などの構造を記述するためのものです。

仕様書

意味

[15] IDS は、 Unicodeにない漢字を記述するものです。 >>4

[16] 結合文字と構図は似ていますが、 文字として扱われるべきものそのものではなく、 漢字の構造を記述したものに過ぎない >>4 とされています。

[17] Unicode に含まれる漢字の分析のための記述に使うこともできます。 >>4

[13] Unicode に含まれる漢字の代替図形表現を交換する手段として使うべきではありません。 >>4

[40] そのような手段には、例えば IVS があります。

[39] IDS は通常の漢字の列に溶け込んで 「漢⿱宀子列」 のようにして外字の記述に使われます。 厳密な意味の解釈においては、 これは漢字3文字の列を表しているのか、 漢字1文字、IDSによる漢字の構造1組、漢字1文字の3組の列を表しているのか明らかではありません。 そのような厳密さが必要な場合には、 マーク付け言語の機能で 「漢<gaiji>宀子</gaiji>列」 のように記述するなど、 アプリケーション依存の方法でもう1工夫必要となります。

[57] 漢字以外の表現に流用されることもあります。 例えば単位を表すラテン文字片仮名合字の記述に使われることがあります。

構文

[20] IDC を使って表意文字的なものを記述する文字列表意文字的記述列 (Ideographic Description Sequence) (IDS) といいます。

[21] IDS は、 Ideographic, Radical, CJK_Stroke, 私用, U+FF1F か、 IDS_BinaryOperatorIDS が2つ続くものか、 IDS_TrinaryOperatorIDS が3つ続くものです。 >>4

[148] また、 IDS_Unary_OperatorIDS が1つ続くものです。

[26] IDS
  1. |
    1. Ideographic
    2. Radical
    3. CJK_Stroke
    4. 私用
    5. U+FF1F
    6. =
      1. IDS_Unary_Operator
      2. IDS
    7. =
      1. IDS_BinaryOperator
      2. IDS
      3. IDS
    8. =
      1. IDS_TrinaryOperator
      2. IDS
      3. IDS
      4. IDS
[38] Unicode Standard の定義上は、 IDC を使わないただの単独の漢字部首も 「IDS」 となっています。 普通に 「IDS」 と言ったときにそれがただの漢字だったというケースはあまりない気がします。 入れ子の定義を簡潔にするためにこうしているのでしょうか。

[87] この IDS の構文定義だと、 IDS の直後に結合文字ZWJZWNJ が続くとき、 IDS の一部ではないのに IDS または IDS の最後の符号点書記素クラスターを構成することになるのですかね?


[14] 同じ漢字を複数の異なる IDS で表現できるかもしれませんが、 等価性は規定されていません。 自然な分割で最短の表現とすることが好ましいですが、 要件とはなっていません。 ただ可能な限り最短の表現を使うのが好ましいとは注文されています。 >>4 分析目的の場合のように、逆に出来得る限り細かく分解する場合もあるようです。

演算子

[85] IDC前置演算子で、引数となる後続の文字の数は IDC ごとに違います。

[149] IDS_Unary_Operator は、 U+2FFEU+2FFF です。 >>143

p
符号位置
c
文字
n
文字名称
p
U+2FFE
c
n
IDEOGRAPHIC DESCRIPTION CHARACTER HORIZONTAL REFLECTION
p
U+2FFF
c
⿿
n
IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION

[22] IDS_BinaryOperator は、 U+2FF0, U+2FF1, [ U+2FF4, U+2FFB ] の10文字 >>4 と、 U+2FFC, U+2FFD, U+31EF です。 >>143

p
符号位置
c
文字
n
文字名称
1
次の文字
2
次の次の文字
p
U+2FF0
c
n
IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
1
2
p
U+2FF1
c
n
IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
1
2
p
U+2FF4
c
n
IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND
1
外側
2
内側
p
U+2FF5
c
n
IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
1
外側
2
内側・下
p
U+2FF6
c
n
IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW
1
外側
2
内側・上
p
U+2FF7
c
n
IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT
1
外側
2
内側・右
p
U+2FF8
c
n
IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
1
左・上
2
内側
p
U+2FF9
c
n
IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT
1
右・上
2
内側
p
U+2FFA
c
n
IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT
1
左・下
2
内側
p
U+2FFB
c
n
IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
p
U+2FFC
c
n
IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM RIGHT
p
U+2FFD
c
n
IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER RIGHT
p
U+31EF
c
n
IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION

[27] U+2FFB は重ね合わせを表します。例えば 「⿻工从」は「」を表します >>4

[35] U+2FFBU+31EF は外部情報なく機械的に処理できません。

[23] IDS_TrinaryOperator は、 U+2FF2U+2FF3 です。 >>4

p
符号位置
c
文字
n
文字名称
1
次の文字
2
次の次の文字
3
次の次の次の文字
p
U+2FF2
c
n
IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT
1
2
3
p
U+2FF3
c
n
IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
1
2
3

[29] IDS の前に U+303E IDEOGRAPHIC VARIATION INDICATOR (, IVI) を置くことで、 IDS近似であることを示せます。 >>4

[136] IVI つき IDS
  1. IDS

[137] しかしながら、 IVIIDS の一部ではないとされています。 >>135 IDS 全体の前に IVI を置いて全体が近似であることは示せますが、 IDS の中に IVI を入れて IDS の一部が近似であることは示せません。


[150] Unicode 15.1 の演算子の追加 (>>138) があるまで、 いくつか非標準の演算子が使われていました。

[75] >>73, , の独自の演算子を使っています。

[154] GlyphWiki / CHISE にはいくつか独自の演算子があります。

[151] 文字
文字
代替表現
[152] 文字
文字
⿿
代替表現
[153] 文字
文字
代替表現

被演算子

[30] IDSIDC 以外の文字 (operand) の一覧は次の通りです。

[18] IDS漢字だけでなく、同様の構造を持つ周辺の文字にも適用できます。 >>4

[25] 異なる用字系の混在は正式な構文上禁止されていませんが、 好ましくありません。 >>4

[28] U+FF1F FULLWIDTH QUESTION MARK もなぜか認められています。不明を表すのでしょうか。説明はありません。 なぜ敢えて全角形のみ認めているのか不明です。

[76] >>73 はこれを「記述不能」に使っています。 他の IDS データベースも明記せずこれを使っていることがあります。 UAX #45半角? を使っています。 他に を使った例や、 文字化けかもしれませんが U+FFFD を使った例も見られます。

[32] 漢字でありながら CJK統合漢字外のものとして、例えば「〇」 は認められていますが、「々」はなぜか認められていません。

[33] IVS を使う需要はありそうですが、なぜか認められていません。

[34] 仮名ハングルラテン文字を部品とする漢字の例が知られますが、 認められていないため IDS で表現できません。

[48] なぜか私用文字が認められています。 相互運用性に貢献しなそうで謎です。

[52] 実際に流通している IDSIDS データベースでは、 必要に応じて表意文字以外や IVS が使われることも珍しくありません。 CJK互換漢字, 部首, CJK筆画, 仮名が使われることもあります。

[53] CHISEIDS データベース >>3 では CHISE文字参照が使われています。 現行漢字の他に、甲骨文字篆書にも利用されているようです。

[56] 漢字データベースプロジェクトIDS データベースには CDP外字が使われています。 CDP外字なしの版もあり、 記述できない部品はかわりに画数を①②のように丸付き数字で記述しています。 部品として α, , も使われています。

[113] GlyphWiki は 「当面の間」 CDP外字CJK互換漢字を認めています。 >>112

[74] BabelStoneIDS (>>100) は Unicode にない文字部品を {1}, {2} のように記述しています。 ファイル内の他に >>108 にも例示があります。

[90] IRGSGML文字参照風の構文で Unicode にない文字部品を表しています。 >>89

[91] UAX #45IRG 方式を踏襲していますが、 区切子として &, ; のかわりに [, ] を使います。 >>89

[98] IRGN2225 >>97, >>99: IRG が使う Unicode にない漢字部品。 符号字形文字の名前CDP との対応などが示されている。

[105] HKSCSIDS では Unicode にない漢字部品が3,4桁の英数字列 (区切子なし) で表されています。 >>104 の2つめのファイルに一覧があります。

[107] >>106IRG, HKSCS, CDP, BabelStone に加えて GF1997, GF2009, UCV から漢字部品を選んで連番を振っています。

[129] >>50, >>119 は独特の構文を導入しています。

[128] >>79Unicode で表せない構成要素を {...} と表しています。

長さ制限

[24] 以前の版では IDS の部分の長さに制限がありましたが、 撤廃されました。 >>4

[54] 実装では実際的な制限を設けていることがあります。 セキュリティーのためにも何らかの上限は必要です。

処理

[41] IDC は、 IDS として以外の用法は定められていません。 しかし任意の入力を受信する実装 (文字列を処理するほとんどの実装) は、 IDS の構文に合致しない IDC を与えられた時にも適切に処理できる必要があります。

[42] 例えば、 IDC が単独で出現したときにクラッシュするような実装は、 不適切です。

[46] 実際、 IDS を意識しないで IDC を使う場合 (例えば Unicode文字の一覧表や、 「⿱の構造」 のような書き方をする場合) や、 厳密に IDS の構文では記述できないものを敢えて記述する場合 (>>30) のような事例が見られます。

レンダリング

[7] IDC制御文字でも結合文字でもありません。 >>4

[12] IDC制御文字ではないので、 IDC の有無でレンダリングは違わなければなりません。 >>4

[8] 文字境界語境界に影響しなければならないという要件はありません >>4 (が影響させることは禁止もされていません)。

[9] 個別の文字の並びとしてレンダリングしても構いませんし、 IDS を解釈した結果をレンダリングしても構いません。 >>4

[10] 後者の場合、 hit testカーソル移動その他利用者インターフェイス関係では合字として扱うべきです。 >>4

[43] IDC のうち 「」 だけは、 機械的に合成してレンダリングすることが困難です。

[44] それ以外は機械的に合成可能ですが、 構成要素の幅を適切に決めて美しくレンダリングするのは中々に難しそうです。

[45] 同じ木偏でも「林」と「機」では幅がかなり違います。

[11] 不適切な IDS の扱いは明記されていませんが、後者の実装方法の場合でも前者の方法とするべきでしょう。

[88] 実装が異常動作してはいけません。 文字のセキュリティー

[83] IPSJ-MGN601107.pdf, , https://ipsj.ixsq.nii.ac.jp/ej/index.php?action=pages_view_main&active_action=repository_action_common_download&item_id=199699&item_no=1&attribute_id=1&file_no=1&page_id=13&block_id=8#page=5

IDSccmp で実装した事例。

[86] OpenType による実装については、連なりも参照されたし。

[196] zi.tools では KAGEレンダリングしています。

相互作用

[36] 漢字基底文字になり得るので、次に結合文字が来ることが認められています。 では IDS の後に結合文字が来たときどうなるのでしょうか。 IDS を1つにまとめてレンダリングするなら、 それ全体が基底扱いになるのでしょうか。 IDS の一部分ではないので、IDS を構成する最後の漢字に結合するのはおかしい気がします。

[47] IDS 内部に ZWJ, ZWNJ を挿入することは構文的にできません。 前後に挿入することはできますが、 効果の程は不透明です。 続け字

非標準の用法

[59] WebページSNSIDS の形を取らずに構造を説明するために使われることがたまにあるようです。 (例えば偏と旁で横並びであることを「⿰」で表すような。)

[58] http://www.nomfoundation.org/nom-tools/Tu-Dien-Chu-Nom-Dan_Giai/Arrangement-of-Entries?uiLang=en

ここでは中置記法で使われています。

運用方針

[95] IRG:

[92] HKSCS:

[133] CHISE:

漢字のIDSデータ

[109] Unicode:

[65] CHISE:

[64] 漢字データベースプロジェクト:

[78] GlyphWiki:

[100] BabelStone:

[71] その他:

関連

[61] CHISE では IDS に対応する S式RDF の表現があります。 CHISE

歴史

[51] 漢字構造記述は古来いろいろな方法が試されてきました。


[5] GBK で規定されました。 >>4

[6] GBK を出典に Unicode に追加されました。 >>4

[37] IDS + OpenType: Pseudo-encoding Unencoded Glyphs () https://blogs.adobe.com/CCJKType/2014/03/ids-opentype.html

[60] jj11.pdf, https://jaet.sakura.ne.jp/?plugin=attach&refer=%E5%87%BA%E7%89%88%E7%89%A9%2F%E3%80%8E%E6%BC%A2%E6%83%85%E7%A0%94%E3%80%8F%E7%AC%AC11%E5%8F%B7&openfile=jj11.pdf#page=14

新 IDC の追加

[138] Unicode 15.1 で新しい IDC が追加されました >>139, >>140

[144] 従来の IDC のブロックの空きを埋める形で [ U+2FFC, U+2FFF ] の4文字が >>140CJK Strokes ブロックの末尾に U+31EF の1文字が >>139 追加されました。

[145] The Unicode Standard は大版が繰り上がるときに規格本体が改正され、 小版のみの改正では UCD符号表などのみが改正されることになっています。 従って Unicode 15.1 は Unicode 15.0 の規格本体等と Unicode 15.1 の改正差分の UCD, 符号表 等で構成されています。

[146] ところで IDS の構文と意味は規格本体で規定されています >>135。 そのため Unicode 15.0 に改正前の規定がありますが、 Unicode 15.1 に改正後の規定は見当たりません。 符号表UCD文字の情報は増えているのに、 その使い方は定義されないままになっているのです。

[147] 改正概要にに

  • There are 5 new ideographic description characters. These extend the syntax of ideographic description sequences.
  • Two of the new ideographic description characters function as unary operators, which necessitated introduction of a new binary property: IDS_Unary_Operator.

... とあり >>142、確かに UCD には追加後の定義が含まれます >>143 が、 その 「extend the syntax」 に相当する規定が見当たりません。


[49] (, ) https://www.unicode.org/L2/L2021/21118-kids-preliminary.pdf

[55] L2/22-247 (CJK & Unihan Group Recommendations for UTC #173 Meeting) - 22247-cjk-unihan-group-utc173.pdf, , https://www.unicode.org/L2/L2022/22247-cjk-unihan-group-utc173.pdf#page=45