Xiaomi mi pad 4 購入記6:(色々ありましたが)中華フォントにお別れ編

別にヒマなわけでものないのに、多くのオッサンがスマホタブレットと夜な夜な戯れているのは、なんだかんだ言いながらやっぱりこういうものをいじるのが好きだからに他ならない。


アッポコ製品で全てを固めてクールな生活ウヒウヒヒャッホーイ!となるより、若干の怪しさを感じながら未完成のカスタムROMを「どれにしようっかな~♪」と選んだりして楽しむのが好きなのである。


そんなどうしようもないオッサンの一人として、長年どうにかしたいと思っていたのは、アンドロイドちゃんの中華フォント問題である。


有名な話だが↓みたいな感じで日本語を表示させると、素のアンドロイドのシステムではことごとく日本語の漢字が簡体字で表示されてしまうのだ。


f:id:acchigawa:20200513033536j:plain


まあ、読めないことはないのでこのままでも使えてしまうのだが、気持ち悪いといえば気持ち悪いし、速攻で直せるのなら対処してしまいたい不具合である。


すごいのはこの問題はアンドロイドが世にデビューして以来、全く状況が変わっていないことで、本当にジャップというのは内弁慶というか交渉ベタなんだなーと思わされる。ちなみに、国産メーカーのアンドロイドは各社が独自の対策をしているので基本(例えばキャリアモデルとして売っている端末)この問題は発生しない。ただ、だったら正面突破してアンドロイドの公式ビルドでこの問題が発生しないようにしとけよ、と思ってしまう*1


それはともかく、オッサンもそろそろ人生の終わりが見えてきそうなので、やっと重い腰をあげて長年の問題に取り組んだのである。毎度同じことを書いているような気もするが、今回も日本語のページではロクなページが見つからなかった。特に最近のアンドロイドのバージョンに対応する情報は皆無といってもいい状況だった。やはり日本はみんなiPhoneで(誰も中華アンドロイドなんて使ってない)ツイッターって感じ(誰もブログなんてやってない)なんだろうということをいつもながら実感するのである。


以下はいつもの感じのまとめである。作業は全て、mi pad 4&Carbon ROM 8.0で行っている。




まずは、フォントを用意しよう。まとめなので当たり前なことも書くのだが、フォントはGoogleが提供しているNotoというフォントがもはや業界のデファクトスタンダードになっていると思う。


f:id:acchigawa:20200513034045j:plain

アンドロイドも基本これが標準フォントとして最初からインストールされている。そして素敵なことに、Googleは上記の中華化け問題を解消するために、日本語推しのフォントまで作ってくれているのだ。フォントネームは「Noto Sans CJK JP」で、これを使うとアンドロイドだけでなく、どんなOSでも幸せになれる偉大なフォントだ。


f:id:acchigawa:20200513034114j:plain


ただ、Googleのこの本家公式サイトからフォントをダウンロードすると、otf形式で落ちてくるので、これをなんとかttfに変換する必要があるのだ*2。詳細は面倒なので省くが、otf→ttfの変換の方法や親切な方がttfにしたものをおすそ分けしてくれているのを見つけることができるので、入手に苦労することはないだろう。入手したら、SDカードかなにかに突っ込んでおいて準備okだ。


フォントが用意できたら、次はMagiskである。さすがにシステムフォントを入れ替えるのでrootを取る必要がある。個人的にはrootを取るのはあまり好きではないのだが、こればかりはしょうがない。Magiskのサイトから、Magisk Manager(apk)とMagisk本体(zip)をダウンロードしよう。後は、ROMのイメージと同じでMagisk本体のzipをTWRPで丸焼きしておけばokである。apkも適当にインストールしよう。


ここまできたら、後は実際にフォントをインストールするだけだ。いつものadbコマンドで(筆者はMinimal ADB and Fastbootを愛用している)、

adb devices

adb shell


と打ち、mi pad 4のプロンプトが取れたら、

su


と打ってrootになろう。


で、ここがポイントなのだが、この作業についてググって出てくるサイトはどれも、「/system/fonts下にフォントをコピーして、それを/etc/にあるfont.xmlで指定してあげる」という方法を紹介していると思う。ただ、筆者は色々試してみたのだが、Carbon ROMが悪いのかAndroid10で仕様が変わっているのか、いまいちこの方法はうまく動かないのである。四千年の歴史の方が圧倒的に強いのだ。で、冴えないオッサンなりに色々なところをちまちまいじったりして頑張ったのだがどうもうまくいかない。困ったので、海外のサイトを漁ってみると、アメリカ人さんが、


「そんなごちゃごちゃ余計なことしないで、デフォルトのRobotoを上書きしちゃえばいいんじゃないの、メーン?」


と書いてくれているのを見てぶっ飛んだ。その通りである。さすがはチャレンジャーの国アメリカ。セコいジャップの固定観念とのスケールの差を思い知らすかのごとく簡潔明快なソリューションである。自分が求めていたのはこのシステムフォントの丸上書きなのだ。しかも、作業としてもどう考えてもこれが一番わかりやすく作業ミスにもなりにくい。


ということで、シェルから

mount -o rw,remount /

として、システム全体をリードオンリーから編集可能の状態にして、

cp /sdcard/Download/NotoSansCJKjp-Regular.ttf /system/fonts

Notoフォントをシステムにコピーして、

cd /system/fonts

フォントがあるフォルダに移動して、

mv Roboto-Regular.ttf Roboto-Regular.ttf.orig

とか元のRobotoを適当にリネームしておいて(念のためのバックアップ目的)、

cp NotoSansCJKjp-Regular.ttf Roboto-Regular.ttf

と名前を変えて、

chmod 644 *

とファイルのパーミッションを揃えて、

*これちゃんとやっておかないとシステムが起動しなくなって泣くことになるので注意!


reboot

反映させるために再起動、


こんな感じである。


これで、↓のように何をやっても日本語はちゃんと日本語のフォントで表示されるようになった。


f:id:acchigawa:20200513041032j:plain

ブラウザで表示されるテキストだけではなく、アプリのダイアログとかの部分のフォントも完全に置き換わっている。

f:id:acchigawa:20200513042902j:plain

しかし、アメリカ人さんの発想は自分には全くなかった。長年悩んで気になっていたのはなんだったのだろうという感じだ。やっぱり日本語が違和感なく表示されるのは使っていてとても気持ちがいい。典型的なもっと早くやっておけばよかったというカスタマイズである。これでまたしばらくmi pad 4で楽しく暮らせそうだ。


*2020年12月08日追記:

この後、今回のアドホックなやり方ではなく、もっと正面突破した方法での対策を行いました。ご参考にして下さい。

*1:まあ、ジャップはジャップが嫌いですからね

*2:まあ、otfのままでいってもいいような気もするけど