検索でいらっしゃる方々のキーワードでフォントが絶えないので、初期化ついでにSIMフリー機でのフォント指定について考察してみた。
まず、一番の謎は日本語フォントはどうやって指定されているのか?何故に”DroidSansJapanese.ttf”とファイル名が決め打ちになってるのか?
ざっと、AOSPのソースをさらってみると、DroidSansJapanese.ttfと決め打ちしているのはAndroidで描画を担当しているSkiaと言うライブラリのみ。この中で、「無くても良いけど、表示できない文字にぶち当たったときにはこれらのフォントを使うよ」と言うリストの中に「ファイル名決め打ち」で書かれている。ちなみに、ざっと見る限りでの優先順位は(モトヤの寄贈後は)MTLmr3m.ttf、MTLc3m.ttf、DroidSansJapanese.ttfで有るようだ。
次の問題は、果たして公式ROMはモトヤフォントに対応しているのか?
Skiaのライブラリは/system/lib/libskia.soのようだ。この中に、決め打ちされて文字列は入っているかを調べる。ちなみに、今回調べたのはWWEの2.29.405.5です。OSのバージョンはFroyo。で、調べた結果は以下の通り。
- DroidSans.ttf
- DroidSans-Bold.ttf
- DroidSerif-Regular.ttf
- DroidSerif-Bold.ttf
- DroidSerif-Italic.ttf
- DroidSerif-BoldItalic.ttf
- DroidSansMono.ttf
- gcsh00d-hkscs.ttf (香港?)
- ucsh00d_c.ttf (unicode関係?)
- ARDJ-KK.ttf (韓国語?)
- DroidSansArabic.ttf (アラビア文字)
- DroidSansHebrew.ttf (ヘブライ文字)
- DroidSansThai.ttf (タイ)
- DroidSansJapanese.ttf
- DroidSansFallback.ttf
この順番で、読み込まれている様子です。モトヤフォントの指定はありません。まぁ、Froyo時代にはモトヤフォントはコミットされていなかったように思うので、しょうが無いですが…。そうなると、やはり日本語表示はDroidSansJapanese.ttfと決め打ちさせるのが一番のようです。
次の疑問は、ファイルの置き場所はどこなのか?
これもSkiaの中でデフォルトが設定されています。デフォルトは環境変数”ANDROID_ROOT”に”/fonts/”を付け足したパスになります。”ANDROID_ROOT”は/init.rcのなかで設定され、”/system”となっています。つまり、定番の“/system/fonts/”がデフォルトであって、平行して幾つも設定できるわけではなさそうです。(システムフォントの話です。アプリが使う分にはどこにでも置けます。)
結局、Gingerbreadよりも古いROMをベースとしている限りは、また適当なフォントを突っ込む限りはDroidSansJapanese.ttfにファイルネームを変更して、/system/fonts/DroidSansJapanese.ttfとして置くしか無さそうです。(まぁ、Gingerbread以降もモトヤフォントを元々のファイル名で置けるだけで、根本的には何も変わってないんですけどね)
コメント