Shiro Kawai
shiro****@lava*****
2002年 10月 27日 (日) 06:08:45 JST
あ、これはあきらかなバグです。仕様ではformatは常に「文字数」を扱う ことになっており、実際にpadding等はそのように動作します。 (format #f "~4,,,'ぐa" "む") => "むぐぐぐ" 最大文字長を指定する第5パラメータは後から付け足したんですが、 そこでバグったようです。 漢字をASCIIの倍の幅で表示する端末で綺麗に表示を揃えるために、 表示幅を扱うライブラリがあっても良いとは思いますが、思いっきり 言語依存になるため、作るとしたら日本語サポート用のモジュールに したいですね。 lang.jp.util とか。 --shiro From: KIMURA Shigenobu <skimu****@mac*****> Subject: [Gauche-devel-jp] format に日本語いれると。。。 Date: Sat, 26 Oct 2002 14:08:40 -0500 > とりあえず、最後のエラーはどうにかしたいですね。 > > (format #f "~,,,,4a" "あぶらかだぶら") -> "あぶ" > (format #f "~,,,,5a" "あぶらかだぶら") -> #*"〓xa4〓xa2〓xa4〓xd6〓xa4" > (format #f "~,,,,6a" "あぶらかだぶら") -> "あぶら" > (format #f "~,,,,8a" "あぶらかだぶら") -> *** ERROR: end argument is out of > range: 8 > > format の仕様から考え直さなくてはいけない? > 数字を文字数とするかバイト数とするか。。。この場合はほとんどの場合 > 画面の幅にあわせるのが目的だから、バイト数としておけば SJIS EUC では > 普通はうまくいく。(3 バイト文字の時はダサダサになるけど。。。) > そもそも文字列を表示したときの長さと文字列のバイト数が比例するのは > 幻想でしかないから、文字数にしてすっきりしてしまうか。。。