この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2012年6月)

2012年6月18日

Bug-org 765166 IDEOGRAPHIC SPACE (U+3000) should cause line break after a white space
初回投稿日時: 2012年06月18日11時39分53秒
カテゴリ: Mozilla Core Mozilla16 バグ修正
SNS: (list)

珍しく、Firefox Inputに検証可能(再現可能)で、なおかつ、Firefoxに原因のあるフィードバックがありました。

問題のページは、昔懐かしいテーブルレイアウトで、そのテーブルの幅を指定しています。しかし、全角スペースのみの行がなぜか折り返されず、その幅を押し広げてしまい、レイアウトが崩れていました。

調査してみたところ、折り返し可能な空白文字が連続している場合に、Geckoは折り返さないように処理していました。理由を色々と考えてみましたが、おそらく、大量のまとめられない空白が無駄に行数を増やしてしまうことを阻止したかったんじゃないかと思います。

簡単なテストケースを書いてみたところ、WebKitやOperaでも全角スペース以外の折り返し可能な空白では改行しないようになっていたので、全角スペースについてのみ修正することにしました。

この修正により、全角スペースは空白ではなく通常の文字として処理され、基本的にはJIS X 4051の仕様に近いルールで処理されるようになっています。

ちなみに、IE9では何故かテストケースで全角スペースは折り返しませんでした。それで、問題のページのレイアウトが崩れないというのは謎でしかありませんが、互換モードの動作を考えても不毛なので、深く追求はしていません。

関連するかもしれないエントリ

bug-org 765166を含むエントリ