[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 2863] Re: Fullset EUC



  こんにちは、川合です。


I.Tak. さんは 2002/01/02 14:31:07 の「[OSASK 2862] Re: Fullset E
UC」で書きました:

>>  日本語に限定したフルセットEUCは確かに共通に使えるでしょう。し
>>かし本当のフルセットEUCに対応するなら、たくさんのコードページに
>>対応しなければいけないでしょう。オプションは増えます。
> 私は、EUCを、GLにG0、GRにG1を呼び出しておき、シングルシフトで
>GRにG2かG3を一文字だけ呼び出すという仕様だと思っていたんですが、
>違うんですか?……あった。
>http://wdic.asuka.net/?title=EUC より
      (引用中略)
>APIに渡すbaseの値を変えるだけでフォントすなわち言語を変えられますから、
>オプションを増やす必要はありません。baseの値だけ変えたマクロを個別に
>作っておくだけで各国語のフルセットEUCが利用できますよ。

  うげ・・・エンコード方法をあまり勉強していないせいで、僕はあさ
はかな事を言ってしまったかもしれません。

  I.Tak.さんがメール本文に書いてくださった表はとても読みやすかっ
たです。ありがとうございます。

  そこで、素朴な疑問をいくつか書かせてください。I.Tak.さんのルー
チンでは、G0とG1とG3のベースしか指定できていません。G2のベースは
指定できるようにしておかなくていいんですか?・・・いや、今はG2を
使うのは日本語だけだから大丈夫だというのは分かるんですが、それは
「フルセット」と呼ぶには少々甘いような気がしませんか?

  僕の認識では、EUCというのは確かに「GLにG0、GRにG1を呼び出して
おき、シングルシフトでGRにG2かG3を一文字だけ呼び出すという仕様」
なんですが、一般的にはG0は94文字集合であるという保証はありません
し、G1が94x94の文字集合であるという保証もありません。

  したがって僕の考える一般的なEUCのデコーダーのオプションは、

・G0、G1、G2、G3のベース

・それぞれが、94(=128)、94x94、94x94x94、94x94x94x94のどの集合
  であるのかを指定するためのフラグのようなもの(まあ、さすがに
  4バイト符号は使わないと思いますが・・・笑)。

だと思います。

  これらは仕様であって、利用されないと思われるうちは、未実装であ
ってかまいません。

  たとえば、こんな仕様はどうでしょう?

    cmd(0x00ec), opt, len, ptr_src, ptr_dst, base0, base1, base2, base3

ここでoptの下位16bitを0x0003にさせることにして、これはUniversal
EUCを意味するということにします(0x0002はSimple EUC)。そして、
optの上位16bitに以下の意味を与えます。

    rrrrrrrrddccbbaa

    r:リザーブビット
    aa, bb, cc, dd:それぞれG0, G1, G2, G3が何バイト文字であるかを
                   表している。00は1バイト文字、01は2バイト文字、
                   10は3バイト文字。11はリザーブ。

・・・こういう仕様であれば、僕はすぐに組み込みます(とりあえずdd
ccbbaa == 01_00_01_00固定であっても)。ルーチンがSJISよりもはる
かに大きくなったとしても、です。

  なお、この仕様は今適当に考えたものなので、気に入らなければもっ
といいのを提案してください。

> ちなみにKS C 5601は番号不足で1997年にKS X 1001になったそうです。

  KS C 5601の後ろの空きに文字を割り当てたのかな???

>>  このときの発言にも現れていますが、僕は純粋に現状での日本語テキ
>>スト全体を考えて、それでどれを中心にするべきかを決めました。今は
>>シフトJISとNECコードに都合の良い仕様になっています。
> うむむ、それは知りませんでした。ごめんなさい。やるせない現状……

  現状が情けないものになっているという見解には僕も賛成です。

  こうやって現状に迎合することも、その風潮の追い風になるでしょう
から、なんだかとってもくやしいんですが。

> やはり上に書いたとおり、EUCの変換は私が書いたルーチンで全てのはず
>です。あれは日本語専用ではありません。与えるbaseの値で……(以下同文)

  しかし僕も上に書いたとおり、EUCの変換はもうちょっと拡張性があ
るように思います。EUCの現状に合わせるだけではなくて、EUCの規格に
合わせましょうよ、せめて仕様だけでも(=実装が伴わなくても)。

>>  僕は好き嫌いを押し殺して設計しているつもりです。
> EUCがフルセットでなかったのは、それが日本語専用だと誤解なさっていた
>んですね。

  はい。今でもI.Tak.さんのルーチンは日本語EUC・中国語簡体字EUC・
中国語繁体字EUC・韓国語EUCのフルセットであって、EUC規格そのもの
のフルセットだとは思っていませんが。せっかくですから、本当のフル
仕様にしましょうよ。

  ・・・とりあえず上の仕様にしてoptを0x00440003に限定すれば、I.T
ak.さんのルーチンはほとんどそのまま使えそうです。それでよければ
OSASK ver.2.1に組み込みましょうか?


  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/