glib in monoの問題点
最近Unityの人が「eglib1をデフォルトにしてくれ」と言って、やる、やらないで議論になったことがある。Paoloが「デフォルトの切り替えはしない」と書いているのだけど、一方でglibを使う問題点についても多々指摘していて面白い。GHashTableのイテレータが効率悪いぞ、とか、メモリ不足の時に黙って死ぬから補足できないとか、シングルスレッドでglibを使うアプリケーションでは、monoをプラグインとして使うことが出来ないとか。
http://lists.ximian.com/pipermail/mono-devel-list/2009-April/031879.html
winforms/macで日本語が表示されない問題の原因はたぶんcairo-quartzfontconfig
この前のwinforms on Macの日本語入力の問題と関連して、そもそも日本語が表示されないという問題を解決できないものかと調べていたのだけど、原因はcairo-quartzでデフォルトフォントがおかしくなるのが原因かなあと思っている。
libgdiplusで使われている内蔵cairoは1.6.4だし、cairo-quartz-font.cの変更履歴を見てもそれらしい修正が見当たらない(ざっと見ただけだけど)。直っていないような気もする。もっともcairo-win32でも似たような問題があるっぽいので、cairoのnon-pangoなテキストレンダリングは全般的にテキトーなのかもしれない。
じゃあlibgdiplusでもpangoを使うようにすればいいじゃん、という話になりそうだけど、少なからず作業が発生しそうな感じではある(し、libgdiplusを書いたSebastienはもうずっとmoonlight方面で忙しくて、こっちには手が回らない)。
…どうしたら良いかなあ。そもそもcairo-quartzに問題があるというのは推測でしかないのだけど。
追記: libgdiplusではcairo-quartzは使われていなかった。freetype2とfontconfgが直接使われていた。
Footnotes
-
monoのモジュールに含まれるglib互換ライブラリ。組み込みプロプラエタリ環境用に作られている。 ↩