[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
[MD:7560] Re: [Mule-UCS] buffer magnifications of shift-jisx0213-*-stream-encoder are too small
- X-ml-count: 7560
- Subject: [MD:7560] Re: [Mule-UCS] buffer magnifications of shift-jisx0213-*-stream-encoder are too small
- From: Kazuhiro Ito <kzhr@xxxxxxxxxxxxx>
- Date: Tue, 22 Apr 2008 21:29:50 +0900
- User-agent: Wanderlust/2.15.5 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (Shijō) APEL/10.7 Emacs/22.2 (i386-mingw-nt5.1.2600) MULE/5.0 (SAKAKI) Meadow/3.01-dev (TSUBO-SUMIRE)
伊藤です。
> > この件ですが、src/ccl.c で定義されている CCL_WRITE_CHAR は、0x80-0x9f
> > の値を書き出す際にバッファを 2 バイト要求するため、
> > shift-jisx0213-unix-stream-encoder の buffer-magnification が 1 だと
> > バッファが足りない時があるというのが原因のようです。
(snip)
> どのみち食わせる文字列しだいでは複数回エンコーダを回さなければな
> らない条件があるようなので(よくわかってないけど途中で変換が止まる),
> ここは encode_coding を直接使うのではなく encode_coding_string を
> 使うのが正しいようです.
mule-ja に出した最初のメールにも書いたように、buffer magnification を
変更するという案以外にも encode_coding の戻り値をチェックするという
方法を考えていたのですが、そうすると encoding_buffer_size の存在意義が
よく分からなくなったのと、xfns.c で同じような使い方をしているコードが
あったので、添付のパッチのような変更をしたとしても
encoding_buffer_size の戻り値が十分な大きさになった方がいいのかなと
考えています。
> このパッチはついでにクリップボードで Unicode text のやり取りを可能
> にします(こちらが私的には本題だったのですが)
私もその本題のほうをやろうとしましたが、結局、ユニコードテキストの
やり取りには問題なさそうだったので、自分で使っている Meadow-3 では
クリップボードまわりの処理は NTEmacs のコードを使うように
変えてしまいました。
ただし、Meadow-2.1 では NTEmacs のコードもユニコードテキストが
扱えるようになっていなかったので Meadow のコードをそのまま使っています。
> このパッチを適用した Madow で
> (set-clipboard-coding-system 'utf-16le-dos)
> をすると 0213 な文字も含めて Unicode で扱える文字がすべてクリップ
> ボード経由でやり取りできるようになるはずです.
少し試した範囲では問題なさそうです。
--
伊藤 和博(Kazuhiro Ito)