- - PR -
ASP.NETでのListBoxの2列表示について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-02-14 22:41
つまりUnicodeの0x3000(Unicode以外の文字コードは略)が現れたら、これを「空白コード」と認識して、0x20と同じように扱うのがブラウザ本来の仕様で、そうならないのはIEのバグ、ていうことですか?だとしたら直さないで欲しいなぁ(^−^; 手元にIEしかないので確認できないのが残念ですが、現行のNetscapeやFireFoxではどのように表示されるんでしょう? | ||||
|
投稿日時: 2005-02-15 20:42
次のようなコードを実行してみてください。
結果は"TF"なんですね。 それと、もう1つ、重要なことに気が付いています?プロポーショナルフォントでは、0x20の空白はほとんど幅がありませんが、0x3000は約1文字分…通じるよね?(^_^;…の幅があります。 おそらく、0x20の空白は、単語などの「区切りを表すもの」であって、決まった幅の「間」ではない、ということでしょう。英文では両端揃えでしたっけ?ワードラップをして両端揃えをすると、行末に出来る余白を、行中の区切り位置に展開しますよね。そういう「区切り」を表すための空白であって、間を開けるための空白ではない、と考えてみましょう。 すると、ユニコード0x3000の空白が約1文字分の幅を持っているのは重要なことです。なぜなら、日本語は「段落の最初は1文字分、字下げする」からです。英文でも字下げはありますが、幅は決まっていません。 これから考えるに、0x3000を“区切りを表す空白”と定義すると、1つの空白に置き換えなければならない。“1文字分の幅を表す文字”と定義すると、置き換えてはいけない。と、なるんですかねぇ??? こういう、“文化の違い”を意識しながらプログラムを作る必要があるのですね。。。 # こういうことを書いていると、試験問題の「n文字以内で答えなさい」 # が、非常に無意味なものに思えてきた(^o^; _________________ | ||||
|
投稿日時: 2005-02-15 21:58
ListBox上の表示の話から文化の違いの話になってしまいましたね(^^;でもこうゆう話はたいへん興味深いです。勉強になりますm(_ _)m
話を本題に戻してしまいますが、ここでは全角スペースの本来の存在意義はおいといて、あくまでやりたいことを実現するための手段として活用できないか、という話です。 察するところ、siroutoさんがやりたいのは、例えばコードと商品名を並べて表示させたい、その時に商品名の左端がずれないようにしたい、ということですよね。多分。 001 みかん 002 バナナ 003 りんご こんな感じで。このようにコード部の幅が等しければ、スペース1個で十分だと思います。問題は、コード部の幅が異なるとき。 f01 みかん f02 バナナ f03 りんご v001 キャベツ v002 白菜 d0001 お茶 d0002 ジュース 連続した半角スペースは表示上1個になってしまう。かといって を使うと&がHTMLエンコードされてしまう… この時全角スペースが詰められずに「1文字分」として表示できるなら、これを利用してコードが3桁のとこは半角スペース+全角スペース、4桁のとこは全角スペース、5桁のとこは半角スペース、とすればきれいに揃うのかな、と。(勿論等幅フォントを使います) 私の言いたかったのはそういうことでした。 |