Quantcast
Channel: mattintosh note
Viewing all articles
Browse latest Browse all 891

macOS での Wine の日本語設定(2019年版)

$
0
0

昔書いた記事が古くなったので改めてまとめておきます。

Homebrew の Wine は依存関係に gettext が入っていないためメニューの「ファイル」や「編集」などの部分が日本語にならないことがあります。これは翻訳データの中にそもそも日本語が入っていないのでレジストリの設定ではどうすることもできません。gettext をインストールした状態で Wine を再インストールすれば有効になる可能性はありますがバイナリ形式でインストールされる場合はどうしようもありません。Mojave の Homebrew では恐らくボトルというバイナリ形式でインストールされています。解決策が無いわけではありませんが長くなるのでここには書きません。

なお、一部が英語になる可能性はありますが Windows アプリケーション内の日本語の部分は問題ないはずです。

さくっと設定したい人

これが一番手っ取り早い方法です。下記のコードを最後の改行までしっかりコピーして Terminal.app に貼り付ければ完了です。お疲れさまでした。

Terminal

iconv -f UTF-8-t CP932 <<! | LANG=ja_JP.UTF-8 wine regedit -REGEDIT4[HKEY_CURRENT_USER\\Control Panel\\Desktop]"FontSmoothingType"=dword:00000002[HKEY_CURRENT_USER\\Software\\Wine\\Fonts\\Replacements]"MS UI Gothic"="ヒラギノ丸ゴ ProN W4""MS ゴシック"="ヒラギノ丸ゴ ProN W4""MS Pゴシック"="ヒラギノ丸ゴ ProN W4""MS 明朝"="ヒラギノ明朝 ProN W3""MS P明朝"="ヒラギノ明朝 ProN W3"!

FontSmoothingType の違いについては下記の画像を参考にしてください。

f:id:mattintosh4:20190527224730p:plain
"FontSmoothingType"=dword:00000001

f:id:mattintosh4:20190527224822p:plain
"FontSmoothingType"=dword:0000002

以下は Wine に興味がある方のみ引き続きお読みください。


日本語を含むレジストリデータを regedit.exe に渡す場合、以下のことを守る必要があります。例えば REGEDIT4が書いてない場合、regedit.exe はデータを読み込みません。また、文字コードを CP932 にしていても Wine が LANG=ja_JP.UTF-8以外(例えば LANG=en_US.UTF-8)で実行されると正しくデータが登録されません。

実際の Windows 10 のレジストリエディタを確認しましたが、REGEDIT4Windows Registry Editor Version 5.00に変わり、文字コードも UTF-16LE のようでした。この方法が Wine の方で使えるかはいまのところ確認していません。

system.reg や user.reg を直接編集したい人

system.reg や user.reg(以下、user.reg としてまとめて説明します)はアスキーテキストになっているので文字列型値(REG_SZ)に直接日本語を書くことができません。例えばレジストリエディタで HKEY_CURRENT_USER\Software\Wine\Fonts\Replacementsというキーに文字列値として名前が「MS UI Gothic」でデータが「ヒラギノ丸ゴ ProN W4」という設定をしたとします。

f:id:mattintosh4:20190527211837p:plain
Wine - Registry Editor

この場合、user.regには下記のように登録されます。

user.reg

[Software\\Wine\\Fonts\\Replacements]
"MS UI Gothic"="\x30d2\x30e9\x30ae\x30ce\x4e38\x30b4 ProN W4"

Wine のフォント設定を紹介しているサイトでは「この文字をコピーして貼り付けてください」と説明しているのを見かけますがこれだとアレンジが効かないんですよね。そもそもエスケープされた文字の元がなんだったのかもわからないので不安です。ここではちゃんと自分で日本語から設定を作成して user.reg の形式に合うように変換する方法を紹介します。

まず、テキストエディタで設定を作ります。user.reg の書式は下記のようになっています。ダブルクォートなどの規則をしっかり守りましょう。

"名前"="データ"

私がよく使う HKEY_CURRENT_USER\Software\Wine\Fonts\Replacementsに設定するスタンダードな設定は下記の通りです。

レジストリ.reg

"MS UI Gothic"="ヒラギノ丸ゴ ProN W4""MS ゴシック"="ヒラギノ丸ゴ ProN W4""MS Pゴシック"="ヒラギノ丸ゴ ProN W4""MS 明朝"="ヒラギノ明朝 ProN W3""MS P明朝"="ヒラギノ明朝 ProN W3"

これを iconvに通しますが、--unicode-substオプションを使って \xhhhhで出力されるようにします。

Terminal

/usr/bin/iconv -f UTF-8--unicode-subst="\x%04x"-t ISO-8859-1レジストリ.reg

Result

"MS UI Gothic"="\x30d2\x30e9\x30ae\x30ce\x4e38\x30b4 ProN W4"
"\xff2d\xff33 \x30b4\x30b7\x30c3\x30af"="\x30d2\x30e9\x30ae\x30ce\x4e38\x30b4 ProN W4"
"\xff2d\xff33 \xff30\x30b4\x30b7\x30c3\x30af"="\x30d2\x30e9\x30ae\x30ce\x4e38\x30b4 ProN W4"
"\xff2d\xff33 \x660e\x671d"="\x30d2\x30e9\x30ae\x30ce\x660e\x671d ProN W3"
"\xff2d\xff33 \xff30\x660e\x671d"="\x30d2\x30e9\x30ae\x30ce\x660e\x671d ProN W3"

あとはコピーして貼ればいいんじゃないかな。

(余談)Linuxの場合

Linuxiconvには macOSのような --unicode-substオプションは無いが、uconv--to-callback escape-cを使えば \uhhhh形式で出てくるのでこれを sedで変換する。

Terminal

uconv -f UTF-8--to-callback escape-c -t ISO-8859-1<<! | sed 's/\u/\x/g'"MS UI Gothic"="VL Pゴシック""MS ゴシック"="VL ゴシック""MS Pゴシック"="VL Pゴシック"!

16進数部は大文字でも小文字でも user.regは気にしなくてよい。

"MS UI Gothic"="VL P\x30B4\x30B7\x30C3\x30AF"
"\xFF2D\xFF33 \x30B4\x30B7\x30C3\x30AF"="VL \x30B4\x30B7\x30C3\x30AF"
"\xFF2D\xFF33 \xFF30\x30B4\x30B7\x30C3\x30AF"="VL P\x30B4\x30B7\x30C3\x30AF"

rundll32.exe に INF を渡して登録する

面倒過ぎるのであまりおすすめしません。下記のファイルに説明が書いてあります。

https://github.com/mattintosh4/osx-wine-inf/blob/master/osx-wine.inf

FontSmoothingType の違い


Viewing all articles
Browse latest Browse all 891

Trending Articles