kumaryu日記
2011-03-14
_ 日記
地震。あんなに揺れたのは初めて経験した。 会社で普通に仕事してる時でよかった。家で一人だったら不安だったろう。
土曜には家族の無事が聞けたんで安心。昼過ぎに家に帰ってみたらすごい荒れてる…って普段から荒れてたわ。積んでた本やCD・ゲームが崩れてたのは予想通りでそれ以上は何事もなかった様子。地域的には停電してるという話だったがスリープしてたiMacも普通にスリープから復帰してきたんで停電も無かったようだ。ガスメータのリセットすら必要無かったのでそれほど揺れなかったのかもしれない。
あとは情報を集めたりで土日おわり。日曜夜には弟とメッセンジャーで連絡とれた。水が出なくてガソリンが無いけどゲームやってるので平気だと。何が平気なんだかよくわからんが、それはようござんした。
計画停電は電車は大丈夫なんだろうと思って朝起きたら電車大混乱しててびびった。2ch見たら近くの駅は入場規制というがとりあえず様子見に行ったらやっぱり駅前で人溢れてて入れない。昼前くらいに行ったら空いてて一駅間だけぎゅうぎゅうだった以外は普通に会社に着いたんだけど、ついた瞬間に電車止める発表が。帰る手段無くなりましたな。まあ帰れない覚悟だったんでべつにいいんだけど。
結局その後電車は動いて、ちょっと乗り継げば帰れそうなので帰宅中。明日以降はどうなるかね。そのうち適当なところに落ち着きはするだろうけど。
_ 日記(PeerCastStation)
PeerCastStation。monoで動くか試してみた。ビルドは通って動きもしたんだが、OSXのmonoだとWindows.Formsで表示した日本語が豆腐に化ける。 MonoDevelopもそんな問題あって設定で無理矢理回避できたんだけどWindows.Formsはどうだろう。
以前MonoDevelopでも文字化けしたのをなんかいじった覚えがあるので再度調べると、Gtk#というかGtk+の描画で使われてるPangoのOSX版でフォント持ってるコードポイント情報が使えなくて日本語表示できないフォントでも表示できると勘違いして豆腐になってるとのこと。解決方法はPangoの設定ファイルを作ってやってデフォルトのフォントを日本語フォントに置き換えてやると。
monoのWindows.Formsはlibgdiplus使ってるのでlibgdiplusはどうやってテキスト描画してるのか。ビルド設定でCairoのテキストバックエンドかPango経由か選べてPangoバックエンドは問題があるから非推奨らしい。ということはきっと公式バイナリもCairo直接使ってるんだろう。
さらに調べるとバグレポートでlibgdiplusのデフォルトフォントが常にSerif返すから日本語表示できねーんですけど、って奴があった。返事もあってどっちかというとCairoがちゃんと描画してくれないのが悪いんだよねーとか。CairoのQuartzバックエンドを使えば上手くいきそうらしいんだけど双方向テキスト描画に問題があるからQuartzバックエンドは使わないそうな。なるほどなー。
QuartzバックエンドのCairo使えばよさそうならビルドしてみるかと思ったが、MacPortsではlibgdiplusがCairoのQuartzバックエンドが有効にされてるのを発見すると入らないようだ。そこまでするか。
自前でビルドするかとも思ったけどめんどすぎるのでやめ。ビルドできたところで配布どうするんだっつーのな。Cairoからmonoからなにから配布するのはめんどいよ。
別なものを調べてた時にたまたまMonoMac.Window.Formsというのを見つけたので試してみる。Windows.FormsをMonoMac上に作り直したもののようだ。MonoMacが必要とのことでMonoDevelopの2.6ベータにMonoMacアドオンを入れてビルドしてみたが、どうもレイアウトとかテキストボックスの複数行とかがちゃんと動かない。使ったMonoMacのバージョンが悪いのかまだ実装ができてないのかはわからないが残念ながら現状でそう簡単に使える物ではなさそうだ。
Windows.Formsでの問題はとにかく日本語表示できるフォントが選択されないことなので、GUIのフォントとして日本語表示できるものを設定してあげればいいんじゃね、と思い付いた。おそらく素のX Windowなシステムなら問題ないのでOSXだけのコードになるけどまあ仕方ない。GUIは最終的にはMonoMacとかを使うようになるのがいいだろうし。
なのでEnvironment.OSVersion.PlatformがMacOSXならFormのフォントをOsakaにしてやった…けど動かねぇ。歴史的経緯によりEnvironment.OSVersion.PlatformはOSXでもUnixを返してくるらしい。そりゃUNIXだけどさ。OSXかどうか判別できる方法ないんですけど!!
困ってたらunameコマンド実行して値見りゃいいんじゃね?って教えてもらったのでそれで。PlatformがUnixでuname実行できて標準出力にDarwinが出てたらOSXということにしてFormのフォントをOsakaにしてなんとか表示できた。まあわかれば簡単だけどねー。
フォントはとりあえずOsaka固定にしちゃったけど設定見て取得した方がいいだろね。