iPhone/iPadアプリに外部フォント(*.ttf)を組み込
XCode(Interface Builder)から選択できるフォントは意外と少ない。特に、日本語フォントともなると殆ど選択肢が限られてくる。そこで今回は、ttf拡張子の外部フォントをアプリに組み込む方法を紹介する。
サンプルとして、フリーフォントである「あんずもじ」を利用してみた。
・あんずもじ
もちろん他のフォントでも構わないが、フォントのライセンス規約は意外と厳しいので注意が必要。例えフリーフォンとであっても、多くは商用利用を禁止していたり、別途ライセンス料が必要だったりする。(商用利用の定義もそれぞれ異なる)
フォントの準備が出来たら、以下の手順に従ってフォントを組み込む。
(1)プロジェクトにフォントファイルを追加
XCodeにフォントファイル(*.ttf)を追加する。以下の例では、「Resource」グループを作成してその中に追加したが、プロジェクト内であれば別にどこでも構わない。
(2)プロパティリストにフォントファイル名を登録
上記(1)で追加したフォントのファイル名をプロパティリスト(*.plist)に登録する。
まず、プロパティリストを表示して、右クリック→「Add Row」で「Fonts provided by application」というキーを追加。そして、追加したキーのアイテムにファイル名を設定する。あんずもじの場合は「APJapanesefont.ttf」となる。
(3)ラベルやボタンのインスタンスにフォントを設定
外部フォントの設定は、Interface Builder(StoryBoard)から行うことが出来ないため、プログラムから設定する。ビューのロード時(viewDidLoad)等に以下のようなコードを記述する。
[label setFont:[UIFont fontWithName:@"APJapanesefont" size:24]];
[button.titleLabel setFont:[UIFont fontWithName:@"APJapanesefont" size:24]];
※labelはUILabelのインスタンス、buttonはUIButtonのインスタンスとする。
UIButtonのsetFontメソッドやfontプロパティは、IOS4.0以降から非公開(非推奨?)となっているようなので、ボタンコントロールにフォントを設定する場合は、titleLabelプロパティに対してフォント設定を行う必要がある。
最後に、プログラムを実行してフォントが正しく設定されていることを確認する。
この例では、2段目のラベルと4段目のボタンに対してあんずもじを設定している。特徴的なフォントなので、システムフォントとの違いは一目瞭然。できれば、標準フォントにもこういった文字を追加して欲しいところ。。
最後に注意事項を1点。プログラムに全てのフォントを組み込むことになるので、使っている文字数に関わらずバイナリのサイズが膨れ上がる。フォントを変更するだけのシンプルなプログラムでも、バイナリ(*.app)のサイズは5.7MBになった。アプリケーションのサイズが20MBを超えると、3G回線によるダウンロードができなくなるため、アプリ利用者の事を考えると注意が必要となる。
ちなみに、実行時のメモリ使用量も増えるのかな?と思ったけど、そんなことはなさそう。外部フォントの組み込み有無に関わらず1MB前後を推移していた。
サンプルとして、フリーフォントである「あんずもじ」を利用してみた。
・あんずもじ
もちろん他のフォントでも構わないが、フォントのライセンス規約は意外と厳しいので注意が必要。例えフリーフォンとであっても、多くは商用利用を禁止していたり、別途ライセンス料が必要だったりする。(商用利用の定義もそれぞれ異なる)
フォントの準備が出来たら、以下の手順に従ってフォントを組み込む。
(1)プロジェクトにフォントファイルを追加
XCodeにフォントファイル(*.ttf)を追加する。以下の例では、「Resource」グループを作成してその中に追加したが、プロジェクト内であれば別にどこでも構わない。
(2)プロパティリストにフォントファイル名を登録
上記(1)で追加したフォントのファイル名をプロパティリスト(*.plist)に登録する。
まず、プロパティリストを表示して、右クリック→「Add Row」で「Fonts provided by application」というキーを追加。そして、追加したキーのアイテムにファイル名を設定する。あんずもじの場合は「APJapanesefont.ttf」となる。
(3)ラベルやボタンのインスタンスにフォントを設定
外部フォントの設定は、Interface Builder(StoryBoard)から行うことが出来ないため、プログラムから設定する。ビューのロード時(viewDidLoad)等に以下のようなコードを記述する。
[label setFont:[UIFont fontWithName:@"APJapanesefont" size:24]];
[button.titleLabel setFont:[UIFont fontWithName:@"APJapanesefont" size:24]];
※labelはUILabelのインスタンス、buttonはUIButtonのインスタンスとする。
UIButtonのsetFontメソッドやfontプロパティは、IOS4.0以降から非公開(非推奨?)となっているようなので、ボタンコントロールにフォントを設定する場合は、titleLabelプロパティに対してフォント設定を行う必要がある。
最後に、プログラムを実行してフォントが正しく設定されていることを確認する。
この例では、2段目のラベルと4段目のボタンに対してあんずもじを設定している。特徴的なフォントなので、システムフォントとの違いは一目瞭然。できれば、標準フォントにもこういった文字を追加して欲しいところ。。
最後に注意事項を1点。プログラムに全てのフォントを組み込むことになるので、使っている文字数に関わらずバイナリのサイズが膨れ上がる。フォントを変更するだけのシンプルなプログラムでも、バイナリ(*.app)のサイズは5.7MBになった。アプリケーションのサイズが20MBを超えると、3G回線によるダウンロードができなくなるため、アプリ利用者の事を考えると注意が必要となる。
ちなみに、実行時のメモリ使用量も増えるのかな?と思ったけど、そんなことはなさそう。外部フォントの組み込み有無に関わらず1MB前後を推移していた。
(参考サイト)http://araking56.blog134.fc2.com/blog-entry-185.html
コメント