201012

Top


2010-12-08

01:39

iPhone アプリで独自フォントを(かんたんに)使う方法。

(2012-12-13 追記) 4.1 以降なら CTFontManagerRegisterFontsForURL() 等を使えば以下のような面倒なことをしなくて済む。

CGFontRef から table ひっぱってきて自力で unicode→glyph 変換して CGContextShowGlyphs() でも実現できるけど、 面倒くさいので UIFont なり CoreText のほうがいいよね、ということで。

方法その1

info.plist に UIAppFonts を追加して

UIFont * font = [UIFont fontWithName: @"CustomFontName" size: 48];

とか

NSDictionary * attrs = [NSDictionary dictionaryWithObject: @"CustomFontName" forKey: (id)kCTFontNameAttribute];
CTFontDescriptorRef fd = CTFontDescriptorCreateWithAttributes((CFDictionaryRef)attrs);
CTFontRef font = CTFontCreateWithFontDescriptor(fd, 48, NULL);
CFRelease(fd);

のようにする。

iOS 4.0 以降限定。

方法その2

info.plist には手をつけずに

NSData * fontData = [NSData dataWithContentsOfURL: fontURL];
CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData((CFDataRef)fontData);
CGFontRef cgFont = CGFontCreateWithDataProvider(dataProvider);
CGDataProviderRelease(dataProvider);
CTFontRef font = CTFontCreateWithGraphicsFont(cgFont, 48, NULL, NULL);
CGFontRelease(cgFont);

のようにする。

こちらは iOS 3.2 以降限定。 この方法だと 1 のように名前指定してフォントを作ることができないので、UIFont が必要な場合には使えないっぽい。