Mi A1のシステム(とポケモンGo)のフォントを変更してみる
最近導入したMi A1も例外ではありません。購入時はNougat(Android7.x)だったのですが初期設定をしている最中にOTAが降ってきて、なし崩し的にOreo(Android8.x)となりました。
そんな訳で、今回はAndroid Oreoのシステムフォントを変更する手法に関して簡単にご紹介しようかと。当方が対象としたのはMi A1ですが、他のAndroidデバイスでも応用できるのではないかと思われます。
その手法ですが、Nougatの場合とまったく同じ。具体的には、自分が使いたいフォント(TrueType)を/system/fontsに入れて、/system/etc/fonts.xmlを編集。フォントファイルとfonts.xmlのパーミッションをチェックして再起動するだけです。
ダイジェスト化するとえらく簡単に見えますが、システムの基幹部分をいじるので作業は慎重に。特にNandroidバックアップの実行を強く推奨します。続いては実際の作業に当たってのポイント解説。
fonts.xmlの編集ですが、当方の場合は一度PCにコピーしてWindows上で作業しました。その方がテキスト入力や編集の作業がはかどりますので。上記スクリーンショットがテキストエディタでfonts.xmlを開いたシーンで、反転している部分が編集対象となる場所です。
それらの行が示すのは「言語設定が日本語(lang="ja")であった場合にはNotoSansCJK-Regular.ttcというフォントで表示する」ということ。つまり、このNotoSansCJK-Regular.ttcを自分が使用したいフォントのファイル名に入れ替えてあげれば良いことになります。
なお、フォントのファイル名を記述する際には、大文字/小文字を含めて完全に一致している必要があります。ちょっとでも違うとフォントが認識されず、運が良ければCJKフォントのまま見た目は変わらず、ヘタをするとテキストが可読不能な状態になる可能性もありますのでご注意を。
こちらが編集後のfonts.xml。ここではMigu 1VSというフォントを使用するように記述しておりますが、ボールド(太字)が別ファイルとなっているため、その記述を追加するため1行増えております。
で、フォント名および構文にミスがないか厳重にチェックしてファイルを保存。その後Androidデバイスに戻してあげます。場所は元どおりの/system/etc。その際にはパーミッションのチェックをお忘れなく。644(rw-r--r--)が正解です。
また、/system/fontsにコピーしたフォントファイルのパーミッションも同様(644)ですので、こちらも合わせてチェックしておきます。変更したはずのシステムフォントが適用されない場合、fonts.xmlの記述と両ファイルのパーミッションを再確認してみましょう。
あとはデバイスを再起動すれば、指定したフォントがシステムフォントとして使用されるという次第。なのですが、正しくフォントが適用されたにもかかわらず、ゲームアプリである"ポケモンGo"ではなぜかNotoSansCJKで表示されてしまいます。
どうやら「システムの言語設定とは無関係にfonts.xmlを上から総当りで検索し、現在の言語を表示できるフォントが見つかったらそれを使用する」という動作をしている様子。であるならば、対処は簡単です。
実は上記スクリーンショットがすでに解答だったりするのですが、NotoSansCJKを使用する最初の言語設定であるlang="zh-Hans"の直前に日本語用の記述を挿入(移動)するだけです。
これで"ポケモンGO"内でも変更したシステムフォントが使用されるようになります。こちらがそのサンプル。
左側がNotoSansCJKで表示された画面、右側がMigu 1VSで表示された画面となっております。
フォントの形はもちろん、可変幅(プロポーショナル)なので文字間隔が異なるのも見て取れるかと。
すでにシステムフォントをいじっているユーザには簡単な修正なので、心当たりのある方には一度お試しいただきたく。
コメント