harukazepc’s blog

インターネッツとAndroidなどが大好きです。あとは日々のことなど。

フォントのカスタマイズ(日本語ttfの反映とか)

AndroidもTitaniumも大好きで今日も遊んでます。

で、Androidのアプリ開発(titaniumもjava nativeも)でぶちあたるものの一つが、「フォント」の問題です。
Androidがデフォルトで用意しているフォントセットは、英字3種日本語1種のようで、ちょっとこまります。
AAとか等幅前提のフォーマットとかだと目も当てられない感じです。。。

モリサワフォントが組み込まれるようですが、現行機種への対応では、TTFフォントなどをアプリに持たせる形になります。
(=アプリ自体のサイズもでかくなる、、、)

で、Titaniumでも 1.6.2 から、カスタムフォントの利用が可能になりました。
http://developer.appcelerator.com/apidoc/mobile/1.6.2/changelog.html
http://jira.appcelerator.org/browse/TIMOB-3418

ちょうど等幅フォントでの表示が必要だったので、IPAフォントを反映させてみたいと思います。
http://ossipedia.ipa.go.jp/ipafont/index.html

  1. 対象フォントのttfファイルを準備
  2. Resources/fontsフォルダを作成、対象フォントのttfファイルを配置
    1. Resources/android/fontsでもいいらしい
  3. ttfファイルの拡張子を除いた名称を、fontFamilyで指定
var label = Ti.UI.createLabel({
    text: "Font Font Font!",
    font: {fontFamily: 'ipag', fontSize: '15dp'},
    height: 'auto',
    width: 'auto'
});

と言う感じ。


・・・なのだけど、場合によってはこんなエラーが出て、反映されない。
(というか、文字が表示されなくなる)

Data exceeds UNCOMPRESS_DATA_MAX (1234567 vs 1048576)

どうやら、assetsとして利用するファイルは、1MB以下でないと受付られないようだ。
(これは、機種やエミュレーター・OSバージョンに依存する?)


そしてこの回避方としてあげられているのは、

  1. zipファイルにして配置する
    1. titaniumでは、うまくいかなかった。。。
  2. 拡張子を「mp3」にする
    1. うまくいった!

mp3などのファイルは、容量制限が大きい(or無い?)ということでしょうかね。
上記方法は、おそらくjavaでnativeアプリ作る時も同様だと思われます。

そんなこんなで無事フォントを反映できました。
とはいえ、アプリのサイズが4MBとか増えることになるのだけどな。。。

© harukazepc️