iOSアプリでカスタムフォントを使う
Cocos2d for iPhone のゲームで、iOS 標準ではない独自のフォントを使おうとしました。ゲームですからね。得点の表示とかは、ゲームっぽいフォントにしたいわけです。
ググると、以下をすればいいことがわかりました。 ・TTFファイルを Resourcesフォルダに置く(まあ、たぶんどこでもいいです) ・その TTFファイルを Xcode プロジェクトに追加する(フォルダに置くというのと同時にやってもいいはずです) ・info.plist にフォントを追加する。 ・フォントを使うときは、TTFファイル名ではなく、フォント名を指定する。
info.plist へのフォント追加は、こうやります。これは Cocos2d for iPhone 固有の手順ではなく、UIKit 一般の手順です。
</code>
実は Cocos 2D for iPhone は、以下のように内部的に UIFont を用いてフォントを探すので、上記が必要になるのです。
libs/cocos2d/CCTexture2D.m
uifont = [UIFont fontWithName:name size:size];
#if CC_FONT_LABEL_SUPPORT
if( ! uifont )
uifont = [[FontManager sharedManager] zFontWithName:name pointSize:size];
#endif // CC_FONT_LABEL_SUPPORT
if( ! uifont ) {
CCLOG(@”cocos2d: Texture2d: Invalid Font: %@. Verify the .ttf name”, name);
[self release];
return nil;
}
さて、info.plist で指定したフォントは、次のようにして使います。fontName: に指定するのは、ファイル名ではなくフォント名です。TTFファイルをダブルクリックすると開くはずの、Mac の Font Bookアプリのタイトルバーに表示される文字列を指定してください。
CCLabelTTF *time = [CCLabelTTF labelWithString:@"00:00"
dimensions:CGSizeMake(100, 50) alignment:UITextAlignmentCenter
fontName:@"CubicSans"];
ここまでやればいいはずなのですが、なぜかエラーがでます。
cocos2d: Texture2d: Invalid Font: CubicSans. Verify the .ttf name
[UIFont familyNames] でフォントの一覧を取得しても、CubicSans は出てきませんでした。困った。
実は、Xcodeプロジェクトの Build Phases タブの、Copy Bundle Resources に TTF ファイルを入れておく必要があったのです。これを指定しないと、ビルドしたバンドルにTTFファイルが含まれず、プログラムから探せなくなります。