FireFoxの憂鬱
特定領域内の連続した文字列の自動改行を行いたい場合に
以下のようなコードを書いて試して色々と試していたところ。。*1
<style type="text/css"> .wd{ background:#ccaaaa; display:block; width:260px; white-space:normal; word-break:break-all; } </style> <b>日本語の文章だと</b> <div class="wd"> あいうえおかきくけこさしすせそたちつてとなにぬねのはにふへほまみむめも </div> <b>英語の文章だと</b> <div class="wd"> Apache Struts 2 is an elegant, extensib </div> <b>全角数字だと</b> <div class="wd"> 0123456789012345678901234567890123456789 さん </div> <b>連続した英文だと</b> <div class="wd"> asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf </div>
IEでは以下のスタイルがあるので。。。。
word-break:break-all;
firefoxがどうも。。。。
↓うまくいかないね。。。
んで、それに対するFFの逃げ道を色々と調べていたところ。。。
長年、Gecko の大きな不満の種の一つであった、長い URL が折り返されない問題(Bug 255990、Bug-jp 1476)がようやく解決されました。Trunk でその動作を確認できます。これは Firefox 3の目玉の一つになるでしょうね(目玉というにはさびしいですが)。
Geckoのバグなもよう。。。
さらに調べていると
一応、本家では様々な副作用が指摘されていて対策パッチをアップデートし続けている状態。対策は基本的には「Westernな文字っぽい開き括弧クラス」と、「Westernな文字っぽい閉じ括弧クラス」をでっちあげて(JIS X 4051にそんなクラスは無い)、「Westernな文字クラス」とそれらのクラスが隣接した場合は改行しないようにしている。つまり、改行される箇所は徐々に減らしている。
いろいろと根がふかそうです。。
*1:このコードの文字がまさにおんなじ現状で改行されてないのね