iOSアプリでカスタムフォントを利用する


iOSアプリで自分で用意したフォントを使いたいときってありますよね。
今回はその実装方法を紹介します。

##フォントの形式
Xcode6で利用できるフォントの形式は

* OpenTypeFont (*.otf)
* TrueTypeFont (*.ttf)
* TrueTypeCollection (*.ttc)

の3つのようです。

##組み込み方法

1. Xcodeのプロジェクト内にフォントファイルをドラッグ&コピーする
(Copy items if neededにチェックマークを入れるのを忘れずに！)

2. `プロジェクト > TARGET > Build Phases` を開く
3. `Copy Bundle Resources` にフォントを追加する
(これは自動で追加されていると思いますので、確認してください)

Xcode5まではInfo.plistを編集しなければならなかったのですが、
Xcode6からは必要ないみたいです。
簡単になりましたね！


##利用方法
###StoryBoardで設定する
1. 設置した *UILabel* を選択する
2. *Font* 項目を選択し、 *Custom* に変更する
(デフォルトは *System* になっている部分です)
3. *Family* で用意したフォントを選択する

Xcode6からはStoryBoard上でカスタムフォントを設定できるようになりました。
実際に見ながら組めるので、とても便利！


###ソースコードで設定する
```
UILabel *label = [UILabel new];

UIFont *font = [UIFont fontWithName:@"MyFontName" size:15.f];
[label setFont:font];

``` 
これは今までと一緒ですね。
フォント名は *PostScript名* という物を指定する必要が有るみたいです。

##PostScript名を調べる
###Font Bookを利用する
1. フォントをMacにインストールする
2. Font Bookを開く
3. ユーザータブを選択する
4. インストールしたフォントを選択する
5. PostScript名項目を確認


###Terminalで調べる
Fontをインストールしたくない場合は、Terminalを使って調べることもできます。

```
$ mdls /Users/Owner/Downloads/CustomFont.ttc
```

ターミナルで `mdls` の後にスペースを開けて調べたいフォントファイルをドラッグすると、
自動でパスも入力されるので楽ちんです。
コマンドを走らせると、ずらずらとたくさん出てきますね。
その中の
**com_apple_ats_name_postscript**
が *PostScript名* です。

下記はMacにデフォルトで入っている *Futura* フォントで調べてみました

```
com_apple_ats_name_postscript  = (
    "Futura-CondensedExtraBold",
    "Futura-CondensedMedium",
    "Futura-Medium",
    "Futura-MediumItalic"
)
```

4種類ありますね。


> Original

```
$ mdls /Library/Fonts/Futura.ttc

com_apple_ats_name_family      = (
    Futura
)
com_apple_ats_name_fond        = (
    "Futura-CondensedExtraBold",
    "Futura-CondensedMedium",
    "Futura-Medium",
    "Futura-MediumItalic"
)
com_apple_ats_name_full        = (
    "Futura Condensed ExtraBold",
    "Futura Condensed Medium",
    "Futura Medium",
    "Futura Medium Italic"
)
com_apple_ats_name_postscript  = (
    "Futura-CondensedExtraBold",
    "Futura-CondensedMedium",
    "Futura-Medium",
    "Futura-MediumItalic"
)
com_apple_ats_name_style       = (
    "Condensada extranegrita",
    "Condensada mediana",
    Condensado,
    Condensato,
    "Condensato medio",
    "Condensed ExtraBold",
    "Condensed Medium",
    "Condense\U0301 extragras",
    "Condense\U0301 moyen",
    "Fortettet ekstra fet",
    "Fortettet medium",
    "Gecomprimeerd ExtraVet",
    "Gecomprimeerd Gemiddeld",
    "Gemiddeld Cursief",
    Halbfett,
    "Halbfett, Kursiv",
    "Ita\U0301lico Me\U0301dio",
    "Kavennettu lihava",
    "Kavennettu voimakas",
    Medel,
    "Medel kursiv",
    Media,
    "Mediana cursiva",
    Medio,
    "Medio corsivo",
    Medium,
    "Medium Italic",
    "Medium kursiivi",
    "Medium kursiv",
    Moyen,
    "Moyen italique",
    "Me\U0301dio",
    "Schmal, Extrafett",
    "Schmal, Halbfett",
    "Smal ekstra fed",
    "Smal extrafet",
    "Smal medium",
    "\U0421\U0440\U0435\U0434\U043d\U0438\U0438\U0306",
    "\U0421\U0440\U0435\U0434\U043d\U0438\U0438\U0306 \U043a\U0443\U0440\U0441\U0438\U0432\U043d\U044b\U0438\U0306",
    "\U0423\U0437\U043a\U0438\U0438\U0306 \U0441\U0432\U0435\U0440\U0445\U0436\U0438\U0440\U043d\U044b\U0438\U0306",
    "\U0423\U0437\U043a\U0438\U0438\U0306 \U0441\U0440\U0435\U0434\U043d\U0438\U0438\U0306",
    "\U30b3\U30f3\U30c6\U3099\U30f3\U30b9\U30fb\U30a8\U30af\U30b9\U30c8\U30e9\U30db\U3099\U30fc\U30eb\U30c8\U3099",
    "\U30b3\U30f3\U30c6\U3099\U30f3\U30b9\U30fb\U30df\U30c6\U3099\U30a3\U30a2\U30e0",
    "\U30df\U30c6\U3099\U30a3\U30a2\U30e0",
    "\U30df\U30c6\U3099\U30a3\U30a2\U30e0\U30fb\U30a4\U30bf\U30ea\U30c3\U30af",
    "\U4e2d\U659c\U9ad4",
    "\U4e2d\U7b49",
    "\U4e2d\U7b49\U659c\U4f53",
    "\U4e2d\U9ed1",
    "\U58d3\U7e2e\U4e2d\U9ad4",
    "\U58d3\U7e2e\U52a0\U9ed1\U9ad4",
    "\U7a84\U52a0\U9ed1\U9ad4",
    "\U7d27\U7f29\U4e2d\U7b49\U4f53",
    "\U110c\U1161\U1100\U1161\U11ab \U110e\U116e\U11a8\U1109\U1169 \U1100\U1167\U11ab\U110e\U116e\U11af\U110e\U1166",
    "\U110c\U1161\U1100\U1161\U11ab \U110e\U116e\U11a8\U1109\U1169 \U110c\U116e\U11bc\U1100\U1161\U11ab\U110e\U1166",
    "\U110c\U116e\U11bc\U1100\U1161\U11ab \U110b\U1175\U1110\U1162\U11af\U1105\U1175\U11a8\U110e\U1166",
    "\U110c\U116e\U11bc\U1100\U1161\U11ab\U110e\U1166"
)
com_apple_ats_names            = (
    "9.0d2e1",
    "Condensada extranegrita",
    "Condensada mediana",
    Condensado,
    Condensato,
    "Condensato medio",
    "Condensed ExtraBold",
    "Condensed Medium",
    "Condense\U0301 extragras",
    "Condense\U0301 moyen",
    "Fortettet ekstra fet",
    "Fortettet medium",
    Futura,
    "Futura Condensed ExtraBold",
    "Futura Condensed Medium",
    "Futura Medium",
    "Futura Medium Italic",
    "Futura-CondensedExtraBold",
    "Futura-CondensedMedium",
    "Futura-Medium",
    "Futura-MediumItalic",
    "Gecomprimeerd ExtraVet",
    "Gecomprimeerd Gemiddeld",
    "Gemiddeld Cursief",
    Halbfett,
    "Halbfett, Kursiv",
    "Ita\U0301lico Me\U0301dio",
    "Kavennettu lihava",
    "Kavennettu voimakas",
    Medel,
    "Medel kursiv",
    Media,
    "Mediana cursiva",
    Medio,
    "Medio corsivo",
    Medium,
    "Medium Italic",
    "Medium kursiivi",
    "Medium kursiv",
    Moyen,
    "Moyen italique",
    "Me\U0301dio",
    "Paul Renner (1928)",
    "Schmal, Extrafett",
    "Schmal, Halbfett",
    "Smal ekstra fed",
    "Smal extrafet",
    "Smal medium",
    "\U00a9 Copyright 1998, Neufville Digital. ALL RIGHTS RESERVED. This font is licensed, not sold, and may not be reproduced without the written consent of Neufville Digital. Parts \U00a9 Visualogik Technology & Design, 1998.",
    "\U0421\U0440\U0435\U0434\U043d\U0438\U0438\U0306",
    "\U0421\U0440\U0435\U0434\U043d\U0438\U0438\U0306 \U043a\U0443\U0440\U0441\U0438\U0432\U043d\U044b\U0438\U0306",
    "\U0423\U0437\U043a\U0438\U0438\U0306 \U0441\U0432\U0435\U0440\U0445\U0436\U0438\U0440\U043d\U044b\U0438\U0306",
    "\U0423\U0437\U043a\U0438\U0438\U0306 \U0441\U0440\U0435\U0434\U043d\U0438\U0438\U0306",
    "\U30b3\U30f3\U30c6\U3099\U30f3\U30b9\U30fb\U30a8\U30af\U30b9\U30c8\U30e9\U30db\U3099\U30fc\U30eb\U30c8\U3099",
    "\U30b3\U30f3\U30c6\U3099\U30f3\U30b9\U30fb\U30df\U30c6\U3099\U30a3\U30a2\U30e0",
    "\U30df\U30c6\U3099\U30a3\U30a2\U30e0",
    "\U30df\U30c6\U3099\U30a3\U30a2\U30e0\U30fb\U30a4\U30bf\U30ea\U30c3\U30af",
    "\U4e2d\U659c\U9ad4",
    "\U4e2d\U7b49",
    "\U4e2d\U7b49\U659c\U4f53",
    "\U4e2d\U9ed1",
    "\U58d3\U7e2e\U4e2d\U9ad4",
    "\U58d3\U7e2e\U52a0\U9ed1\U9ad4",
    "\U7a84\U52a0\U9ed1\U9ad4",
    "\U7d27\U7f29\U4e2d\U7b49\U4f53",
    "\U110c\U1161\U1100\U1161\U11ab \U110e\U116e\U11a8\U1109\U1169 \U1100\U1167\U11ab\U110e\U116e\U11af\U110e\U1166",
    "\U110c\U1161\U1100\U1161\U11ab \U110e\U116e\U11a8\U1109\U1169 \U110c\U116e\U11bc\U1100\U1161\U11ab\U110e\U1166",
    "\U110c\U116e\U11bc\U1100\U1161\U11ab \U110b\U1175\U1110\U1162\U11af\U1105\U1175\U11a8\U110e\U1166",
    "\U110c\U116e\U11bc\U1100\U1161\U11ab\U110e\U1166"
)
kMDItemAuthors                 = (
    "Paul Renner (1928)"
)
kMDItemContentCreationDate     = 2014-09-09 22:53:24 +0000
kMDItemContentModificationDate = 2014-09-09 22:53:24 +0000
kMDItemContentType             = "public.truetype-collection-font"
kMDItemContentTypeTree         = (
    "public.truetype-collection-font",
    "public.truetype-font",
    "public.font",
    "public.data",
    "public.item"
)
kMDItemCopyright               = "© Copyright 1998, Neufville Digital. ALL RIGHTS RESERVED. This font is licensed, not sold, and may not be reproduced without the written consent of Neufville Digital. Parts © Visualogik Technology & Design, 1998."
kMDItemDateAdded               = 2014-10-17 07:41:56 +0000
kMDItemDisplayName             = "Futura.ttc"
kMDItemFonts                   = (
    "Condensada extranegrita",
    "Condensada mediana",
    Condensado,
    Condensato,
    "Condensato medio",
    "Condensed ExtraBold",
    "Condensed Medium",
    "Condense\U0301 extragras",
    "Condense\U0301 moyen",
    "Fortettet ekstra fet",
    "Fortettet medium",
    Futura,
    "Futura Condensed ExtraBold",
    "Futura Condensed Medium",
    "Futura Medium",
    "Futura Medium Italic",
    "Futura-CondensedExtraBold",
    "Futura-CondensedMedium",
    "Futura-Medium",
    "Futura-MediumItalic",
    "Gecomprimeerd ExtraVet",
    "Gecomprimeerd Gemiddeld",
    "Gemiddeld Cursief",
    Halbfett,
    "Halbfett, Kursiv",
    "Ita\U0301lico Me\U0301dio",
    "Kavennettu lihava",
    "Kavennettu voimakas",
    Medel,
    "Medel kursiv",
    Media,
    "Mediana cursiva",
    Medio,
    "Medio corsivo",
    Medium,
    "Medium Italic",
    "Medium kursiivi",
    "Medium kursiv",
    Moyen,
    "Moyen italique",
    "Me\U0301dio",
    "Schmal, Extrafett",
    "Schmal, Halbfett",
    "Smal ekstra fed",
    "Smal extrafet",
    "Smal medium",
    "\U0421\U0440\U0435\U0434\U043d\U0438\U0438\U0306",
    "\U0421\U0440\U0435\U0434\U043d\U0438\U0438\U0306 \U043a\U0443\U0440\U0441\U0438\U0432\U043d\U044b\U0438\U0306",
    "\U0423\U0437\U043a\U0438\U0438\U0306 \U0441\U0432\U0435\U0440\U0445\U0436\U0438\U0440\U043d\U044b\U0438\U0306",
    "\U0423\U0437\U043a\U0438\U0438\U0306 \U0441\U0440\U0435\U0434\U043d\U0438\U0438\U0306",
    "\U30b3\U30f3\U30c6\U3099\U30f3\U30b9\U30fb\U30a8\U30af\U30b9\U30c8\U30e9\U30db\U3099\U30fc\U30eb\U30c8\U3099",
    "\U30b3\U30f3\U30c6\U3099\U30f3\U30b9\U30fb\U30df\U30c6\U3099\U30a3\U30a2\U30e0",
    "\U30df\U30c6\U3099\U30a3\U30a2\U30e0",
    "\U30df\U30c6\U3099\U30a3\U30a2\U30e0\U30fb\U30a4\U30bf\U30ea\U30c3\U30af",
    "\U4e2d\U659c\U9ad4",
    "\U4e2d\U7b49",
    "\U4e2d\U7b49\U659c\U4f53",
    "\U4e2d\U9ed1",
    "\U58d3\U7e2e\U4e2d\U9ad4",
    "\U58d3\U7e2e\U52a0\U9ed1\U9ad4",
    "\U7a84\U52a0\U9ed1\U9ad4",
    "\U7d27\U7f29\U4e2d\U7b49\U4f53",
    "\U110c\U1161\U1100\U1161\U11ab \U110e\U116e\U11a8\U1109\U1169 \U1100\U1167\U11ab\U110e\U116e\U11af\U110e\U1166",
    "\U110c\U1161\U1100\U1161\U11ab \U110e\U116e\U11a8\U1109\U1169 \U110c\U116e\U11bc\U1100\U1161\U11ab\U110e\U1166",
    "\U110c\U116e\U11bc\U1100\U1161\U11ab \U110b\U1175\U1110\U1162\U11af\U1105\U1175\U11a8\U110e\U1166",
    "\U110c\U116e\U11bc\U1100\U1161\U11ab\U110e\U1166"
)
kMDItemFSContentChangeDate     = 2014-09-09 22:53:24 +0000
kMDItemFSCreationDate          = 2014-09-09 22:53:24 +0000
kMDItemFSCreatorCode           = ""
kMDItemFSFinderFlags           = 0
kMDItemFSHasCustomIcon         = (null)
kMDItemFSInvisible             = 0
kMDItemFSIsExtensionHidden     = 0
kMDItemFSIsStationery          = (null)
kMDItemFSLabel                 = 0
kMDItemFSName                  = "Futura.ttc"
kMDItemFSNodeCount             = (null)
kMDItemFSOwnerGroupID          = 0
kMDItemFSOwnerUserID           = 0
kMDItemFSSize                  = 348696
kMDItemFSTypeCode              = ""
kMDItemKind                    = "TrueType font collection"
kMDItemLogicalSize             = 348696
kMDItemPhysicalSize            = 167936
kMDItemVersion                 = "9.0d2e1"
```