Android4.2 フォント変更メモ

DesireHDにJELLYTIME 6.1焼きました。

使い勝手は大して変わらないので特にレビューはしませんが、フォント変更でちょっと引っかかったのでメモします。

まず、Android4.2(以降JB2)では、Android4.1(以降JB1)で採用されていた「fallback_fonts-ja.xml」は廃止され、Android4.0(以降ICS)と同じ「fallback_fonts.xml」に統合されました。

ただし、JB1での「言語設定によってフォント優先度が変更される」という仕様は変わっていません。

ではどうなったかというと、fallback_fonts.xml内の記述が追加されました。

●JB1で日本語フォントとしてモトヤマルベリを設定する場合

<p><family>
 <fileset>
  <file>
   MTLmr3m.ttf
  </file>
 </fileset>
</family></p>

●JB2で日本語フォントとしてモトヤマルベリを設定する場合

<p><family>
 <fileset>
  <file lang="ja">
   MTLmr3m.ttf
  </file>
 </fileset>
</family></p>


具体的に言うと、「lang="ja"」の項目が追加されました。
この部分で「言語設定がjaの場合は最優先にする」という認識になるようで、これより上位にあるフォントが全て無視されて、このフォントがまず使用されるようになります。


そして、もう一つ新しくなったのは、フォントの追加ができなくなった可能性があるということです。
ICSではfallback_fonts.xmlに<family>から</family>までを追加すれば簡単に新しいフォントを追加できました。
JB1でそうだったかを覚えていないのですが、JB2ではfallback_fonts.xmlを少しでも編集した場合、ブートループ状態に陥ってしまい、端末を起動できなくなりました。
xml内の記述の前後を変更しただけでもブートループになるということは、起動時にxmlファイルのチェックを行なっているかもしれません。(MD5とか?)
ですので、現状としては追加したいフォントファイルを元あるフォントと置き換えるしかなくなっています。
今回のlang="ja"が採用されたおかげで、使用する予定のない適当なフォントに上書きするだけで適用出来るのはある意味でラッキーかもしれません。
とりあえず、fallback_fonts.xmlを覗いてみると、<file>部分に余計なもの(variant=""とか)が無い中で最優先扱いになるのは、「DroidSansEthiopic-Regular.ttf」のようです。
エチオピア語なんて普通使わないので、上書きしても大丈夫かと。
置き換えたいファイルをDroidSansEthiopic-Regular.ttfに名前変更した上で、/system/fontsにpushしてパーミッションを644にするだけで、変更可能なことは確認しました。
ただし、この方法を使うと最大でも11個しか追加できないです・・・って、それだけあれば十分すぎますが。


更にもう一個、変更になった点として「欧文フォントの入れ替えが困難である」ということです。
欧文フォントは、ICS時代から「system_fonts.xml」で定義されている「Roboto」部分を書き換えれば良い用になっていました。
現在は、fallbackと同じくxml書き換えは通用しないので、/system/fonts内のRoboto-Regular.ttfとRobot-Bold.ttfを上書きするしかありません。
ですが、ここで普通にファイル名変更してPushするとブートループになります。
どうやら、フォントのファイル名だけではなく、フォント情報まで確認しているようです。
fontforgeなどを利用して、フォント名を「Roboto-Regular」等に変更することで回避は可能ですが面倒です。
なにかよい解決策はないものでしょうか・・・。

コメント