haven.さまざまな物や事に関する、役に立ったり立たなかったりするテキストが綴られるブログ。A1のシステム(とポケモンGo)のフォントを変更してみるAndroidデバイス/システムを新調した際の恒例行事となっているのがシステムフォントの変更。そのためにはroot権限を取得する必要がある訳ですが、システムフォントを自分好みに変更したい、というのも目的のひとつだったりします。A1も例外ではありません。購入時はNougat(Android7.x)だったのですが初期設定をしている最中にOTAが降ってきて、なし崩し的にOreo(Android8.x)となりました。Oreoのシステムフォントを変更する手法に関して簡単にご紹介しようかと。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。1VSというフォントを使用するように記述しておりますが、ボールド(太字)が別ファイルとなっているため、その記述を追加するため1行増えております。フォント名および構文にミスがないか厳重にチェックしてファイルを保存。その後Androidデバイスに戻してあげます。場所は元どおりの/system/etc。その際にはパーミッションのチェックをお忘れなく。644(rw-r--r--)が正解です。/system/fontsにコピーしたフォントファイルのパーミッションも同様(644)ですので、こちらも合わせてチェックしておきます。変更したはずのシステムフォントが適用されない場合、fonts.xmlの記述と両ファイルのパーミッションを再確認してみましょう。あとはデバイスを再起動すれば、指定したフォントがシステムフォントとして使用されるという次第。フォントが適用されたにもかかわらず、ゲームアプリである"ポケモンGo"ではなぜかNotoSansCJKで表示されてしまいます。「システムの言語設定とは無関係にfonts.xmlを上から総当りで検索し、現在の言語を表示できるフォントが見つかったらそれを使用する」という動作をしている様子。あるならば、対処は簡単です。実は上記スクリーンショットがすでに解答だったりするのですが、NotoSansCJKを使用する最初の言語設定であるlang="zh-Hans"の直前に日本語用の記述を挿入(移動)するだけです。これで"ポケモンGO"内でも変更したシステムフォントが使用されるようになります。こちらがそのサンプル。1VSで表示された画面となっております。フォントの形はもちろん、可変幅(プロポーショナル)なので文字間隔が異なるのも見て取れるかと。システムフォントをいじっているユーザには簡単な修正なので、心当たりのある方には一度お試しいただきたく。FeedBurner管理人への連絡はこちらのフォームから。