#----------------------------------------# # ToolMan のファイルフォーマットについて # # ISO-2022-ESC B について # # 前寺正彦 # # 97/02/05 - 97/02/05 # #----------------------------------------# 1.概要 2.ISO-2022 の概要 3.ISO-2022-ESC B の仕様 4.ToolMan のサポート形式 1.概要 ISO-2022-ESC B とは様々に運用が可能な ISO-2022 の形式を 一つの厳格なルールにまとめた、7bitで構成された形式である。 2.ISO-2022 の概要 図形文字集合について ISO-2022 では図形として用いることのできる領域を次のように定めている。 94領域 ( 0x21 - 0x7E ) 96領域 ( 0x20 - 0x7F ) また、各領域は3バイトまで続けることが可能である。 図形符号表について ISO-2022 では2個の図形符号表をもつ。 GL, GR GL には図形文字集合のコードがそのままはいる。 GR には図形文字集合の最上位ビットを立ててはいる。 図形集合用のバッファについて ISO-2022 では4個の図形集合用バッファをもつ。 G0, G1, G2, G3 集合があり基本的には等価だが、 G0 は GR 集合には呼び出せず、 G0 に 96領域をもった図形文字集合は入れられない。 アナウンサー G0, G1, G2, G3 集合の GL, GR への割り当て方式を規定する。 処理の流れ、 任意の図形文字集合を最高4個まで図形集合バッファに登録する。 図形集合バッファの中から2個取り出し、 一つは 0x20-0x7F もう一つは 0xA0 - 0xFF として実体化し表示する。 具体例 日本語を表記するには次の図形文字集合が使われる。 G0 G1 G2 G3 ASCII ESC(B ESC)B ESC*B ESC+B JISローマ字 ESC(J ESC)J ESC*J ESC+J JISカタカナ ESC(I ESC)I ESC*I ESC+I 旧JIS漢字 ESC$(@ (ESC$@) ESC$)@ ESC$*@ ESC$+@ 新JIS漢字 ESC$(B (ESC$B) ESC$)B ESC$*B ESC$+B JIS補助漢字 ESC$(D ESC$)D ESC$*D ESC$+D 日本語EUCの場合 ESC C : アナウンサ, G0 を GL に G1 を GR にする。 ESC Z : アナウンサ, 一時的に G2 を SS2(0x8E)の後に続ける ESC [ : アナウンサ, 一時的に G3 を SS3(0x8F)の後に続ける ESC(B : ASCII を G0 に格納する。 ESC$)B : 新JIS漢字を G1 に格納する。 ESC*I : JISカタカナを G2 に格納する。 ESC$+D : JIS補助漢字を G3 に格納する。 7bitJIS (ISO-2022-JP) の場合 ESC A : アナウンサ, G0 を常に GL にする。 ESC(B : ASCII を G0 に格納する。 ESC(J : JISローマ字を G0 に格納する。 ESC$@ : 旧JIS漢字を G0 に可能する。 ESC$B : 新JIS漢字を G0 に可能する。 3.ISO-2022-ESC B の仕様 ISO-2022-ESC B は柔軟に運用できる(できすぎる) ISO-2022 を ルールを厳格に決め、テキスト処理ツールの多言語対応を うながすための形式である。 特徴 1. すべて 7bitで構成されている。 2. G0, G1 集合のみ使用する。 3. 94領域文字集合は必ず G0, 96領域文字集合は必ず G1 にする。 4. 図形集合の切り替えにすべてロッキングシフトを使用する。 5. ESC$@, ESC$A, ESC$B 等の慣用表現は用いない。 ESC B : アナウンサ, G0 を SI で GL に、G1 を S0 で GL に指定する。 上記の日本語関係の図形集合を指定するには次の形式をとる。 (ESC = 0x1B, SI = 0x0F, SO = 0x0E) ASCII ESC(B + SI JISローマ字 ESC(J + SI JISカタカナ ESC(I + SI 旧JIS漢字 ESC$(@ + SI 新JIS漢字 ESC$(B + SI JIS補助漢字 ESC$(D + SI 4.ToolMan のサポート形式 ToolMan Editor は次の形式をサポートする。 ASCII ESC(B + SI ( 0x1B 0x28 0x42 0x0F ) JISカタカナ ESC(I + SI ( 0x1B 0x28 0x49 0x0F ) JISローマ字 ESC(J + SI ( 0x1B 0x28 0x4A 0x0F ) Latin 1(ISO8859-1) ESC-A + SO ( 0x1B 0x2D 0x41 0x0E ) Latin 2(ISO8859-2) ESC-B + SO ( 0x1B 0x2D 0x42 0x0E ) Greek(ISO8859-7) ESC-F + SO ( 0x1B 0x2D 0x46 0x0E ) Cyrillic(ISO8859-5) ESC-L + SO ( 0x1B 0x2D 0x4C 0x0E ) Turkish(ISO8859-9) ESC-M + SO ( 0x1B 0x2D 0x4D 0x0E ) 旧JIS漢字(新JIS化) ESC$(@ + SI ( 0x1B 0x24 0x28 0x40 0x0F ) GB2312 ESC$(A + SI ( 0x1B 0x24 0x28 0x41 0x0F ) 新JIS漢字 ESC$(B + SI ( 0x1B 0x24 0x28 0x42 0x0F ) KSC5601 ESC$(C + SI ( 0x1B 0x24 0x28 0x43 0x0F )