Androidのフォントを変更する (Lollipop)

この記事をシェアする

Android 5.0.2 Lollipopに更新したXperia Z1 Compactの日本語フォントを変更し、ついでに一部の特殊文字を使用する顔文字にも対応させました。

はじめに

以下のサイト様を参考にしました。
AndroidでTwitterでよく使われる顔文字を表示する – AndroPlus
Lollipop 5.1のfont変更 – Androidの備忘録
Lightなweightな日本語フォントをandroidに投入 – cat_in_136.blog()

この作業はXperia Z1 Compact Android 5.0.2 (ビルド番号 14.5.A.0.270)で行いました。Android 4.4 KitKatでのフォント変更はこちら。

フォントの設定に関する仕様とか

まずはAndroid 5.0 Lollipop以降のAndroid端末、特にXperiaでの日本語表示に関わるファイルやその設定等について整理してみます。ニワカなので間違っていたらスイマセン。

フォントの設定に関するファイル

基本的には下記のの2ファイルを書き換えればフォントが変更できます。
/system/etc/fallback.fonts.xml
/system/etc/fonts.xml

/system/vender/etc以下にもフォントの設定に関するファイルが有りますが、そちらはキャリア絵文字の設定等、ローカライズに使用されているっぽいです。

xmlの記述方法について

基本的には、既にある記述をマネすればいいです。記述されている内容は、上に記述されるほど優先順位が高くなります。

例外処理として、「Androidの表示言語として設定されている言語」と同じ言語に指定されているフォントが優先的に使用されます。例えば、日本語表示に設定されている端末であればlang=”ja”と設定されているフォントファイルが、韓国語表示に設定されている端末ではlang=”ko”と指定されているフォントファイルの方が優先的に使用されます。

lang=”ja” と指定されているフォントファイルが複数ある場合は、上に記述されているフォントの方が優先的に使用されます。

フォントファイルについて

フォントファイルが保存されている場所は/system/fontsです。標準状態のXperia Z1 Compact 5.0.2に存在している日本語フォントは、モトヤマルベリ(MTLmr3m.ttf)、NotoSans(NotoSansJP-Regular.otf)、SomcUDGothic(SomcUDGothic-Regular.ttf)の3つです。

設定されているフォントについて

Android 5.0.2のXperia Z1 Compactでは、日本語はモトヤマルベリとNotoSansが設定されています。モトヤマルベリ(約2.5MB)が一般的な日本語を担当し、モトヤが対応していない一部の特殊な文字をNotoSans(約170KB)でカバーする、という設定のようです。標準状態ではSomcUDGothicは設定されていません。

それでは実際にフォントを変更してみましょう。

広告

フォントを変更する

英数字は標準状態のAndroidでも細字のフォントが用意されていますが、日本語フォントでは標準の太さしか用意されていないため、英数字と日本語が混じった文章だと違和感のある表示になります。

font-lollipop-before

今回のフォント変更ではこの太さの差を解消することを主目的とし、ついでに特殊文字を使用する顔文字の一部にも対応させたいと思います。

フォントファイルを入手する

まずは各種の太さに対応した日本語フォントファイルをダウンロードします。Google Noto FontsというところからNoto Sans CJK JPというフォントをダウンロードし、ダウンロードしたzipを解凍します。

次に、特殊文字をデータが入ったフォントファイルを入手します。まず、以下のアプリのapkを入手します。
ツイッターするやつ(fontデータ)

apkファイルは無圧縮zipなのでzipファイルとして解凍すると、assetsフォルダの中にoriginal.zipというファイルがあるはずです。このoriginal.zipも解凍すると中からoriginal.ttfというファイルが出てくるはずなので、 twiyatu.ttfにリネームしておきます。

フォントファイルをコピーする

ダウンロードした、
NotoSansCJKjp-Black.otf
NotoSansCJKjp-Bold.otf
NotoSansCJKjp-Medium.otf
NotoSansCJKjp-Regular.otf
NotoSansCJKjp-Light.otf
NotoSansCJKjp-Thin.otf
twiyatu.ttf
をすべて端末の/system/fontsにコピーします。ファイルをコピー後、パーミッションが644になっているか確認します。

フォントファイルを設定する

最初はfallback_fonts.xmlを編集します。まず、

という部分を削除します。

次に、末尾にある

という部分を

と書き換えて保存します。

次にfonts.xmlを編集します。こちらも最初に

という記述を削除し、次に末尾にある

という部分を

と書き換えて保存します。

fallback_fonts.xmlとfonts.xmlの両方の編集・保存が完了したら、2つのファイルを端末の/system/etcに上書きコピーします。

作業は以上です。

広告

変更するとこんな感じ

上記の作業が終わったら、端末を再起動してフォントや顔文字が表示されるか確認します。成功していれば英数字と日本語の太さが同じになっているはずです。

font-lollipop-after

iPhoneには及びませんが、特殊文字を使用する顔文字を多少は表示できるようになります。

font-lollipop-ss1

Before

font-lollipop-ss2

After

広告

所感

このへんのツメの甘さがAndroidですね。試行錯誤して修正するのも楽しいですが、面倒くさいと言ってしまえば確かに面倒くさいです。iPhoneも1台欲しくなりました。

うっかりiPhone 6 Plusを買ってしまいました。