## ISO2022についての簡潔な記述
## 93.2.28  modified by K.Handa <handa@etl.go.jp>
## 93.8.5   modified by K.Handa <handa@etl.go.jp>
## 和訳	1993080541	ZIC <zic@tci.toshiba.co.jp>

#   以下は、簡単に理解することを目的としたため、
#   「厳密ではない」部分がある。完全な理解のためには、
#   ISO2022のオリジナル・ドキュメントを参照して欲しい。
#   (訳註: JISX0202でも同じ)

文字集合(character set; charsetと略す)は、その文字集合の文字数に応じて、
次に挙げる4種に分類される。
	94文字集合
	96文字集合
	94×94文字集合
	96×96文字集合

	94文字集合: ASCII(B), left(J) and right(I) half of JISX0201, ...
	96文字集合: Latin-1(A), Latin-2(B), Latin-3(C), ...
	94×94文字集合: GB2312(A), JISX0208(B), KSC5601(C), ...
	96×96文字集合: 現時点では該当なし

夫々の文字集合の名前に続く括弧中の文字は、
その文字集合の識別子と看做せる終端文字<F>である。
<F>をそれぞれの文字集合に割り当てるのは、ECMAである。
<F>は、0x30..0x7Fの範囲にあるが、
内0x30..0x3Fはプライベート文字集合にのみ使用する。

註: ECMA = European Computer Manufacturers Association
    	   (欧州計算機製造業者協会)

G0, G1, G2, G3と呼ばれる4つの文字集合用のレジスタがあり、
このうちの1つに任意の文字集合を指示(designate; 或は割り当てassign)できる。

(1バイト)コード領域は、C0, GL, C1, GRの4つの領域に分割される。
GLとGRとは、それぞれレジスタの文字集合を呼び出す(invoke)場所である。
	C0: 0x00 - 0x1F
	GL: 0x20 - 0x7F
	C1: 0x80 - 0x9F
	GR: 0xA0 - 0xFF
通常、初期状態においては、G0がGLに、G1がGRに呼出されている。

ISO2022は、7ビット環境と8ビット環境とを区別する。
7ビット環境下では、C0とGLのみ使用する。

指示(designation)は、
	ESC [I] I <F>
という形のエスケープ・シーケンスで行う。
訳註:	[I] は、複数連続する可能性のある'I'の意味
ここで'I'は中間文字(intermediate characters)である。
中間文字の意味は、
	$ [0x24]: 多バイト文字集合を表す(94×94或は96×96)
	( [0x28]: G0に終端文字が<F>であるような94文字集合を指示する
	) [0x29]: G1に終端文字が<F>であるような94文字集合を指示する
	* [0x2A]: G2に終端文字が<F>であるような94文字集合を指示する
	+ [0x2B]: G3に終端文字が<F>であるような94文字集合を指示する
	- [0x2D]: G1に終端文字が<F>であるような96文字集合を指示する
	. [0x2E]: G2に終端文字が<F>であるような96文字集合を指示する
	/ [0x2F]: G3に終端文字が<F>であるような96文字集合を指示する
次の規則はISO2022では許していないが、Muleでは使用する。
	, [0x2C]: G0に終端文字が<F>であるような96文字集合を指示する

指示の例を挙げる。
	ESC ( B : ASCII を G0 に指示
	ESC - A : Latin-1 を G1 に指示
	ESC $ ( A 或は ESC $ A : GB2312 を G0 に指示
	ESC $ ( B 或は ESC $ B : JISX0208 を G0 に指示
	ESC $ ) C : KSC5601 を G1 に指示

G2或はG3に指示した文字集合を使用する場合、
及び7ビット環境下でG1に指示した文字集合を使用する場合には、
G1, G2, G3のいづれかをGLに明示的に呼び出す必要がある。
2通りの呼び出し方法があって、
呼出方法には、ロッキング・シフト(以後ずっと)と
シングル・シフト(直後の1文字のみ)との2通りがある。

ロッキング・シフトは、次のように行う:
	SI 或は LS0: G0をGLに呼び出す
	SO 或は LS1: G1をGLに呼び出す
	LS2: G2をGLに呼び出す
	LS3: G3をGLに呼び出す
	LS1R: G1をGRに呼び出す
	LS2R: G2をGRに呼び出す
	LS3R: G3をGRに呼び出す

シングル・シフトは、次のように行う:
	SS2 或は ESC N: G2をGLに呼び出す
	SS3 或は ESC O: G3をGLに呼び出す

ISO2022に沿った多国語の表現(encoding)方法は多数あることに気付くだろう。
現在世界では、Xのコンパウンド・テキスト、日本のJUNETコード、
所謂EUC(Extended UNIX Code)等の多種類の符号系(coding system)が存在し、
これら全てがISO2022の変種(variant)である。

Muleにおいては、ISO2022を次の属性で特徴付けた:
	1. G0からG3への初期指示
	2. 日本語と中国語の簡略指示(EUCのこと)
	3. 制御文字以前にASCIIをG0に指示すべきか?
	4. 行末時点で、ASCIIをG0に指示すべきか?
	5. 7ビット環境か、8ビット環境か
	6. ロッキング・シフトを使用するか否か
次の2属性は、日本語にのみ当てはまる:
	7. ASCII を使うか JIS0201-1976-Romanを使うか
	8. JISX0208-1983 を使うか JISX0208-1976を使うか
これら属性を指示することで、あらゆるISO2022の変種を作ることができる。

幾つか例を挙げる。

*junet* -- JUNETで使用する符号系
	1. G0 <- ASCII, G1..3 <- 使用せず
	2. Yes.
	3. Yes.
	4. Yes.
	5. 7ビット環境
	6. No.
	7. ASCIIを使用
	8. JISX0208-1983を使用

*ctext* -- コンパウンド・テキスト
	1. G0 <- ASCII, G1 <- Latin-1, G2,3 <- 使用せず
	2. No.
	3. No.
	4. Yes.
	5. 8ビット環境
	6. No.
	7. ASCIIを使用
	8. JISX0208-1983を使用

*euc-china* -- 中国語EUC.  一般には"GB encoding"と呼ばれるが、
				この名称は誤解を招くかも知れない。
	1. G0 <- ASCII, G1 <- GB2312, G2,3 <- 使用せず
	2. No.
	3. Yes.
	4. Yes.
	5. 8ビット環境
	6. No.
	7. ASCIIを使用
	8. JISX0208-1983を使用

*korean-mail* -- 韓国のネットワークで使用される符号系
	1. G0 <- ASCII, G1 <- KSC5601, G2,3 <- 使用せず
	2. No.
	3. Yes.
	4. Yes.
	5. 7ビット環境
	6. Yes.
	7. No.
	8. No.

Muleはこの全ての符号系をデフォルトで作成している。
