ISO/IEC 2022

読み:アイエスオウにーまるにーにー
外語:ISO/IEC 2022

複数の言語文字(文字集合)を切り替えて利用するための符号拡張方法。多種ある文字コードを任意に切り替えて使う符号化法を規定する。

7ビットで文字を表現する7単位符号の拡張と、8ビットを使って文字を表現する8単位符号の拡張があり、日本ではJIS X 0202が対応する。

当初はシンプルな仕様であったが、この策定時期に日本語のJIS X 0208などが重なったこともあり、これらの仕様を混ぜるに従って奇々怪々な仕様へと変貌を遂げた。

こうして現在に至ったISO/IEC 2022の仕様は大変複雑怪奇であり、仕様書をくまなく読まないと全貌が掴めないものになっている。

略史

  • 1973(昭和48)年7月1日: ISO 2022制定 (ISO 2022:1973、対応邦訳JIS C 6228:1975)
  • 1982(昭和57)年12月15日: ISO 2022改正 (ISO 2022:1982、対応邦訳JIS C 6228:1984→JIS X 0202:1984)
  • 1986(昭和61)年5月1日: ISO 2022改正 (ISO 2022:1986、対応邦訳JIS X 0202:1991)
  • 1994(平成6)年: ISO 2022改正、ISO/IEC 2022に改名 (ISO/IEC 2022:1994、対応邦訳JIS X 0202:1998)

基本的なメカニズム

ISO-2022はASCIIとの互換性を高めるため、ASCIIの7ビットコードを拡張した形式を取る。

8ビットある領域(図形文字表)は4つの領域に分けられ、次のようにする。

  • C0(0/0〜1/15)
  • GL(2/0〜7/15)
  • C1(8/0〜9/15)
  • GR(10/0〜15/15)

そして別に4つのバッファ(G0、G1、G2、G3)があり、それぞれに任意の文字集合を指示(designate)あるいは割り当て(assign)ができ、割り当てられたバッファは上のGLまたはGRに呼び出す(invoke)ことで利用出来る。

初期状態ではG0がGLに、G1がGRに呼び出されている。

具体的なメカニズム

まず、いくつかの文字集合表の文字を混在して使うためには、文字集合表を適時切り替えて使う必要がある。

そのためには、これからどの文字集合表を使うかを指定しなければならないが、これは一般的に二段構えのしくみを取っている。

バッファに符号を指示した後は、そのバッファをGLまたはGRに割り当てる必要がある。これらは全て、エスケープシーケンスで行なわれる。

この符号列は、エスケープで始まり、中間文字を挟み、最後は終端文字で終わる。つまり、ESC<0個以上の中間文字><終端文字>となる。

中間文字は、2/0〜2/15の範囲とされ、必要に応じて挿入される。

終端文字は俗にFや<F>や(F)と書かれ、範囲は3/0〜7/15とされている。そのうち3/0〜3/15は情報交換当事者間の合意がある場合にのみ使えるプライベート文字集合用、4/0〜7/15はECMAにより割り当てが行なわれる符号である。

但し、ASCIIとの互換性を意識した関係から7/14〜7/15は使用せずに保留されている。

まず、いくつかの文字集合表の文字を混在して使うためには、文字集合表を適時切り替えて使う必要がある。そのためには、これからどの文字集合表を使うかを指定しなければならないが、これは一般的に二段構えのしくみを取っている。

7単位環境 図解
7単位環境 図解

使う図形文字表とバッファ

7単位環境ではC0およびGLのみを使う。つまり左だけしか使わない。

バッファはG0〜G3まで4つ用意され、それぞれ任意の文字集合表を割り当てておくことができる。一度に利用できるのはそのうちの一つである。

文字集合表は二種類ある。

  • 2/1〜7/14の範囲で定義されている94図形文字集合
  • 2/0〜7/15の範囲で定義されている96図形文字集合

94図形文字集合では2/0と7/15はそれぞれ空白とDEL(削除の制御文字)として固定的に使用される。

また96図形文字集合はGR領域(後述)に限定されるためバッファG0にマッピングすることはできない。つまり7単位環境で利用するためには、後述するLocking Shiftなどの手法が必要である。

実例

例えば、JIS X 0201ローマ字を指示する終端文字は4/10である。実際にはESC 2/8 4/10でG0に呼び出せる。

なお、JIS X 0208-1983をG0に指示するにはESC 2/4 2/8 4/2となるはずだが、歴史的事情から終端文字が4/0〜4/2の場合はESC 2/4 <F>を使うという例外があり、実際はESC 2/4 4/2となる。これに対応するASCII文字で表示すると ESC $ B となる。

次に、実際に表示処理を行なうためには、バッファに選び出された図形文字集合を7単位の図形文字表に持ち込む必要がある。

バッファから呼び出すには、G0からはSI(0/15)、G1からはSO(0/14)、G2からは1/11 6/14、G3からは1/11 6/15を使用する。

実例として、G0にJIS X 0201ローマ字を、G1にJIS X 0201カナ(通称半角カナ)を指示し、G0をGL、G1をGRに呼び出したとする。ここでSIによってGLを指示すると、4/1 4/2 4/3はローマ字の "ABC" を、SOによってGRを指示するとカナの "アイウ" を意味することになる。

このようにして、SI/SOで両者を切り換えながら使うことが可能となる。

以上の拡張法は、1バイトのうち下位7ビットだけが使われる7単位符号拡張法で、ASCIIとの互換性と親和性が高い。一方、最上位ビットも使った8単位符号拡張法もある。

8単位符号拡張法は、7単位と大差は無いが、図形文字表が左と右の二つある点が異なる。以降、左をGL、右をGRと呼ぶ。

8単位環境 図解
8単位環境 図解

使う図形文字表とバッファ

指示するためのシーケンスは、左の図形文字表に対しては7単位の場合と全く同じである。そして右の図形文字表に指示するための符号が新たに用意される。

各バッファから右の図形文字表(GR)に呼び出すには、G1からは1/11 7/14、G2からは1/11 7/13、G3からは1/11 7/12を使用する。G0を右の文字集合を割り当てることはできない。この制御文字は以後再び切り換えるまで効果が続くためLocking Shift(ロッキング・シフト)と呼ばれる。

8単位符号拡張法では、左の図形文字表に呼び出された文字は7単位と同様にそのままの符号で使用する。右の図形文字表に呼び出された文字を使うには符号の最上位ビットを1に変えて表わす。

エスケープシーケンスの仕様

さて、こうすることでG0〜G3のバッファのうち最大2バッファを同時に利用することができるが、状況によっては3ないし4つ全てを利用したい場合も出てくる。

しかし例え1文字だけの場合でもいちいちエスケープで再呼び出しするのは冗長だし不便である。そこで、次の1文字だけをG2またはG3から呼び出す制御文字が用意されている。これは前述のLocking Shiftに対してSingle Shift(シングル・シフト)と呼ばれている。

具体的にはSS2(8/14)およびSS3(8/15)という機能文字を使うと、その次の1文字分だけ、右の図形文字表にG2やG3から呼び出すことができる。

8ビット範囲を7ビット互換条件で使う

この8単位符号の拡張法は1バイト中の8ビット全てを使う。8/0〜9/15の領域はC1領域と呼ばれ、0/0〜1/15のC0領域とは別の機能文字として使われる。

ところで上で述べたSS2(8/14)およびSS3(8/15)はC1領域の制御文字であるため、これでは7単位系で表現できない。そこで代用の方法を用いる。

7単位系でC1制御文字を表現するには、C1領域8/0〜9/15の代わりにエスケープシーケンス1/11 4/0〜5/15が使える。SS2/SS3は1/11 4/14と1/11 4/15で表現可能である。

実例

実例として、G1にJIS X 0208、G3にJIS X 0212補助漢字を指示し、G1をGRに呼び出したとする。ここでそのままGRを用いればJIS X 0208、SS3を使うと1文字のみGRがG3(JIS X 0212)となり、補助漢字をたまに用いつつ、普段はJIS X 0208として文書を作成できる。ちなみにこれはEUC-JPと呼ばれている方法でもある。

森鷗外の鷗を補助漢字にある正字で書く例
森鷗外の鷗を補助漢字にある正字で書く例

このように、図形文字集合をバッファに指示し、次にそれを図形文字表に呼び出して使う、というのが正式であるが、それが面倒だという場合のために、特定のバッファを図形文字表に直結しておき、指示しただけで自動的に呼び出され即使用できるようにする手段も用意されている。

そのためには使う前に "アナウンサ" と呼ばれる符号列を送る。例えば1/11 2/0 4/1というアナウンサを送った場合、バッファはG0しか使わないが、そのかわりG0へ指示したものはすぐ図形文字表へ呼び出すという意味になる。

更に、情報交換当事者間の合意があればアナウンサさえも省略してよいことになっており、ISO-2022-JPなどでは、初期状態としてG0にASCII、さらに1/11 2/0 4/1というアナウンサが先行していると考え、情報交換当事者間の合意があったものとしてそれを略している。

特徴

エスケープシーケンスは、ESC(1/11)に始まり、0字以上の中間文字を挟み、終端文字に終わる。従って長さはまちまちである。

2文字のエスケープシーケンス

2文字のエスケープシーケンスは、ESC <F> という形式である。<F>が終端文字である。

終端文字は3種類ある。

  • ESC Fp (Fp = 3/0〜3/15) 私用制御機能
  • ESC Fe (Fe = 4/0〜5/15) C1制御機能 (8単位符号の8/0〜9/15に対応する)
  • ESC Fs (Fs = 6/0〜7/14) 国際登録 追加制御機能

それぞれ、ESC Fpシーケンス、ESC Feシーケンス、ESC Fsシーケンス、と呼ばれる。

3文字以上のエスケープシーケンス

3文字以上のエスケープシーケンスは、ESC <I> … <F> という形式である。<I>が中間文字、<F>が終端文字である。

終端文字は2種類ある。

  • ESC <I> … Fp (<I> = 2/0〜2/15、Fp = 3/0〜3/15) 私用
  • ESC <I> … Ft (<I> = 2/0〜2/15、Fp = 4/0〜7/14) 規格用

中間文字

エスケープ文字と終端文字の中間に置かれる文字を中間文字といい、終端文字<F>の働きを制御する。

中間文字は複数個連続することがあり、その文字は2/0〜2/15である。

最終的な中間文字が2/8〜2/15の場合が文字集合の指示であり、それ以外は特殊な機能を表わすのに使われている。

また中間文字2/4(多バイト文字集合)を使用した場合、終端文字により符号長を認識する。この時の終端文字が4/0〜5/15で2バイト、6/0〜6/15で3バイト、7/0〜7/13で4バイトである。

文字コード説明
 2/0アナウンサ
!2/1拡張された文字集合を表わす(第2中間文字)
$2/4多バイト文字集合を表わす(94×94または96×96)
%2/5ISO-2022以外の文字集合を表わす
&2/6更新シーケンス
(2/8G0に終端文字<F>の94文字集合を指示する
)2/9G1に終端文字<F>の94文字集合を指示する
*2/10G2に終端文字<F>の94文字集合を指示する
+2/11G3に終端文字<F>の94文字集合を指示する
-2/13G1に終端文字<F>の96文字集合を指示する
.2/14G2に終端文字<F>の96文字集合を指示する
/2/15G3に終端文字<F>の96文字集合を指示する

指示エスケープ

文字集合指示先エスケープ
1バイト94図形文字集合G01/11 2/8 <F>ESC ( <F>
G11/11 2/9 <F>ESC ) <F>
G21/11 2/10 <F>ESC * <F>
G31/11 2/11 <F>ESC + <F>
1バイト96図形文字集合G11/11 2/13 <F>ESC - <F>
G21/11 2/14 <F>ESC . <F>
G31/11 2/15 <F>ESC / <F>
94n図形文字集合G01/11 2/4 2/8 <F>ESC $ ( <F>
G11/11 2/4 2/9 <F>ESC $ ) <F>
G21/11 2/4 2/10 <F>ESC $ * <F>
G31/11 2/4 2/11 <F>ESC $ + <F>
96n図形文字集合G11/11 2/4 2/13 <F>ESC $ - <F>
G21/11 2/4 2/14 <F>ESC $ . <F>
G31/11 2/4 2/15 <F>ESC $ / <F>
他の符号系1/11 2/5(2/15)<F>ESC ( <F>

1バイト領域94図形文字集合

番号図形文字集合終端文字ASCII例
2ISO-646IRV:19834/0ESC ( @
4ISO-646英国 (BS 4730)4/1ESC ( A
6ISO-646米国 (ASCII) (X.3.4-1968)4/2ESC ( B
8-1NATS 基本(フィンランド・スウェーデン)4/3ESC ( C
8-2NATS 追加(フィンランド・スウェーデン)4/4ESC ( D
9-1NATS 基本(デンマーク・ノルウェー)4/5ESC ( E
9-2NATS 追加(デンマーク・ノルウェー)4/6ESC ( F
10ISO-646スウェーデン基本文字4/7ESC ( G
11ISO-646スウェーデン名前文字4/8ESC ( H
13JIS X 0201片仮名 (通称半角カナ)4/9ESC ( I
14JIS X 0201ローマ字4/10ESC ( J
21ISO-646 ドイツ(DIN 66 003)4/11ESC ( K
16ISO-646 ポルトガル(ECMA)4/12ESC ( L
39アフリカ語文字集合(DIN 31625, ISO 6438)4/13ESC ( M
37基本キリル文字集合(ECMA, ISO 5427:1981)4/14ESC ( N
38書誌用拡張図形文字集合(DIN 31624)4/15ESC ( O
53書誌用拡張図形文字集合(ISO 5426)5/0ESC ( P
54拡張キリル文字集合(ISO 5427:1981)5/1ESC ( Q
25ISO-646フランス(NF Z 62-010-1973) [廃止]5/2ESC ( R
55書誌用ギリシャ文字集合(ISO 5428:1980)5/3ESC ( S
57支那ローマ文字(GB 1988-80)5/4ESC ( T
27ラテン・ギリシャ文字集合(ECMA)5/5ESC ( U
47ビューデータ テレテクスト英国5/6ESC ( V
49INIS IRV サブセット5/7ESC ( W
31書誌用ギリシャ文字集合(ISO 5428:1974)5/8ESC ( X
15ISO-646 イタリア(ECMA) (UNI 0204-70)5/9ESC ( Y
17ISO スペイン(ECMA)5/10ESC ( Z
18ギリシャ文字集合(ECMA)5/11ESC ( [
19ラテン・ギリシャ文字集合(ECMA)5/12ESC ( \
50INIS 非標準拡張5/13ESC ( ]
51INIS キリル拡張5/14ESC ( ^
59アラビア文字集合(CODAR-U)5/15ESC ( _
60ISO-646 ノルウェー(NS 4551 Version 1)6/0ESC ( `
61ノルウェー (NS 4551 Version 2) [廃止]6/1ESC ( a
70ビデオテックス追加集合(CCITT)6/2ESC ( b
71ビデオテックス Mosaic 第2追加(CCITT)6/3ESC ( c
72ビデオテックス Mosaic 第3追加(CCITT)6/4ESC ( d
68APL文字集合6/5ESC ( e
69ISO-646 フランス(NF Z 62-010-1982)6/6ESC ( f
84ISO-646 ポルトガル(ECMA)6/7ESC ( g
85ISO-646 スペイン(ECMA)6/8ESC ( h
86ISO-646 ハンガリー(MSZ 7795/3)6/9ESC ( i
88ギリシャ文字集合(ELOT) [廃止]6/10ESC ( j
89アラビア(ASMO 449,ISO 9036)6/11ESC ( k
90ISO 6937/2 補助集合6/12ESC ( l
91OCR-A図形文字集合(JIS C 6229:1984) [廃止]6/13ESC ( m
92OCR-B図形文字(JIS C 6229 OCR-B) [廃止]6/14ESC ( n
93OCR-B追加図形文字集合(JIS C 6229) [廃止]6/15ESC ( o
94OCR用基本手書き図形文字集合(JIS C 6229) [廃止]7/0ESC ( p
95OCR用追加手書き図形文字集合(JIS C 6229) [廃止]7/1ESC ( q
96OCR用片仮名手書き図形文字集合(JIS C 6229)[廃止]7/2ESC ( r
98E13B 図形文字集合(ISO 2033-1983)7/3ESC ( s
99ビデオテックス・テレテクスト [廃止]7/4ESC ( t
102T.61 テレテクスト基本図形文字集合7/5ESC ( u
103T.61 テレテクスト追加図形文字集合7/6ESC ( v
121カナダ図形集合 No.1(CSA Z 243.4-1985)7/7ESC ( w
122カナダ図形集合 No.2(CSA Z 243.4-1985)7/8ESC ( x
137T.101 データ構文 I Mosaic 1 集合7/9ESC ( y
141セルボクロアチア・スベロニアラテン文字7/10ESC ( z
146セルボクロアチアキリル文字(JUS I.B1.003)7/11ESC ( {
128T.101 データ構文 Ⅲ 追加文字集合7/12ESC ( |
147マケドニアキリル文字(JUS I.B1.004)7/13ESC ( }

1バイト領域 第2中間文字2/1の94図形文字集合

番号図形文字集合終端文字ASCII例
150CCITT ギリシャ基本集合4/0ESC ( ! @
151キューバ文字集合(NC 99-10:81)4/1ESC ( ! A
170ISO/IEC 646-1992 invariant 文字集合4/2ESC ( ! B
207アイルランド ゲール語 (I.S. 433:1996)4/3ESC ( ! C
230トルコ語アルファベット (TDS 565)4/4ESC ( ! D
231ANSI/NISO Z39.47 (ANSEL)4/5ESC ( ! E
232トルコ語アルファベット (TDS 616-2003)4/6ESC ( ! F

1バイト領域 96図形文字集合

番号図形文字集合終端文字ASCII例
111ECMA-113 ラテン/キリルアルファベット右部分4/0ESC - @
100ISO-8859-1:1987 Latin alphabet No.1 右部分4/1ESC - A
101ISO-8859-2:1987 Latin alphabet No.2 右部分4/2ESC - B
109ISO-8859-3:1988 Latin alphabet No.3 右部分4/3ESC - C
110ISO-8859-4:1988 Latin alphabet No.4 右部分4/4ESC - D
123カナダ標準 Z 243.4一般用補助図形文字4/5ESC - E
126ISO-8859-7:1987 Latin/Greek alphabet(ECMA-118)4/6ESC - F
127ISO-8859-6:1987 Latin/Arabic alphabet4/7ESC - G
138ISO-8859-8:1988 Latin/Hebrew alphabet4/8ESC - H
139チェコ標準 CSN 36 91 03 右部分4/9ESC - I
142追加図形文字集合(ISO 6937/2 plus Addendum 1)4/10ESC - J
143技術用集合4/11ESC - K
144ISO-8859-5:1988 Latin/Cyrillic alphabet4/12ESC - L
148ISO-8859-9:1989 Latin alphabet No.5 右部分4/13ESC - M
152ISO 6937-2:1983 残余文字4/14ESC - N
1538ビット基本キリル文字集合(ST SEV 358-88)4/15ESC - O
154ラテンアルファベット No.1,2,5 追加集合5/0ESC - P
155基本ボックス用集合5/1ESC - Q
156ISO/IEC 6937:1992 補助集合5/2ESC - R
164CCITT ヘブライ補助集合5/3ESC - S
166タイ語(TIS 620-2533 1990)5/4ESC - T
167アラビア語/フランス語/ドイツ語文字集合5/5ESC - U
157ISO-8859-10:1992 Latin alphabet No.6 右部分5/6ESC - V
158ISO-8859-10:1992 Latin alphabet No.6 補助集合5/8ESC - X
179Baltic Rim 補助集合(ISO 4873)5/9ESC - Y
180ベトナム語(TCVN 5712:1993, VSCII-2)5/10ESC - Z
181技術文字集合 No.1:IEC Publication 12895/11ESC - [
182ラテンアルファベットNo.1 Welsh 版5/12ESC - \
197Sami supplementary Latin set5/13ESC - ]
198Latin/Hebrew alphabet5/14ESC - ^
199ケルト語補助ラテン文字集合5/15ESC - _
200Uralic 補助キリル文字集合6/0ESC - `
201Volgaic 補助キリル文字集合6/1ESC - a
203ヨーロッパ補助ラテン文字集合 (Latin-9)6/2ESC - b
204Latin-1 補助集合 (ユーロ通貨符号)6/3ESC - c
205Latin-4 補助集合 (ユーロ通貨符号)6/4ESC - d
206Latin-7 補助集合 (ユーロ通貨符号)6/5ESC - e
226情報交換用ルーマニア語文字集合6/6ESC - f
208情報交換用オガム文字集合6/7ESC - g
209Sami 補助ラテン文字集合26/8ESC - h
227ISO-8859-7:2003 Latin/Greek6/9ESC - i
234ISO-8859-8:1999 Latin/Hebrew6/10ESC - j
129CCITT Rec.T.101 データ構文Ⅲ Mosaic 補助集合7/13ESC - }

多バイト領域94×94図形文字集合

番号図形文字集合終端文字ASCII例
42日本語漢字(JIS C 6226-1978)[廃止]4/0ESC $ @
58支那語漢字(GB 2312-80)4/1ESC $ A
87,168日本語漢字(JIS X 0208-1990)4/2ESC $ B
149朝鮮語図形文字集合(KS X 1001)4/3ESC $ ( C
159日本語補助漢字集合(JIS X 0212-1990)4/4ESC $ ( D
165CCITT 支那語漢字(ISO-IR-165)4/5ESC $ ( E
169Blissymbol 図形文字集合4/6ESC $ ( F
171台湾 繁體字漢字(CNS 11643-1)4/7ESC $ ( G
172台湾 繁體字漢字(CNS 11643-2)4/8ESC $ ( H
183台湾 繁體字漢字(CNS 11643-3)4/9ESC $ ( I
184台湾 繁體字漢字(CNS 11643-4)4/10ESC $ ( J
185台湾 繁體字漢字(CNS 11643-5)4/11ESC $ ( K
186台湾 繁體字漢字(CNS 11643-6)4/12ESC $ ( L
187台湾 繁體字漢字(CNS 11643-7)4/13ESC $ ( M
202北朝鮮 情報交換用 標準朝鮮語図形文字集合4/14ESC $ ( N
228日本語漢字(JIS X 0213:2000) 第一面4/15ESC $ ( O
229日本語漢字(JIS X 0213:2000) 第二面5/0ESC $ ( P
233日本語漢字(JIS X 0213:2004) 第一面5/1ESC $ ( Q

多バイト領域96×96図形文字集合

現在は一つも定義されていない.

登録済みの他の符号系(ISO-2022 とは異なる他の符号系)

エスケープシーケンスはESC 2/5 (2/15) <F>である。

番号図形文字集合終端文字ASCII例
108NAPLS 構文(CSA T 500-1983)4/1ESC % A
178UCS トランスミッションフォーマット14/2ESC % B
131CCITT Rec.T.101 データ構文Ⅰ4/3ESC % C
145CCITT Rec.T.101 データ構文Ⅱ4/4ESC % D
160CCITT Rec.T.101 フォトビデオテックス4/5ESC % E
161CCITT Rec.T.101 オーディオデータ構文4/6ESC % F
196UTF-84/7ESC % G
188ITU-T Rec.T.107 VEMMI データ構文4/8ESC % H
162ISO/IEC 10646:1933,UCS-2,Level 12/15 4/0ESC % / @
163ISO/IEC 10646:1933,UCS-4,Level 12/15 4/1ESC % / A
125Virtual Terminal service Transparent Set2/15 4/2ESC % / B
174ISO/IEC 10646:1933,UCS-2,Level 22/15 4/3ESC % / C
175ISO/IEC 10646:1933,UCS-4,Level 22/15 4/4ESC % / D
176ISO/IEC 10646:1933,UCS-2,Level 32/15 4/5ESC % / E
177ISO/IEC 10646:1933,UCS-4,Level 32/15 4/6ESC % / F
190UTF-8 Level 12/15 4/7ESC % / G
191UTF-8 Level 22/15 4/8ESC % / H
192UTF-8 Level 32/15 4/9ESC % / I
193UTF-16 Level 12/15 4/10ESC % / J
194UTF-16 Level 22/15 4/11ESC % / K
195UTF-16 Level 32/15 4/12ESC % / L

これを著している時点では、この規格には総じて4種類の版がある。それぞれの特徴を下記する。

ISO 2022:1973

最初の版。

バッファはG0とG1しかなく、94文字集合と94n文字集合しかなかった。また、多バイト文字セットはG0にしか指示できない。

8単位環境

この頃、バッファが二つしかなく、またそれらは符号表の今で言うGL/GRと一致していた。従って、この版ではGL、GRというものはなかった。つまり、C0、G0、C1、G1である。

94文字集合のみであったため、2/0は常にSP、7/15は常にDELであり、10/0と15/15は未定義である。

この頃のエスケープシーケンスは次の通りである。

符号列用途
ESC 2/8 <F>ESC ( <F>94文字集合をG0に指示し、呼び出す
ESC 2/12 <F>ESC , <F>
ESC 2/9 <F>ESC ) <F>94文字集合をG1に指示し、呼び出す
ESC 2/13 <F>ESC - <F>
ESC 2/4 <F>ESC $ <F>多バイト文字集合をG0に指示し、呼び出す

指示と呼び出しが二つあるのは、片方が尽きた時にもう片方を使うための予約だったと考えられる。

7単位環境

7単位環境では、0/0から7/15の範囲内で用いる。

G0、G1はともに符号表の外部にあり、SI・SOという符号で呼び出して用いることになっていた。

SHIFT IN(0/15)でG0が呼び出され、SHIFT OUT(0/14)でG1が呼び出された。この名前からは、G0は内側(IN)のものであり、G1は外側(OUT)にあるものだ、という思想が見え隠れする。

ISO 2022:1982

初の改定版であり、第二版と言える。

ここでバッファとしてG2、G3が追加された。まだ96文字集合は存在しない。

多バイト文字集合に対し、G1〜G3までに指示可能になった。

追加されたエスケープシーケンスは次の通りである。

符号列用途
ESC 2/10 <F>ESC * <F>94文字集合をG2に指示する
ESC 2/14 <F>ESC . <F>
ESC 2/11 <F>ESC + <F>94文字集合をG3に指示する
ESC 2/15 <F>ESC / <F>
ESC 2/4 2/12<F>ESC $ , <F>多バイト文字集合をG0に指示する
ESC 2/4 2/9 <F>ESC $ ) <F>多バイト文字集合をG1に指示する
ESC 2/4 2/13 <F>ESC $ - <F>
ESC 2/4 2/10 <F>ESC $ * <F>多バイト文字集合をG2に指示する
ESC 2/4 2/14 <F>ESC $ . <F>
ESC 2/4 2/11 <F>ESC $ + <F>多バイト文字集合をG3に指示する
ESC 2/4 2/15 <F>ESC $ / <F>

また、G2、G3を用いるため、呼び出し符号が多数新規に追加された。この版から、この規格は混迷を深め始めたといえる。

  • LS0 (G0をGLに呼び出す) (0/15、いわゆるSI)
  • LS1 (G1をGLに呼び出す) (0/14、いわゆるSO)
  • LS2 (G2をGLに呼び出す) (1/11 6/14)
  • LS3 (G3をGLに呼び出す) (1/11 6/15)
  • LS1R (G1をGRに呼び出す) (1/11 7/14)
  • LS2R (G2をGRに呼び出す) (1/11 7/13)
  • LS3R (G3をGRに呼び出す) (1/11 7/12)
  • SS2 (次の1文字だけG2をGRに呼び出す) (8/14または1/11 4/14)
  • SS3 (次の1文字だけG3をGRに呼び出す) (8/15または1/11 4/15)

LS0Rは存在しないが、これはG0がGL(2/1〜7/14)と密接な結び付きがあることを意識したものと思われる。

ISO 2022:1986

二回目の改定版であり、第三版と言える。

特徴

この版から、96文字集合が追加され、これに中間文字として2/13、2/14、2/15が充てられた。

この中間文字は、従来は94文字集合用の中間文字であったが、この仕様は廃止されたことになる。なお、ESC 2/4 2/12 <F>は削除された。

96文字集合導入に伴い、10/0と15/15が利用可能になった。

追加/変更されたエスケープシーケンスは次の通りである。

符号列用途
ESC 2/13 <F>ESC - <F>96文字集合をG1に指示する
ESC 2/14 <F>ESC . <F>96文字集合をG2に指示する
ESC 2/15 <F>ESC / <F>96文字集合をG3に指示する
ESC 2/10 2/8 <F>ESC * ( <F>多バイト文字集合をG0に指示する

符号に統一性を持たせるためか、互換性はこのさい目をつむり、従来のESC 2/4 <F>に代えるESC 2/10 2/8というエスケープシーケンスが追加された。

しかしこの時点で、ESC 2/4 <F>の<F>には4/0、4/1、4/2の三つが追加されていたため、これはこのまま使用されることになった。

96文字集合

また、96文字集合はG1〜G3にのみ指示することができ、G0には指示出来ない。そのための中間文字がないからである。

この仕様からは、G0はGL(2/1〜7/14)である、という強い意識がここから読み取れる。つまり、G0〜G4というのは決して対等なものではないという考えがあると思われる。

しかし、7単位符号で96文字集合を永続的に使うとなると、G1〜G3に指示したものをLS1〜LS3で2/0〜7/15に呼び出して使うことになる。そうなれば、どのみち聖域である2/0と7/15が潰れてしまうのは自明だろう。

そうであるなら、G0に96文字集合が指示出来てもおかしくないということになり、この件については様々な議論を巻き起こすことになった。

ISO/IEC 2022:1994

三回目の改定版であり、第四版と言える。この版からISO/IEC 2022になり、規格書は全面的に刷新された。

Single Shift後の文字がGLでもGRでも良いことが明記された。もって、EUCでSS2/SS3の後でGRを使うことが問題なくなった。

ISO/IEC 4873を基にした実装水準が規定された。

ASN.1構文による表現が規定された。

登録済み集合に対する更新シーケンスが新たに規定された。これは、文字集合の改定ごとに新たな終端文字を作らずに済ませるための配慮である。

終端文字が変わると実装の変更も必要な上、貴重なリソースである終端文字の領域の残も減ってしまい、宜しくないことから、この結論に至ったと思われる。

例えば、JIS X 0208-1990JIS X 0208-1983は終端文字が同じだが、1990が1983の改定版と見なされるよう、更新シーケンスとしてESC 2/6 4/0を付加することが必要となった。