Wineでは、フォント同士で「衝突」が起きた時、文字が化けて内容が判別できなくなったり、極端に汚い状態で表示される事があります。
Wineのバージョン毎に方法が若干異なりますが、以下がその対策です:
①Wineをインストールした時に自動的に追加されたフォントのバックアップを退避させるフォルダを「/home/(ユーザー名)/」(例)に作ります。フォルダの名前は「.fonts」以外なら任意のもので大丈夫です。
例:「予備フォント」「ワインフォント」
②「/home/(ユーザー名)/.wine/drive_c/windows/Fonts/」にもフォントが残っていないか確認します。もし有れば①で作成した退避用のフォルダに移動させるか、(内容が重複している場合は)そのまま削除します。
③ファイルマネージャをRoot権限で開けて「/usr/share/wine/fonts/」内のフォントファイル(40個以上)を①の退避用フォルダに移動させます※。
※元の状態に戻したい時はRoot権限で開けた「/usr/share/wine/fonts/」に、退避用フォルダにバックアップしておいたフォントをコピーします。
Wineの再インストールまたはアップデートを実行すると「/usr/share/wine/fonts/」(DEBパッケージ版)もしくは「/usr/local/share/wine/fonts/」(ビルド版)から削除したフォントが復活するので、Root権限で再び削除する必要があります。
④端末に以下のコマンドを入力して、フォント制御アプリの「font-manager」と日本語を含むアジア系の文字に強い「ttf-unifont」をインストールします:
sudo apt-get install font-manager ttf-unifont
⑤Font Managerを起動させて、以下のフォントを除く全てのフォントを無効にします。なお、ユーザーディレクトリ直下(「~/」にある「.fonts.conf」(隠しファイル)を削除してしまうと、Wineで一部のアプリの日本語が化ける場合があるので注意:
◆梅ゴシック」:MSゴシックとの互換性が高いフォントです。1.4系統以前のWineではこのフォントを「Winecfg」(環境設定)の「デスクトップ統合」タブでデフォルトに設定しておくのがベターですが、1.5.18以降のWineでは、フォントがスムージングされにくくなる事がある為、「Droid Sans Fallback」でデスクトップを統合した方がいい場合もあります。
◆梅UIゴシック:「Winecfg」などのレイアウト崩れを防ぎます。
◆梅Pゴシック:このフォントが無効になっていると「~/.fonts.conf」が「Font Manager」の設定ファイルと連動している時に「Firefox」「VLC」「Oracle VirtualBox」などLinux側の一部アプリの日本語表示が若干粗くなる時があったので、有効化しました(2014年10月29日追記)。
◆Droid Sans:このセット(複数の「DroidSans*.ttf」)に含まれている「Droid Sans Fallback」を有効にする事で1.5.18以降のWineでフォントが粗くなったり化けたりする問題が改善します。
◆Unifont(ttf):当初は日中韓などアジア系文字のみに対応していたようですが、特殊記号へのサポートが強化されています。
⑥Wineアプリの表示に干渉する要注意なフォント:
◆Takao系のフォント:日本語とローマ字表記のサイトのみを閲覧する場合は、有効にしておいた方がよいフォントですが、中国語や韓国語など近隣諸国の言語でテキストが書かれているサイトをWineにインストールしたブラウザで閲覧しようとすると、文字の一部が化ける事があります。
◆アジア言語用フォント:Ubuntu系のディストリの場合、日本語との関連が薄い外字フォントもを含めた状態で配布される事が多い為、外国語へのサポートは全体的にしっかりしています。しかし、フォントの数が増えてくると、その分だけフォント同士の衝突による問題も起こりやすくなってくる為、特にWineでは「Unifont」など多言語対応のフォントを上手に活用して、少ないフォントでなるべく多くの文字や記号を映し出せるようにしていった方がいいでしょう。
⑧Winecfgを起動して、「デスクトップの統合」タブ内の、
◆「アクティブタイトルのテキスト」
◆「ヒントのテキスト」
◆「メッセージボックスのテキスト」
◆「メニューのテキスト」
で使うフォントを
「梅ゴシック」(Wine-1.4/1.4.1系及びWine-1.5系統の一部)
或いは
「Droid Sans Fallback」(Wine-1.6/1.6.1及びWine-1.5系統の約8割とWine-1.7系統)
にそれぞれ変更します。
⑧フォントスムージングを適用する為、端末に「regedit」を打ち込んで、Wineのレジストリエディタを起動します。
【全Wine共通の設定】
「HKEY_CURRENT_USER」→「CONTROL PANEL」→「Desktop」の「FontSmoothing」のデータ値を「2」に変更。
続いて「Desktop」内の空欄を右クリックして、「DWORD値」を新規に作成。英数字(16進数)を「データ」として登録します:
◆「FontSmoothingGamma」:3e8(十進数だと1000)もしくは578(同1400)
◆「FontSmoothingOrientation」:1
◆「FontSmoothingType」:2
【「1.5.18」以降のWineで必要な設定】
インストールされているWineが1バージョンのみの場合「HKEY_CURRENT_USER」→「Software」→「Wine」→「Fonts」→「Replacements」の「MS UI Gothic」(文字列値)をデフォルトの「Ume UI Gothic」から「Droid Sans Fallback」に変更します。
複数のWine(例:デフォルトの「/usr/bin/wine」と「/usr/local/bin/wine」又は「/opt/wine-compholio/bin/wine」)を切り替えながらアプリを動かしている場合、上の方法だと、切り替えの都度、フォント関連の設定がリセットされてしまう(「Droid Sans Fallback」が「MS UI Gothic」に戻る)為「HKEY_CURRENT_MACHINE」→「Software」→「Microsoft」→「Windows NT」→「CurrentVersion」→「FontSubtitutes」→「MS Shell Dlg」の「MS UI Gothic」を「Droid Sans Fallback」に変更、フォント設定を固定します。
【アンチエイリアス】(全Wine共通)
「HKEY_CURRENT_USER」→「Software」→「Wine」の「X11 Driver」を右クリック。「文字列値」を「ClientSideWithRender」名義で新規作成。処理を「有効」にする場合は「1」(半角)、「無効」なら「0」(同)を登録。
まれにスムージングの利いていない汚いフォントで表示される事がありますが、そういう時は端末に「wineserver -k」を打ち込んで、Wine関連のプロセスを終了させてから、アプリを起動させると直ります。
Wine-1.6系統以降だとスムージングはダメなのでは?と勝手に思っていましたが、実際は手順がちょっと異なるだけで、効果の方も古い分と余り変わらないようです。
【Linux側でアンチエイリアスを行なっている場合】
Linuxでは、ユーザーが特にいじらなくても文字がギザギザしないよう予め調整が施されていますが、一部のアプリでは「~/.fonts.conf」にアンチエイリアスを有効(ビットマップフォントを無効)にする記述を入れないと日本語の表示が若干粗く表示される事があります。
Wine側に「フォント・マネージャ」でフォントのフィルタリング(文字化けと表示汚れの対策として)が行われた事をLinux側が伝達する時に使うファイルも「~/.fonts.conf」(名前と場所が同じ)です。
通常はフォント選びを適切に行えば、ファイルの記述が「フォント・マネージャ」とリンクしている時でも割と違和感の少ない状態で表示される事の方が多いのですが、アプリ毎の仕様の違いを織り込みながら、日本語の表示を滑らかに均一化するには、所々調整が必要になってきます。
1つの「~/.fonts.conf」ファイルに2種類の内容(「アンチエイリアス用」と「フィルタリング用」)を併記するとどちらも無効になってしまう(共存できない)為、①フォントをフィルタリングしないと文字化けが起きるWineアプリを実行する前には、一度「フォント・マネージャ」を立ち上げて「~./.font.conf」の内容を上書き、②逆にアンチエイリアスが有効じゃないと日本語の表示が劣化するLinux側のアプリを使いたい時は、呼び出す直前に任意の場所に保存しておいたアンチエイリアス用の「.fonts.conf」で元の「~/.fonts.conf」を置き換えるようにすると症状が改善します(①に比べると必要性はずっと少ないと思います)。
2つの「.fonts.conf」の保存場所を決めて(同名なので同じフォルダ内には置けません)、シェルスクリプトでスイッチングできるようにしておくと楽です。この際に使う「cp」コマンドには「-f」オプションを付け加えて、上書きが強制的に実行されるようにしておく必要がります。
例:「cp -f ~/(置き場所)/.fonts.conf ~/」
Wineのバージョン毎に方法が若干異なりますが、以下がその対策です:
①Wineをインストールした時に自動的に追加されたフォントのバックアップを退避させるフォルダを「/home/(ユーザー名)/」(例)に作ります。フォルダの名前は「.fonts」以外なら任意のもので大丈夫です。
例:「予備フォント」「ワインフォント」
②「/home/(ユーザー名)/.wine/drive_c/windows/Fonts/」にもフォントが残っていないか確認します。もし有れば①で作成した退避用のフォルダに移動させるか、(内容が重複している場合は)そのまま削除します。
③ファイルマネージャをRoot権限で開けて「/usr/share/wine/fonts/」内のフォントファイル(40個以上)を①の退避用フォルダに移動させます※。
※元の状態に戻したい時はRoot権限で開けた「/usr/share/wine/fonts/」に、退避用フォルダにバックアップしておいたフォントをコピーします。
Wineの再インストールまたはアップデートを実行すると「/usr/share/wine/fonts/」(DEBパッケージ版)もしくは「/usr/local/share/wine/fonts/」(ビルド版)から削除したフォントが復活するので、Root権限で再び削除する必要があります。
④端末に以下のコマンドを入力して、フォント制御アプリの「font-manager」と日本語を含むアジア系の文字に強い「ttf-unifont」をインストールします:
sudo apt-get install font-manager ttf-unifont
⑤Font Managerを起動させて、以下のフォントを除く全てのフォントを無効にします。なお、ユーザーディレクトリ直下(「~/」にある「.fonts.conf」(隠しファイル)を削除してしまうと、Wineで一部のアプリの日本語が化ける場合があるので注意:
◆梅ゴシック」:MSゴシックとの互換性が高いフォントです。1.4系統以前のWineではこのフォントを「Winecfg」(環境設定)の「デスクトップ統合」タブでデフォルトに設定しておくのがベターですが、1.5.18以降のWineでは、フォントがスムージングされにくくなる事がある為、「Droid Sans Fallback」でデスクトップを統合した方がいい場合もあります。
◆梅UIゴシック:「Winecfg」などのレイアウト崩れを防ぎます。
◆梅Pゴシック:このフォントが無効になっていると「~/.fonts.conf」が「Font Manager」の設定ファイルと連動している時に「Firefox」「VLC」「Oracle VirtualBox」などLinux側の一部アプリの日本語表示が若干粗くなる時があったので、有効化しました(2014年10月29日追記)。
◆Droid Sans:このセット(複数の「DroidSans*.ttf」)に含まれている「Droid Sans Fallback」を有効にする事で1.5.18以降のWineでフォントが粗くなったり化けたりする問題が改善します。
◆Unifont(ttf):当初は日中韓などアジア系文字のみに対応していたようですが、特殊記号へのサポートが強化されています。
⑥Wineアプリの表示に干渉する要注意なフォント:
◆Takao系のフォント:日本語とローマ字表記のサイトのみを閲覧する場合は、有効にしておいた方がよいフォントですが、中国語や韓国語など近隣諸国の言語でテキストが書かれているサイトをWineにインストールしたブラウザで閲覧しようとすると、文字の一部が化ける事があります。
◆アジア言語用フォント:Ubuntu系のディストリの場合、日本語との関連が薄い外字フォントもを含めた状態で配布される事が多い為、外国語へのサポートは全体的にしっかりしています。しかし、フォントの数が増えてくると、その分だけフォント同士の衝突による問題も起こりやすくなってくる為、特にWineでは「Unifont」など多言語対応のフォントを上手に活用して、少ないフォントでなるべく多くの文字や記号を映し出せるようにしていった方がいいでしょう。
⑧Winecfgを起動して、「デスクトップの統合」タブ内の、
◆「アクティブタイトルのテキスト」
◆「ヒントのテキスト」
◆「メッセージボックスのテキスト」
◆「メニューのテキスト」
で使うフォントを
「梅ゴシック」(Wine-1.4/1.4.1系及びWine-1.5系統の一部)
或いは
「Droid Sans Fallback」(Wine-1.6/1.6.1及びWine-1.5系統の約8割とWine-1.7系統)
にそれぞれ変更します。
⑧フォントスムージングを適用する為、端末に「regedit」を打ち込んで、Wineのレジストリエディタを起動します。
【全Wine共通の設定】
「HKEY_CURRENT_USER」→「CONTROL PANEL」→「Desktop」の「FontSmoothing」のデータ値を「2」に変更。
続いて「Desktop」内の空欄を右クリックして、「DWORD値」を新規に作成。英数字(16進数)を「データ」として登録します:
◆「FontSmoothingGamma」:3e8(十進数だと1000)もしくは578(同1400)
◆「FontSmoothingOrientation」:1
◆「FontSmoothingType」:2
【「1.5.18」以降のWineで必要な設定】
インストールされているWineが1バージョンのみの場合「HKEY_CURRENT_USER」→「Software」→「Wine」→「Fonts」→「Replacements」の「MS UI Gothic」(文字列値)をデフォルトの「Ume UI Gothic」から「Droid Sans Fallback」に変更します。
複数のWine(例:デフォルトの「/usr/bin/wine」と「/usr/local/bin/wine」又は「/opt/wine-compholio/bin/wine」)を切り替えながらアプリを動かしている場合、上の方法だと、切り替えの都度、フォント関連の設定がリセットされてしまう(「Droid Sans Fallback」が「MS UI Gothic」に戻る)為「HKEY_CURRENT_MACHINE」→「Software」→「Microsoft」→「Windows NT」→「CurrentVersion」→「FontSubtitutes」→「MS Shell Dlg」の「MS UI Gothic」を「Droid Sans Fallback」に変更、フォント設定を固定します。
【アンチエイリアス】(全Wine共通)
「HKEY_CURRENT_USER」→「Software」→「Wine」の「X11 Driver」を右クリック。「文字列値」を「ClientSideWithRender」名義で新規作成。処理を「有効」にする場合は「1」(半角)、「無効」なら「0」(同)を登録。
まれにスムージングの利いていない汚いフォントで表示される事がありますが、そういう時は端末に「wineserver -k」を打ち込んで、Wine関連のプロセスを終了させてから、アプリを起動させると直ります。
Wine-1.6系統以降だとスムージングはダメなのでは?と勝手に思っていましたが、実際は手順がちょっと異なるだけで、効果の方も古い分と余り変わらないようです。
【Linux側でアンチエイリアスを行なっている場合】
Linuxでは、ユーザーが特にいじらなくても文字がギザギザしないよう予め調整が施されていますが、一部のアプリでは「~/.fonts.conf」にアンチエイリアスを有効(ビットマップフォントを無効)にする記述を入れないと日本語の表示が若干粗く表示される事があります。
Wine側に「フォント・マネージャ」でフォントのフィルタリング(文字化けと表示汚れの対策として)が行われた事をLinux側が伝達する時に使うファイルも「~/.fonts.conf」(名前と場所が同じ)です。
通常はフォント選びを適切に行えば、ファイルの記述が「フォント・マネージャ」とリンクしている時でも割と違和感の少ない状態で表示される事の方が多いのですが、アプリ毎の仕様の違いを織り込みながら、日本語の表示を滑らかに均一化するには、所々調整が必要になってきます。
1つの「~/.fonts.conf」ファイルに2種類の内容(「アンチエイリアス用」と「フィルタリング用」)を併記するとどちらも無効になってしまう(共存できない)為、①フォントをフィルタリングしないと文字化けが起きるWineアプリを実行する前には、一度「フォント・マネージャ」を立ち上げて「~./.font.conf」の内容を上書き、②逆にアンチエイリアスが有効じゃないと日本語の表示が劣化するLinux側のアプリを使いたい時は、呼び出す直前に任意の場所に保存しておいたアンチエイリアス用の「.fonts.conf」で元の「~/.fonts.conf」を置き換えるようにすると症状が改善します(①に比べると必要性はずっと少ないと思います)。
2つの「.fonts.conf」の保存場所を決めて(同名なので同じフォルダ内には置けません)、シェルスクリプトでスイッチングできるようにしておくと楽です。この際に使う「cp」コマンドには「-f」オプションを付け加えて、上書きが強制的に実行されるようにしておく必要がります。
例:「cp -f ~/(置き場所)/.fonts.conf ~/」