2013年7月4日木曜日

【開発】iPhoneアプリにApple提供の純正フォントを追加する方法

ご注意:以下はiPhoneユーザーの裏技とかライフハックネタではありません。開発者向けの情報です。

iOS6からアプリ毎にオンデマンドでフォントを追加ダウンロードできることを今知りました。
え?なんのことかわからない?そうですよね、今まででも各種フォントをBundleしてplistに情報を追加することでiPhoneに搭載されていないフォントを扱うことはできましたから。
今回のお話はつまり、Appleが提供してくれるフォントは実はもっといっぱいあって、必要な手順を踏めばアプリ毎にオンデマンドで追加できますよ、ライセンスとか気にしなくていいですよ、という意味なんです。

iOS 6:フォントリスト

この中に、追加情報として、
App は必要に応じて以下のフォントをインストールすることもできます。
とあります。
日本語で利用可能なのはHiragino Maru Gothic、YuGothicそしてYuMinchoあたりですね。

こんなこと知らなかったです。でもどうやって?
探したらiOS Developer Libraryにサンプルがありました。

DownloadFont (←開発者登録が必要です)

早速ソースコードを眺めてみましたが、超シンプルでそのままコピペすればすぐにでも使えそうな感じでした。
(余談ですが、 CTFontDescriptorMatchFontDescriptorsWithProgressHandler なんて初めて知りました)

これまで「アプリで高品質の(ここ重要!)丸ゴシックとか使えればいいのに」とか思ったことのある開発者なら検討してみる余地は大いにあるのではないでしょうか。

ただ、上記サンプルコードのreadmeに「この方法でダウンロードしたフォントは永続的に使用できる訳ではない」「システムが必要と判断すればフォントは削除される」みたいな但し書きがあったので気になります。
気になってシミュレータの中身を覗いてみましたが、とりあえずアプリ配下に目に見える形では格納されていませんでした。とするとiOSのシステムが追加フォントを保持し、ディスク容量が逼迫したりすると勝手に削除するのかな?

例えばメモアプリを作ったとして、アプリの起動時に毎回追加フォントの有無を確認し、なければその度にダウンロードする、っていうのってちょっと辛いですよね。利用者がオフラインの環境だったらどうするんだ、みたいな。
だから話題になっていないのかな、この話は(笑)。