2012年7月4日水曜日

Android 4.1 Jelly BeanでのAA表示

Android 4.1 Jelly Beanではフォント指定の仕組みが再び変更され、基本的に日本語フォントについてはfallback_fonnts-ja.xmlが参照されるようになった。

今回は、system_fonts.xmlでのフォント指定、fallback_fonts-ja.xmlでのフォント指定、fallback_fonts.xmlでのフォント指定について、それぞれ特徴的なフォントを指定することで、どのような場面でどのフォントが参照されるのかを調べてみることにした。


fallback_fonts-ja.xmlではモトヤLマルベリ、system_fonts.xmlでは04B-31、fallback_fonts.xmlではモフ字 1.3を参照することにした。


結果:
基本的な動作として、まず最初にsystem_fonts.xmlが参照される。一般的には、system_fonts.xmlの先頭に記述したfamilyが使用され、ブラウザ等でフォント名が指定されている場合は、その名前に対応したfamilyをsystem_fonts.xmlから探す。システムフォントの中でも通知領域にはsans-serif-lightとして指定したフォントがが用いられる他、sans-serif-condensed(次幅の狭いゴシック体)などが標準的に利用できるように設定されている。
system_fonts.xml内で指定されたフォントの中に、使用したい文字データが含まれていなかった場合にはじめてfallback_fonts-ja.xmlが参照される。私が実験した限りでは、fallback_fonts.xmlが参照されることは無かったため、設定している言語によって参照するxmlを変更し、表示するフォントを変えるための仕組みが実装されたということだろう。

結論:
system_fonts.xmlの先頭でfontfamilyをSystem等としてシステムフォントを設定、同様にMS PゴシックにKuma_LiteやTextar等の携帯端末向けAA対応フォント(PCとはフォントレンダラーの仕組みが異なるため、携帯向けのAA対応フォントでないと表示が崩れる)を設定し、その他のゴシック体のグループにも日本語フォントを指定しておくと良いだろう。通知領域のフォントはよく目にするので、sans-serif-lightもarial等のグループに一緒に含めておくと、フォントの統一感が向上する。
fallback_fonts-ja.xmlでは、MTL3mr.ttfの部分に使用したい日本語のフォントを指定すれば良い。
もちろんアクセス権の設定を忘れずに。

以下に私の設定例を示す。

system_fonts.xml
(前略)
<familyset>

    <family>
        <nameset>
            <name>system</name>
        </nameset>
        <fileset>
            <file>DroidSansJapanese.ttf</file>
            <file>DroidSansJapanese-Bold.ttf</file>
            <file>Roboto-Italic.ttf</file>
            <file>Roboto-BoldItalic.ttf</file>
        </fileset>
    </family>

    <family>
        <nameset>
            <name>MS Pゴシック</name>
            <name>MS PGothic</name>
        </nameset>
        <fileset>
            <file>textar.ttf</file>
        </fileset>
    </family>

    <family>
        <nameset>
            <name>sans-serif</name>
            <name>arial</name>
            <name>helvetica</name>
            <name>tahoma</name>
            <name>verdana</name>
            <name>sans-serif-light</name>
        </nameset>
        <fileset>
            <file>DroidSansJapanese.ttf</file>
            <file>DroidSansJapanese-Bold.ttf</file>
            <file>Roboto-Italic.ttf</file>
            <file>Roboto-BoldItalic.ttf</file>
        </fileset>
    </family>
(以下略)

fallback_fonts-ja.xml
            <file>MTLmr3m.ttf</file>
の部分を
            <file>DroidSansJapanese.ttf</file>
            <file>DroidSansJapanese-Bold.ttf</file>
            <file>Roboto-Italic.ttf</file>
            <file>Roboto-BoldItalic.ttf</file>
で置き換え。

fallback_fonts.xml
編集しない

尚、textar.ttfはGoogle Code -Textar Fontから、DroidSansJapanese.ttf及びDroidSansJapanese-Bold.ttfはANDROIDLOVER.NETMyupdate-v1.4-JB.zipを利用している。フォントの変更方法についてはANDROIDLOVER.NETを参照して欲しい。多謝。