Wineで日本語フォントの文字化け(豆腐)を解消する


はじめに

Wineを使用するときにぶち当たる壁として、日本語フォントが以下のように文字化けする課題があります。

これらを回避する方法としては、一般的に以下の方法が取り上げられています。

  1. windowsパソコンからmsゴシックのフォントファイルをコピーしてくる
  2. winetricksを使う

1.の方法はライセンス的な問題が気になります。2.の方法は、winetricksの最新バージョンを使わないとうまくいかないようで、私が手元の環境で試した際はうまく設定ができませんでした。
そこで今回は、winetricksを使わずに文字化け問題を解消する方法を紹介します。

動作環境

  • AWS Lightsail 5ドルプラン(メモリ 1GB、SSD 40GB)
  • OS : Ubuntu20.04

下準備

AWS環境で動かさない方は読み飛ばしてください。

GUI環境の構築

以下の記事を参考にGUIを構築します。
Ubuntu on AWSに軽量デスクトップLXDEとxrdpを使ってリモート接続してみた

OSの日本語化

OSが日本語になっていないと、症状が発生しないので。。。

sudo apt install language-pack-ja-base language-pack-ja ibus-mozc
sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"

Wineのインストール

Ubuntu 20.04でインストールする場合は、以下でインストールできます。
それ以外のバージョンは、こちらを参考にしてください。

sudo dpkg --add-architecture i386
wget -nc https://dl.winehq.org/wine-builds/winehq.key
sudo apt-key add winehq.key
sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main'
sudo apt update
sudo apt install --install-recommends winehq-stable -y

レジストリファイルの作成

Wikiによれば、レジストリを変更することでフォントの置換設定が可能になるとのことです。
nogajunさんが公開している、LinuxのWine環境で日本語周りをいい感じに設定するレジストリデータがありますので、こちらを利用します。LicenseはPublic Domain/CC 0とのことなので、以下にも記載させていただきます。

wine-japanese.reg
Windows Registry Editor Version 5.00

' 文字コードをUTF-16リトルエンディアン、改行をCR+LFで保存してください

[HKEY_CURRENT_USER\Software\Wine\Fonts\Replacements]
"Meiryo UI"="Noto Sans CJK JP"
"Meiryo"="Noto Sans CJK JP"
"MS Gothic"="Ume Gothic"
"MS Mincho"="Ume Mincho"
"MS PGothic"="Ume P Gothic"
"MS PMincho"="Ume P Mincho"
"MS Sans Serif"="Ume P Gothic"
"MS Shell Dlg"="Ume UI Gothic"
"MS UI Gothic"="Ume UI Gothic"
"MS Pゴシック"="Ume P Gothic"
"MS P明朝"="Ume P Mincho"
"MS ゴシック"="Ume Gothic"
"MS 明朝"="Ume Mincho"
"Tahoma"="Noto Sans CJK JP"
"Yu Gothic UI Light"="Noto Sans CJK JP Light"
"Yu Gothic UI Semibold"="Noto Sans CJK JP Medium"
"Yu Gothic UI Semilight"="Noto Sans CJK JP DemiLight"
"Yu Gothic UI"="Noto Sans CJK JP"
"Yu Gothic Light"="Noto Sans CJK JP DemiLight"
"Yu Gothic Medium"="Noto Sans CJK JP Medium"
"Yu Gothic"="Noto Sans CJK JP"
"Yu Mincho Demibold"="Noto Serif CJK JP SemiBold"
"Yu Mincho Light"="Noto Serif CJK JP DemiLight"
"Yu Mincho"="Noto Serif CJK JP"
"メイリオ"="Noto Sans CJK JP"
"游ゴシック"="Noto Sans CJK JP"
"游明朝"="Noto Serif CJK JP"

[HKEY_CURRENT_USER\Software\Wine\X11 Driver]
"ClientSideWithRender"="N"
"InputStyle"="root"

フォントのダウンロード

上記のレジストリに記載されている、置換するフォントをダウンロードする必要があります。以下のサイトより、フォントをダウンロードします。

ダウンロードしたフォントは、TrueTypeフォントは/usr/share/fonts/truetype/の下に、OpenTypeフォントは/usr/share/fonts/opentype/の下に保存してください。

# umefont_670.tar.xzのダウンロード
wget https://ja.osdn.net/projects/ume-font/downloads/22212/umefont_670.tar.xz
tar Jxfv umefont_670.tar.xz
rm umefont_670.tar.xz
sudo mv umefont_670 /usr/share/fonts/truetype/

# NotoSansCJKjp-hinted.zipのダウンロード
mkdir NotoSansCJKjp
cd NotoSansCJKjp
wget https://noto-website-2.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip
unzip NotoSansCJKjp-hinted.zip
rm NotoSansCJKjp-hinted.zip
cd ../
sudo mv NotoSansCJKjp /usr/share/fonts/opentype/

# NotoSerifCJKjp-hinted.zipのダウンロード
mkdir NotoSerifCJKjp
cd NotoSerifCJKjp
wget https://noto-website-2.storage.googleapis.com/pkgs/NotoSerifCJKjp-hinted.zip
unzip NotoSerifCJKjp-hinted.zip
rm NotoSerifCJKjp-hinted.zip
cd ../
sudo mv NotoSerifCJKjp /usr/share/fonts/opentype/

レジストリの適用

今回は、TeraPadで作成したレジストリファイルを、RDP越しでコピーしたものを利用します。
実行時に、0064:err:ole:start_rpcss Failed to start RpcSs serviceのようなエラーが出る場合がありますが、無視してかまいません。

regedit wine-japanese.reg

フォントコンフィグの修正

ここまでで日本語フォントが表示されますが、私の環境では若干汚いフォントになっていました。LinuxのWine環境で日本語周りをいい感じに設定するレジストリデータに記載されているフォントコンフィグを適用すると、きれいなフォントになります。

参考にしたサイト

Ubuntu on AWSに軽量デスクトップLXDEとxrdpを使ってリモート接続してみた
Ubuntu - WineHQ Wiki
Font Replacements - WineHQ Wiki
LinuxのWine環境で日本語周りをいい感じに設定するレジストリデータ。