No. 65/622 Index Prev Next
Path: titcca!srava!nisimura
From: nisimura@srava.sra.JUNET (Tohru Nisimura [peg])
Newsgroups: fj.junet,fj.kanji
Subject: RE: kanji ESCAPEs in JUNET (In Japanese)
Message-ID: < 424@srava.sra.JUNET> 
Date: 20 Feb 87 06:09:03 GMT
References:   
Reply-To: nisimura@srava.sra.JUNET (Tohru Nisimura [peg])
Distribution: fj
Organization: Software Research Associates, Inc. Tokyo, Japan
Lines: 221
Xref: titcca fj.junet:94 fj.kanji:92


>  要するに、
>   漢字に入いるエスケープとして、
>   	ESC $ @  または、 ESC $ B
>   漢字から出るエスケープとして、
>   	ESC ( B  または、 ESC ( J
>   が許されているということなのですね。オススメ品はどれですか。
 
これは非常に誤解を招きやすい表現なのでこう書くのは正しくないのです。
漢字を議論しようとするとJISの解説から始めないとならないのでじつに
たいへんなのですが、そうやって逃げてきたから混乱がいつまでもおさまら
のですね。漢字についてギャースカ言ってるわたしが漢字コンベンションの
モデレータをやりましょう。

まず次に示すのは、昨年夏頃たしか静岡大の大木さんによってリポストされた、
和田英一先生のJISに関する簡単な解説とJUNET漢字コンベンションの
プロポーザルです。いまの漢字コンベンションはこれにいくつか拡張(と言う
か制約;C0文字集合excludeなど)を施したもので、前回大阪で開催された
JUSシンポで「これにしましょう」ということになりました。(決まったと
いうことをJUNETで発表してないなぁ)

JUNET漢字コンベンションの目的はこのあと引き続いてポストします。
篠田さん、ちょっと待ってください。


	あー忙しい、ニュース書いてる暇ない にしむら@SRA

P.S.
	JUNETの有名人で漢字コードシステムにくわしいのは

		大木さん	ohki@shizuoka
		小川さん	ogawa@tsuda
		鈴木さん	kouichi@nttosd.ntt

	です。(勝手にお名前を出してすいません)


	この文書はmsフォーマットに清書して西村が持っています。

---------------------------
複数の図形文字セットの使い方

     junetで漢字のメイルやニュースがとび交っているが、図形文字セットの切り換
え方に誤解もあるようなので次に説明する。更にくわしくはJIS  C6228−1984および
bit Vol 14.No.6エディタとテキスト処理(2)を見てほしい。

     ASCIIやJISローマ字、日本語漢字のような文字セットを図形文字セットという。
通常は1文字を7単位(7ビット)(列2〜列7)の1バイトか2バイトで表現する。(CR
やESCなどは機能文字といい機能文字セットというものが別に存在する。)

     複数の図形文字セットをとっかえひっかえ使いたいときには、これからどの図
形文字セットを使うかを指定しなければならない。この指定は一般的には2段構えに
なっている。沢山の図形文字セットから使おうとするものを一旦G0、G1、G2、G3のバ
ッファのいずれかに取り出す。この操作を「指示する(designate)」という。新し
く別の図形文字セットをバッファへ取り出してくると、そこに前にあったものは失く
なる。最大4つの図形文字セットをバッファに取り出しておくことができる。(バッ
ファといっても1バイトのASCIIも2バイトの漢字も入るから不思議である。)次の操
作はバッファのいずれかの図形文字セットを7単位の図形文字表へ持ち込むことで、
これを「呼び出す(invoke)」という。図形文字表は7単位環境にはひとつ、8単位環
境には左と右とふたつある。G0、G1、G2、G3から7単位環境の図形文字表に持ち込む
には 、それぞれSI(shift in)、SO(shift out)、LS2(locking shift 2)、LS3
(locking shift 3)を使う。そこで7単位環境ではG0にJISローマ字、G1にJIS片仮名
を指示しておき、SIでローマ字に切り換え、SOで片仮名に切り換えることができる。
8単位環境ではG0、G1、G2、G3から左の図形文字表に持ち込むのに、それぞれLS0(
locking shift 0)、LS1(locking shift 1)、LS2、LS3を使う。LS0とLS1はSIとSO
と同じコード(0/15、0/14)である。G1、G2、G3から右の図形文字表に持ち込むには、
それぞれLS1R(locking shift 1 right)、LS2R、LS3Rを使う。歴史的理由でG0から
右に持ち込むことはできない。

     LS2、LS3、LS1R、LS2R、LS3Rの制御機能にはどういうコードを使うかというと、
これは  ESC  Fsシーケンスといって、この順にそれぞれESC  6/14、ESC  6/15、ESC
7/14、ESC 7/13、ESC 7/12と決めてある。



                                7 bit envronment
                                   ----------
                      invoke       | code   |
                   --------------->| table  |< ---------------
                   |               |        |               |
                   |            -->|        |< --            |
                   |            |  |        |  |            |
                   |            |  ----------  |            |
                   |            |              |            |
                   |            |              |            |
              ----------    ----------    ----------    ----------
              |        |    |        |    |        |    |        |
              |        |    |        |    |        |    |        |
              |  G0    |    |  G1    |    |  G2    |    |  G3    |
              |        |    |        |    |        |    |        |
              |        |    |        |    |        |    |        |
              ----------    ----------    ----------    ----------
                   ^            ^
            ESC ( B|            |    ESC $ ) @  designate
                   |            -----------------------------
                   |                                        |
              ----------    ----------    ----------    ----------
              |        |    |        |    |        |    |        |
              |        |    |        |    |        |    |        |
              |ASCII   |    |JIS     |    |JIS     |    |JIS     |
              |        |    |roman   |    |katakana|    |kanji   |
              |        |    |        |    |        |    |1978    |
              ----------    ----------    ----------    ----------



     話を第一段階、指示の仕方に戻す。1バイト7単位の図形文字セットを指示する
には、取り出す先がG0、G1、G2、G3のいずれかに従ってそれぞれESC 2/8 F、ESC 2/9
F、ESC 2/10 F、ESC 2/11 Fの形のエスケープシーケンスを使う。Fは終端文字(
final   character)といい、図形文字セット毎にきまっている。7ビットの図形文字
セットでは

                        ___________________________
                       |_図形文字セット_________F_|
                       | ASCII                4/2 |
                       | JIS片仮名            4/9 |
                       | JISローマ字          4/10|
                       | スウェーデン名前用   4/8 |
                       |__________________________|

従ってASCIIをG0に指示するには ESC 2/8 4/2とする。図形文字で表わせば2/8が(、
4/2がBだからESC ( Bとなる。JISロ ーマ字をG1に指示するにのは ESC ) Jを使う。

     複数バイトの指示はG0、G1、G2、G3に対しそれぞれESC2/4 F、ESC 2/4 2/9 F、
ESC 2/4 2/10 F、ESC 2/4 2/11 Fの形を使うことになっていた。G0だけ形がちがうの
は、複数バイトがその昔G0へしか指示できなかった時代の名残りである。Fの方は、

                ____________________________________________
               |_図形文字セット______F_____________________|
               | 日本語漢字(旧)   4/0    JIS  C6226−1978|
               | 日本語漢字(新)   4/2    JIS  C6226−1983|
               | 中国漢字           4/1                    |
               |___________________________________________|

となっている。従って1978年版のJIS漢字をG1に指示するにはESC $ ) @となる。(G0
へ指示するときだけ形が違うのは気持ちが悪いというので、F=4/3以降はG0への指示
もESC 2/4 2/8 Fとすることになった。)

     以上のように、使いたい図形文字セットをバッファに指示し、図形文字表へ呼
び出して使うのが正式なのだが、それは面倒という場合には、あるバッファはある図
形文字表に直結していて、指示しただけで即使えるという方法もある。それには使う
前にアナウンサというのを送る。例えばESC  2/0 4/1を送ると、これは「バッファは
G0しか使わない。そのかわりG0へ指示したものは7単位環境ではすぐ図形文字表へ呼
び出す。8単位ではG0へ指示したものを左の図形文字表へ呼び出す」という約束をす
る。アナウンサにはまだ沢山あるがそれはJIS C6228の8章を見てほしい。しかし上に
は上があって、情報交換当事者間の合意があればアナウンサも省略してよいことにな
っている。

     そこでjunetで漢字を使う場合だが、次のようにするのはどうであろうか。当事
者間の合意があったとしてESC  2/0 4/1のアナウンサがあったように使う。つまり図
形文字セットを切り換えるには常に毎回G0への指示からやり直すものとする。そして
呼び出しの制御機能は使わない。
                ___________________________________________
               | ASCIIへ切り換えるには             ESC ( B|
               | JISローマ字へ切り換えるには       ESC ( J|
               | JIS漢字(1978)へ切り換えるには   ESC $ @|
               | JIS漢字(1983)へ切り換えるには   ESC $ B|
               |__________________________________________|


     これまでjunetの漢字ニュースなどで漢字へ入るのはESC $ @で、出るのはESC (
Hといわれたりしていたが、サブルーチンを呼んだり戻ったりするように考えるのは
間違いで、エスケープシーケンスによる切り換えは常にGOTO文であり、以前何を使っ
ていたかには関係ないことに注意してほしい。従ってESC  ( Hは漢字から出るのでは
なく、1バイトのローマ字へ「行く」という表現が正しいが、ここにもうひとつの誤
りがある。上にあるようにJISローマ字へ切り換えるにはESC ( Jを使わなければなら
ない。しかしこれは世の中では間違ってESC ( Hと伝わっている。それはJIS 6228−
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ハンドブックには解説がないか
らそれだけ見たのではわからない。

     JISのローマ字とスウェーデン名前用の文字セットは次の点で字形がちがってい
る。スウェーデンのものだけ示す。
        ____________________________________________________________
       | 2/4    $ではなく一般の通貨記号(太陽マークといわれるもの)|
       | 4/0    大文字E+アキュートアクセント                      |
       | 5/11   大文字A+ウムラウト                                |
       | 5/12   大文字O+ウムラウト                                |
       | 5/13   大文字オングストロームのA                          |
       |_5/14大文字U+ウムラウト___________________________________|

及び6/10、7/11−7/14上のものの小文字

     ついでにASCIIとJISローマ字のちがいは次の通り

                ____________________________________________
               |___________ASCIIJISローマ字________________|
               | 5/12        \                 ¥         |
               | 7/14   ~ (チルド)   ‾(オーバーライン)|
               _____________________________________________

この方は軽微な差と思われる。

     junetのシステムとしては次のように考えるのはどうか。送信側は自分の端末が
ASCIIかJISかによりESC  (  BかESC ( Jを先行させる。受信側はESC ( B、ESC ( J、
ESC ( Hを見たら受けつける。ソフト、ハード的に厳密にできるなら、このどれを受
けたかによりそれぞれの図形文字セットの図形をだす。面倒なら適当にASCIIかJISロ
ーマ字で出力する。大切なことは送信側はスウェーデン名前用を使っていない限り、
ESC  ( Hをなるべく早くやめることである。世の中から大体なくなったと思ったら、
受信側もESC ( Hをはねるようにソフトを変更する。

     漢字については次のようにしたい。JIS C6226−1978(旧版)にくらべ1983(新
版)は特殊文字が39文字、けい線素片が32文字、漢字が4文字ふえた。旧版しか知ら
ない端末には新版の端末から困るコードも送られてくるかもしれない。漢字にも第一、
第二水準間で入れ換えがあったが、一応同じ字になっているから読むには困らないで
あろう。そこで漢字の方も送信側が自分はどちらのJISのつもりかをつけて送ること
にする。受信側はESC $ @、ESC $ Bのいずれがきてもあわてずに処理をする。規格協
会で売っている16ドット、24ドットの漢字パターンは新版のJISのものである。
IBM5550のコードは旧版である。

     機能文字について一言、CRとかTABとか機能文字はどの図形文字セットが呼び出
してあるかに関係なく使えるようなコード構造になっている。改行するのに漢字から
一度ASCIIへでなければならないと思っている人もいるようだがこれは誤りである。


Next
Continue < 161@nttyrl.ntt.junet>
< 125@nttose.ntt.junet>
< 126@nttose.ntt.junet>