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

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

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

2008年3月13日

Bug 5917 一部のCJKフォントで下線位置が高すぎる(XPレベルでブラックリストで処理すべき)
初回投稿日時: 2008年03月13日20時54分11秒
カテゴリ: Mozilla Core バグ修正
SNS: (list)

Windows版のGecko1.8.1以前はlangがCJKなら下線位置をdecentの一番下にずらすようにしていたのですが、Gecko1.9ではそのコードがばっさりと無くなっていたため、一部のフォントで、全てのサイズ、もしくは一部のサイズで下線がくっつきすぎるという問題がありました。これはGeckoのバグという訳ではなく、適当ではないメトリックスを持つフォントが悪いのですが、とはいえなんらかの補正はやはり必要なので、今回からフォント名のブラックリストから特定のフォントでのみ、XPレベルで下線位置を今までのように補正するようになりました。

ブラックリストはfont.blacklist.underline_offsetという設定でカスタマイズ可能です。内容はカンマ区切りのフォント名ですが、Macでは英語のフォント名しか利用できないことに注意してください。Windowsはそのフォントの名前なら何語でも問題ありません。設定変更後はFxの再起動が必要です。

なお、gfxPangoFont*の実装の都合上、Linuxではこの機能はまだ使えません。これは将来のバージョンで修正されるかもしれません。

また、下線位置は、font-familyによる指定と、lang属性から取得したフォント設定(font.name.*とfont.name-list.*の双方)から、一番最初のフォントのものと、一番最初のブラックリストに載っていたフォントのものとで比較を行い、下側になる方を採用します。そのため、Gecko1.8.1までの表示結果とは少し違った結果になる可能性が高いです(Gecko1.8.1までは常に一番最初のフォントの下線位置が使われていました)。フォントのリストは、font-familyの指定順、font.name.*のうち、要素の言語に合ったもの、font-.name-list.*のうち、要素の言語にあったものの順に作られます。

なお、システムフォント(CSSのシステムフォント指定、ということです)にはこの補正は適用されないので注意してください。これはそのプラットフォーム上での他のアプリケーションとの表示結果に互換性を持たせるための措置です。また、XUL要素内の下線位置も今までから変更はありません。ブラックリストは利用されず、下線位置は常に一番最初のフォントのものになります。あくまでWebページのコンテンツのレンダリングでのみ影響がある修正です。

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

bug 5917を含むエントリ