[Efont-devel] Re: CLWFK 対応 FontForge 改造版を作成中です

Zurück zum Archiv-Index

Hidetaka Iwai tyuyu****@debia*****
2005年 5月 2日 (月) 20:32:25 JST


岩井です。

Hidetaka Iwai <tyuyu****@debia*****> wrote:
Message-ID: <20050****@debia*****>

> KANOU Hiroki <kanou****@khdd*****> wrote:
> Message-ID: <20050****@lists*****>
> 
(snip)
> > RFC2152 をざっと確認してみました。、エンコードする場合は 3 バイト と
> > 先頭の '+' で最大4 バイト (サロゲートペアは個別にエンコード)、 '-' が
> > 必要なのは "--" ('-' を表す。エンコード部の直後の '-' はデコード時に
> > 除去される) と"+-" ('+' を表す) の場合のみだそうです。
> > 現在の実装でも文字列末尾に '-' をつけてはいないので、unichar_t の字数の
> > 4 倍のバイト数を確保すれば十分だと思います。
> 
> なるほど、御教授ありがとうございます。4 倍で十分なのですね。

これなんですが、現在の utf7_u_strcpy の実装だと、

    if ( ubuf!=NULL ) while ( (ch = *ubuf++)!='\0' ) {

を抜けた後の残りの文字の処理で、 残りが 8 ビットまたは 16 ビット分しか
なくても、シフトして 24 ビットにしてから 6 ビットずつ 4 バイト書き込む
ので、utf7_u_strcpy に渡された ubuf が 1文字の非アスキー文字であれば、
最初の'+' と合わせてやはり 5 バイト必要になってしまうようです。

utf7_enc を残りのビット数に応じて処理を変えるよう変更するか、富豪的に
u2utf7_copy で 5倍確保する必要があると思います。

regards,
--
 Hidetaka Iwai
 tyuyu****@debia*****



Efont-devel メーリングリストの案内
Zurück zum Archiv-Index