CsaBona.exeの文字化け

WineでBonanzaを動かしてみるの続き。
CsaBona.exeが文字化けする件について長らく悩んでいたのだが、試験運用中なLinux備忘録さんの記事を参考に、lsofでCsaBona.exeが使用するフォントを調べてみた。


$ lsof -p $(pidof CsaBona.exe) |lv

結果、/usr/share/wine/fonts/tahoma.ttf、/usr/share/fonts/truetype/ipa/ipagui-mona.ttf、~/.wine/drive_c/windows/fonts/marlett.ttf、~/.wine/drive_c/windows/fonts/jvgasys.fonを使用していることが分かった。gnome-font-viewerで見てみると、marlett.ttfは記号からなるフォントで関係なさそう。tahoma.ttfとjvgasys.fonが怪しいので、ためしにjvgasys.fonをjvgasys.fon_に改名し、今度はCsaBona.exeが/usr/share/wine/fonts/jvgasys.fonを使おうとするのでこちらも改名すると、右図のようになった。

今回はCsaBonaはipam.ttf(IPA明朝)を使用しているが、アンチエイリアスがかかっているものの、全角文字を無理やり半角で表示しているようで読みにくい。実はLinux上でIPAフォントからビットマップフォントを削除するで紹介した手順で、すでにipam.ttfからビットマップフォントを削除していた。そこでビットマップフォントを含んだオリジナルのipam.ttfと入れ替えて見たところ、右図のようになった。
これなら十分使用できると思う。ただ、文字幅があわないので、"先手"、"後手"の部分が汚い。IPAモナーフォントを優先的に指定できるなら問題は解決しそうだ考え、ビットマップフォントの入ったipam-mona.ttfへのシンボリックリンクを~/.wine/drive_c/fonts/以下にはって見たところ、IPAモナー明朝が使用された。その後色々試してみるとIPAモナーP明朝が一番綺麗に見えることがわかった。またIPAモナーUIゴシックもビットマップ入りの方が良い。ということで以下が完成したCsaBona起動スクリプト*1

#!/bin/bash

ln -s /path/to/ipamona_with_bitmap/ipamp-mona.ttf ~/.wine/drive_c/windows/fonts/
ln -s /path/to/ipamona_with_bitmap/ipagui-mona.ttf ~/.wine/drive_c/windows/fonts/
pushd ~/.wine/drive_c/Program\ Files/bonanza
wine CsaBona.exe
popd
rm ~/.wine/drive_c/windows/fonts/ipamp-mona.ttf
rm ~/.wine/drive_c/windows/fonts/ipagui-mona.ttf


追記2008/03/17
/path/to/ipamona_with_bitmap/ipa_orig/ipagui-mona.ttfとなっていたのを/path/to/ipamona_with_bitmap/ipagui-mona.ttfに修正。


追記2008/06/07
整形。


追記2008/06/22
関連記事:Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink

*1:「/path/to/ipamona_with_bitmap」及び、「~/.wine/drive_c/Program\ Files/bonanza」は各自の環境に合わせて書き換える。