試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Wine上のopenBVEなどの文字化け(豆腐状態)を回避する強引な方法とWine上のフォントに関する追加メモ

Wine上のopenBVE

このような豆腐状態の文字化けが発生し、以前扱ったレジストリによるフォント置換を色々試してみたがうまく動作せずに色々悩み*1lsof/usr/share/wine/fonts/tahoma.ttfが用いられていることは分かっていたため、最後の手段としてこのフォントを日本語フォントで置き換えることを考えた。
(2010/2/4)えもん氏からフォントリンク機能を用いれば良いとのコメントを頂いたので、「Font Linking」の検索結果を参考に、レジストリエディタで

  1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLinkを開く
  2. 複数行文字列値型の項目「Tahoma」を作成
  3. データに「[用いたい日本語フォントのファイル名],[そのフォントの名前]」を入力

として実行してみたところ、フォントファイルの編集をせずに文字化けが解消され、本記事の要領でフォントファイルを置き換えたりする必要はなくなった。
Win32版のGTK+ 2.18系のデモの日本語部分は
http://kakurasan.ehoh.net/summary/ui.font.wine.html
font-replace-ipamona-msgothic_msmincho.regの適用で表示されており、フォントリンクの設定は関係しなかった。
以下、以前の内容となる。

他のフォントをtahoma.ttfとして上書きしてもダメ

試しに手元のMandriva Linux 2010.0にあるUmePlus P Gothic(/usr/share/fonts/TTF/japanese/umeplus-p-gothic.ttf)を/usr/share/wine/fonts/tahoma.ttfとして(管理者権限で)上書きコピーしてみたところ、openBVEが起動しなくなった。しかし、tahoma.ttfを元のファイルに戻すと起動した。つまり、フォントのファイル名が関係しているというより、「Tahoma」としてのフォント情報が関係していそうに見えた。

FontForgeでUmePlus P Gothicを改造してみるテスト

そこで、FontForgeを用いてumeplus-p-gothic.ttfを開き、以下のようにしてフォントの情報をいじって保存し、/usr/share/wine/fonts/tahoma.ttfとして置き換えてみた。
変更箇所については、色々試した結果

メニュー「エレメント - フォント情報」の中の「TTF名」内の「日本語|ファミリー|UmePlus P Gothic」を「日本語|ファミリー|Tahoma」へ

という1箇所の修正のみでOKだということが分かった。

修正後、ユニークフォントIDに関するダイアログではそのまま「OK」にした。その後メニューの「ファイル - フォントを出力」でフォントファイルを書き出した。

結果

ファイルを置き換えた結果、化けていた部分は正常に表示されるようになった。winetricksの「fontsmooth-rgb」でアンチエイリアスもできている。

メインウィンドウ

シミュレータモード(GNU/Linux版Monoでの動作時とほぼ同じ表示)
ファイルを置き換えればOKだが、オリジナルのtahoma.ttfが存在すると、改造フォントを別名で${HOME}/.fonts/などへ配置してもダメで、オリジナルのほうをフォント探索ディレクトリから見えないように移動するか消さなくてはならないようだ。

その他の部分への影響とWine上のフォント設定に関する追加メモ

WindowsGTK+(2.14系)のレイアウトが改善し豆腐も正常に表示されるように・2.18系ではクラッシュ対策にも

置き換えによってWindowsGTK+(2.14系)で同様に日本語部分が豆腐になっているのが改善されており、こちらはレイアウトが崩れていたのも改善されているが、半角英数が化ける?ところが出る。

ここでしばらくぶりにGTK+のサイトを確認したところWindows版にバージョン2.18系があったので、試してみたところ

今度は綺麗に表示されている。こちらはオリジナルのtahoma.ttfが存在すると日本語を表示するところで落ちるようで、この問題の改善としても役に立っているようだ。

「MS UI Gothic」への置換をしない状態におけるユーザインターフェースの既定のフォント

「Tahoma」のファミリ情報を持ったフォントは「MS UI Gothic」へのフォント置換のレジストリを設定しない状態における既定のユーザインターフェース用フォントとしても使われることが分かった。

仮に文字化け問題に強い日本語環境向けWineを独自にパッケージ化するとしたら...

(2010/2/4)フォントファイルをいじらずにフォントリンクに関するレジストリ設定をwine.infから読み込ませるという形での日本語環境特化はできそうな気がする。
以下、以前の内容となる。
tahoma.ttfを改造済み日本語フォントに置き換えるだけで(今回のような形の)文字化け問題に強い日本語環境向けWineが作れるような気がするが、既定のユーザインターフェース用フォントとして見ると、Windowsアプリケーションのダイアログのレイアウトの仕方の関係か、もとにするフォントによっては色々な部分で文字が途中で切れてしまう問題が残り、今回のフォントを用いた場合、Wine環境を新しく作った状態でのwinecfgの「アプリケーション」タブは

上のようになっており、ユーザインターフェース上の文字列において切れている部分が結構ある。しかし、winecfgなどのUIフォントは「IPA モナー UIゴシック」のほうがレイアウト的に合う上に「MS UI Gothic」への置換でフォントを変更できるので、日本語環境向けパッケージを作るとすれば/usr/share/wine/wine.infをいじって新規Wine環境作成時に該当するフォント置換レジストリ*2が読まれるようにすることはできる。もしくはIPAモナーフォントをもとにFontForgeで(本記事の要領で)ファミリ名をいじったものをtahoma.ttfにする手もあるが、独自のライセンスがあるので配布の面では面倒になりそう。また、その場合、openBVEのシミュレータモードのメニューの矢印は表示されない。

表示されないのは

  • U+279F 「DASHED TRIANGLE-HEADED RIGHTWARDS ARROW」
  • U+27A2 「THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD」

の2つで、これらを新しく描けば表示される。「IPA モナー UIゴシック」をもとにしてこれらを(かなり)適当に描いてみたところ

のようになった。とは言え、無理にこれを追加する必要があるかというと微妙。

関連記事:

使用したバージョン:

  • Wine 1.1.35
  • Mono(Win32) 2.4.2.3
  • Tao Framework(Win32) 2.1.0
  • openBVE 1.2.3.2
  • FontForge 20090923
  • GTK+(Win32) 2.14.7, 2.18.5

*1:「System」という名前で用いられるフォントと同一だということは分かったが、この名前を別のフォントに置換するような設定をしてもうまくいかなかった

*2:IPA モナー UIゴシック」を「MS UI Gothic」として使用するような設定で、これにより多くのUIフォントを「Tahoma」のフォント(改造フォント・ここでは一部はみ出る現象を起こすUmePlus P Gothic)から「IPA モナー UIゴシック」にするのを狙いとする