普段は勉強会に参加してもずーっと聞く立場でいつかアウトプットしたいなーと思っていたところ、たまたまGoogle I/Oでフォント周りの発表があり、自分がやってきた案件でもフォント周りでそこそこ苦労してたので初めて人前で発表しようと思った次第です。
スライド
準備
- 参考資料をチェックしながらサンプルコードを漁っていろんな機種で動作確認したりしながら発表内容を練っていきました。3週間前から少しずつやってたのですが夏休みの宿題と一緒で結構ギリギリまでかかってしまいました。
- TwitterでエゴサしてたんですがあんまりDownloadable Fontsは関心ないかなーと不安だった(^_^;)
- 最初はMarpでmd形式で作ってたのですが絵文字のアニメーションGIFはPDFでは出力できないのでKeynoteに乗り換えました。Marp使いやすかったので今後の更新に期待。
感想
- Support LibraryのFont in XMLサポートは正直凄いと思った。できるのかとw
- ネタ被りが一部発生しましたが元々分量が多かったので結果オーライでした(^_^;)
- 発表中はテンパってたのでオーディエンスの反応を見る余裕は無かったのですが、終わった後にTLを見てたらちらほらコメントしてくれて個人的にとても嬉しかったデス。
- 絵文字デザインの変更ネタはスライドではおまけ扱いでしたがこれを一番訴えたかったw
- またネタを探して発表したいです( ・`д・´)
改善したいところ
- もっと長い枠で発表しておけばよかったorz
- カンペを作ってたしスマホでタイマーをセットしてたけどテンパって全く役に立ってない。事前の予行演習大事!
- プレゼン資料を作る際にコードをスクリーンショットで撮ってコピペするのが苦痛だった。後からAndroid StudioはコードをRTF形式でコピペできるのを知って( ゚д゚)ポカーンとなったorz
発表しなかった部分
- Google FontsにCJKフォントがない件は日本語についてはEarly Accessが去年からあります。CJKフォントはサイズが大きいのでそれを圧縮して配信するのは中々ハードルが高そうです。
- Downloadable Fontsではセキュリティ周りの話もありました。FontRequestには証明書のデータが必要ですが、それはFont Providerの身元を確認するためのものです。過去のAndroidではフォントローディングの脆弱性があるのでそれを考慮したものだと思います。因みにGoogle Fontsのフォントは全てチェック済みだそうです。
- Downloadable Fontは有償フォントの提供やフォントのバージョン指定についてもPodcastの中で触れられていました。(英語スキルないので間違ってたらごめんなさい)
- 絵文字のグリフの数が急激に増えていっていますが、顔文字の肌の色を人種毎(大まかに5種類)に用意するとか職業を表す顔文字(医者とか宇宙飛行士とか)で男女で差がないようにするとか家族のバリエーションにも配慮していること等が原因だと思います。
- 因みに文字コード自体はSkin Tone ModifierやZWJ(Zero Width Joiner)等の導入で効率的に割り当てされるように工夫されています。
今後調べたいこと
- Downloadable Fontでmemory(RAM)消費を抑えられるのか実測したかったけど間に合わなかった。
- ResourcesCompat#getFontの実装。特にDownloadable Fontの取得をどうやってるか。
- EmojiSpanの実装。
参考資料
SpeakerDeckはスライドのリンクが消えてしまうようなので再掲します。
- Fonts in XML
https://developer.android.com/preview/features/fonts-in-xml.html - Downlodable Fonts
https://developer.android.com/preview/features/downloadable-fonts.html - Get Started with the Google Fonts for Android (beta)
https://developers.google.com/fonts/docs/android - Downloadable Fontsのサンプルコード
https://github.com/googlesamples/android-DownloadableFonts - Emoji Compatibility
https://developer.android.com/topic/libraries/support-library/preview/emoji-compat.html - EmojiCompatのサンプルコード
https://github.com/googlesamples/android-EmojiCompat - What's New in Android Support Library (Google I/O '17)
https://youtu.be/V6-roIeNUY0?t=7m4s - Best Practices to Slim Down Your App Size (Google I/O '17)
https://youtu.be/AdfKNgyT438?t=17m43s - Android Developers Backstage: Episode 67: Fontastic
http://androidbackstage.blogspot.jp/2017/05/episode-67-fontastic.html - Redesigning Android Emoji
https://medium.com/google-design/redesigning-android-emoji-cb22e3b51cc6