Android ICS(4.0.3)での日本語フォントの設定というかその辺

ICSになって久しいわけですが、数多にあるICSでの日本語フォント設定の話。備忘録。

GBと同じく、フォント周りはSkiaライブラリに集まっているようです。ICSからはAndroid向けのフォント設定ファイルを作り上げ、そこからフォントファミリーを読み込んで、フォントファイルリストを頭から読んでいくようです。設定ファイルが出来たこと以外はGBと一緒ですね。個人的にはフォント設定?フォントファミリーの作成はSkiaの外にフォント管理ライブラリを作って、そこでやるべき事なんだと思いますけどね。多分、誰かが本腰を入れて介入しないと、変わらなさそうだけど。

で、肝心の設定はSkiaが読み込むファイルは以下の通り。このリストはAOSPのソースでは”external/skia/src/ports/FontHostConfiguration_android.cpp”にハードコーディングされています。

  1. SYSTEM_FONTS_FILE “/system/etc/system_fonts.xml”
  2. FALLBACK_FONTS_FILE “/system/etc/fallback_fonts.xml”
  3. VENDOR_FONTS_FILE “/vendor/etc/fallback_fonts.xml”

この順番で読み込まれ、まず、/system/etc/fallback_fonts.xmlで作られたフォントリストに/vendor/etc/fallback_fonts.xmlで作られたフォントリストを追記したリストが作られます。(一部順番の変更が起きることはあるようです。)その後、/system/etc/sytem_fonts.xmlから作られたフォントリストにfallback_fonts.xmlから作られたリストを追記して、フォントリストを完成させます。

DroidSansJapanease世代との違いは、設定ファイル内にフォントファミリーが設定できることです。一応、触れはするけれども、日本語ファイルでそこまでこだわった設定はしなくてもイイかな、と。ちょうど、HTMLで色々とフォントを設定してみる感じですね。結局は日本語は明朝体とゴシック体しかねーじゃねーか、と。

XMLファイルの構造は以下の通り

<familyset>

  <family>

    <nameset>
      <name>hogehoge</name>
      <name>foobar</name>
      <name>…</name>
    </nameset>

    <fileset>
      <file>DroidSerif-Regular.ttf</file>
      <file>DroidSerif-Bold.ttf</file>
      <file>DroidSerif-Italic.ttf</file>
      <file>DroidSerif-BoldItalic.ttf</file>
    </fileset>

  </family>

</familyset>

こんな感じで、ファイル内では<familyset>要素の中に<famiky>要素を足していくわけです。<name>要素はフォントファミリー名です。良くあるのがSansとかArialとかそう言う名前で指定されたときに使うフォントという設定方法。日本語では空白でも構いませんが、何か設定しても構いません。<filset>要素の中の<file>要素には順番があり上から、通常フォント、太字フォント、斜体、太字斜体で設定が出来ます。上から順番に設定され、<file>要素が4個無ければ足りない分は無視されます。設定していなかった場合には気づきませんが、設定してあると、実はメールソフトの未読タイトルが太文字で表示された等の便利な事があるので、Bold体があるフォントは必ず設定しましょう。

以上の通りなので、設定内容はsystem_fonts.xmlの一番最後か、fallback_fonts.xmlの一番先頭に書いておくと良いかと思います。

コメント