8F

指示 (ISO/IEC 2022)

[51] ISO/IEC 2022 において文字集合を利用可能な状態に指定することを指 (し) 示 (じ) (designate) といいます。

仕様書

符号化文字集合の指示

[2]

指示する (to designate)
文字集合を、即座に又は更に他の制御機能が出現してから、 所定の方法で表現できるように指定する。 JIS X 0202:1998 4.11

[5]

備考 図形文字集合を G0, G1, G2 及び G3 の各要素として識別すること、及び制御機能集合を C0 及び C1 の各要素として識別することを、この規格では指示という。 集合の指示は、指示機能 (7.4 参照) 又は他の方法 (10.2 参照) で行ってよい。 JIS X 0202:1998 表1

[52] 指示する (to designate) 文字集合を、即座にまたは更に他の 制御機能が出現してから、所定の方法で表現出来るように 指定すること。 JIS X 0211-1994 4.2.31


[53] 指示と呼び出しは混同されがちですが、 異なる2つの概念です。

[4] 指示によって暗黙のうちに呼出しが起こる場合もあります。

指示用エスケープシーケンス

[6] 文字集合を指示するエスケープ・シーケンスを、 指 (し) 示 (じ) シーケンス (designate sequence) といいます。


[54] CZD, C1D は、制御文字集合をそれぞれ C0, C1 に指示すると同時に、 CL, CR or ESC Fe に呼び出します。


[55] GnDm, GnDMm は、図形文字集合をそれぞれ G0 〜 G3 に指示します。シフト状態によってはこれが同時に GL や GR への呼び出しとなることもあります。 SELECT-DRCS 指示子を併用可能です。

  1. GZD4 = ESC %x28 [ ( I-R / DRCS ) ] F ;; G0-DESIGNATE 94-SET
  2. G1D4 = ESC %x29 [ ( I-R / DRCS ) ] F ;; G1-DESIGNATE 94-SET
  3. G2D4 = ESC %x2A [ ( I-R / DRCS ) ] F ;; G2-DESIGNATE 94-SET
  4. G3D4 = ESC %x2B [ ( I-R / DRCS ) ] F ;; G3-DESIGNATE 94-SET
  5. G1D6 = ESC %x2D [ ( I-R / DRCS ) ] F ;; G1-DESIGNATE 96-SET
  6. G2D6 = ESC %x2E [ ( I-R / DRCS ) ] F ;; G2-DESIGNATE 96-SET
  7. G3D6 = ESC %x2F [ ( I-R / DRCS ) ] F ;; G3-DESIGNATE 96-SET
  8. GZDM4 = ESC %x24 %x28 [ ( I-R / DRCS ) ] F / old-GZDM4 ;; G0-DESIGNATE MULTIBYTE 94-SET
  9. old-GZDM4 = ESC %x24 %x40-42 ;; See ISO/IEC2022 1994 NOTE 46
  10. G1DM4 = ESC %x24 %x29 [ ( I-R / DRCS ) ] F ;; G1-DESIGNATE MULTIBYTE 94-SET
  11. G2DM4 = ESC %x24 %x2A [ ( I-R / DRCS ) ] F ;; G2-DESIGNATE MULTIBYTE 94-SET
  12. G3DM4 = ESC %x24 %x2B [ ( I-R / DRCS ) ] F ;; G3-DESIGNATE MULTIBYTE 94-SET
  13. G1DM6 = ESC %x24 %x2D [ ( I-R / DRCS ) ] F ;; G1-DESIGNATE MULTIBYTE 96-SET
  14. G2DM6 = ESC %x24 %x2E [ ( I-R / DRCS ) ] F ;; G2-DESIGNATE MULTIBYTE 96-SET
  15. G3DM6 = ESC %x24 %x2F [ ( I-R / DRCS ) ] F ;; G3-DESIGNATE MULTIBYTE 96-SET
  1. F = Fp / Fs
  2. Fs = %x40-7D / EMPTY-SET
  3. EMPTY-SET = %x7E

[1] なお、ISO-IR の登録について、 エスケープシーケンスが登録されたとみなすのか、 終端バイトが登録されたとみなすのか、 という仕様の解釈論の問題があります。 ISO-IR

[84] エスケープシーケンス登録説に立つと、古い登録はその後改訂されていないので、 旧仕様時代に登録された終端バイトは新しい指示シーケンス構文が使えないことになってしまいます。 普通この解釈は否定されています。

[140] 例えば >>139 の時代は G0 指示と G1 指示の2つだけしか登録簿には書かれていませんが、 他に指示できないとは解されていません。


[110] DECの文字コードの古い仕様で 94集合の指示シーケンス + 私用終端バイトで 942集合を指示できる例があります。

[108] その他に VT 等では非標準のエスケープシーケンスによる指示が数種類あります。 VT

追加分の中間バイト

[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 に登録される終端バイトに関するものです。

図形文字のバイト数

[72] 指示シーケンスは指示する文字集合に属する文字のバイト数によって変わります。

[73] C0, C1 は常に1バイトです。

[74] 図形文字集合は 8F - 15F のエスケープシーケンスを使うと1バイト (94集合、96集合) です。

[75] 図形文字集合は 4F のエスケープシーケンス GnDMm を使うと2バイト以上 (複数バイト集合) です。

[56] GnDMm では、何バイトの文字集合かが F の値で定まります。 (ISO/IEC2022 1994 14.3.3)

Fバイト数
03/*2以上
04/*2
05/*2
06/*3
07/*4以上

[76] 登録済みの複数バイト集合のエスケープシーケンスは終端バイト F によって2バイト集合、3バイト集合を区別できます。

[77] ところが4バイト以上は「以上」でまとめられてしまっていて、 終端バイト F だけを見ても何バイトかわかりません。

[78] 私用の終端バイトも2バイト「以上」とされていて、 終端バイト F だけを見ても何バイトかわかりません。

[79] この仕様のために、未知の終端バイトが出現したとき、 >>77、>>78 の終端バイトだったとき、 それ以後の符号化文字データ要素を正しく解釈できるとは限らなくなってしまいます。

[80] バイト数が偶数か奇数かもわかりませんから、 未知の終端バイトが出現したら、以後未知の1バイト集合と同じように処理するのがいいでしょうか。

[81] 単独シフトが使われてしまうと、その直後の文字が何バイトか確定できない以上、 その続きも未知の1バイト集合として処理せざるを得なくなります。

[106] DRCS にも終端バイトによるバイト数の規定が適用されると思われます。 DRCS

[107] 空集合 7/14 にも適用されるのかは不明です。 空集合 (ISO/IEC 2022)

[101] 初期の ISO 2022 は2バイト以上というだけで、 Ft の制約もなかったようです。

1F型エスケープシーケンス

[14] 1F 型エスケープ・シーケンスは、 符号化制御機能基本集合 (C0 集合) の指示 (C0-DESIGNATE) に使われます。

[15] 仕様書:

  • JIS X 0202:1998
    • 表 3.b nF 型エスケープ・シーケンス及び対応機能

[16] 構文:

2F型エスケープシーケンス

[17] 2F 型エスケープ・シーケンスは、 符号化制御機能補助集合 (C1 集合) の指示 (C1-DESIGNATE) に使われます。

[18] 仕様書:

  • JIS X 0202:1998
    • 表 3.b nF 型エスケープ・シーケンス及び対応機能

[19] 構文:

4F型エスケープシーケンス

[67] 4F 型エスケープ・シーケンスは、 複数バイト集合の指示に使われます。

[68] 仕様書:

  • JIS X 0202:1998
    • 表 3.b nF 型エスケープ・シーケンス及び対応機能
    • 13.2.3 4F 型のエスケープ・シーケンス

[69] 第2中間バイトの割当て:

第1中間バイト第2中間バイト機能
02/0402/0894n文字集合を G0 に指示 (G0-DESIGNATE MULTIBYTE 94-SET)
02/0402/0994n文字集合を G1 に指示 (G1-DESIGNATE MULTIBYTE 94-SET)
02/0402/1094n文字集合を G2 に指示 (G2-DESIGNATE MULTIBYTE 94-SET)
02/0402/1194n文字集合を G3 に指示 (G3-DESIGNATE MULTIBYTE 94-SET)
02/0402/1294n文字集合を G0 に指示 (G0-DESIGNATE MULTIBYTE 96-SET)
02/0402/1394n文字集合を G1 に指示 (G1-DESIGNATE MULTIBYTE 96-SET)
02/0402/1494n文字集合を G2 に指示 (G2-DESIGNATE MULTIBYTE 96-SET)
02/0402/1594n文字集合を G3 に指示 (G3-DESIGNATE MULTIBYTE 96-SET)

ISO/IEC 2022 では G0-DESIGNATE MULTIBYTE 96-SET はありません。

[70] 構文:

[126] SoftBank絵文字の独自仕様のエスケープシーケンス (シフトJISやISO-2022-JPと混在させる) は、

形式。 F は 4/5 (E) 4/6 (F) 4/7 (G) 4/15 (O) 5/0 (P) 5/1 (Q) の6種類。 このエスケープシーケンスの後に利用できるのは94集合よりも小さな1バイト符号。 SoftBank絵文字

[127] 偶然にも ISO-IR に登録された旧型 G0 エスケープシーケンスとは衝突していないので同時実装はぎりぎり可能。

8F型エスケープシーケンス

[20] 8F 型エスケープ・シーケンスは、 94文字集合の G0 への指示 (G0-DESIGNATE 94-SET) に使われます。

[21] 仕様書:

  • JIS X 0202:1998
    • 表 3.b nF 型エスケープ・シーケンス及び対応機能

[22] 構文:

9F型エスケープシーケンス

[23] 9F 型エスケープ・シーケンスは、 94文字集合の G1 への指示 (G1-DESIGNATE 94-SET) に使われます。

[24] 仕様書:

  • JIS X 0202:1998
    • 表 3.b nF 型エスケープ・シーケンス及び対応機能

[25] 構文:

10F型エスケープシーケンス

[26] 10F 型エスケープ・シーケンスは、 94文字集合の G2 への指示 (G2-DESIGNATE 94-SET) に使われます。

[27] 仕様書:

  • JIS X 0202:1998
    • 表 3.b nF 型エスケープ・シーケンス及び対応機能

[28] 構文:

11F型エスケープシーケンス

[29] 11F 型エスケープ・シーケンスは、 94文字集合の G3 への指示 (G3-DESIGNATE 94-SET) に使われます。

[30] 仕様書:

  • JIS X 0202:1998
    • 表 3.b nF 型エスケープ・シーケンス及び対応機能

[31] 構文:

12F型エスケープシーケンス

[38] 12F 型エスケープ・シーケンスは、 96文字集合の G0 への指示 (G0-DESIGNATE 96-SET) に使われます。

[39] ISO/IEC 2022 ではこの型は将来の拡張のために予約されています。

[40] 仕様書:

  • JIS X 0202:1998
    • 表 3.b nF 型エスケープ・シーケンス及び対応機能

[41] 構文:

13F型エスケープシーケンス

[42] 13F 型エスケープ・シーケンスは、 96文字集合の G1 への指示 (G1-DESIGNATE 96-SET) に使われます。

[43] 仕様書:

  • JIS X 0202:1998
    • 表 3.b nF 型エスケープ・シーケンス及び対応機能

[44] 構文:

14F型エスケープシーケンス

[45] 14F 型エスケープ・シーケンスは、 96文字集合の G2 への指示 (G2-DESIGNATE 96-SET) に使われます。

[46] 仕様書:

  • JIS X 0202:1998
    • 表 3.b nF 型エスケープ・シーケンス及び対応機能

[47] 構文:

15F型エスケープシーケンス

[48] 15F 型エスケープ・シーケンスは、 96文字集合の G3 への指示 (G3-DESIGNATE 96-SET) に使われます。

[49] 仕様書:

  • JIS X 0202:1998
    • 表 3.b nF 型エスケープ・シーケンス及び対応機能

[50] 構文:

改訂番号

[122] 制御文字集合、図形文字集合のどちらの場合も、 指示シーケンスの直前に文字集合の改訂 (更新) を表す文字集合改訂番号を指定する IRR を使えます。 IRR

[142] なお、 IRR 導入前に改訂番号なし、終端バイトそのままで ISO-IR 登録簿の文字集合が変更された事例がいくつかあります。 ISO-IR

DRCS: 動的再指定可能文字集合

DRCS

94系文字集合の指示

[137] 94集合 6/4 は図形文字が新規追加されて上書き登録されました。 IRR

[115] JIS X 0201 の片仮名用図形文字集合とラテン文字用図形文字集合は ISO-IR に正式に登録される前に終端バイト 4/7 (G), 4/8 (H) が使われ始めましたが、他の図形文字集合が先に登録されてしまい、 正式には 4/9 (I), 4/10 (J) になりました。 >>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 の実装や Encoding Standard の iso-2022-jp はこれに対応していません。

[136] KS X 1002 は942集合の終端バイト 4/5, 4/6 を独自の意味で使っています。

[149] Very old fj.kanji discussion 13/622, , https://ie.u-ryukyu.ac.jp/~kono/fj/fj.kanji/13.html

しかしこれは世の中では間違ってESC( Hと伝わっている。それはJIS C6228-1975が制定されたとき、 JIS C6220の片仮名とロー マ字のFはそれぞれ4/7と4/8になると予想してそう記述してしまったか らである。制定のときには4/6までしかきまっていなかったからだ。一方片 仮名とローマ字のFを貰うべく登録手続きをしたのだが、その頃同じく登録手 続き中であったスウェーデン基本コードとスウェーデン名前用コードが4/7 と4/8を貰い、日本の片仮名とローマ字は4/9と4/10になった。そこ でJIS C6228-1975には正誤表をつけて頒布したが、 このことは 徹底しなかった。 JIS C6228-1984の解15ページには正しい表 がでているが、JISハンドブックには解説がないからそれだけ見たのではわ からない。


[91] ISO-IR に登録されている94文字集合の終端バイトのうち、 次のものは VT や DEC-PPL で独自の意味で使われており、用法が衝突しています。 VT, DEC-PPL

[95] VT では、 ESC 2/8 3/1, ESC 2/9 3/1, ESC 2/9 4/2 が指示とは違う意味で使われることがありました。 VT, Fp


[3] ARIB STD-B24 は終端バイト 07/00 を1バイトの 「マクロ符号」に使っています。マクロ符号はマクロ文で構成される94集合です。 マクロ文は、図形文字や制御文字の列を表すものです。 Japanese Basic Hand-printed Graphic Set for OCR JIS C6229-1984 と衝突していますが...

ARIB STD-B24

[129] ESC 7/0 の予約と ISO-IR については PCD 参照。

[134] NAPLPS は94集合用指示シーケンスの終端バイト 5/7, 7/10, 7/11, 7/13, 2/0 7/10, 2/0 7/11 を96集合用に使っていました。後に 96集合用指示シーケンスに変更されました。 T.101, >>135

5/7, 7/10, 7/11, 7/13 のいずれも ISO-IR では無関係の図形文字集合が登録されています。


[141] NATS は94集合で 2/0 の空白の意味も定めています。 空白文字

[145] DRCSTerm は 94集合用指示シーケンスで DRCS 96集合を表しています。 DRCS, DRCSTerm

3つの 942 文字集合の指示の例外規定

[86] 94n集合は ESC 2/4 2/8 F で G0 に指示できますが、過去の版の ISO 2022 では ESC 2/4 F と定められていました。

  • ESC 02/04 (04/00 / 04/01 / 04/02) ;; Ft の文字集合を G0 に指示

[87] 古い ISO 2022 では 94n文字集合は 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 に適合しません。 これらは常に 2/8 を含めた長い方のみを使うと定めています。 ctext, ISO-2022-ESC B

[138] ISO/IEC 2022指示シーケンスの多くに対応している実装の多くは、 2/8 の有無に関わらず読み込むことができるようです。 ISO-2022-JP 専用の実装など限定的な実装は読み込みに対応していないことが多いようです。

[89] ESC 2/4 Fp (私用) や ESC 2/4 7/14 (空集合) は昔は使えたのでしょうか? 現行仕様上は認められないようにみえますが。

[133] MARC-8 は旧仕様に基づいていました。 943集合 EACC のための私用終端バイト 3/1 は G0 のとき ESC 2/4 3/1 と表すように読めます。 >>130

[100] ESC 2/4 Fp は初期の ISO 2022 では認められていたようです。 (当時は空集合はなかった。)

[105] 94n集合が G0 だけでなく G1, G2, G3 に指示できるようになったばかりの頃の ISO 2022 では、 G0 だけ ESC 2/4 F を使うと定められていました。 (ESC 2/4 2/9 F などはあったのに、 ESC 2/4 2/8 F だけありませんでした.) >>103

[121] 3つの集合だけ特別扱いなのは、 ISO/IEC 2022 にそう規定されているからです。 ISO-IR に登録されたエスケープシーケンスがそうであることに根拠を求める説もありましたが、 その説を取ると他に矛盾が生じてきます (>>84)。

[144] T.61 では DRCS でも 2/8 なしで G0 に指示できます。 >>143

96系文字集合の指示

[37] 96文字集合は 2/12, 2/13, 2/14, 2/15 でそれぞれ G0, G1, G2, G3 に指示できます。

[62] このうち 2/12 は現在の ISO/IEC 2022 で規定されていません (>>39) が、 一部で実装されています >>85。

[63] 元々96文字集合は右側に呼び出しする前提で作られた経緯があるようで、 G0 に指示するのは適切でないと考えられていたらしいです。

[64] 96文字集合が左側に呼び出しされると、 2/0 や 7/15 が SP や DEL でなく96文字集合の文字を表すことになります。 それが G0 への指示が忌避される一因だといいます。

[65] 一方で固定シフトや単独シフトを使って G1, G2, G3 が左側に呼び出しされることは ISO/IEC 2022 も認めています。それなら G0 だけ避ける意味もなく、 一貫しているほうがいいだろうと 2/12 を実装することもあったようです。

[71] 同じ理由で96n文字集合を指示する 2/4 2/12 も ISO/IEC 2022 にはないのですが、一部で実装されています >>85。


[98] 実は96集合がなかった初期の ISO 2022 では ESC 2/11 F >>97, >>102, ESC 2/12 F >>97, >>102, ESC 2/13 F >>102, ESC 2/14 F >>102 も94集合用でした。

[104] 複数バイト集合も、 ESC 2/4 2/11 F, ESC 2/4 2/12 F, ESC 2/4 2/13 F, ESC 2/4 2/14 F が94n集合用とされた時代がありました。 >>103

[99] 2/11 - 2/14 を使って ISO-IR に登録された94集合, 94n集合はありませんでした。 Fp は当時から存在したので、 私用図形文字集合が使われなかったとも断言できません。 左側に呼び出ししたときの 2/10 と 7/15 の解釈が旧仕様と新仕様で非互換に変化しています。

[111] DECの文字コードの一種では、96集合がいくつかあるうちの私用終端バイト 3/12 User Preference Supplemental は互換性のため94集合が割り当てられているとされます。 Fp

[131] Videotex の一部仕様や仕様書の記述には当時の規定の影響がみられます。 Videotex

[132] MARC-8 の仕様書の記述には当時の規定の影響がみられます。 >>140


[34] ESC <I> 5/7 は ISO-IR で、 CCITT が以前に使用していたから割り当てないと書いてあります。 (未登録のまま使ってたってことですか?)

[128] ESC I 5/7 は、 NAPLPS, T.101 で使います。これが公式に登録されずに、その終端バイトには割り当てないことになったのは、その集合が図形文字集合ではなかったからでしょう。

[135] NAPLPS は96集合用の指示シーケンスの終端バイト 5/7, 7/13, 7/10, 7/11, 2/0 7/10, 2/0 7/11 を使っていました。 T.101, >>134

7/13 は ISO-IR に登録されました。

5/7 は ISO-IR に登録されていませんが、予約されています。

7/10, 7/11 は ISO-IR に登録されていません。 (幸い、他に登録されていません。) DRCS という扱いに変更されて、 中間バイト 2/0 を伴う仕様に変わりました。


[95] VT では、 ESC 2/15 F が指示とは違う意味で使われていました。 VT

初期状態

[8] ISO/IEC 2022 に基づく符号体系は普通は初期状態でいくつかの符号化文字集合を指示した状態と定義されています。 例えば日本語EUCでは G0 に ASCII が、 G1 に JIS X 0208 が指示された状態となっています。

[9] ISO/IEC 2022 単体において、指示がないときの初期状態がどうなっているのか、 あまり明確ではありません。 空集合が指示されている場合のような、 それに属するどのビット組合せも使用禁止の状態と解するべきなのでしょうか。

[10] なおC0集合については、固定符号化文字 ESCAPE のみは始めから利用可能な状態と規定されています。 固定符号化文字

[11] 関連: 呼び出し

文脈

[7] SGML では、これをASCII文字で表記した公開テキスト指示シーケンスも使われました。

[109] DEC製品で指示シーケンスの ESC 以外の部分を独自の制御コマンドの一部に使った例がありました。 DECの文字コード

[123] Arena wchar は上位ビットに終端バイト等を、 下位ビットにその符号化文字集合のビット組合せを使っていました。

[90] 中間バイトと終端バイトは ISO 2022 wchar_t encoding 案で使われました。

[124] registry - xorg/doc/xorg-docs - X.org xorg-docs documentation. (mirrored from https://gitlab.freedesktop.org/xorg/doc/xorg-docs), , https://cgit.freedesktop.org/xorg/doc/xorg-docs/tree/registry#n1224

[147] MARC の用字系識別符号は指示シーケンスを元に決められています。

関連

[125] ISO/IEC 2022 の符号構造に合致した符号化文字集合であっても、 公式な終端バイトが存在しないなどの理由で指示シーケンスの利用が憚られる場合に、 DOCS が利用されることがあります。

[148] SGR, DECSPPCS

[152] Kamenický encoding - Wikipedia, , https://en.wikipedia.org/wiki/Kamenick%C3%BD_encoding

The optional ROM #2 "East Europe" included this encoding, invokable via escape sequence ESC R (n) with (n) = 23.

[153] CWI-2 - Wikipedia, , https://en.wikipedia.org/wiki/CWI-2

Named "CWI" the optional ROM #7 "Hungaria" included this encoding, invokable via escape sequence ESC R (n) with (n) = 21.

メモ