http://support.apple.com/kb/HT5878にある iOS 7 フォント リストの下部に、「アプリは必要に応じて次のフォントをダウンロードできます」という見出しのセクションがあります。
これは何を意味するのでしょうか?これらのフォントをどのように含めますか? また、カスタム フォントを含める場合とどう違うのでしょうか?
http://support.apple.com/kb/HT5878にある iOS 7 フォント リストの下部に、「アプリは必要に応じて次のフォントをダウンロードできます」という見出しのセクションがあります。
これは何を意味するのでしょうか?これらのフォントをどのように含めますか? また、カスタム フォントを含める場合とどう違うのでしょうか?
これは興味深いことです。ほとんど文書化されていない機能ですが、問題なく使用でき、アプリが拒否されることはありません。これを自分で調査しようとしただけで、この質問にたどり着きました。文書化されていることがわかったのは、それを使用する方法を示すサンプルコードです: DownloadFont。
iOS 6 以降でオンデマンドでフォントをダウンロードする方法を示します。
iOS 6 では、アプリケーションがフォントをオンデマンドでダウンロードする機能を追加しました。iOS 6 でインストールされるフォントに加えて、アプリケーションは必要に応じて追加のフォントのリストをインストールできます。
リストされているフォントは、iOS で使用するために Apple によって既にライセンスされていますが、余分なディスク容量を使用するため、標準の iOS ファームウェアにはバンドルされていません。これは、Apple が新しいフォントを提供する方法であり続けると思います (OS の UI の一部がそれを使用しない限り)。UIAppFonts
さらに、 Info.plistのキーを使用してフォントを追加するのとは異なり、フォントがダウンロードされると、すべてのアプリで使用できるようになります。
これは、フォントを非同期的にダウンロードしてUITextView
.
- (void)asynchronouslySetFontName:(NSString *)fontName toTextView:(UITextView *)textView {
CGFloat size = 24.0f;
UIFont *font = [UIFont fontWithName:fontName size:size];
if (font && ([font.fontName compare:fontName] == NSOrderedSame || [font.familyName compare:fontName] == NSOrderedSame)) {
textView.font = font;
return;
}
NSMutableDictionary *attrs = [NSMutableDictionary dictionaryWithObject:fontName forKey:kCTFontNameAttribute];
CTFontDescriptorRef desc = CTFontDescriptorCreateWithAttributes((__bridge CFDictionaryRef)attrs);
NSMutableArray *descs = [NSMutableArray array];
[descs addObject:(__bridge id)desc];
CFRelease(desc);
__weak UITextView *weakTextView = textView;
CTFontDescriptorMatchFontDescriptorsWithProgressHandler((__bridge CFArrayRef)descs, NULL, ^(CTFontDescriptorMatchingState state, CFDictionaryRef progressParameter) {
if (state == kCTFontDescriptorMatchingDidFinish) {
dispatch_async(dispatch_get_main_queue(), ^{
weakTextView.font = [UIFont fontWithName:fontName size:size];
});
}
return YES;
});
}
ダウンロード可能なすべてのフォントのリストを次に示します。http://iosfontlist.com