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

tksmashiw2008-06-22

CsaBona.exeの文字化けでjvgasys.fonを削除するとCsaBona.exe(GUI For Bonanza based on CSA SHOGI)の文字化けが直る事を書いたが、某所にて、system.regのSoftware\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLinkへ設定を書き込めば文字化けが直ると書いてあったのでさっそく試してみた。
~/.wine/system.regのバックアップをとり、最後の行に

[Software\\Microsoft\\Windows NT\\CurrentVersion\\FontLink\\SystemLink]
"FixedSys"=str(7):"ipag-mona.ttf"
"System"=str(7):"ipagp-mona.ttf"

を追記してCsabona.exeを起動してみた。(ipag-mona.ttf:IPAモナーゴシック、ipagp-mona.ttf:IPAモナーPゴシック)

その結果、右のように見事に文字化けが直った。今回使ったIPAモナーフォントは、Linux上でIPAフォントからビットマップフォントを削除するで紹介した方法でビットマップフォントを削除したものだが、jvgasys.fonを削除する方法では文字幅が半角になったが、今回の方法ではアンチエイリアスが綺麗にかかった全角幅で表示されている。この状態で使用されているフォントを調べたら、


$ []lsof -p $(pidof CsaBona.exe) |grep '\.ttf\|\.fon' |awk '{print $9;}'[]
[]/usr/share/fonts/japanese/TrueType/ipagp-mona.ttf[]
[]/home/tks/.wine/drive_c/windows/fonts/marlet.ttf[]
[]/usr/share/fonts/japanese/TrueType/ipagui-mona.ttf[]
[]/usr/share/wine/fonts/jvgasys.fon[]
となり、jvgasys.fonが未だ使われている。経過時間がビットマップ表示されているが、ここにおそらくjvgasys.fonが使われているのだろう。
jvgasys.fonでsysrem.regを検索したら、

[System\\CurrentControlSet\\Hardware Profiles\\Current\\Software\\Fonts] 1209200177
"FIXEDFON.FON"="jvgafix.fon"
"FONTS.FON"="jvgasys.fon"
"LogPixels"=dword:00000060
"OEMFONT.FON"="vga932.fon"

がひっかかった。そこでjvgasys.fonの部分をVL-PGothic-Regular.ttf(VL Pゴシック)に置き換えると言う暴挙に出てみた。


$ []lsof -p $(pidof CsaBona.exe) |grep '\.ttf\|\.fon' |awk '{print $9;}'[]
[]/usr/share/fonts/japanese/TrueType/ipagui-mona.ttf[]
[]/usr/share/fonts/japanese/TrueType/ipagp-mona.ttf[]
[]/home/tks/.wine/drive_c/windows/fonts/marlet.ttf[]

さすがに*.fonを*.ttfに置き換えようとしても無視され、かわりにipagp-mona.ttfが使われるようだ。右のスクリーンショット参照。
ビットマップフォントより見た目が綺麗なので、なにか不具合が出る可能性が有るがこのままでいくことにする。(明朝体の方が綺麗なので、後でipam-mona.ttfとipamp-mona.ttfに書き換えておいた。)