From: "NARUSE, Yui" Date: 2008-11-08T07:26:32+09:00 Subject: [ruby-list:45625] Re: String#ljust, center, rjustの挙動 成瀬です。 Yukihiro Matsumoto wrote: > In message "Re: [ruby-list:45623] String#ljust, center, rjustの挙動" > on Sat, 8 Nov 2008 06:18:23 +0900, rubikitch@ruby-lang.org writes: > > |簡単な表整形のためにString#ljust, String#rjust, String#centerを使っています。 > |EUC-JPは通常バイト数=文字長であるためRuby 1.8だと決められた幅に配置できました。 > |しかしRuby 1.9ではASCII文字も日本語文字も長さ1で処理するようになったため、 > |幅が伸びてしまいます。 > |決められた幅の文字列において整形できると嬉しいです。 > > まずRubyのM17Nの仕組みにおいて「決められた幅」をどう定義する > のか決める必要がありますね。 > > EUC-JPやShift_JISにおいて「表示幅」とバイト幅が一致することが > 多いのは事実ですが、それはあくまでも偶然のような気がしますし。 > さらに言えば、フォントがプロポーショナルであればそもそも「表 > 示幅」という概念そのものに意味がないわけで。 一応 Unicode には East Asian Width がありますし、 http://unicode.org/reports/tr11/ JIS 系の encoding はまぁ私達は通常どのような動作が期待されているか知っています。 それ以外はどうしましょうかね。 # East Asian Width も Ambiguous をどうするかという問題がありますが。 -- NARUSE, Yui