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

もずはっく日記(2011年1月)

2011年1月24日

Bug-org 574907 [DW] Don't use subpixel positioning for bitmap glyphs #2
初回投稿日時: 2011年01月24日16時24分47秒
カテゴリ: Mozilla Core バグ修正
SNS: (list)

DirectWriteだと、MS Pゴシック等で文字がくっつきすぎるというバグです。DirectWriteは最近のバージョンでは東アジアのフォントに対してはビットマップグリフを一定のサイズでは利用するようになっていますが、このビットマップを利用する時にも各文字の幅をアウトラインから計算して返してくるため、フォントサイズ(小数も利用可能)や行頭の位置との関係によっては判読不可能なぐらいにくっついてしまうことがあります。

色々と調べた感じではDirectWriteはどうも内部にビットマップグリフを利用した方が良いフォントのブラックリストを持っているようです。また、このリストでビットマップグリフを利用すべきサイズ指定までやっているのではないかという疑惑すらあります。このへんが全く明文化されていないのでビットマップグリフを持つサイズでは小数は丸めるようにし、GDI互換の幅計算で文字を配置するように修正してもらいました。この結果、以下のようにレンダリング結果が改善しています。

修正前のtrunkビルドのスクリーンショット

上記のスクリーンショットで赤く囲んだところに注目してください。文脈がなければ判読不可能な組み合わせも出てくることが分かります。

修正後のtrunkビルドのスクリーンショット

修正後はこのようになっています。まだ一部くっついているところがありますが……

Firefox 3.6のスクリーンショット

このFirefox 3.6のスクリーンショットを見れば分かるように、もともとGDIのレンダリングでもくっついてることはありますが、これはフォントの問題としか言いようがありません。

Twitter

Masayuki Nakano(問い合わせ先)