[51] 
[[ISO/IEC 2022]] において[[文字集合]]を利用可能な状態に指定することを[DFN[[RUBYB[[RUBY[指][し]][RUBY[示][じ]]][designate]]]]といいます。


* 仕様書

[REFS[
- [36] [[ISO/IEC 2022]]
]REFS]

* 符号化文字集合の指示

[2]
>
:指示する (to designate):
[[文字集合]]を、即座に又は更に他の[[制御機能]]が[[出現]]してから、
所定の方法で[[表現]]できるように[[指定]]する。
[SRC[[[JIS X 0202]]:1998 4.11]]

[5]
> '''備考''' [[図形文字集合]]を [[G0]], [[G1]], [[G2]] 及び [[G3]]
の各[[要素]]として識別すること、及び[[制御機能集合]]を [[C0]] 及び [[C1]]
の各[[要素]]として識別することを、この規格では[Q[指示]]という。
[[集合]]の指示は、指示機能 (7.4 参照) 又は他の方法 (10.2 参照)
で行ってよい。 [SRC[[[JIS X 0202]]:1998 表1]]

[52] 
指示する (to designate) [[文字集合]]を、即座にまたは更に他の
[[制御機能]]が出現してから、所定の方法で表現出来るように
指定すること。 [SRC[[[JIS X 0211]]-1994 4.2.31]]

-*-*-

[53] 
[[指示]]と[[呼び出し]]は混同されがちですが、
異なる2つの概念です。

[4] [[指示]]によって暗黙のうちに[[呼出]]しが起こる場合もあります。

- [[制御文字集合]]の [[C0]] または [[C1]] の[[符号要素]]への[[指示]]
[SRC[[[JIS X 0202]]:1998 7.3]]
- [[図形文字集合]]の [[G0]], [[G1]], [[G2]] または [[G3]]
への[[指示]]で、その[[符号要素]]が[[シフト状態]]になっている場合
[SRC[[[JIS X 0202]]:1998 7.3]]

* 指示用エスケープシーケンス


[6] [[文字集合]]を[[指示]]する[[エスケープ・シーケンス]]を、
[DFN[[RUBYB[[RUBY[指][し]][RUBY[示][じ]]シーケンス]@en[designate sequence]]]]といいます。

-*-*-

[54] 
[CODE[CZD]], 
[CODE[C1D]]
は、[[制御文字]]集合をそれぞれ [[C0]], [[C1]] に[[指示]]すると同時に、
[[CL]], [[CR]] or ESC Fe に[[呼び出し]]ます。

- [12] [VAR[CZD]] := [CODE(charname)@en[ESC]] %x21 [VAR[F]] ;; C0-DESIGNATE [[ISO/IEC2022]] 1994 14.2.2
- [13] [VAR[C1D]] := [CODE(charname)@en[ESC]] %x22 [VAR[F]] ;; C1-DESIGNATE [[ISO/IEC2022]] 1994 14.2.3

-*-*-

[55] 
GnDm, GnDMm は、[[図形文字]]集合をそれぞれ [[G0]] 〜 [[G3]]
に指示します。[[シフト状態]]によってはこれが同時に [[GL]] や [[GR]]
への呼び出しとなることもあります。 SELECT-DRCS 指示子を併用可能です。

=GZD4 = ESC %x28 [ ( I-R / DRCS ) ] F  ;; G0-DESIGNATE 94-SET
=G1D4 = ESC %x29 [ ( I-R / DRCS ) ] F  ;; G1-DESIGNATE 94-SET
=G2D4 = ESC %x2A [ ( I-R / DRCS ) ] F  ;; G2-DESIGNATE 94-SET
=G3D4 = ESC %x2B [ ( I-R / DRCS ) ] F  ;; G3-DESIGNATE 94-SET
=G1D6 = ESC %x2D [ ( I-R / DRCS ) ] F  ;; G1-DESIGNATE 96-SET
=G2D6 = ESC %x2E [ ( I-R / DRCS ) ] F  ;; G2-DESIGNATE 96-SET
=G3D6 = ESC %x2F [ ( I-R / DRCS ) ] F  ;; G3-DESIGNATE 96-SET
=GZDM4 = ESC %x24 %x28 [ ( I-R / DRCS ) ] F / old-GZDM4 ;; G0-DESIGNATE MULTIBYTE 94-SET
=old-GZDM4 = ESC %x24 %x40-42  ;; See [[ISO/IEC2022]] 1994 NOTE 46
=G1DM4 = ESC %x24 %x29 [ ( I-R / DRCS ) ] F  ;; G1-DESIGNATE MULTIBYTE 94-SET
=G2DM4 = ESC %x24 %x2A [ ( I-R / DRCS ) ] F  ;; G2-DESIGNATE MULTIBYTE 94-SET
=G3DM4 = ESC %x24 %x2B [ ( I-R / DRCS ) ] F  ;; G3-DESIGNATE MULTIBYTE 94-SET
=G1DM6 = ESC %x24 %x2D [ ( I-R / DRCS ) ] F  ;; G1-DESIGNATE MULTIBYTE 96-SET
=G2DM6 = ESC %x24 %x2E [ ( I-R / DRCS ) ] F  ;; G2-DESIGNATE MULTIBYTE 96-SET
=G3DM6 = ESC %x24 %x2F [ ( I-R / DRCS ) ] F  ;; G3-DESIGNATE MULTIBYTE 96-SET


=F = Fp / Fs
=Fs = %x40-7D / EMPTY-SET
=EMPTY-SET = %x7E

- [57] 
[VAR[F]] = [[07/14]] の時、
[[空集合][空集合 (ISO/IEC 2022)]]が指示されます。 ([[ISO/IEC 2022]] 1994 14)
-- [60] [[中間バイト]]との関係は[[空集合 (ISO/IEC 2022)]]を参照。
- [58] 
F = 03/* の時に指示される文字集合は私用の集合です。
- [59] 
それ以外 (F = 04/00〜07/13) では、 [[ISO-IR]] に登録された文字集合が
指示されます。


[1] 
なお、[[ISO-IR]] の登録について、
[[エスケープシーケンス]]が登録されたとみなすのか、
[[終端バイト]]が登録されたとみなすのか、
という仕様の解釈論の問題があります。
[SEE[ [[ISO-IR]] ]]

[84] 
[[エスケープシーケンス]]登録説に立つと、古い登録はその後改訂されていないので、
旧仕様時代に登録された[[終端バイト]]は新しい[[指示シーケンス]]構文が使えないことになってしまいます。
普通この解釈は否定されています。

-[139] 
[CITE[002.pdf]], [TIME[2022-11-02T03:16:04.000Z]], [TIME[2022-12-10T03:31:25.940Z]] <https://itscj.ipsj.or.jp/ir/002.pdf>

[140] 例えば >>139 の時代は [[G0]] 指示と [[G1]] 指示の2つだけしか登録簿には書かれていませんが、
他に[[指示]]できないとは解されていません。

-*-*-

[110] 
[[DECの文字コード]]の古い仕様で [[94集合]]の[[指示シーケンス]] + [[私用終端バイト]]で
[[94[SUP[2]]集合]]を[[指示]]できる例があります。


[108] 
その他に
[[VT][VT100]]
等では非標準の[[エスケープシーケンス]]による[[指示]]が数種類あります。
[SEE[ [[VT][VT100]] ]]


** 追加分の中間バイト

- [32] [VAR[I-R]] := %x21-23

[33] 
第2 or 第3中間バイトだけでは終端バイトが足りなくなった時に、
02/01 〜 02/03 を1つ使って、例えば ESC 02/08 02/01 04/00
で G0 に94図形文字集合を指示出来ます。

[66] 
俗にそれぞれ2周目、3周目、4周目のような呼ばれ方をすることがありました。

[35] [[94図形文字集合]]登録用の[[終端バイト]]はすべて使いきったので、
[[中間バイト]] [[2/1]] が使われ始めました。


[82] 
追加分の[[中間バイト]]は [[ISO-IR]] に登録される[[終端バイト]]に関するものです。

-
[61] 
[[中間バイト]]と[[空集合][空集合 (ISO/IEC 2022)]]の[[終端バイト]] [[7/14]]
の関係は[[空集合 (ISO/IEC 2022)]]参照。
-
[120] 
[[DRCS]]
ではこれに相当する部分に [N[2/0]] を使います。
-
[83] 
[[私用図形文字集合]]では更に [N[2/4]], [N[2/5]], [N[2/6]] を使った例があります。

** 図形文字のバイト数

[72] 
[[指示シーケンス]]は[[指示]]する[[文字集合]]に属する[[文字]]の[[バイト数]]によって変わります。

[73] 
[[C0]], [[C1]] は常に1バイトです。

[74] 
[[図形文字集合]]は
[[8F]] - [[15F]] 
の[[エスケープシーケンス]]を使うと1バイト
([[94集合]]、[[96集合]])
です。

[75] 
[[図形文字集合]]は
[[4F]]
の[[エスケープシーケンス]]
GnDMm 
を使うと2バイト以上
([[複数バイト集合]])
です。

[56] 
GnDMm では、何バイトの文字集合かが F の値で定まります。
([[ISO/IEC2022]] 1994 14.3.3)

,*[VAR[F]],[[バイト]]数
,03/* ,2以上
,04/* ,2
,05/* ,2
,06/* ,3
,07/* ,4以上

[76] 
登録済みの[[複数バイト集合]]の[[エスケープシーケンス]]は[[終端バイト]]
[VAR[F]] によって2バイト集合、3バイト集合を区別できます。

[77] 
ところが4バイト以上は「[[以上]]」でまとめられてしまっていて、
[[終端バイト]] [VAR[F]] だけを見ても何バイトかわかりません。

[78] 
私用の[[終端バイト]]も2バイト「[[以上]]」とされていて、
[[終端バイト]] [VAR[F]] だけを見ても何バイトかわかりません。

[79] 
この仕様のために、未知の[[終端バイト]]が出現したとき、
>>77、>>78 の[[終端バイト]]だったとき、
それ以後の[[符号化文字データ要素]]を正しく解釈できるとは限らなくなってしまいます。

[80] 
バイト数が[[偶数]]か[[奇数]]かもわかりませんから、
未知の[[終端バイト]]が出現したら、以後未知の1バイト集合と同じように処理するのがいいでしょうか。

[81] 
[[単独シフト]]が使われてしまうと、その直後の[[文字]]が何バイトか確定できない以上、
その続きも未知の1バイト集合として処理せざるを得なくなります。

[106] 
[[DRCS]] にも[[終端バイト]]によるバイト数の規定が適用されると思われます。
[SEE[ [[DRCS]] ]]

[107] 
[[空集合][空集合 (ISO/IEC 2022)]] [N[7/14]]
にも適用されるのかは不明です。
[SEE[ [[空集合 (ISO/IEC 2022)]] ]]

[101] 
初期の [[ISO 2022]] は2バイト以上というだけで、
[VAR[[[Ft]]]] の制約もなかったようです。

** 1F型エスケープシーケンス

[14] [DFN@en[[CODE[1F]]]] 型[[エスケープ・シーケンス]]は、
[[符号化制御機能基本集合]] ([[C0]] 集合) の[[指示]]
([CODE(charname)@en[[[C0-DESIGNATE]]]])
に使われます。

[15] 
仕様書:
- [[JIS X 0202]]:1998
--[CSECTION[表 3.b nF 型エスケープ・シーケンス及び対応機能]]

[16] '''構文''':
- [CODE(ABNF)[[DFN[エスケープ・シーケンス]] /= 1F 型エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN[1F 型エスケープ・シーケンス]] := C0-DESIGNATE / 1F 型予約エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN@en[C0-DESIGNATE]] := 標準 C0-DESIGNATE / 私用 C0-DESIGNATE [CODE(comment)[;; [CODE(charname)@en[[[C0-DESIGNATE]]]]]]]]
- [CODE(ABNF)[[DFN[標準 C0-DESIGNATE]] := [CODE(charname)@en[[[ESC]]]] %x21 [%x21-23 *[[I]]__&&]&&__ [[Ft]]]]
- [CODE(ABNF)[[DFN[私用 C0-DESIGNATE]] := [CODE(charname)@en[[[ESC]]]] %x21 *[[I]] [[Fp]]]]
- [CODE(ABNF)[[DFN[1F 型予約エスケープ・シーケンス]] := [CODE(charname)@en[[[ESC]]]] %x21 (%x20 / %x24-2F) *[[I]] [[Ft]]]]
- [CODE(ABNF)[[DFN@en[I]] := %x20-2F [CODE(comment)[;; 中間バイト]]]]
- [CODE(ABNF)[[DFN@en[Fp]] := %x30-3F [CODE(comment)[;; 私用終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Ft]] := %x40-7E [CODE(comment)[;; 標準終端バイト]]]]


** 2F型エスケープシーケンス

[17] [DFN@en[[CODE[2F]]]] 型[[エスケープ・シーケンス]]は、
[[符号化制御機能補助集合]] ([[C1]] 集合) の[[指示]]
([CODE(charname)@en[[[C1-DESIGNATE]]]])
に使われます。

[18] 
仕様書:
- [[JIS X 0202]]:1998
--[CSECTION[表 3.b nF 型エスケープ・シーケンス及び対応機能]]

[19] '''構文''':
- [CODE(ABNF)[[DFN[エスケープ・シーケンス]] /= 2F 型エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN[2F 型エスケープ・シーケンス]] := C1-DESIGNATE / 2F 型予約エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN@en[C1-DESIGNATE]] := 標準 C1-DESIGNATE / 私用 C1-DESIGNATE [CODE(comment)[;; [CODE(charname)@en[[[C1-DESIGNATE]]]]]]]]
- [CODE(ABNF)[[DFN[標準 C1-DESIGNATE]] := [CODE(charname)@en[[[ESC]]]] %x22 [%x21-23 *[[I]]__&&]&&__ [[Ft]]]]
- [CODE(ABNF)[[DFN[私用 C1-DESIGNATE]] := [CODE(charname)@en[[[ESC]]]] %x22 *[[I]] [[Fp]]]]
- [CODE(ABNF)[[DFN[2F 型予約エスケープ・シーケンス]] := [CODE(charname)@en[[[ESC]]]] %x21 (%x20 / %x24-2F) *[[I]] [[Ft]]]]
- [CODE(ABNF)[[DFN@en[I]] := %x20-2F [CODE(comment)[;; 中間バイト]]]]
- [CODE(ABNF)[[DFN@en[Fp]] := %x30-3F [CODE(comment)[;; 私用終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Ft]] := %x40-7E [CODE(comment)[;; 標準終端バイト]]]]

** 4F型エスケープシーケンス

[67] [DFN@en[[CODE[4F]]]] 型[[エスケープ・シーケンス]]は、
[[複数バイト集合]]の[[指示]]に使われます。

[68] 仕様書:
- [[JIS X 0202]]:1998
--[CSECTION[表 3.b nF 型エスケープ・シーケンス及び対応機能]]
--[CSECTION[13.2.3 4F 型のエスケープ・シーケンス]]

[69] '''第2中間バイトの割当て''':
,第1中間バイト,第2中間バイト,機能
,[CODE(char)[02/04]],[CODE(char)[02/08]],[[94[SUP[[VAR@en[n]]]]文字集合]]を [[G0]] に[[指示]] ([CODE(charname)[[[G0-DESIGNATE MULTIBYTE 94-SET]]]])
,[CODE(char)[02/04]],[CODE(char)[02/09]],[[94[SUP[[VAR@en[n]]]]文字集合]]を [[G1]] に[[指示]] ([CODE(charname)[[[G1-DESIGNATE MULTIBYTE 94-SET]]]])
,[CODE(char)[02/04]],[CODE(char)[02/10]],[[94[SUP[[VAR@en[n]]]]文字集合]]を [[G2]] に[[指示]] ([CODE(charname)[[[G2-DESIGNATE MULTIBYTE 94-SET]]]])
,[CODE(char)[02/04]],[CODE(char)[02/11]],[[94[SUP[[VAR@en[n]]]]文字集合]]を [[G3]] に[[指示]] ([CODE(charname)[[[G3-DESIGNATE MULTIBYTE 94-SET]]]])
,[CODE(char)[02/04]],[CODE(char)[02/12]],[[94[SUP[[VAR@en[n]]]]文字集合]]を [[G0]] に[[指示]] ([CODE(charname)[[[G0-DESIGNATE MULTIBYTE 96-SET]]]])
,[CODE(char)[02/04]],[CODE(char)[02/13]],[[94[SUP[[VAR@en[n]]]]文字集合]]を [[G1]] に[[指示]] ([CODE(charname)[[[G1-DESIGNATE MULTIBYTE 96-SET]]]])
,[CODE(char)[02/04]],[CODE(char)[02/14]],[[94[SUP[[VAR@en[n]]]]文字集合]]を [[G2]] に[[指示]] ([CODE(charname)[[[G2-DESIGNATE MULTIBYTE 96-SET]]]])
,[CODE(char)[02/04]],[CODE(char)[02/15]],[[94[SUP[[VAR@en[n]]]]文字集合]]を [[G3]] に[[指示]] ([CODE(charname)[[[G3-DESIGNATE MULTIBYTE 96-SET]]]])

[[ISO/IEC 2022]] では 
[CODE(charname)@en[[[G0-DESIGNATE MULTIBYTE 96-SET]]]]
はありません。

[70] '''構文''':
- [CODE(ABNF)[[DFN[エスケープ・シーケンス]] /= 4F 型エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN[4F 型エスケープ・シーケンス]] := 標準複数バイト指示 / 標準互換複数バイト指示 / 再定義可能複数バイト指示 / 私用複数バイト指示 / 4F 型予約エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN[標準複数バイト指示]] := [CODE(charname)@en[[[ESC]]]] %x24 (%x28-2F) [%x21-23 *[[I]]__&&]&&__ [[Ft]] − [CODE(charname)@en[[[ESC]]]] %x24 %x28 (%x40-42)]]
- [CODE(ABNF)[[DFN[標準互換複数バイト指示]] := [CODE(charname)@en[[[ESC]]]] %x24 (%x40-42) [CODE(comment)[;; JIS 表4 備考]]]]
- [CODE(ABNF)[[DFN[再定義可能複数バイト指示]] := [CODE(charname)@en[[[ESC]]]] %x24 (%x28-2F) %x20 *[[I]] [[F]]]]
- [CODE(ABNF)[[DFN[私用複数バイト指示]] := [CODE(charname)@en[[[ESC]]]] %x24 (%x28-2F) *[[I]] [[Fp]]]]
- [CODE(ABNF)[[DFN[4F 型予約エスケープ・シーケンス]] := <[CODE(charname)@en[[[ESC]]]] %x24 *[[I]] [[Ft]] で以上に該当しないもの>]]
- [CODE(ABNF)[[DFN@en[I]] := %x20-2F [CODE(comment)[;; 中間バイト]]]]
- [CODE(ABNF)[[DFN@en[Fp]] := %x30-3F [CODE(comment)[;; 私用終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Ft]] := %x40-7E [CODE(comment)[;; 標準終端バイト]]]]
- [CODE(ABNF)[[DFN@en[F]] := Fp / Ft [CODE(comment)[;; 終端バイト]]]]


[126] 
[[SoftBank絵文字]]の独自仕様の[[エスケープシーケンス]]
([[シフトJIS]]や[[ISO-2022-JP]]と混在させる)
は、

- [CODE(charname)@en[ESC]] [N[2/4]] [VAR[F]]


形式。 [VAR[F]] は
[N[4/5]] (E) [N[4/6]] (F) [N[4/7]] (G)
[N[4/15]] (O) [N[5/0]] (P) [N[5/1]] (Q)
の6種類。
この[[エスケープシーケンス]]の後に利用できるのは[[94集合]]よりも小さな1バイト符号。
[SEE[ [[SoftBank絵文字]] ]]

[127] 
偶然にも [[ISO-IR]] に登録された旧型 [[G0]] [[エスケープシーケンス]]とは衝突していないので同時実装はぎりぎり可能。

** 8F型エスケープシーケンス

[20] [DFN@en[[CODE[8F]]]] 型[[エスケープ・シーケンス]]は、
[[94文字集合]]の [[G0]] への[[指示]]
([CODE(charname)@en[[[G0-DESIGNATE 94-SET]]]])
に使われます。

[21] 
仕様書:
- [[JIS X 0202]]:1998
--[CSECTION[表 3.b nF 型エスケープ・シーケンス及び対応機能]]

[22] '''構文''':
- [CODE(ABNF)[[DFN[エスケープ・シーケンス]] /= 8F 型エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN[8F 型エスケープ・シーケンス]] := G0D4 / 8F 型予約エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN@en[G0D4]] := 標準 G0D4 / 再定義可能 G0D4 / 私用 G0D4 [CODE(comment)[;; [CODE(charname)@en[[[G0-DESIGNATE 94-SET]]]]]]]]
- [CODE(ABNF)[[DFN[標準 G0D4]] := [CODE(charname)@en[[[ESC]]]] %x28 [%x21-23 *[[I]]__&&]&&__ [[Ft]]]]
- [CODE(ABNF)[[DFN[再定義可能 G0D4]] := [CODE(charname)@en[[[ESC]]]] %x28 %x20 *[[I]] [[F]]]]
- [CODE(ABNF)[[DFN[私用 G0D4]] := [CODE(charname)@en[[[ESC]]]] %x28 *[[I]] [[Fp]]]]
- [CODE(ABNF)[[DFN[8F 型予約エスケープ・シーケンス]] := [CODE(charname)@en[[[ESC]]]] %x28 (%x24-2F) *[[I]] [[Ft]]]]
- [CODE(ABNF)[[DFN@en[I]] := %x20-2F [CODE(comment)[;; 中間バイト]]]]
- [CODE(ABNF)[[DFN@en[F]] := Fp / Ft [CODE(comment)[;; 終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Fp]] := %x30-3F [CODE(comment)[;; 私用終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Ft]] := %x40-7E [CODE(comment)[;; 標準終端バイト]]]]

** 9F型エスケープシーケンス

[23] [DFN@en[[CODE[9F]]]] 型[[エスケープ・シーケンス]]は、
[[94文字集合]]の [[G1]] への[[指示]]
([CODE(charname)@en[[[G1-DESIGNATE 94-SET]]]])
に使われます。

[24] 
仕様書:
- [[JIS X 0202]]:1998
--[CSECTION[表 3.b nF 型エスケープ・シーケンス及び対応機能]]

[25] '''構文''':
- [CODE(ABNF)[[DFN[エスケープ・シーケンス]] /= 9F 型エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN[9F 型エスケープ・シーケンス]] := G1D4 / 9F 型予約エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN@en[G1D4]] := 標準 G1D4 / 再定義可能 G1D4 / 私用 G1D4 [CODE(comment)[;; [CODE(charname)@en[[[G1-DESIGNATE 94-SET]]]]]]]]
- [CODE(ABNF)[[DFN[標準 G1D4]] := [CODE(charname)@en[[[ESC]]]] %x29 [%x21-23 *[[I]]__&&]&&__ [[Ft]]]]
- [CODE(ABNF)[[DFN[再定義可能 G1D4]] := [CODE(charname)@en[[[ESC]]]] %x29 %x20 *[[I]] [[F]]]]
- [CODE(ABNF)[[DFN[私用 G1D4]] := [CODE(charname)@en[[[ESC]]]] %x29 *[[I]] [[Fp]]]]
- [CODE(ABNF)[[DFN[9F 型予約エスケープ・シーケンス]] := [CODE(charname)@en[[[ESC]]]] %x29 (%x24-2F) *[[I]] [[Ft]]]]
- [CODE(ABNF)[[DFN@en[I]] := %x20-2F [CODE(comment)[;; 中間バイト]]]]
- [CODE(ABNF)[[DFN@en[F]] := Fp / Ft [CODE(comment)[;; 終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Fp]] := %x30-3F [CODE(comment)[;; 私用終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Ft]] := %x40-7E [CODE(comment)[;; 標準終端バイト]]]]


** 10F型エスケープシーケンス

[26] [DFN@en[[CODE[10F]]]] 型[[エスケープ・シーケンス]]は、
[[94文字集合]]の [[G2]] への[[指示]]
([CODE(charname)@en[[[G2-DESIGNATE 94-SET]]]])
に使われます。

[27] 仕様書:
- [[JIS X 0202]]:1998
--[CSECTION[表 3.b nF 型エスケープ・シーケンス及び対応機能]]

[28] '''構文''':
- [CODE(ABNF)[[DFN[エスケープ・シーケンス]] /= 10F 型エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN[10F 型エスケープ・シーケンス]] := G2D4 / 10F 型予約エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN@en[G2D4]] := 標準 G2D4 / 再定義可能 G2D4 / 私用 G2D4 [CODE(comment)[;; [CODE(charname)@en[[[G2-DESIGNATE 94-SET]]]]]]]]
- [CODE(ABNF)[[DFN[標準 G2D4]] := [CODE(charname)@en[[[ESC]]]] %x2A [%x21-23 *[[I]]__&&]&&__ [[Ft]]]]
- [CODE(ABNF)[[DFN[再定義可能 G2D4]] := [CODE(charname)@en[[[ESC]]]] %x2A %x20 *[[I]] [[F]]]]
- [CODE(ABNF)[[DFN[私用 G2D4]] := [CODE(charname)@en[[[ESC]]]] %x2A *[[I]] [[Fp]]]]
- [CODE(ABNF)[[DFN[10F 型予約エスケープ・シーケンス]] := [CODE(charname)@en[[[ESC]]]] %x2A (%x24-2F) *[[I]] [[Ft]]]]
- [CODE(ABNF)[[DFN@en[I]] := %x20-2F [CODE(comment)[;; 中間バイト]]]]
- [CODE(ABNF)[[DFN@en[F]] := Fp / Ft [CODE(comment)[;; 終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Fp]] := %x30-3F [CODE(comment)[;; 私用終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Ft]] := %x40-7E [CODE(comment)[;; 標準終端バイト]]]]

** 11F型エスケープシーケンス

[29] [DFN@en[[CODE[11F]]]] 型[[エスケープ・シーケンス]]は、
[[94文字集合]]の [[G3]] への[[指示]]
([CODE(charname)@en[[[G3-DESIGNATE 94-SET]]]])
に使われます。

[30] 仕様書:
- [[JIS X 0202]]:1998
--[CSECTION[表 3.b nF 型エスケープ・シーケンス及び対応機能]]

[31] '''構文''':
- [CODE(ABNF)[[DFN[エスケープ・シーケンス]] /= 11F 型エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN[11F 型エスケープ・シーケンス]] := G3D4 / 11F 型予約エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN@en[G3D4]] := 標準 G3D4 / 再定義可能 G3D4 / 私用 G3D4 [CODE(comment)[;; [CODE(charname)@en[[[G3-DESIGNATE 94-SET]]]]]]]]
- [CODE(ABNF)[[DFN[標準 G3D4]] := [CODE(charname)@en[[[ESC]]]] %x2B [%x21-23 *[[I]]__&&]&&__ [[Ft]]]]
- [CODE(ABNF)[[DFN[再定義可能 G3D4]] := [CODE(charname)@en[[[ESC]]]] %x2B %x20 *[[I]] [[F]]]]
- [CODE(ABNF)[[DFN[私用 G3D4]] := [CODE(charname)@en[[[ESC]]]] %x2B *[[I]] [[Fp]]]]
- [CODE(ABNF)[[DFN[11F 型予約エスケープ・シーケンス]] := [CODE(charname)@en[[[ESC]]]] %x2B (%x24-2F) *[[I]] [[Ft]]]]
- [CODE(ABNF)[[DFN@en[I]] := %x20-2F [CODE(comment)[;; 中間バイト]]]]
- [CODE(ABNF)[[DFN@en[F]] := Fp / Ft [CODE(comment)[;; 終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Fp]] := %x30-3F [CODE(comment)[;; 私用終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Ft]] := %x40-7E [CODE(comment)[;; 標準終端バイト]]]]

** 12F型エスケープシーケンス

[38] [DFN@en[[CODE[12F]]]] 型[[エスケープ・シーケンス]]は、
[[96文字集合]]の [[G0]] への[[指示]]
([CODE(charname)@en[[[G0-DESIGNATE 96-SET]]]])
に使われます。

[39] 
[[ISO/IEC 2022]] ではこの型は将来の拡張のために予約されています。

[40] 
仕様書:
- [[JIS X 0202]]:1998
--[CSECTION[表 3.b nF 型エスケープ・シーケンス及び対応機能]]

[41] '''構文''':
- [CODE(ABNF)[[DFN[エスケープ・シーケンス]] /= 12F 型エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN[12F 型エスケープ・シーケンス]] := G0D6 / 12F 型予約エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN@en[G0D6]] := 標準 G0D6 / 再定義可能 G0D6 / 私用 G0D6 [CODE(comment)[;; [CODE(charname)@en[[[G0-DESIGNATE 96-SET]]]]]]]]
- [CODE(ABNF)[[DFN[標準 G0D6]] := [CODE(charname)@en[[[ESC]]]] %x2C [%x21-23 *[[I]]__&&]&&__ [[Ft]]]]
- [CODE(ABNF)[[DFN[再定義可能 G0D6]] := [CODE(charname)@en[[[ESC]]]] %x2C %x20 *[[I]] [[F]]]]
- [CODE(ABNF)[[DFN[私用 G0D6]] := [CODE(charname)@en[[[ESC]]]] %x2C *[[I]] [[Fp]]]]
- [CODE(ABNF)[[DFN[12F 型予約エスケープ・シーケンス]] := [CODE(charname)@en[[[ESC]]]] %x2C (%x24-2F) *[[I]] [[Ft]]]]
- [CODE(ABNF)[[DFN@en[I]] := %x20-2F [CODE(comment)[;; 中間バイト]]]]
- [CODE(ABNF)[[DFN@en[F]] := Fp / Ft [CODE(comment)[;; 終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Fp]] := %x30-3F [CODE(comment)[;; 私用終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Ft]] := %x40-7E [CODE(comment)[;; 標準終端バイト]]]]

** 13F型エスケープシーケンス

[42] [DFN@en[[CODE[13F]]]] 型[[エスケープ・シーケンス]]は、
[[96文字集合]]の [[G1]] への[[指示]]
([CODE(charname)@en[[[G1-DESIGNATE 96-SET]]]])
に使われます。

[43] 仕様書:
- [[JIS X 0202]]:1998
-- [CSECTION[表 3.b nF 型エスケープ・シーケンス及び対応機能]]

[44] '''構文''':
- [CODE(ABNF)[[DFN[エスケープ・シーケンス]] /= 13F 型エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN[13F 型エスケープ・シーケンス]] := G1D6 / 13F 型予約エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN@en[G1D6]] := 標準 G1D6 / 再定義可能 G1D6 / 私用 G1D6 [CODE(comment)[;; [CODE(charname)@en[[[G1-DESIGNATE 96-SET]]]]]]]]
- [CODE(ABNF)[[DFN[標準 G1D6]] := [CODE(charname)@en[[[ESC]]]] %x2D [%x21-23 *[[I]]__&&]&&__ [[Ft]]]]
- [CODE(ABNF)[[DFN[再定義可能 G1D6]] := [CODE(charname)@en[[[ESC]]]] %x2D %x20 *[[I]] [[F]]]]
- [CODE(ABNF)[[DFN[私用 G1D6]] := [CODE(charname)@en[[[ESC]]]] %x2D *[[I]] [[Fp]]]]
- [CODE(ABNF)[[DFN[13F 型予約エスケープ・シーケンス]] := [CODE(charname)@en[[[ESC]]]] %x2D (%x24-2F) *[[I]] [[Ft]]]]
- [CODE(ABNF)[[DFN@en[I]] := %x20-2F [CODE(comment)[;; 中間バイト]]]]
- [CODE(ABNF)[[DFN@en[F]] := Fp / Ft [CODE(comment)[;; 終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Fp]] := %x30-3F [CODE(comment)[;; 私用終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Ft]] := %x40-7E [CODE(comment)[;; 標準終端バイト]]]]

** 14F型エスケープシーケンス

[45] [DFN@en[[CODE[14F]]]] 型[[エスケープ・シーケンス]]は、
[[96文字集合]]の [[G2]] への[[指示]]
([CODE(charname)@en[[[G2-DESIGNATE 96-SET]]]])
に使われます。

[46] 仕様書:
- [[JIS X 0202]]:1998
-- [CSECTION[表 3.b nF 型エスケープ・シーケンス及び対応機能]]

[47] '''構文''':
- [CODE(ABNF)[[DFN[エスケープ・シーケンス]] /= 14F 型エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN[14F 型エスケープ・シーケンス]] := G2D6 / 14F 型予約エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN@en[G2D6]] := 標準 G2D6 / 再定義可能 G2D6 / 私用 G2D6 [CODE(comment)[;; [CODE(charname)@en[[[G2-DESIGNATE 96-SET]]]]]]]]
- [CODE(ABNF)[[DFN[標準 G2D6]] := [CODE(charname)@en[[[ESC]]]] %x2D [%x21-23 *[[I]]__&&]&&__ [[Ft]]]]
- [CODE(ABNF)[[DFN[再定義可能 G2D6]] := [CODE(charname)@en[[[ESC]]]] %x2D %x20 *[[I]] [[F]]]]
- [CODE(ABNF)[[DFN[私用 G2D6]] := [CODE(charname)@en[[[ESC]]]] %x2D *[[I]] [[Fp]]]]
- [CODE(ABNF)[[DFN[14F 型予約エスケープ・シーケンス]] := [CODE(charname)@en[[[ESC]]]] %x2D (%x24-2F) *[[I]] [[Ft]]]]
- [CODE(ABNF)[[DFN@en[I]] := %x20-2F [CODE(comment)[;; 中間バイト]]]]
- [CODE(ABNF)[[DFN@en[F]] := Fp / Ft [CODE(comment)[;; 終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Fp]] := %x30-3F [CODE(comment)[;; 私用終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Ft]] := %x40-7E [CODE(comment)[;; 標準終端バイト]]]]

** 15F型エスケープシーケンス

[48] [DFN@en[[CODE[15F]]]] 型[[エスケープ・シーケンス]]は、
[[96文字集合]]の [[G3]] への[[指示]]
([CODE(charname)@en[[[G3-DESIGNATE 96-SET]]]])
に使われます。

[49] 仕様書:
- [[JIS X 0202]]:1998
--[CSECTION[表 3.b nF 型エスケープ・シーケンス及び対応機能]]

[50] '''構文''':
- [CODE(ABNF)[[DFN[エスケープ・シーケンス]] /= 15F 型エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN[15F 型エスケープ・シーケンス]] := G3D6 / 15F 型予約エスケープ・シーケンス]]
- [CODE(ABNF)[[DFN@en[G3D6]] := 標準 G3D6 / 再定義可能 G3D6 / 私用 G3D6 [CODE(comment)[;; [CODE(charname)@en[[[G3-DESIGNATE 96-SET]]]]]]]]
- [CODE(ABNF)[[DFN[標準 G3D6]] := [CODE(charname)@en[[[ESC]]]] %x2F [%x21-23 *[[I]]__&&]&&__ [[Ft]]]]
- [CODE(ABNF)[[DFN[再定義可能 G3D6]] := [CODE(charname)@en[[[ESC]]]] %x2F %x20 *[[I]] [[F]]]]
- [CODE(ABNF)[[DFN[私用 G3D6]] := [CODE(charname)@en[[[ESC]]]] %x2F *[[I]] [[Fp]]]]
- [CODE(ABNF)[[DFN[15F 型予約エスケープ・シーケンス]] := [CODE(charname)@en[[[ESC]]]] %x2F (%x24-2F) *[[I]] [[Ft]]]]
- [CODE(ABNF)[[DFN@en[I]] := %x20-2F [CODE(comment)[;; 中間バイト]]]]
- [CODE(ABNF)[[DFN@en[F]] := Fp / Ft [CODE(comment)[;; 終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Fp]] := %x30-3F [CODE(comment)[;; 私用終端バイト]]]]
- [CODE(ABNF)[[DFN@en[Ft]] := %x40-7E [CODE(comment)[;; 標準終端バイト]]]]

* 改訂番号

[122] 
[[制御文字集合]]、[[図形文字集合]]のどちらの場合も、
[[指示シーケンス]]の直前に[[文字集合]]の改訂 (更新) 
を表す[[文字集合改訂番号]]を指定する
[CODE(charname)@en[IRR]]
を使えます。
[SEE[ [[IRR]] ]]


[142] 
なお、
[CODE(charname)@en[IRR]]
導入前に改訂番号なし、[[終端バイト]]そのままで
[[ISO-IR]]
登録簿の[[文字集合]]が変更された事例がいくつかあります。
[SEE[ [[ISO-IR]] ]]




























*DRCS: 動的再指定可能文字集合

[SEE[ [[DRCS]] ]]



* 94系文字集合の指示


[137] 
[[94集合]] [N[6/4]] は[[図形文字]]が新規追加されて上書き登録されました。
[SEE[ [[IRR]] ]]

[115] 
[[JIS X 0201]] の[[片仮名用図形文字集合]]と[[ラテン文字用図形文字集合]]は
[[ISO-IR]] に正式に登録される前に[[終端バイト]]
[N[4/7]] (G),
[N[4/8]] (H)
が使われ始めましたが、他の[[図形文字集合]]が先に登録されてしまい、
正式には
[N[4/9]] (I),
[N[4/10]] (J)
になりました。
[SRC[>>149]]

[151] >>150 は古い方を使っています。

[116] 
[[JUNETコード]]や[[RFC 1468]] [[ISO-2022-JP]]はこれを使うべきではないとしています
(がそれ以前には使われていました)。

[118] 
古くからの[[日本]]向け [[ISO/IEC 2022]] 実装や 
[[JUNETコード]]/[[ISO-2022-JP]] (およびその派生) の実装は
[[JIS X 0201]] [[ラテン文字用図形文字集合]]とみなします。

[117] 
[[DECの文字コード]]の [[ISO/IEC 2022]] の実装はこれを受け付けます (が出力に使いません)。

[119] 
最近の [[ISO-2022-JP]] の実装や [CITE[Encoding Standard]] の
[CODE[iso-2022-jp]] はこれに対応していません。

[136] 
[[KS X 1002]]
は[[94[SUP[2]]集合]]の[[終端バイト]]
[N[4/5]],
[N[4/6]]
を独自の意味で使っています。

[REFS[

- [150] 
[CITE@ja[23_2.pdf]], [TIME[2025-01-18T01:26:40.000Z]] <https://www.jstage.jst.go.jp/article/johokanri/23/1/23_2/_pdf#page=5>

[FIG(quote)[
[FIGCAPTION[
[149] 
[CITE[Very old fj.kanji discussion 13/622]], [TIME[2008-11-08T10:28:12.000Z]], [TIME[2023-08-01T14:15:23.579Z]] <https://ie.u-ryukyu.ac.jp/~kono/fj/fj.kanji/13.html>
]FIGCAPTION]

>
しかしこれは世の中では間違ってESC( Hと伝わっている。それはJIS [BR[]]
C6228-1975が制定されたとき、 JIS C6220の片仮名とロー[BR[]]
マ字のFはそれぞれ4/7と4/8になると予想してそう記述してしまったか[BR[]]
らである。制定のときには4/6までしかきまっていなかったからだ。一方片[BR[]]
仮名とローマ字のFを貰うべく登録手続きをしたのだが、その頃同じく登録手[BR[]]
続き中であったスウェーデン基本コードとスウェーデン名前用コードが4/7[BR[]]
と4/8を貰い、日本の片仮名とローマ字は4/9と4/10になった。そこ[BR[]]
でJIS C6228-1975には正誤表をつけて頒布したが、 このことは[BR[]]
徹底しなかった。 JIS C6228-1984の解15ページには正しい表[BR[]]
がでているが、JISハンドブックには解説がないからそれだけ見たのではわ[BR[]]
からない。

]FIG]


]REFS]


-*-*-

[91] 
[[ISO-IR]] に登録されている[[94文字集合]]の[[終端バイト]]のうち、
次のものは
[[VT][VT100]] や [[DEC-PPL]]
で独自の意味で使われており、用法が衝突しています。
[SEE[ [[VT][VT100]], [[DEC-PPL]] ]]

- [112] [N[4/3]] (C)
- [113] [N[4/5]] (E)
- [114] [N[4/8]] (H)
- [94] [N[4/11]] (K)
- [92] [N[5/1]] (Q)
- [93] [N[5/5]] (U)
- [146] [N[6/0]] (`)


[95] 
[[VT][VT100]]
では、
[CODE(charname)@en[ESC]] [N[2/8]] [N[3/1]],
[CODE(charname)@en[ESC]] [N[2/9]] [N[3/1]],
[CODE(charname)@en[ESC]] [N[2/9]] [N[4/2]] 
が[[指示]]とは違う意味で使われることがありました。
[SEE[ [[VT][VT100]], [[Fp]] ]]

-*-*-

[3] [[ARIB STD-B24]] は[[終端バイト]] [N[07/00]] を1バイトの
「[[マクロ符号]]」に使っています。[[マクロ符号]]は[[マクロ文]]で構成される[[94集合]]です。
[[マクロ文]]は、[[図形文字]]や[[制御文字]]の列を表すものです。
[[Japanese Basic Hand-printed Graphic Set for OCR JIS C6229-1984]]
と衝突していますが...

[SEE[ [[ARIB STD-B24]] ]]

;; [129] [[ESC]] [N[7/0]] の予約と [[ISO-IR]] については [[PCD]] 参照。

[134] 
[[NAPLPS]]
は[[94集合]]用[[指示シーケンス]]の[[終端バイト]]
[N[5/7]],
[N[7/10]],
[N[7/11]],
[N[7/13]],
[N[2/0]] [N[7/10]],
[N[2/0]] [N[7/11]]
を[[96集合]]用に使っていました。後に
[[96集合]]用[[指示シーケンス]]に変更されました。
[SEE[ [[T.101]], >>135 ]]

[N[5/7]], [N[7/10]], [N[7/11]], [N[7/13]] 
のいずれも [[ISO-IR]] では無関係の[[図形文字集合]]が登録されています。

[REFS[
- [12] [CITE[Data Coding and Transmission Specification for Digital Broadcasting ARIB STANDARD - 6-STD-B24v6_4-1p3-E1.pdf]], [TIME[2021-09-29T18:13:18.000Z]], [TIME[2022-04-30T05:01:35.411Z]] <http://www.arib.or.jp/english/html/overview/doc/6-STD-B24v6_4-1p3-E1.pdf#page=56>
]REFS]

-*-*-

[141] [[NATS]] は[[94集合]]で [N[2/0]] の[[空白]]の意味も定めています。
[SEE[ [[空白文字]] ]]

[145] [[DRCSTerm]] は [[94集合]]用[[指示シーケンス]]で [[DRCS]] [[96集合]]を表しています。
[SEE[ [[DRCS]], [[DRCSTerm]] ]]


**3つの 94[SUP[2]] 文字集合の指示の例外規定

[86] 
[[94[SUP[[VAR[n]]]]集合]]は [CODE(charname)@en[ESC]] 2/4 2/8 [VAR[F]]
で [[G0]] に[[指示]]できますが、過去の版の [[ISO 2022]]
では
[CODE(charname)@en[ESC]] 2/4 [VAR[F]]
と定められていました。

-ESC 02/04 (04/00 / 04/01 / 04/02)  ;; Ft の文字集合を [[G0]] に指示

[87] 
古い [[ISO 2022]] では [[94[SUP[[VAR[n]]]]文字集合]]は [[G0]] 
にしか指示出来ませんでした。その時の名残でこれらの3つの文字集合を
G0 に指示する時は 02/08 を省きます。ここで 02/08 を挟むと
厳密には ISO/IEC 2022 に適合しません。 ([[JISX0202]]:1998 13.2.3
備考)

[88] 
この点で [[X]] の [[CompoundText]] や
[[ISO-2022-ESC B]]
は 
[[ISO/IEC 2022]]
に[[適合]]しません。
これらは常に 
[N[2/8]] を含めた長い方のみを使うと定めています。
[SEE[ [[ctext]], [[ISO-2022-ESC B]] ]]

[138] 
[[ISO/IEC 2022指示シーケンス]]の多くに対応している実装の多くは、
[N[2/8]] 
の有無に関わらず読み込むことができるようです。
[[ISO-2022-JP]] 専用の実装など限定的な実装は読み込みに対応していないことが多いようです。

[89] 
[CODE(charname)@en[ESC]] 2/4 Fp (私用) や
[CODE(charname)@en[ESC]] 2/4 7/14 (空集合)
は昔は使えたのでしょうか?
現行仕様上は認められないようにみえますが。

[133] 
[[MARC-8]] は旧仕様に基づいていました。
[[94[SUP[3]]集合]] [[EACC]] のための[[私用終端バイト]]
[N[3/1]]
は
[[G0]] のとき [CODE(charname)@en[ESC]] [N[2/4]] [N[3/1]] と表すように読めます。
[SRC[>>130]]

[100] 
[CODE(charname)@en[ESC]] [N[2/4]] [VAR[[[Fp]]]] は初期の [[ISO 2022]]
では認められていたようです。
(当時は空集合はなかった。)

[105] 
[[94[SUP[[VAR[n]]]]集合]]が [[G0]] だけでなく [[G1]], [[G2]], [[G3]]
に[[指示]]できるようになったばかりの頃の [[ISO 2022]]
では、
[[G0]] だけ [CODE(charname)@en[ESC]] [N[2/4]] [VAR[F]]
を使うと定められていました。
([CODE(charname)@en[ESC]] [N[2/4]] [N[2/9]] [VAR[F]] などはあったのに、
[CODE(charname)@en[ESC]] [N[2/4]] [N[2/8]] [VAR[F]] だけありませんでした.)
[SRC[>>103]]

[121] 
3つの集合だけ特別扱いなのは、 [[ISO/IEC 2022]] にそう規定されているからです。
[[ISO-IR]] に登録された[[エスケープシーケンス]]がそうであることに根拠を求める説もありましたが、
その説を取ると他に矛盾が生じてきます (>>84)。


[144] 
[[T.61]] では [[DRCS]] でも [N[2/8]] なしで [[G0]] に[[指示]]できます。
[SRC[>>143]]

[REFS[
- [143] 
[CITE@ja[Control functions - akinomyoga/contra]], [TIME[2021-12-31T23:05:20.000Z]], [TIME[2022-12-11T08:28:49.094Z]] <https://akinomyoga.github.io/contra/escseq.html#dfn.GnDMm>
]REFS]

* 96系文字集合の指示

[37] 
[[96文字集合]]は
[[2/12]], 
[[2/13]],
[[2/14]],
[[2/15]]
でそれぞれ
[[G0]],
[[G1]],
[[G2]],
[[G3]]
に[[指示]]できます。

[62] 
このうち 
[[2/12]] 
は現在の
[[ISO/IEC 2022]]
で規定されていません (>>39) が、
一部で実装されています [SRC[>>85]]。

[63] 
元々[[96文字集合]]は[[右側]]に[[呼び出し]]する前提で作られた経緯があるようで、
[[G0]] に[[指示]]するのは適切でないと考えられていたらしいです。

[64] 
[[96文字集合]]が[[左側]]に[[呼び出し]]されると、
[[2/0]] や [[7/15]]
が
[CODE(charname)@en[SP]] や [CODE(charname)@en[DEL]]
でなく[[96文字集合]]の[[文字]]を表すことになります。
それが [[G0]] への[[指示]]が忌避される一因だといいます。

[65] 
一方で[[固定シフト]]や[[単独シフト]]を使って
[[G1]], [[G2]], [[G3]] 
が[[左側]]に[[呼び出し]]されることは 
[[ISO/IEC 2022]] 
も認めています。それなら [[G0]] だけ避ける意味もなく、
一貫しているほうがいいだろうと
[[2/12]] を実装することもあったようです。


[71] 
同じ理由で[[96[SUP[[VAR[n]]]]文字集合]]を[[指示]]する
[[2/4]] [[2/12]]
も
[[ISO/IEC 2022]] にはないのですが、一部で実装されています [SRC[>>85]]。



[REFS[
- [85] 
[CITE@en[src/coding.c · master · emacs / [[emacs]] · GitLab]], [TIME[2022-04-30T05:48:01.000Z]] <https://emba.gnu.org/emacs/emacs/-/blob/master/src/coding.c#L2767>
]REFS]

-*-*-

[98] 
実は[[96集合]]がなかった初期の [[ISO 2022]] では
[CODE(charname)@en[ESC]] [N[2/11]] [VAR[F]] [SRC[>>97, >>102]],
[CODE(charname)@en[ESC]] [N[2/12]] [VAR[F]] [SRC[>>97, >>102]],
[CODE(charname)@en[ESC]] [N[2/13]] [VAR[F]] [SRC[>>102]],
[CODE(charname)@en[ESC]] [N[2/14]] [VAR[F]] [SRC[>>102]]
も[[94集合]]用でした。

[104] 
[[複数バイト集合]]も、
[CODE(charname)@en[ESC]] [N[2/4]] [N[2/11]] [VAR[F]],
[CODE(charname)@en[ESC]] [N[2/4]] [N[2/12]] [VAR[F]],
[CODE(charname)@en[ESC]] [N[2/4]] [N[2/13]] [VAR[F]],
[CODE(charname)@en[ESC]] [N[2/4]] [N[2/14]] [VAR[F]]
が[[94[SUP[[VAR[n]]]]集合]]用とされた時代がありました。
[SRC[>>103]]


[99] 
[N[2/11]] - [N[2/14]] を使って [[ISO-IR]] に登録された[[94集合]],
[[94[SUP[[VAR[n]]]]集合]]はありませんでした。
[VAR[[[Fp]]]] は当時から存在したので、
[[私用図形文字集合]]が使われなかったとも断言できません。
[[左側]]に[[呼び出し]]したときの
[N[2/10]] と [N[7/15]]
の解釈が旧仕様と新仕様で[[非互換]]に変化しています。

[111] 
[[DECの文字コード]]の一種では、[[96集合]]がいくつかあるうちの[[私用終端バイト]]
[N[3/12]] User Preference Supplemental
は互換性のため[[94集合]]が割り当てられているとされます。
[SEE[ [[Fp]] ]]

[131] 
[[Videotex]] の一部仕様や仕様書の記述には当時の規定の影響がみられます。
[SEE[ [[Videotex]] ]]

[132] 
[[MARC-8]] の仕様書の記述には当時の規定の影響がみられます。
[SRC[>>140]]

[REFS[
- [97] 
[CITE[[[ECMA-35]]_1st_edition_december_1971.pdf]], [TIME[2021-01-16T09:57:02.000Z]], [TIME[2022-05-01T05:00:50.382Z]] <https://www.ecma-international.org/wp-content/uploads/ECMA-35_1st_edition_december_1971.pdf#page=16>
- [102] 
[CITE[[[ECMA-35]]_2nd_edition_january_1980.pdf]], [TIME[2021-01-16T09:57:02.000Z]], [TIME[2022-05-01T05:25:13.344Z]] <https://www.ecma-international.org/wp-content/uploads/ECMA-35_2nd_edition_january_1980.pdf#page=19>
- [103] [CITE[[[ECMA-35]]_3rd_edition_january_1982.pdf]], [TIME[2021-01-16T09:57:02.000Z]], [TIME[2022-05-01T05:37:19.686Z]] <https://www.ecma-international.org/wp-content/uploads/ECMA-35_3rd_edition_january_1982.pdf#page=20>
- [130] [CITE[Character Sets: MARC-8 Encoding Environment: MARC 21 Specifications for Record Structure, Character Sets, and Exchange Media (Library of Congress)]], [TIME[2007-12-05T16:31:01.000Z]], [TIME[2022-05-09T00:57:52.718Z]] <https://www.loc.gov/marc/specifications/speccharmarc8.html>



]REFS]

-*-*-

[34] 
ESC <I> 5/7 は [[ISO-IR]] で、 [[CCITT]]
が以前に使用していたから割り当てないと書いてあります。
(未登録のまま使ってたってことですか?)

[128] [CODE[ESC]] [VAR[I]] [CODE[5/7]] は、 [[NAPLPS]], [[T.101]]
で使います。これが公式に登録されずに、その[[終端バイト]]には割り当てないことになったのは、その集合が[[図形文字集合]]ではなかったからでしょう。

[135] 
[[NAPLPS]] は[[96集合]]用の[[指示シーケンス]]の[[終端バイト]]
[N[5/7]],
[N[7/13]],
[N[7/10]],
[N[7/11]],
[N[2/0]] [N[7/10]],
[N[2/0]] [N[7/11]]
を使っていました。
[SEE[ [[T.101]], >>134 ]]

[N[7/13]] は [[ISO-IR]] に登録されました。

[N[5/7]] は [[ISO-IR]] に登録されていませんが、予約されています。

[N[7/10]], [N[7/11]] は [[ISO-IR]] に登録されていません。
(幸い、他に登録されていません。)
[[DRCS]] という扱いに変更されて、
[[中間バイト]] [N[2/0]] を伴う仕様に変わりました。


-*-*-

[95] 
[[VT][VT100]]
では、
[CODE(charname)@en[ESC]] [N[2/15]] [VAR[F]] 
が[[指示]]とは違う意味で使われていました。
[SEE[ [[VT][VT100]] ]]

- [96] [CODE(charname)@en[ESC]] [N[2/15]] (/) [N[4/1]] (A)
- [96] [CODE(charname)@en[ESC]] [N[2/15]] (/) [N[4/3]] (C)
- [96] [CODE(charname)@en[ESC]] [N[2/15]] (/) [N[4/8]] (H)
- [96] [CODE(charname)@en[ESC]] [N[2/15]] (/) [N[4/10]] (J)
- [96] [CODE(charname)@en[ESC]] [N[2/15]] (/) [N[4/11]] (K)
- [96] [CODE(charname)@en[ESC]] [N[2/15]] (/) [N[4/12]] (L)
- [96] [CODE(charname)@en[ESC]] [N[2/15]] (/) [N[5/10]] (Z)




* 初期状態

[8] 
[[ISO/IEC 2022]] に基づく[[符号]]体系は普通は初期状態でいくつかの[[符号化文字集合]]を[[指示]]した状態と定義されています。
例えば[[日本語EUC]]では [[G0]] に [[ASCII]] が、
[[G1]] に [[JIS X 0208]] が[[指示]]された状態となっています。

[9] 
[[ISO/IEC 2022]] 単体において、[[指示]]がないときの初期状態がどうなっているのか、
あまり明確ではありません。
[[空集合]]が[[指示]]されている場合のような、
それに属するどの[[ビット組合せ]]も[[使用禁止]]の状態と解するべきなのでしょうか。

[10] 
なお[[C0集合]]については、[[固定符号化文字]] [CODE(charname)@en[ESCAPE]]
のみは始めから利用可能な状態と規定されています。
[SEE[ [[固定符号化文字]] ]]

[11] 関連: [[呼び出し][呼び出し (ISO/IEC 2022)]]

* 文脈

[7] [[SGML]] では、これを[[ASCII文字]]で表記した[[公開テキスト指示シーケンス]]も使われました。

[109] 
[[DEC]]製品で[[指示シーケンス]]の [CODE(charname)@en[ESC]]
以外の部分を独自の制御コマンドの一部に使った例がありました。
[SEE[ [[DECの文字コード]] ]]

[123] 
[[Arena wchar]] は上位ビットに[[終端バイト]]等を、
下位ビットにその[[符号化文字集合]]の[[ビット組合せ]]を使っていました。

[90] 
[[中間バイト]]と[[終端バイト]]は
[[ISO 2022 wchar_t encoding]]
案で使われました。

[124] [CITE@en[registry - xorg/doc/xorg-docs - X.org xorg-docs documentation. (mirrored from https://gitlab.freedesktop.org/xorg/doc/xorg-docs)]], [TIME[2022-05-05T05:03:11.000Z]], [TIME[2022-05-05T09:28:33.889Z]] <https://cgit.freedesktop.org/xorg/doc/xorg-docs/tree/registry#n1224>

[147] 
[[MARC]] の[[用字系識別符号]]は[[指示シーケンス]]を元に決められています。

* 関連

[125] 
[[ISO/IEC 2022]] の符号構造に合致した[[符号化文字集合]]であっても、
公式な[[終端バイト]]が存在しないなどの理由で[[指示シーケンス]]の利用が憚られる場合に、
[CODE(charname)@en[DOCS]] が利用されることがあります。

[148] [[SGR]], [[DECSPPCS]]

[152] [CITE@en[Kamenický encoding - Wikipedia]], [TIME[2025-06-20T17:14:17.000Z]], [TIME[2025-06-22T03:34:44.979Z]] <https://en.wikipedia.org/wiki/Kamenick%C3%BD_encoding>

>[SNIP[]]The optional ROM #2 "East Europe" included this encoding, invokable via escape sequence [CODE[ESC R (n)]] with (n) = 23. [SNIP[]]

[153] 
[CITE@en[CWI-2 - Wikipedia]], [TIME[2025-06-17T21:16:19.000Z]], [TIME[2025-06-22T03:38:56.773Z]] <https://en.wikipedia.org/wiki/CWI-2>

>[SNIP[]]Named "CWI" the optional ROM #7 "Hungaria" included this encoding, invokable via escape sequence [CODE[ESC R (n)]] with (n) = 21.[SNIP[]]

* メモ

