[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[OSASK 2863] Re: Fullset EUC
- Subject: [OSASK 2863] Re: Fullset EUC
- From: Hidemi KAWAI <kawai !Atmark! imasy.org>
- Date: Wed, 02 Jan 2002 08:17:34 -0000
こんにちは、川合です。
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/