カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

Safari on wineでの文字化けを直す方法 ( wineで豆腐文字化けを直す方法 )

概要: wineでSafari for windowsを動かした際に日本語が文字化けしたのでそれを直す方法


昨日アフィリエイトサイトを作り直してる時に、

  1. Safariできちんと表示されるか確認したい!
  2. wineで動かないかな……(ワクワク)
  3. WineHQ ->Platinum
  4. よっしゃ、さっそくインスコ

という流れでSafari for windowsをインスコしたのち放置してたんですが、 今日なんとなくきちんと表示されるかなぁと思ってチェックしてみたら、 なんかあちこちのサイトで文字化け、いわゆる豆腐になってたので、 それを直したんですが、今回その作業方法を備忘録として記録してみます。

前提

まず前提として僕の環境を書いておくと、僕の環境では、あまり大きな声では言えませんが、 クリーンインスコしたWindows XPからFontsディレクトリをぶっこぬいて、 wineのFontsディレクトリに放りこんであったりします。

で、さらに僕の環境では、クリーンインスコしたWindows XPからフォントを引っこ抜くのに飽き足らず、 レジストリのFontLinkの設定もエクスポートして使用していたりします。

要するに

  1. Windows XPのフォントがwineにインストールしてあり
  2. かつWindows XPのFontLinkの設定もインポートしてある

というのが僕の環境です。

豆腐化けの直し方

最初に書いておくと、wineでフォントが豆腐化けする場合には、

  1. 必要なフォントが入ってない
  2. フォントリンクが設定されてない

のどっちかっぽいです。

前者の場合では必要なフォントを入れることで、 後者の場合ではフォントリンクを設定することで、 それぞれフォントの文字化けを解決できます。

で、今回Safari for windows on wineで文字化けした原因は、 先程の後者の例、フォントリンクが設定されてないというのが原因だったので、 これを修正します。

で、まず最初に、どのフォントがフォントリンクさえれてないのかを調べるために、 wineで動かしたいApplicationを起動した状態で端末を開き

$ lsof | grep wine | grep ttf

という感じのコマンドを発行します。

lsofは現在動いてるプロセスが、どのファイルを使用しているか、を調べるコマンドで、 その出力結果からgrepを使って、wineが使っているであろうフォントファイルを引っこ抜きます。

で、僕の環境ではこんな感じの出力になりました。

nyarla-desktop% lsof | grep wine |grep ttf
Safari.ex 14049     nyarla  mem       REG        8,1   171792     828423 /home/nyarla/.wine/drive_c/windows/Fonts/verdana.ttf
Safari.ex 14049     nyarla  mem       REG        8,1   383804     828357 /home/nyarla/.wine/drive_c/windows/Fonts/tahoma.ttf
Safari.ex 14049     nyarla  mem       REG        8,1   409280     828418 /home/nyarla/.wine/drive_c/windows/Fonts/times.ttf
Safari.ex 14049     nyarla  mem       REG        8,1   398372     828419 /home/nyarla/.wine/drive_c/windows/Fonts/timesbd.ttf
Safari.ex 14049     nyarla  mem       REG        8,1   118832     828266 /home/nyarla/.wine/drive_c/windows/Fonts/ariblk.ttf
Safari.ex 14049     nyarla  mem       REG        8,1   352224     828265 /home/nyarla/.wine/drive_c/windows/Fonts/arialbd.ttf
Safari.ex 14049     nyarla  mem       REG        8,1   137616     828426 /home/nyarla/.wine/drive_c/windows/Fonts/verdanab.ttf

で、これでwine上で動いているWindows Applicationが使用しているフォントファイルの一覧が取得できるので、 これをどこかにメモって置きます。

んで、次に端末で、

$ regedit

という感じで、レジストリエディタを起動します。で、レジストリエディタが起動したら、

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink

を開いて、先程メモっておいたフォントのフォント名をキーにして複数文字列値を作成します。 で、このフォント名をキーにして作成したレジストリの値に、フォントリンクしたいフォントの設定を書き込みます。 まあこのあたりの設定はGoogleかなんかで、検索すれば出てくると思うので、詳細は省略します。

ちなみに前提で述べたとおり、僕の環境ではWindows XPの設定をimportしてあったりしたので、 僕の環境ではWindows XPからimportした各FontLinkの設定値を、新しいFontLinkも同じようになるように設定しました。

で、この設定を終えた後、もう一度豆腐化けしていたWindows Applicationを起動すると、 たぶんフォントの豆腐化けが直ってるかと思います。

以上で終了

まあざっとこんな感じかんじでSafari for Windowsの文字化けを直しました。

まああんまりフォントが綺麗とは言いづらい感じの表示になってるような気がするんですが、 まあ僕のサイトがきちんと表示されるようになったんで、まあこれでよしとしてます><

あと、僕のwine環境は、他人からすればあまり褒められた環境ではないので、 そこら辺割引いてこの記事を読むことをオススメします。

とまあ、こんな感じで、Safari for Windowsの豆腐化けを解決したって話でした。