[Mutt-j-users 290] 原因判明:FreeBSDが持っている変換テーブルが悪い

Back to archive index

gwmaster ribbo****@ns*****
2011年 3月 2日 (水) 15:03:23 JST


On Sun, Feb 13, 2011 at 11:20:19PM +0900, gwmaster wrote:

> 
> muttからrefresh()を呼び出す前に、ncursesにaddstr()で
> 文字列を渡しています。この文字列は、★でも〒でも、
> UTF-8の文字列(3バイト)です。で、これを表示しようとすると
> ★と〒で動作が異なります。
> 
> となると、ncursesの中で、システムのテーブルか何かを見て、
> 幅を判断しているのかなあ。

ncursesからは__wcwidth()を呼び出していました。ソースコード中
ではwcwidth()でしたが、実際にはヘッダファイルでDEFINEされて
__wcwidth()でした。

ずっと辿っていくと、/usr/share/locale/UTF-8/LC_CTYPE
で文字幅を定義していて、これがやはり★に関しては1バイトと
なってました。
今、これを書き換えてテストしてみたところ、問題なくなりました。

どのように直すかについてはこれからまとめます。

oota




Mutt-j-users メーリングリストの案内
Back to archive index