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
- 対象フォントのttfファイルを準備
- Resources/fontsフォルダを作成、対象フォントのttfファイルを配置
- Resources/android/fontsでもいいらしい
- 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バージョンに依存する?)
そしてこの回避方としてあげられているのは、
- zipファイルにして配置する
- titaniumでは、うまくいかなかった。。。
- 拡張子を「mp3」にする
- うまくいった!
mp3などのファイルは、容量制限が大きい(or無い?)ということでしょうかね。
上記方法は、おそらくjavaでnativeアプリ作る時も同様だと思われます。
そんなこんなで無事フォントを反映できました。
とはいえ、アプリのサイズが4MBとか増えることになるのだけどな。。。