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

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

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

2007年1月1日

Bug 5097 [Cairo][GTK2] 日本語フォントがbold/italicで表示できない
初回投稿日時: 2007年01月01日10時49分24秒
カテゴリ: cairo Mozilla Core
SNS: (list)

まだ作業中のバグ。

Linuxのcairoでは今のところ、太字と斜体が、フォント側で用意されていない場合に動的に生成できない。日本語フォントでは当然のごとくそんなリッチな条件が揃っていないので、結果としてこういうバグになっている。

cairoがバックエンドとして利用しているFreeType2では太字化のAPIと、斜体化のAPIが共に実装されているが、ソースコードを読むと、まだunstableな状態のAPIであることが明記されている。もちろん、そういうAPIなのでドキュメント側にも記載されていない。しかも、斜体化の方に関してはビットマップフォントでは効果が無い、中途半端なデキだ。(でも画像処理が得意分野ではないので、AAまで含めたビットマップフォントの斜体化はやり方が明確にイメージできない。) LinuxのCJK圏でのビットマップフォントの利用状況がはっきりとは分からないが、Macのように明るい状況ではなさそうで気がかりではある。

太字の方に関してはfontconfigの助けもあって、既にcairoからFT2のAPIにアクセスするようになっていて、ビルドオプションで有効にしてしまえばなんとかなるようだ。そこで、このビルドオプションを無条件に有効にするパッチを出したのだが、tinderboxマシンでビルドに成功するかどうかは不透明。現在FreeType Projectの方で公開されているソースコードではFT2のどのバージョンから存在しているAPIかが不明なためだ。だが、どのみちtinderboxで公開しているビルドが太字を表示できないのであれば、CJK圏には何の意味も無いテストビルドになってしまうし、ましてやリリースビルドがそんな環境で作られては困るので、問題があるならビルドマシン側を変更するように話を持って行く必要があるだろう。

斜体の方に関してはもうひとつ問題があって、fontconfigで斜体を動的に生成しないといけないフォントかどうかを判断できる仕様にはなっていない。今からfontconfigにコミットしたとしてもFx3のリリースに対しては既に遅すぎるので、もっと直接的な対応が必要だ。今のところ、ハッキーな手段と、cairo側のインターフェースの変更の二つの案しか思いついていないが、なんとかなるかは不透明。まだまだ机上の空論のままである。

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

bug 5097を含むエントリ

Bug 5097 [Cairo][GTK2] 日本語フォントがbold/italicで表示できない #2