iOSアプリに独自フォントを組み込んで表示する


Xcode6で変更のあった部分を「Xcode6でiOSアプリに独自フォントを組み込んで表示する」に書きました。(2015/1/13追記)

以前書いた記事「iPhone OS 3.2でサポートされたカスタムフォントを試す」の情報が古くなっているので最新の OS X と Xcode で動作するよう書き直しました。
この記事の内容は OS X 10.8.2 & Xcode 4.6 の環境で動作確認しています。

iOSアプリに独自の外部フォントを組み込んで利用する、カスタムフォントの機能について解説します。この機能は iPhone OS(現iOS) 3.2 以降で利用できるようになりました。

サポートしているフォント形式と無償フォントの紹介

カスタムフォントでサポートしているフォント形式は、

  • PostScript Type1ベースのOpenType (拡張子 .otf)
  • TrueTypeベースのOpenType (拡張子 .ttf)

のようです(ちゃんと調べてはいませんが)。

今回は例として独立行政法人情報処理推進機構(IPA)が作成・配布している、無償のTrueTypeアウトラインベースのOpenTypeフォント「IPAexフォント(IPAex明朝)」を利用してみます。
ダウンロードはこちら> http://ossipedia.ipa.go.jp/ipafont/
ライセンスはこちら> IPAフォントライセンスv1.0 (追記 2013/02/04)

アプリ(プロジェクト)にフォントファイルを追加する手順

  1. フォントをアプリのリソースとして追加する
    Finderからフォントファイルをドラッグ&ドロップでOKです。
    (スクリーンショット内のResources,fontというグループは自分で作りました)
    フォントファイルをプロジェクトに追加プロジェクトのフォルダにフォントファイルをコピーするために、以下のようにチェックを入れて追加します。
    フォントファイルのコピー
  2. アプリケーションのinfo.plistにフォント情報を追加する
    まずは新たにキーを作ります。
    フォント登録用のキーの追加キー名のリストから “Fonts provided by application” を選択する(UIAppFontsと入力してもいい)。
    フォントの登録
    Item 0 の Array要素がひとつ作られているので、Value にフォントファイル名を文字列として登録する。今回は ipaexm.ttf を指定する。
    フォントが複数ある場合はArray要素を追加してItem 1, Item 2, … にフォントファイル名を記述します。

フォントを組み込む作業は以上になります。

組み込んだフォントをプログラムコードから利用する

実際に組み込んだフォントを使ってみましょう。
UIFontのクラスメソッド fontWithName:size: でUIFontを作成し、UILabel等に適用します。引数のフォント名はフォントがメタデータとして持っている PostScript名 を指定します(調べ方は後述)。
IPAex明朝フォントのPostScript名は IPAexMincho なのでそれを指定します。

self.textLabel.text = @"Customnフォントnてすと";
self.textLabel.font = [UIFont fontWithName:@"IPAexMincho" size:68.0];

実行画面サンプルです。
動作確認

フォントのPostScript名の確認方法

UIFont作成時に指定するPostScript名の調べ方です。

  • 同じフォントが OS X にもインストールしてある場合
    FontBookのフォント情報から見ることができます。
    フォントを選んでメニューから プレビュー>フォント情報 で表示します。
    PostScript名
  • インストールしていないフォントの場合
    mdlsコマンド でフォント情報(メタデータ)を調べることができます。
    mdlsコマンドについてはこちらを参照
    【コラム】OS X ハッキング! (133) 虎飼い日記 その1 – 噂のSpotlightをTerminalで使う | パソコン | マイナビニュースターミナルを起動し、mdls のあとに(スペースを空けて)調べたいフォントファイル名を指定して実行するとメタデータが表示されます。ファイルをドラッグするとパスも一緒に入力されてお手軽です。
    mdlsコマンド実行すると以下のような情報が表示されます。
    com_apple_ats_name_postscript のメタデータにある文字列(IPAexMincho)がPostScript名になります。
    PostScript名のメタデータ

4 thoughts on “iOSアプリに独自フォントを組み込んで表示する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください