gfxPangoFonts
初回投稿日時: 2006年07月11日02時38分32秒
最終更新日時: 2006年07月11日03時46分00秒
カテゴリ: Memo Mozilla Core 雑談
SNS:
Tweet (list)
gfxPangoFonts、非常に問題が多いように思う。このソースはLinuxとBeOSで共有しているが、gfxWindowsFontsに比べると高級なpangoに頼りすぎていて、pangoとCSSのフォントの選択仕様の違いが色々なバグを生んでしまっている。
特に、アルファベット混じりの日本語テキストではpangoはかなり期待にそぐわない結果を返してくれる。 例えば日本語123日本語abc123という文字列があった場合、pangoは次のセグメントに分割する。
- 日本語123日本語
- abc123
この例で、前者は日本語、後者は英語という判定が下される。
多くの場合、thebesはデフォルトフォントに日本語フォントを、コンテキストにも日本語であることを明示的に設定しているが、pangoは後者に対して、日本語のフォントを(ASCII文字も表示可能にもかかわらず)採用せず、システム設定から英語のフォントを探して採用してしまうようである。そのため、特定の言語に含まれない、数字等のニュートラルな文字は周りの影響を受けてしまい、出力結果が常に同じフォントとは限らないという、バカバカしい問題が発生する。
この問題に対して、pangoの処理単位をニュートラル部分のみ独立して処理させることで、ニュートラル文字の問題に対応しているパッチは出したが、これだけでは、最初の言語毎にフォントを勝手に変更してしまう問題を解決できない。
gfxWindowsFontsの様に、文字列を言語ごとに分割してから、アイテムごとに、コンテキストのフォントと言語の再設定を逐一行い、pangoにレイアウトさせるしか無いのだろうか。