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

[OSASK 2842] Re: Fullset EUC-JP



Hidemi KAWAI さん、こんにちは。I.Tak. です。

Mon, 31 Dec 2001 06:47:47 -0000 の
[OSASK 2834] Re: Fullset EUC-JP
に返信です。

>  表示文字長とバイト数が比例するエンコード方式は扱いやすかったの
>ですぐに採用したんです。・・・ほら〜、シンプルEUCもシフトJISもこ
>の条件を満たしています。

 いや、1バイトのコードを半角で表示するというのは慣例でしかあり
ません(半角や全角は印刷用語で、文字コードとの関係はありません)。
つまり、文字コードはフォントの大きさや幅の情報を持ちません。当たり前
ですよね。カタカナを渡されたらカタカナを表示する、決まりはそれだけです。
面倒ならEUCのJIS X 0201カナを全角で表示したってなんの問題もありません。
これをやるソフトにはnkf(有名)が挙げられます。
 ぐいぐい00仕様は慣例に縛られすぎていると思います。

>  それとEUCルーチンをシンプルに保ったのは、他のEUCコード(たとえ
>ば韓国語)にもそのまま使えるようにするためです。実際、共通に使え
>ています。もし組み込むとしたら日本語EUC専用のオプションコードを
>決めて、そのコードでこのルーチンを使うことにするでしょう。

 フルセットのEUCルーチンでも共通に使えます。遅くなるのは確かですが、
しかしシフトJISと同程度ではありませんか?

 今のところG2やG3を使うのは日本語だけなのも、確かにそうです。
しかし、韓国語が全ハングルの完全表示を目指してG3を使うとか、そう
いうことも無いとは言えません。UNICODEの空き領域に全ハングルを再収録
しようという動きもあると聞きます。

>  日本語だけのために、どこまでAPIサポートするべきかというのも僕
>の悩みの一つです。シフトJISとフルセットEUCだけならまあいいかなあ
>・・・。それともフルセットの方は各アプリで対応してもらった方がい
>いかなあ・・・。

 EUCの拡張性は日本語だけのものではありませんから、フルセットEUCこそ
API対応しましょう。日本語だけのためはシフトJISそのものです。MS拡張に
も個別対応しているようですし(←使いたい者が作る原理を感じました)。

 変換の究極は、ISO-2022 に対応して後はアプリ次第という形になります。
適当なシーケンスを送って設定すればEUC-JPになるしISO-2022-JPになるし、
EUC-KRにEUC-CNに、コンパウンドテキスト(シフトJISは置いてけぼりを
食らいますが)。……誰が書くんだろう?(^^;;;


 つまるところ私はISO-2022やEUCが好きでシフトJISは嫌いなわけで、
かなりひいきして発言しています。しかし嘘は言っていません。
よぉ〜く考えてください(^_^;;;


>  例によって、ソースへのコメントです(笑)。
>
>>/*JISX0201のロマカナ間の空きは
>>	認められとる……なんでやねん。 */
>  これはどういう意味なんですか?・・・分かりませんでした。

 JIS X 0201 をエンコードすると英字とカナの間に空き(制御コード領域C1)
がありますよね。でもオリジナル変換ルーチンではそこの空きは埋めていない
ようでした。JIS X 0213 は隙間が無いように変換するのが面倒なのに……。

 ぐいぐい00仕様のフォントはどういう配置になっているのか興味があります。

>>/*本来こういうのは一バイトずつループをまわすべきでは?
>>	セグメントの終わりにマルチバイト文字の前半だけ
>>	置かれたら確実に死ぬ。どうせパラメタが間違ってると
>>	死ぬからいいか。 */
>  ループの回し方はどうでもいいのですが、不適切な文字コードが渡さ
>れるかもしれないという懸念はいりません。今のpioneer0ライブラリは

 1バイトずつ回せば例外無く書けて気持ちいいかなあ、と、それだけで
深い意味はありません(深い考えが無い……レジスタ不足(ToT)。

>「アプリ高速」というモード用に書かれていて、これは「アプリ安全」
>ではないのです。・・・これが何を言っているのかわからない方は、[O

 例外を拾ってやる、というレベルではなさそうですから、親切に誤りを
探して返してくれる、正してくれる、ということですね?>アプリ安全

>  またソースを見ると188倍するためにLEAやSHLを多用していますが、
>これは最近のプロセッサでは大いに不利なコードであると思います。こ
>れが速いのはせいぜい486くらいまででしょう。PentiumはIMULを10クロ
>ックで実行できます。LEAを連続して使うのはAGIがやたらと発生するの
>で、このような複雑な倍率の掛け算にはお勧めしません。

 私のメインマシンは486TOWNSなので、使いたいように作りました。
imulは絶対遅いと信じてきた上、最近のCPUはまともに使ったことがない
ので、そんな風になっています。

>  なおPentiumPro以降では、IMULの実行クロックは1クロックです(た
>だしレイテンシーが4クロックありますが)。IMULにすればコードも小
>さくなりますから、僕はこっちのほうがいいと思うのですが・・・。

 これは4クロックの間imul用の回路が占有されてしまうということ
なのでしょうか?

 imulの方がレジスタが空く上に必ずしも遅くはないと知った以上、
喜んでimulを使います。leaがアドレシング回路を占有する時間も気に
なっていましたし。

------------------------------------------------------------
I.Tak. <msy !Atmark! catvmics.ne.jp>
http://home1.catvmics.ne.jp/~msy/takhome.htm