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

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

もずはっく日記(2008年3月)

2008年3月30日

Bug-org 388744 Off-by-one error in Windows drawing with inline-block and float
初回投稿日時: 2008年03月30日20時39分39秒
カテゴリ: Mozilla Core バグ修正
SNS: (list)

Bug 6069の修正で修正できてしまったバグです。

Bug 6069がレイアウト結果を変えてしまうため、reftestを繰り返していたのですが、当初はfont-size: 0;の場合のテストがクリアできませんでした。その原因を調べてみると、font-size: 0;の場合、その要素は存在するが、内容が空であるかのようにレイアウトを行うという妥協が入っていることが分かりました。(現状の音声読み上げブラウザ等が@mediaを使わずにスクリーン上でのdisplay: none;を読み上げ時等にも使ってしまうので、コンテンツ側で利用されるハックのためのようです。) つまり、font-size: 0;の場合には下線等の描画場所を確保してはいけないというのがreftestをクリアできない理由だったのですが、WindowsとMacはOSの仕様上、サイズゼロのフォントは作れないのでgfxはコードの単純化の都合上、最低でも1pxのフォントを作るようにしていたため、サイズゼロの場合にgfxから返ってくるメトリクスが信頼できない、ということが分かりました。

そこでgfx上で、フォントサイズがゼロだった場合には各メトリクスをゼロ固定とすることでlayout側に特に変更を加えずにこの問題を解決させてみると、このバグまで修正されてしまった、という訳です。

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

bug-org 388744を含むエントリ