依然として残るフォント化けについて検証/対処
フォント置換の設定が不十分?
これまでのフォント設定では、例えば、Notepad++というテキストエディタのデフォルトのフォント設定だと、このように日本語が化ける部分が出る。(実際の文字列は「AIUEO あいうえお」)
そこで、lsofというコマンド*1を使用して、どのフォントが実際に使用されているのかを調べてみた。
$ /usr/sbin/lsof /usr/share/fonts/*/*.ttf | grep notepad++ notepad++ 1874 [ユーザ名] mem REG 3,6 234788 586411 /usr/share/fonts/corefonts/courbi.ttf notepad++ 1874 [ユーザ名] mem REG 3,6 244156 586412 /usr/share/fonts/corefonts/couri.ttf notepad++ 1874 [ユーザ名] mem REG 3,6 126364 586405 /usr/share/fonts/corefonts/comic.ttf notepad++ 1874 [ユーザ名] mem REG 3,6 311508 586410 /usr/share/fonts/corefonts/courbd.ttf notepad++ 1874 [ユーザ名] mem REG 3,6 302688 586409 /usr/share/fonts/corefonts/cour.ttf notepad++ 1874 [ユーザ名] mem REG 3,6 139640 586426 /usr/share/fonts/corefonts/verdana.ttf notepad++ 1874 [ユーザ名] mem REG 3,6 3353352 1178128 /usr/share/fonts/ipamonafont/ipagui-mona.ttf
courbi.ttfなどのフォントは、「corefonts」というフォントパッケージに含まれる、欧文(日本語部分のない)フォント。これらのフォントを使用しないように置換を行えれば、化けを回避できるのではないかと思い、Wineにより自動認識される、フォント名とフォントのファイル名との対応を格納している部分(下の部分の他、${WINEPREFIX}/user.regの[Software\\Wine\\Fonts\\External Fonts]にも同様のものがある)
ファイル名: ${WINEPREFIX}/system.reg より、特定のフォント名に関する項目のみ抜粋
[Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts] "Courier New (TrueType)"="cour.ttf" "Courier New Bold (TrueType)"="courbd.ttf" "Courier New Bold Italic (TrueType)"="courbi.ttf" "Courier New Italic (TrueType)"="couri.ttf" "Comic Sans MS (TrueType)"="comic.ttf" "Verdana (TrueType)"="verdana.ttf"
を参考にして、
と置換する設定を書いてみた。
(2014/9/26)リンク先を修正
ファイル名: ${WINEPREFIX}/system.reg
[Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes] "Courier New"="IPA \x30e2\x30ca\x30fc \x30b4\x30b7\x30c3\x30af" "Comic Sans MS"="\x307f\x304b\x3061\x3083\x3093" "Verdana"="Systema"
これで、日本語部分が表示されるようになった。他の欧文フォントでも試してみたが、どうやら、Wineでは、欧文フォントを指定したときに、日本語部分が化けるらしい(仕様?)。メモ帳で実験しても、欧文フォント指定時に日本語が化けることを確認。
アプリケーションによっては、特に英語圏で開発されたものを多言語化もしくは日本語化したものが、このようにフォント名決め打ち*2されていることがあり、置換を行わないと化けることが他にもありうる。*3
レジストリ設定項目について
フォント置換のレジストリは- HKEY_LOCAL_MACHINE(HKLM)\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes: システム設定
- HKEY_CURRENT_USER(HKCU)\Software\Wine\Fonts\Replacements: ユーザ設定(Wine固有のレジストリ)
の2つあり、色々試したところ、UIフォントに関しては、何故か
ファイル名: ${WINEPREFIX}/user.reg
[Software\\Wine\\Fonts\\Replacements] "MS UI Gothic"="IPA \x30e2\x30ca\x30fc UI\x30b4\x30b7\x30c3\x30af"
ここで設定しないと、化ける部分(例: Picasaの「ウェブ アルバムにログイン」の文字)がある。それ以外の置換設定は「FontSubstitutes」のほうに移動しても問題なさそうだった。ただし、存在しないフォント名(「MS ゴシック」など)はフォント選択ダイアログに出ないため、「Replacements」のほうがよさそう。
Wine内蔵Windowsインストーラのフォント
Wineに含まれるmsiexecコマンドで$ msiexec /i [Windowsインストーラファイル].msi
のようにしてWindowsインストーラの.msiファイルをインストールすることができるのだが、そのUIフォントがどうもうまく表示できていなかった。しかし、ついに、以下の設定により正常に表示されることを確認できた。
ファイル名: ${WINEPREFIX}/system.reg
[Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes] "MS Sans Serif"="MS UI Gothic"
Arialを置換してもうまくいかず、試しに「corefonts」パッケージを一時的に消しても、別の欧文フォントになってしまっていたが、それらは「MS Sans Serif」を使用したときに自動選択される候補だった可能性がある(が、よくは分からない)。
使用したバージョン:
- Wine 0.9.44