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

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

もずはっく日記(2006年7月)

2006年7月11日

gfxPangoFonts
初回投稿日時: 2006年07月11日02時38分32秒
最終更新日時: 2006年07月11日03時46分00秒
カテゴリ: Memo Mozilla Core 雑談
SNS: (list)

gfxPangoFonts、非常に問題が多いように思う。このソースはLinuxとBeOSで共有しているが、gfxWindowsFontsに比べると高級なpangoに頼りすぎていて、pangoとCSSのフォントの選択仕様の違いが色々なバグを生んでしまっている。

特に、アルファベット混じりの日本語テキストではpangoはかなり期待にそぐわない結果を返してくれる。 例えば日本語123日本語abc123という文字列があった場合、pangoは次のセグメントに分割する。

  1. 日本語123日本語
  2. abc123

この例で、前者は日本語、後者は英語という判定が下される。

多くの場合、thebesはデフォルトフォントに日本語フォントを、コンテキストにも日本語であることを明示的に設定しているが、pangoは後者に対して、日本語のフォントを(ASCII文字も表示可能にもかかわらず)採用せず、システム設定から英語のフォントを探して採用してしまうようである。そのため、特定の言語に含まれない、数字等のニュートラルな文字は周りの影響を受けてしまい、出力結果が常に同じフォントとは限らないという、バカバカしい問題が発生する

この問題に対して、pangoの処理単位をニュートラル部分のみ独立して処理させることで、ニュートラル文字の問題に対応しているパッチは出したが、これだけでは、最初の言語毎にフォントを勝手に変更してしまう問題を解決できない。

gfxWindowsFontsの様に、文字列を言語ごとに分割してから、アイテムごとに、コンテキストのフォントと言語の再設定を逐一行い、pangoにレイアウトさせるしか無いのだろうか。

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

関連するかもしれないエントリを発見できませんでしたが、無いとは限りません。