2008年10月8日水曜日

(FreeBSD) wineでPicasa2を動かしたら文字化けしたので、気合で修正

FreeBSD上で、画像を管理するソフトで、ちょっと気の利いたのないかな?と思って、Picasa2をインストールしてみました。



つまり、Windows版のPicasa2をwineで動かす、ってことです。



そういえば、近年になってWineの完成度が上がってるって話を最初に聞いたのは、Linux版のPicasaが公開されたときのことで、そのPicasaは実はwineで動いてる、とのことでした。



その当時からはだいぶ時間が経過しているせいか、手元のFreeBSD7では、portsでインストールしたwineで、なんの工夫もすることなく、当たり前のように、Picasa2をインストールできちゃいました。



へー、すごいじゃん ・・・ いや



200810071



よく見ると、というか、よく見なくてもすぐに気がつきますが、明らかに、文字化けしてますね。トウフ(□□□□□)が表示されてます。





ネット検索してみると、Linux方面の情報っぽかったですが、~/.wine/system.reg にて、Tahomaというフォントを、日本語のフォントで置き換えてやればよい、という情報が何件か見つかります。



~/.wine/system.reg を書き換えてみました。



[Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes]



という行以降のところに



"Tahoma"="IPAPGothic"



と書く。



で、wineなPicasa2を起動。



・・・で、やっぱりトウフが表示されました。



LANG=Cで起動すると、Picasa2のメッセージが英語になるので、それならトウフにはなりません。
英語で使えばいいか~  っていう気にもなるんですが、FreeBSDだからダメなんだよ、とか思われると口惜しいので、一応、じたばた、あがいてみました。





wineでどんなフォントが使われているかは、lsofで調べればよい、という、ものすごい力技な情報が見つかりました。lsofについては、末尾の「おまけ」も参照のこと。



やってみます。



% lsof | grep wine | grep ttf
wine-pthr 51497 nhh  txt     VREG         0,86    2828124     526930 /usr/local/lib/X11/fonts/TrueType/mona.ttf
wine-pthr 51497 nhh  txt     VREG         0,86      85192     732676 /usr/local/share/wine/wine/fonts/tahoma.ttf
wine-pthr 51497 nhh  txt     VREG         0,86    2828124     526930 /usr/local/lib/X11/fonts/TrueType/mona.ttf
wine-pthr 51497 nhh  txt     VREG         0,86      85192     732676 /usr/local/share/wine/wine/fonts/tahoma.ttf
wine-pthr 51497 nhh  txt     VREG         0,86    2828124     526930 /usr/local/lib/X11/fonts/TrueType/mona.ttf

(以下略)



どうしてモナフォントなんだよ、というのは置いておくとして、tahoma.ttfという、本当にTahomaなフォントがインストールされているようです。portsでwineをインストールすると、tahoma.ttfもインストールされるようです。



どうやら、本当にTahomaフォントが存在する場合は、~FontSubstitutesのところに、フォントの置き換えを指定しても、無視されているみたいです。



~/.wine/system.reg をもう一度見てみると、



[Software\\Microsoft\\Windows\\CurrentVersion\\Fonts]



のところに



"Tahoma (TrueType)"="Z:\\usr\\local\\lib\\..\\share\\wine\\wine\\fonts\\\\tahoma.ttf"
"Tahoma Bold (TrueType)"="Z:\\usr\\local\\lib\\..\\share\\wine\\wine\\fonts\\\\tahomabd.ttf"



とか書かれているので、この2行を削除して、wineなPicasa2を起動してみると・・・ダメです。やっぱりトウフが表示されます。



なぜダメかっていうと、wineを終了して、もう一度system.regを見てみると、削除したはずの行が復活しているじゃないですか。



親切にも、自動的にフォントを発見して、登録してくれるらしいです。



仕方ないので、



/usr/local/share/wine/wine/fonts/tahoma.ttf

/usr/local/share/wine/wine/fonts/DONTUSE/tahoma.ttf
とか、別のディレクトリに移動したら、また自動的に発見されてしまいました。サブディレクトリじゃダメみたいです。



サブディレクトリ以外のところへ退避させてみました。



# ls -l /usr/local/share/wine/wine/fonts-
total 158
-r--r--r--  1 root  wheel  85192  9 26 09:57 tahoma.ttf
-r--r--r--  1 root  wheel  75364  9 26 09:57 tahomabd.ttf



これで、やっとトウフが直りました。



200810072


~FontSubstitutesにて、Tahomaフォントを置き換えているため、日本語フォントのファイルをシンボリックリンクなどでtahoma.ttfという名前で用意しておく必要はないようです。





■ 過去記事






■ おまけ lsofの代わりにfstatを使う




lsof
は、portsの/usr/ports/sysutils/lsof/ にあるんですが、いちいちインストールするのもめんどくさい。



FreeBSDには標準でfstatというコマンドがインストールされていて、lsofの代わりにfstatが使えるみたいです。



  • fstatの引数にファイルを指定すると、そのファイルを使っているプロセスが表示される ・・・ってことを今回初めて知りました。今まで、fstatだと、ファイルシステム単位でしかわからないのか、と思ってました。


  • TrueTypeフォントは、mmapされているので、fstatには、「-m」オプションが必要らしいです。

こんな感じになりました。



% fstat -m /usr/local/share/wine/wine/fonts/*
USER     CMD          PID   FD MOUNT      INUM MODE         SZ|DV R/W NAME
nhh wine-pthread 57975 mmap /usr     732649 -r--r--r--    7360  r  /usr/local/share/wine/wine/fonts/jvgasys.fon
nhh wine-pthread 57496 mmap /usr     732649 -r--r--r--    7360  r  /usr/local/share/wine/wine/fonts/jvgasys.fon
nhh wine-pthread 57496 mmap /usr     732651 -r--r--r--    6136  r  /usr/local/share/wine/wine/fonts/marlett.ttf
nhh wine-pthread 57105 mmap /usr     732649 -r--r--r--    7360  r  /usr/local/share/wine/wine/fonts/jvgasys.fon
nhh wine-pthread 57096 mmap /usr     732649 -r--r--r--    7360  r  /usr/local/share/wine/wine/fonts/jvgasys.fon



% fstat -m /usr/local/lib/X11/fonts/TrueType/*.ttf
USER     CMD          PID   FD MOUNT      INUM MODE         SZ|DV R/W NAME
nhh wine-pthread 57496 mmap /usr     526930 -r--r--r--  2828124  r  /usr/local/lib/X11/fonts/TrueType/mona.ttf
nhh wine-pthread 57496 mmap /usr     566533 -rw-r--r--  2890444  r  /usr/local/lib/X11/fonts/TrueType/ipagp.ttf
nhh wine-pthread 57105 mmap /usr     526930 -r--r--r--  2828124  r  /usr/local/lib/X11/fonts/TrueType/mona.ttf
nhh wine-pthread 57096 mmap /usr     566768 -rw-r--r--  2072060  r  /usr/local/lib/X11/fonts/TrueType/M+1VM+IPAG-circle.ttf

(以下略)



0 件のコメント:

コメントを投稿