[19] 
[[Unicode]]
の
[DFN[[RUBYB[表意文字的記述][Ideographic Description]]]][[ブロック]]の
[N[12]]
の[[符号位置]]の[DFN[[RUBYB[表意文字的記述文字][Ideographic Description Character]]]]
([DFN[IDC]])
は、[[漢字]]などの[[構造を記述][漢字構造記述]]するためのものです。

* 仕様書

[REFS[
- [2] [CITE[Ideographic Description Characters]] ([TIME[2019-04-27 04:21:40 +09:00]]) <https://www.unicode.org/charts/PDF/U2FF0.pdf>
- [135] 
[CITE[[[The Unicode Standard]], Version 15.0 - ch18.pdf]], [TIME[2022-09-08T18:13:46.000Z]], [TIME[2023-11-17T12:04:28.468Z]] <https://www.unicode.org/versions/Unicode15.1.0/ch18.pdf#page=25>
-- [4] 旧:
[CITE[[[The Unicode Standard]], Version 12.0 - ch18.pdf]] ([TIME[2019-03-02 07:15:42 +09:00]]) <https://www.unicode.org/versions/Unicode12.0.0/ch18.pdf#page=24>
]REFS]

* 意味

[15] [[IDS]]
は、
[[Unicodeにない漢字][外字]]を記述するものです。
[SRC[>>4]]

;; [16] [[結合文字]]と構図は似ていますが、
[[文字]]として扱われるべきものそのものではなく、
[[漢字]]の構造を記述したものに過ぎない [SRC[>>4]] とされています。

[17] [[Unicode]] に含まれる[[漢字]]の分析のための記述に使うこともできます。 [SRC[>>4]]

[13] [[Unicode]] に含まれる[[漢字]]の[[代替図形表現][代替表現]]を[[交換][情報交換]]する手段として使うべきではありません。
[SRC[>>4]]

;; [40] そのような手段には、例えば [[IVS]] があります。

[39] 
[[IDS]] は通常の[[漢字]]の列に溶け込んで
「漢⿱宀子列」
のようにして[[外字]]の記述に使われます。
厳密な意味の解釈においては、
これは漢字3文字の列を表しているのか、
漢字1文字、[[IDS]]による[[漢字]]の構造1組、漢字1文字の3組の列を表しているのか明らかではありません。
そのような厳密さが必要な場合には、
[[マーク付け言語]]の機能で
「[CODE[漢<gaiji>[[⿱]]宀子</gaiji>列]]」
のように記述するなど、
[[アプリケーション]]依存の方法でもう1工夫必要となります。


[57] 
[[漢字]]以外の表現に流用されることもあります。
例えば[[単位]]を表す[[ラテン文字]]や[[片仮名]]の[[合字]]の記述に使われることがあります。

* 構文

[20] 
[[IDC]] を使って[[表意文字的]]なものを記述する[[文字列]]を
[DFN[[RUBYB[表意文字的記述列][Ideographic Description Sequence]]]]
([DFN[IDS]])
といいます。

[21] [CODE[IDS]] は、
[CODE[Ideographic]],
[CODE[Radical]],
[CODE[CJK_Stroke]],
[[私用][私用域]],
[CODE[U+FF1F]]
か、
[CODE[IDS_BinaryOperator]] に [CODE[IDS]] が2つ続くものか、
[CODE[IDS_TrinaryOperator]] に [CODE[IDS]] が3つ続くものです。
[SRC[>>4]]

[148] 
また、 
[CODE[IDS_Unary_Operator]]
に
[CODE[IDS]]
が1つ続くものです。

[FIG(railroad)[ [26] [CODE[IDS]]
= |
== [CODE[Ideographic]]
== [CODE[Radical]]
== [CODE[CJK_Stroke]]
== [[私用][私用域]]
== [CODE[U+FF1F]]
== =
=== [CODE[IDS_Unary_Operator]]
=== [CODE[IDS]]
== =
=== [CODE[IDS_BinaryOperator]]
=== [CODE[IDS]]
=== [CODE[IDS]]
== =
=== [CODE[IDS_TrinaryOperator]]
=== [CODE[IDS]]
=== [CODE[IDS]]
=== [CODE[IDS]]

]FIG]

;;
[38] 
[CITE[Unicode Standard]] の定義上は、
[[IDC]]
を使わないただの単独の[[漢字]]や[[部首]]も
「[[IDS]]」
となっています。
普通に
「IDS」
と言ったときにそれがただの[[漢字]]だったというケースはあまりない気がします。
入れ子の定義を簡潔にするためにこうしているのでしょうか。


-*-*-

[87] 
この [[IDS]] の構文定義だと、 [[IDS]] の直後に[[結合文字]]や [CODE(charname)@en[ZWJ]]
や [CODE(charname)@en[ZWNJ]] が続くとき、
[[IDS]]
の一部ではないのに [[IDS]] または [[IDS]] 
の最後の[[符号点]]と[[書記素クラスター]]を構成することになるのですかね?

-*-*-

[14] 同じ[[漢字]]を複数の異なる [[IDS]] で表現できるかもしれませんが、
[[等価性]]は規定されていません。 
自然な分割で最短の表現とすることが好ましいですが、
[[要件]]とはなっていません。
ただ可能な限り最短の表現を使うのが好ましいとは注文されています。
[SRC[>>4]]

[205] 逆に、分析目的の場合のように、出来得る限り細かく分解する場合もあるようです。


** 演算子

[85] 
[[IDC]] は[[前置演算子]]で、[[引数]]となる後続の文字の数は [[IDC]]
ごとに違います。

[149] 
[DFN[[CODE[IDS_Unary_Operator]]]]
は、
[CODE[U+2FFE]]
と
[CODE[U+2FFF]]
です。
[SRC[>>143]]

[FIG(table)[
:p: [[符号位置]]
:c: [[文字]]
:n: [[文字名称]]

:p:[DFN[[CODE[U+2FFE]]]]
:c:[DFN[[CODE[⿾]]]]
:n:[DFN[[CODE(charname)[IDEOGRAPHIC DESCRIPTION CHARACTER HORIZONTAL REFLECTION]]]]

:p:[DFN[[CODE[U+2FFF]]]]
:c:[DFN[[CODE[⿿]]]]
:n:[DFN[[CODE(charname)[IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION]]]]

]FIG]

[22] [DFN[[CODE[IDS_BinaryOperator]]]]
は、
[CODE[U+2FF0]], [CODE[U+2FF1]],
[ [CODE[U+2FF4]], [CODE[U+2FFB]] ] の10文字 [SRC[>>4]] と、
[CODE[U+2FFC]], [CODE[U+2FFD]], 
[CODE[U+31EF]]
です。
[SRC[>>143]]

[FIG(table)[
:p: [[符号位置]]
:c: [[文字]]
:n: [[文字名称]]
:1: 次の文字
:2: 次の次の文字

:p:[DFN[[CODE[U+2FF0]]]]
:c:[DFN[[CODE[⿰]]]]
:n:[DFN[[CODE(charname)@en[IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT]]]]
:1:左
:2:右

:p:[DFN[[CODE[U+2FF1]]]]
:c:[DFN[[CODE[⿱]]]]
:n:[DFN[[CODE(charname)@en[IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW]]]]
:1:上
:2:下

:p:[DFN[[CODE[U+2FF4]]]]
:c:[DFN[[CODE[⿴]]]]
:n:[DFN[[CODE(charname)@en[IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND]]]]
:1:外側
:2:内側

:p:[DFN[[CODE[U+2FF5]]]]
:c:[DFN[[CODE[⿵]]]]
:n:[DFN[[CODE(charname)@en[IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE]]]]
:1:外側
:2:内側・下

:p:[DFN[[CODE[U+2FF6]]]]
:c:[DFN[[CODE[⿶]]]]
:n:[DFN[[CODE(charname)@en[IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW]]]]
:1:外側
:2:内側・上

:p:[DFN[[CODE[U+2FF7]]]]
:c:[DFN[[CODE[⿷]]]]
:n:[DFN[[CODE(charname)@en[IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT]]]]
:1:外側
:2:内側・右

:p:[DFN[[CODE[U+2FF8]]]]
:c:[DFN[[CODE[⿸]]]]
:n:[DFN[[CODE(charname)@en[IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT]]]]
:1:左・上
:2:内側

:p:[DFN[[CODE[U+2FF9]]]]
:c:[DFN[[CODE[⿹]]]]
:n:[DFN[[CODE(charname)@en[IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT]]]]
:1:右・上
:2:内側

:p:[DFN[[CODE[U+2FFA]]]]
:c:[DFN[[CODE[⿺]]]]
:n:[DFN[[CODE(charname)@en[IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT]]]]
:1:左・下
:2:内側

:p:[DFN[[CODE[U+2FFB]]]]
:c:[DFN[[CODE[⿻]]]]
:n:[DFN[[CODE(charname)@en[IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID]]]]



:p:[DFN[[CODE[U+2FFC]]]]
:c:[DFN[[CODE[⿼]]]]
:n:[DFN[[CODE(charname)[IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM RIGHT]]]]

:p:[DFN[[CODE[U+2FFD]]]]
:c:[DFN[[CODE[⿽]]]]
:n:[DFN[[CODE(charname)[IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER RIGHT]]]]


:p: [DFN[[CODE[U+31EF]]]]
:c:[DFN[[CODE[㇯]]]]
:n: [DFN[[CODE(charname)@en[IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION]]]]


]FIG]

[27] [CODE[U+2FFB]] は重ね合わせを表します。例えば
「[CODE[⿻工从]]」は「[CODE[巫]]」を表します [SRC[>>4]]。

;; [35] [CODE[U+2FFB]] と [CODE[U+31EF]] は外部情報なく機械的に処理できません。

[23] [DFN[[CODE[IDS_TrinaryOperator]]]]
は、
[CODE[U+2FF2]] と [CODE[U+2FF3]] です。 [SRC[>>4]]

[FIG(table)[
:p: [[符号位置]]
:c: [[文字]]
:n: [[文字名称]]
:1: 次の文字
:2: 次の次の文字
:3: 次の次の次の文字

:p:[DFN[[CODE[U+2FF2]]]]
:c:[DFN[[CODE[⿲]]]]
:n:[DFN[[CODE(charname)@en[IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT]]]]
:1:左
:2:中
:3:右

:p:[DFN[[CODE[U+2FF3]]]]
:c:[DFN[[CODE[⿳]]]]
:n:[DFN[[CODE(charname)@en[IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW]]]]
:1:上
:2:中
:3:下
]FIG]


-*-*-



[29] [[IDS]] の前に 
[DFN[[CODE[U+303E]]]] 
[DFN[[CODE(charname)@en[IDEOGRAPHIC VARIATION INDICATOR]]]]
([DFN[[CODE[〾]]]], [DFN[IVI]]) を置くことで、 [[IDS]] が[[近似]]であることを示せます。
[SRC[>>4]]

[FIG(railroad)[ [136] [[IVI]] つき [[IDS]]
= [CODE[〾]]
= [CODE[IDS]]
]FIG]

[137] しかしながら、 [[IVI]] は [[IDS]] の一部ではないとされています。 [SRC[>>135]]
[[IDS]] 全体の前に [[IVI]] を置いて全体が近似であることは示せますが、
[[IDS]] の中に [[IVI]] を入れて [[IDS]] の一部が近似であることは示せません。

-*-*-

[150] 
[[Unicode]] 15.1 の[[演算子]]の追加 (>>138) があるまで、
いくつか非標準の[[演算子]]が使われていました。

[75] 
>>73 は
[CODE[↔]],
[CODE[↷]],
[CODE[⊖]]
の独自の[[演算子]]を使っています。

[154] 
[CITE[GlyphWiki]] / [CITE[CHISE]] にはいくつか独自の[[演算子]]があります。

- [157] 
-- [156] [CITE@ja[u2ff1-itaiji-001 - GlyphWiki]], [TIME[2023-11-20T03:12:47.000Z]] <https://glyphwiki.org/wiki/u2ff1-itaiji-001>
-- [171] [CITE@ja[mpsuzuki2_three-cmps-uc-ll-lr - GlyphWiki]], [TIME[2023-11-20T03:17:20.000Z]] <https://glyphwiki.org/wiki/mpsuzuki2_three-cmps-uc-ll-lr>
-- [189] 
[CITE@ja[mpsuzuki2_three-cmps-uc-ll-lr-var-001 - GlyphWiki]], [TIME[2023-11-20T03:25:18.000Z]] <https://glyphwiki.org/wiki/mpsuzuki2_three-cmps-uc-ll-lr-var-001>
-- [155] [CITE@ja[EsT character = rep.ucs-itaiji-001=0x2ff1]], [TIME[2023-11-20T03:11:43.000Z]] <https://www.chise.org/est/view/character/rep.ucs-itaiji-001=0x2ff1>
- [158] 
-- [160] [CITE@ja[u2ff1-itaiji-002 - GlyphWiki]], [TIME[2023-11-20T03:13:32.000Z]] <https://glyphwiki.org/wiki/u2ff1-itaiji-002>
-- [170] [CITE@ja[mpsuzuki2_three-cmps-lc-ul-ur - GlyphWiki]], [TIME[2023-11-20T03:17:03.000Z]] <https://glyphwiki.org/wiki/mpsuzuki2_three-cmps-lc-ul-ur>
-- [188] 
[CITE@ja[mpsuzuki2_three-cmps-lc-ul-ur-var-001 - GlyphWiki]], [TIME[2023-11-20T03:24:42.000Z]] <https://glyphwiki.org/wiki/mpsuzuki2_three-cmps-lc-ul-ur-var-001>
-- [159] [CITE@ja[EsT character = rep.ucs-itaiji-002=0x2ff1]], [TIME[2023-11-20T03:13:20.000Z]] <https://www.chise.org/est/view/character/rep.ucs-itaiji-002=0x2ff1>
- [161] [CODE[U+2FFD]]
-- [163] [CITE@ja[u2ff6-itaiji-001 - GlyphWiki]], [TIME[2023-11-20T03:14:24.000Z]] <https://glyphwiki.org/wiki/u2ff6-itaiji-001>
-- [162] [CITE@ja[EsT character = rep.ucs-itaiji-001=0x2ff6]], [TIME[2023-11-20T03:14:12.000Z]] <https://www.chise.org/est/view/character/rep.ucs-itaiji-001=0x2ff6>
- [164] [CODE[U+2FFC]]
-- [165] [CITE@ja[u2ff9-itaiji-001 - GlyphWiki]], [TIME[2023-11-20T03:14:50.000Z]] <https://glyphwiki.org/wiki/u2ff9-itaiji-001>
-- [166] [CITE@ja[EsT character = rep.ucs-itaiji-001=0x2ff9]], [TIME[2023-11-20T03:15:03.000Z]] <https://www.chise.org/est/view/character/rep.ucs-itaiji-001=0x2ff9>
- [167] 
-- [168] [CITE@ja[u2ffb-itaiji-001 - GlyphWiki]], [TIME[2023-11-20T03:15:21.000Z]] <https://glyphwiki.org/wiki/u2ffb-itaiji-001>
-- [172] 
[CITE@ja[mpsuzuki2_three-cmps-c-ml-mr - GlyphWiki]], [TIME[2023-11-20T03:17:41.000Z]] <https://glyphwiki.org/wiki/mpsuzuki2_three-cmps-c-ml-mr>
-- [187] 
[CITE@ja[mpsuzuki2_three-cmps-c-ml-mr-var-001 - GlyphWiki]], [TIME[2023-11-20T03:23:57.000Z]] <https://glyphwiki.org/wiki/mpsuzuki2_three-cmps-c-ml-mr-var-001>
-- [169] 
[CITE@ja[EsT character = rep.ucs-itaiji-001=0x2ffb]], [TIME[2023-11-20T03:15:31.000Z]] <https://www.chise.org/est/view/character/rep.ucs-itaiji-001=0x2ffb>
- [173] 
-- [174] [CITE@ja[u2ff0-var-001 - GlyphWiki]], [TIME[2023-11-20T03:19:43.000Z]] <https://glyphwiki.org/wiki/u2ff0-var-001>
-- [175] [CITE@ja[EsT character = rep.ucs-var-001=0x2FF0]], [TIME[2023-11-20T03:19:53.000Z]] <https://www.chise.org/est/view/character/rep.ucs-var-001=0x2FF0>
- [176] 
-- [177] [CITE@ja[u2ff1-var-001 - GlyphWiki]], [TIME[2023-11-20T03:20:12.000Z]] <https://glyphwiki.org/wiki/u2ff1-var-001>
-- [178] [CITE@ja[EsT character = rep.ucs-var-001=0x2FF1]], [TIME[2023-11-20T03:20:22.000Z]] <https://www.chise.org/est/view/character/rep.ucs-var-001=0x2FF1>
- [179] 
-- [180] [CITE@ja[u2ff1-var-002 - GlyphWiki]], [TIME[2023-11-20T03:20:57.000Z]] <https://glyphwiki.org/wiki/u2ff1-var-002>
-- [181] [CITE@ja[EsT character = rep.ucs-var-002=0x2FF1]], [TIME[2023-11-20T03:21:10.000Z]] <https://www.chise.org/est/view/character/rep.ucs-var-002=0x2FF1>
- [182] 
-- [183] [CITE@ja[u2ff1-var-003 - GlyphWiki]], [TIME[2023-11-20T03:21:21.000Z]] <https://glyphwiki.org/wiki/u2ff1-var-003>
-- [184] [CITE@ja[EsT character = rep.ucs-var-003=0x2FF1]], [TIME[2023-11-20T03:21:30.000Z]] <https://www.chise.org/est/view/character/rep.ucs-var-003=0x2FF1>
- [185] 
-- [186] 
[CITE@ja[mpsuzuki2_one-cmp-encloses-two-cmps - GlyphWiki]], [TIME[2023-11-20T03:23:01.000Z]] <https://glyphwiki.org/wiki/mpsuzuki2_one-cmp-encloses-two-cmps>
- [190] 
-- [191] [CITE@ja[mpsuzuki2_two-cmps-cover-one-cmp - GlyphWiki]], [TIME[2023-11-20T03:25:39.000Z]] <https://glyphwiki.org/wiki/mpsuzuki2_two-cmps-cover-one-cmp>
- [192] 
-- [193] 
[CITE@ja[mpsuzuki2_two-cmps-enclose-one-cmp - GlyphWiki]], [TIME[2023-11-20T03:25:55.000Z]] <https://glyphwiki.org/wiki/mpsuzuki2_two-cmps-enclose-one-cmp>
- [194] 
-- [195] [CITE@ja[mpsuzuki2_two-cmps-support-one-cmp - GlyphWiki]], [TIME[2023-11-20T03:26:09.000Z]] <https://glyphwiki.org/wiki/mpsuzuki2_two-cmps-support-one-cmp>


[198] [[代用表記 (新・新しい日本語を作る会)]] にもいくつか拡張があります。


[201] 
[CITE@ja[Xユーザーの膦酯熊貓(Pambdaphos)さん: 「“包”を記述する為のUCS外のIDS https://t.co/Yt9H7kOc2z」 / X]], [TIME[午前6:32 · 2025年1月22日][2025-01-21T21:32:49.000Z]], [TIME[2025-01-24T02:30:27.000Z]] <https://x.com/Pambdaphos/status/1881817249327313291>




[FIG(short list data)[ [151] [[文字]]
:[F[文字]]:[CH[⿾]]
:[F[代替表現]]:[CH[↔]]
]FIG]

[FIG(short list data)[ [152] [[文字]]
:[F[文字]]:[CH[⿿]]
:[F[代替表現]]:[CH[↷]]
]FIG]

[FIG(short list data)[ [153] [[文字]]
:[F[文字]]:[CH[㇯]]
:[F[代替表現]]:[CH[⊖]]
]FIG]



** 被演算子

[30] [[IDS]] の [[IDC]] 以外の[[文字]] ([[operand]]) の一覧は次の通りです。

[REFS[
- [31] [CITE@en[Character set "[[IDS]] (operand character)"]] ([TIME[2019-06-15 10:53:53 +09:00]]) <https://chars.suikawiki.org/set/%24unicode%3AIDS-operand-char>
]REFS]

[18] [[IDS]] は[[漢字]]だけでなく、同様の構造を持つ周辺の[[文字]]にも適用できます。
[SRC[>>4]]

[25] 異なる[[用字系]]の混在は正式な構文上禁止されていませんが、
好ましくありません。
[SRC[>>4]]

[28] [CODE[U+FF1F]] [CODE(charname)@en[FULLWIDTH QUESTION MARK]]
もなぜか認められています。不明を表すのでしょうか。説明はありません。
なぜ敢えて[[全角形]]のみ認めているのか不明です。

[76] >>73 はこれを「記述不能」に使っています。
他の [[IDS]] データベースも明記せずこれを使っていることがあります。
[[UAX #45]] は[[半角]]の [CODE[?]] を使っています。
他に [CODE[〓]] を使った例や、
[[文字化け]]かもしれませんが [CODE[U+FFFD]] を使った例も見られます。

[32] [[漢字]]でありながら [[CJK統合漢字]]外のものとして、例えば「〇」
は認められていますが、「々」はなぜか認められていません。

[33] [[IVS]] を使う需要はありそうですが、なぜか認められていません。

[34] [[仮名]]、[[ハングル]]、[[ラテン文字]]を部品とする[[漢字]]の例が知られますが、
認められていないため [[IDS]] で表現できません。

[48] 
なぜか[[私用文字]]が認められています。
[[相互運用性]]に貢献しなそうで謎です。

[52] 
実際に流通している [[IDS]] や [[IDS]] データベースでは、
必要に応じて[[表意文字]]以外や [[IVS]] が使われることも珍しくありません。
[[CJK互換漢字]],
[[部首]],
[[CJK筆画]],
[[仮名]]が使われることもあります。

[53] 
[[CHISE]] の [[IDS]] データベース [SRC[>>3]] では 
[[CHISE文字参照]]が使われています。
現行[[漢字]]の他に、[[甲骨文字]]や[[篆書]]にも利用されているようです。

[56] 
[[漢字データベースプロジェクト]]の [[IDS]] データベースには
[[CDP外字]]が使われています。
[[CDP外字]]なしの版もあり、
記述できない部品はかわりに[[画数]]を①②のように[[丸付き数字]]で記述しています。
部品として
[CODE[α]],
[CODE[ℓ]],
[CODE[△]]
も使われています。

[113] 
[[GlyphWiki]]
は
「当面の間」
[[CDP外字]]と[[CJK互換漢字]]を認めています。
[SRC[>>112]]



[74] 
[[BabelStone]] の [[IDS]] (>>100) は
[[Unicode]]
にない文字部品を {1}, {2} のように記述しています。
ファイル内の他に >>108 にも例示があります。

[90] 
[[IRG]] は[[SGML]]の[[文字参照]]風の構文で [[Unicode]] にない文字部品を表しています。
[SRC[>>89]]

[91] 
[[UAX #45]] は [[IRG]] 方式を踏襲していますが、
[[区切子]]として 
[CODE[&]], [CODE[;]] のかわりに 
[CODE[__&&[&&__]], [CODE[__&&]&&__]] を使います。
[SRC[>>89]]

[98] 
[DFN[IRGN2225]] [SRC[>>97, >>99]]: [[IRG]] が使う [[Unicode]] にない漢字部品。
[[符号]]、
[[字形]]、
[[文字の名前]]、
[[CDP]] との対応などが示されている。

[105] 
[[HKSCS]] の [[IDS]] では [[Unicode]] にない漢字部品が3,4桁の英数字列 (区切子なし)
で表されています。
>>104 の2つめのファイルに一覧があります。

[107] 
>>106 は 
[[IRG]],
[[HKSCS]],
[[CDP]],
[[BabelStone]]
に加えて [[GF1997]], [[GF2009]], [[UCV]] から漢字部品を選んで連番を振っています。

[129] 
>>50, >>119 は独特の構文を導入しています。

- [124] [CODE[#([VAR[...]])]] : [[Unicode]] で表せない文字部品と思われます。
- [125] [CODE[⿻__&&[&&__[VAR[...]]__&&]&&__]] : 重ね方と思われます。
- [126] 
[CODE[⿴__&&[&&__[VAR[n]]__&&]&&__]],
[CODE[⿶__&&[&&__[VAR[n]]__&&]&&__]],
[CODE[⿷__&&[&&__[VAR[n]]__&&]&&__]],
[CODE[⿹__&&[&&__[VAR[n]]__&&]&&__]] : 不明。
- [127] >>119: ドキュメントには [CODE[__&&[&&__[VAR[s]]__&&]&&__]] で地域字形を表すと書かれていますが、現在のデータには出現しません。
- [122] >>50: [CODE[↔[VAR[s]]]],
[CODE[↷[VAR[s]]]]
- [130] >>50 lv0 : [[漢字]]の後に記号を加えて細かな字形差を表しています。


[128] >>79 は [[Unicode]] で表せない構成要素を [CODE[{[VAR[...]]}]]
と表しています。

[203] 
[[IWDS]]
では[[包摂規準]]の記述のため、具体的な何かではなく任意の構成要素を表すために
[CH[⬚]]
を使っています。 [SRC[>>204]]




[REFS[
- [89] 
[CITE@en-us[[[UAX #45]]: U-source Ideographs]], [TIME[2022-08-30T19:15:44.000Z]], [TIME[2023-07-23T03:37:25.015Z]] <http://www.unicode.org/reports/tr45/#Section25>
- [97] [CITE[Wayback Machine]], [TIME[2023-07-23T03:52:37.000Z]] <https://web.archive.org/web/20220119162327/https://appsrv.cse.cuhk.edu.hk/~irg/irg/irg48/IRGN2225.pdf>
- [99] [CITE[Wayback Machine]], [TIME[2023-07-23T03:54:07.000Z]] <https://web.archive.org/web/20220928053243/https://appsrv.cse.cuhk.edu.hk/~irg/irg/irg49/IRGN2225-AndrewWest-feedback.pdf>
- [106] 
[CITE[21134-ids-components.pdf]], [TIME[2021-07-21T12:33:56.000Z]], [TIME[2023-07-23T04:33:27.055Z]] <https://www.unicode.org/L2/L2021/21134-ids-components.pdf>
- [108] 
[CITE[L2/21-118 (Preliminary proposal to add a new provisional kIDS property (Unihan) ) - 21118-kids-preliminary.pdf]], [TIME[2021-06-30T13:11:37.000Z]], [TIME[2023-07-23T04:37:49.797Z]] <https://www.unicode.org/L2/L2021/21118-kids-preliminary.pdf#page=2>
- [112] 
[CITE@ja[GlyphWiki:グリフを登録する - [[GlyphWiki]]]], [TIME[2023-07-27T07:18:31.000Z]] <https://glyphwiki.org/wiki/GlyphWiki:%e3%82%b0%e3%83%aa%e3%83%95%e3%82%92%e7%99%bb%e9%8c%b2%e3%81%99%e3%82%8b>
- [204] 
[CITE[IWDS (New)]], [TIME[2025-03-25T09:27:25.000Z]] <https://hc.jsecs.org/irg/iwds/ucv.php>



]REFS]

** 長さ制限

[24] 以前の版では [[IDS]] の部分の長さに制限がありましたが、
撤廃されました。 [SRC[>>4]]

[54] 
実装では[[実際的な制限][プラットフォームの制限]]を設けていることがあります。
[[セキュリティー][文字のセキュリティー]]のためにも何らかの上限は必要です。

* 処理

[41] 
[[IDC]] は、 [[IDS]] として以外の用法は定められていません。
しかし任意の入力を受信する実装
([[文字列]]を処理するほとんどの実装)
は、
[[IDS]]
の構文に合致しない
[[IDC]]
を与えられた時にも適切に処理できる必要があります。

[EG[
[42] 例えば、 [[IDC]] が単独で出現したときに[[クラッシュ]]するような実装は、
不適切です。
]EG]

;;
[46] 
実際、
[[IDS]] 
を意識しないで [[IDC]]
を使う場合
(例えば [[Unicode文字]]の一覧表や、
「⿱の構造」
のような書き方をする場合)
や、
厳密に
[[IDS]]
の構文では記述できないものを敢えて記述する場合 (>>30)
のような事例が見られます。



* レンダリング

[7] [[IDC]] は[[制御文字]]でも[[結合文字]]でもありません。 [SRC[>>4]]

[12] [[IDC]] は[[制御文字]]ではないので、 [[IDC]] の有無で[[レンダリング][文字のレンダリング]]は違わなければなりません。
[SRC[>>4]]

[8] [[文字境界]]や[[語境界]]に影響しなければならないという要件はありません [SRC[>>4]]
(が影響させることは禁止もされていません)。

[9] 個別の[[文字]]の並びとして[[レンダリング][文字のレンダリング]]しても構いませんし、
[[IDS]] を解釈した結果を[[レンダリング][文字のレンダリング]]しても構いません。 [SRC[>>4]]

[10] 後者の場合、 [[hit test]]、[[カーソル移動]]その他[[利用者インターフェイス]]関係では[[合字]]として扱うべきです。
[SRC[>>4]]

[43] 
[[IDC]]
のうち
「[CODE[⿻]]」
だけは、
機械的に合成してレンダリングすることが困難です。


[44] 
それ以外は機械的に合成可能ですが、
構成要素の幅を適切に決めて美しく[[レンダリング]]するのは中々に難しそうです。

[EG[
[45] 
同じ[[木偏]]でも「林」と「機」では幅がかなり違います。
]EG]


[11] 不適切な [[IDS]] の扱いは明記されていませんが、後者の実装方法の場合でも前者の方法とするべきでしょう。

;; [88] 実装が異常動作してはいけません。
[SEE[ [[文字のセキュリティー]] ]]

-*-*-

[83] [CITE[IPSJ-MGN601107.pdf]], [TIME[2023-07-13T07:58:08.000Z]], [TIME[2023-07-13T07:59:36.592Z]] <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>

[[IDS]] を [CODE[ccmp]] で実装した [CITE[Source Han]] の事例。

[86] [[OpenType]] による実装については、[[連なり]]も参照されたし。

[196] 
[CITE[zi.tools]] では [[KAGE]] で[[レンダリング]]しています。

* 相互作用

[36] 
[[漢字]]は[[基底文字]]になり得るので、次に[[結合文字]]が来ることが認められています。
では [[IDS]] の後に[[結合文字]]が来たときどうなるのでしょうか。
[[IDS]] を1つにまとめて[[レンダリング][文字のレンダリング]]するなら、
それ全体が基底扱いになるのでしょうか。
[[IDS]] の一部分ではないので、[[IDS]] を構成する最後の[[漢字]]に結合するのはおかしい気がします。

[47] 
[[IDS]] 内部に
[CODE(charname)@en[ZWJ]],
[CODE(charname)@en[ZWNJ]]
を挿入することは構文的にできません。
前後に挿入することはできますが、
効果の程は不透明です。
[SEE[ [[続け字]] ]]


* 非標準の用法

[59] 
[[Webページ]]や [[SNS]] で [[IDS]] の形を取らずに構造を説明するために使われることがたまにあるようです。
(例えば偏と旁で横並びであることを「⿰」で表すような。)


[58] [TIME[2022-11-09T13:37:37.000Z]] <http://www.nomfoundation.org/nom-tools/Tu-Dien-Chu-Nom-Dan_Giai/Arrangement-of-Entries?uiLang=en>

ここでは[[中置記法]]で使われています。

[199] 
[[代用表記 (新・新しい日本語を作る会)]] は [[IDS]] を拡張した独自の構文を定めています。

[200] 
[CITE@ja[XユーザーのCLOUT COLLECTION ™️さん: 「『 ⿻ 』ᴄʟᴏᴜᴛ ᴄᴏʟʟᴇᴄᴛɪᴏɴ ™️ Dip-Dye Distressed Cable Knit Sweater https://t.co/KpuhHJYI3R https://t.co/oV2l9lmLMv」 / X]], [TIME[午後7:37 · 2024年10月18日][2024-10-18T10:37:00.000Z]], [TIME[2024-12-20T13:52:17.000Z]] <https://x.com/cloutcollection/status/1847225360175476814>


[202] [CITE@ja[Source Han Serif Version 2.003 Read Me - SourceHanSerifReadMe.pdf]], [TIME[2025-03-03T14:07:52.000Z]] <https://raw.githubusercontent.com/adobe-fonts/source-han-serif/release/SourceHanSerifReadMe.pdf#page=28>


>
[LEFT[
- Fixed TW/HK mapping for ⿱攵-composed glyphs. See Issue #115.
]LEFT]

[197] 
[CITE@ja[Xユーザーの白砂沙帆さん: 「⿻質問募集中⿻ 愛原ありさ・白砂沙帆への質問をハッシュタグ 【 #ありさほ質問 】で募集します…!個人でも2人でも…!ぜひ何個でも沢山ポストしてくださると助かります! こちらは明日のトークイベントのコーナーで使わせていただきます✨️明日の夜暇だなって方もぜひふらっといかがですか🤭🌙*.」 / X]], [TIME[午後8:08 · 2024年9月22日][2024-09-22T11:08:56.000Z]], [TIME[2024-09-22T11:12:51.000Z]] <https://x.com/sahoshirasu/status/1837811313948742136>

[206] 
[CITE@ja[Hal Seki ⿻(@hal_sk)さん / X]], [TIME[10月10日][2025-10-10T05:13:02.000Z]], [TIME[2025-11-27T09:35:19.000Z]] <https://x.com/hal_sk>

[207] 
[CITE@ja[のりぃ⿻(@noly_sugii)さん / X]], [TIME[2025年6月5日][2025-06-04T20:35:43.000Z]], [TIME[2026-02-04T04:52:47.000Z]] <https://x.com/noly_sugii>


* 運用方針


[95] 
[[IRG]]:

- [94] [CITE[Wayback Machine]], [TIME[2023-07-23T03:50:08.000Z]] <https://web.archive.org/web/20150104014721/http://appsrv.cse.cuhk.edu.hk/~irg/irg/irg25/IRGN1183RevisedIDSPrinciples.pdf>
- [96] [CITE[Wayback Machine]], [TIME[2023-07-23T03:50:48.000Z]] <https://web.archive.org/web/20150104014754/http://appsrv.cse.cuhk.edu.hk/~irg/irg/irg25/IRGN1183A_ids_irg.zip>
- [101] [CITE[Microsoft Word - IRGN2515PnP15 - n5178-IRGN2515PnP15Confirmed.pdf]], [TIME[2022-03-23T03:41:24.000Z]], [TIME[2023-07-23T03:58:18.066Z]] <https://www.unicode.org/wg2/docs/n5178-IRGN2515PnP15Confirmed.pdf#page=24>


[92] 
[[HKSCS]]:

- [93] [CITE[中 文 界 面 諮 詢 委 員 會 工 作 小 組文 件 編 號 2 0 1 8 / 0 2 - wgcliac2018-02.pdf]], [TIME[2020-02-18T03:51:28.000Z]], [TIME[2023-07-23T03:45:55.283Z]] <https://www.ccli.gov.hk/doc/wgcliac2018-02.pdf>
- [103] 
[CITE[Wayback Machine]], [TIME[2023-07-23T04:20:21.000Z]] <https://web.archive.org/web/20210812121736/https://appsrv.cse.cuhk.edu.hk/~irg/irg/irg53/IRGN2438.pdf>
-[104] [CITE[Wayback Machine]], [TIME[2023-07-23T04:25:57.000Z]] <https://web.archive.org/web/20220910032915/https://appsrv.cse.cuhk.edu.hk/~irg/irg/irg53/IRGN2438Data.zip>
- [102] [CITE[Wayback Machine]], [TIME[2023-07-23T04:18:48.000Z]] <https://web.archive.org/web/20220106142251/https://appsrv.cse.cuhk.edu.hk/~irg/irg/irg57/IRGN2438Feedback.pdf>

[133] [[CHISE]]:

- [134] [CITE[2morioka.pdf]], [TIME[2021-07-07T03:30:55.000Z]], [TIME[2023-08-20T02:06:12.957Z]] <http://kanji.zinbun.kyoto-u.ac.jp/seminars/oricom/PDFs/2021-7PDFs/2morioka.pdf>


* 漢字のIDSデータ

[109] [[Unicode]]:

- [110] [[UAX #45]]
-- [111] [[出典U]]の符号化済漢字、未符号化漢字、却下された漢字

[65] [[CHISE]]:

- [70] [CITE@en[[[CHISE]] / CHISE IDS database · GitLab]], [TIME[2023-07-06T13:52:22.000Z]] <https://gitlab.chise.org/CHISE/ids>
-- 公式
- [69] [CITE@en[[[GitHub]] - chise/ids: Mirror of https://gitlab.chise.org/CHISE/ids]], [TIME[2023-07-06T13:51:50.000Z]] <https://github.com/chise/ids>
-- 公式ミラー
- [66] [CITE@en[GitHub - osfans/chise-ids]], [TIME[2023-07-06T13:50:12.000Z]] <https://github.com/osfans/chise-ids>
-- [68] ミラー
- [84] [SEE[ [[甲骨文字]] ]]
- [67] [[UCS]],
[CITE[[[大漢和辞典]]]],
[[CNS 11643]],
[[CBETA]]
等


[64] [[漢字データベースプロジェクト]]:

- [118] [CITE@ja[字形IDSデータ]], [TIME[2014-07-31T01:34:56.000Z]], [TIME[2023-08-06T13:18:35.716Z]] <https://kanji-database.sourceforge.net/ids/ids.html>
- [63] [CITE@en[[[GitHub]] - cjkvi/cjkvi-ids: IDS data for CJK Unified Ideographs]], [TIME[2022-11-12T05:49:27.000Z]] <https://github.com/cjkvi/cjkvi-ids>
-- [[Unicode]], [[汎用電子]], [[CDP]] 等
- [72] [CITE@en[GitHub - kawabata/ids: Ideographic Description Sequence Checker Tools]], [TIME[2023-07-06T14:04:32.000Z]] <https://github.com/kawabata/ids>
-- 履歴に旧版がある
- [81] [CITE@ja[GlyphWiki:IDS誤り報告 - GlyphWiki]], [TIME[2023-07-06T14:37:47.000Z]] <https://glyphwiki.org/wiki/GlyphWiki:IDS%E8%AA%A4%E3%82%8A%E5%A0%B1%E5%91%8A>
- [114] [CITE@en[cjkvi-data/nom_qn.txt at master · cjkvi/cjkvi-data · GitHub]], [TIME[2023-07-30T15:01:13.000Z]] <https://github.com/cjkvi/cjkvi-data/blob/master/nom_qn.txt>
-- [115] [[Unicode]] にない[[越南]]の[[漢字]]
- [116] [CITE@en[cjkvi-data/gb2ucs.txt at master · cjkvi/cjkvi-data · GitHub]], [TIME[2023-07-30T15:02:05.000Z]] <https://github.com/cjkvi/cjkvi-data/blob/master/gb2ucs.txt>
-- [117] [[Unicode]] にない [[G2]], [[G4]], [[GK]] の[[漢字]]
- [131] [CITE@ja[和製漢字の辞典・IDSデータ]], [TIME[2014-07-31T01:37:06.000Z]], [TIME[2023-08-12T11:15:31.068Z]] <https://kanji-database.sourceforge.net/ids/waseikanji.html>
- [132] [CITE@ja[解字IDSデータ]], [TIME[2014-07-31T01:36:35.000Z]], [TIME[2023-08-13T00:39:42.883Z]] <https://kanji-database.sourceforge.net/ids/ids-analysis.html>


[78] 
[[GlyphWiki]]:

- [80] [[GlyphWiki]] は既存[[文字コード]]にない[[漢字]]で [[IDS]]
で表せるものは[[グリフ名]]を [[IDS]] (の[[符号位置]]を[[ASCII文字列]]にしたもの)
にしています。
--
[82] 
[CITE@ja[グループ:IDS - GlyphWiki]], [TIME[2023-07-07T11:20:52.000Z]] <https://glyphwiki.org/wiki/Group:IDS>

[100] 
[[BabelStone]]:

- [73] [CITE[Ideographic Description Sequences (IDS) for CJK Unified Ideographs]], [TIME[2023-03-07T21:43:09.000Z]], [TIME[2023-07-06T14:08:16.183Z]] <https://www.babelstone.co.uk/CJK/IDS.TXT>
-- [[Unicode]]
- [77] [CITE[Ideographic Description Sequences (IDS) for BabelStone Han PUA]], [TIME[2023-03-23T18:07:27.000Z]], [TIME[2023-07-06T14:12:51.640Z]] <https://babelstone.co.uk/CJK/IDS_PUA.TXT>
-- [CITE[[[BabelStone Han PUA]]]]


[71] その他:

- [50] [CITE@en[[[GitHub]] - yi-bai/ids: Yet another IDS (Ideographic Description Sequences) lists with MIT license]], [TIME[2022-10-21T05:55:10.000Z]] <https://github.com/yi-bai/ids>
-- [[Unicode]]
- [119] [CITE@en[GitHub - Transfusion/cjkvi-ids-unicode: Unicode-only CJKV IDS data]], [TIME[2023-08-12T03:31:19.000Z]] <https://github.com/Transfusion/cjkvi-ids-unicode>
-- [[Unicode]]
-- [123] [CITE@en[cjkvi-ids-unicode/rawdata/manual_ids at master · Transfusion/cjkvi-ids-unicode · GitHub]], [TIME[2023-08-12T04:26:41.000Z]] <https://github.com/Transfusion/cjkvi-ids-unicode/tree/master/rawdata/manual_ids>
-- [120] [CITE@en[GitHub - Radically/radically: A component-based CJK character search engine]], [TIME[2023-08-12T03:32:30.000Z]] <https://github.com/Radically/radically>
--- [121] 検索用プログラム。
- [79] [CITE@en[[[GitHub]] - hfhchan/ids: Ideographic Description Sequences]], [TIME[2023-07-06T14:31:13.000Z]] <https://github.com/hfhchan/ids>
-- [CITE[GlyphWiki]] [CODE[hkcs]] データ + 手動
-- [[Unicode]]

* 関連

[61] [[CHISE]] では [[IDS]] に対応する [[S式]]や [[RDF]] の表現があります。
[SEE[ [[CHISE]] ]]

* 歴史

[51] [[漢字構造記述]]は古来いろいろな方法が試されてきました。

-*-*-

[5] [[GBK]] で規定されました。 [SRC[>>4]]

[6] [[GBK]] を出典に [[Unicode]] に追加されました。 [SRC[>>4]]


[REFS[
- [1] [CITE@en[Ideographic Description Characters (Unicode block) - Wikipedia]] ([TIME[2019-06-14 07:58:52 +09:00]]) <https://en.wikipedia.org/wiki/Ideographic_Description_Characters_(Unicode_block)>
]REFS]

-[3] [CITE@ja[CHaracter Information Service Environment]] ([TIME[2012-09-04 10:37:02 +09:00]]) <http://www.chise.org/ids/>
-[62] [CITE@ja[CHISE IDS Find]], [TIME[2022-11-12T05:48:18.000Z]] <https://www.chise.org/ids-find>


[37] [CITE@en-US[IDS + OpenType: Pseudo-encoding Unencoded Glyphs]]
([TIME[2020-10-21T02:06:27.000Z]])
<https://blogs.adobe.com/CCJKType/2014/03/ids-opentype.html>


[60] [CITE[jj11.pdf]], [TIME[2022-11-10T13:46:57.000Z]] <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] 
[TIME[令和5(2023)年][2023]]の [[Unicode]] 15.1 で新しい [[IDC]] が追加されました
[SRC[>>139, >>140]]。

[REFS[

- [141] 
[CITE@en-us[Unicode 15.1.0]], [TIME[2023-09-13T18:55:01.000Z]], [TIME[2023-11-17T12:46:22.779Z]] <https://www.unicode.org/versions/Unicode15.1.0/#Migration>
- [139] [CITE[The Unicode Standard, Version 15.1 - U151-31C0.pdf]], [TIME[2023-08-25T14:28:36.000Z]], [TIME[2023-11-17T12:32:53.002Z]] <https://www.unicode.org/charts/PDF/Unicode-15.1/U151-31C0.pdf#page=3>
- [140] [CITE[The Unicode Standard, Version 15.1 - U151-2FF0.pdf]], [TIME[2023-08-25T14:28:36.000Z]], [TIME[2023-11-17T12:33:28.143Z]] <https://www.unicode.org/charts/PDF/Unicode-15.1/U151-2FF0.pdf#page=2>
- [142] [CITE@en-us[UAX #44: Unicode Character Database]], [TIME[2023-09-06T22:40:22.000Z]], [TIME[2023-11-17T12:47:16.545Z]] <https://www.unicode.org/reports/tr44/tr44-32.html#Modifications>
- [143] [TIME[2023-08-28T16:08:56.000Z]], [TIME[2023-11-17T12:47:35.260Z]] <https://www.unicode.org/Public/15.1.0/ucd/PropList.txt#:~:text=IDS_>


]REFS]

[144] 
従来の [[IDC]] のブロックの空きを埋める形で
[ [CODE[U+2FFC]], [CODE[U+2FFF]] ]
の4文字が [SRC[>>140]]、
[[CJK Strokes]]
ブロックの末尾に
[CODE[U+31EF]]
の1文字が [SRC[>>139]] 追加されました。


[145] 
[CITE[[[The Unicode Standard]]]]
は大版が繰り上がるときに規格本体が改正され、
小版のみの改正では [[UCD]] や[[符号表]]などのみが改正されることになっています。
従って [[Unicode]] 15.1 は [[Unicode]] 15.0 の規格本体等と
[[Unicode]] 15.1 の改正差分の [[UCD]], [[符号表]] 等で構成されています。

[146] 
ところで [[IDS]] の構文と意味は規格本体で規定されています [SRC[>>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.

... とあり [SRC[>>142]]、確かに [[UCD]] には追加後の定義が含まれます [SRC[>>143]] が、
その 「extend the syntax」 に相当する規定が見当たりません。


-*-*-

[49] ([TIME[2021-06-30T13:11:37.000Z]], [TIME[2021-07-06T05:40:44.833Z]])
<https://www.unicode.org/L2/L2021/21118-kids-preliminary.pdf>



[55] [CITE[L2/22-247 (CJK & Unihan Group Recommendations for UTC #173 Meeting) - 22247-cjk-unihan-group-utc173.pdf]], [TIME[2022-10-28T14:51:30.000Z]], [TIME[2022-10-31T13:10:23.394Z]] <https://www.unicode.org/L2/L2022/22247-cjk-unihan-group-utc173.pdf#page=45>



