ios应用程序可以根据需要下载以下字体

在位于http://support.apple.com/kb/HT5878的iOS 7字体列表中,底部有一个部分,标题为“应用程序可以根据需要下载以下字体”。

这是什么意思? 如何包含这些字体,这与包含自定义字体有何不同?

这很有趣,这是一个几乎没有logging的function,但它似乎可以使用,不会让你的应用程序被拒绝。 只是试图研究这个自己带来了我这个问题,没有别的。 我能find的所有文档都是示例代码,说明如何使用它: DownloadFont 。

演示如何在iOS 6及更高版本上按需下载字体。

在iOS 6上,我们增加了应用程序按需下载字体的function。 除了使用iOS 6安装的字体之外,应用程序还可以根据需要安装其他字体的列表。

列出的字体已经获得了苹果授权的iOS使用许可,但是由于额外的磁盘空间使用,所以未与标准iOS固件捆绑在一起。 我认为这将继续是苹果提供新字体(除非操作系统的用户界面的一部分使用它)。 另外,与使用Info.plist中的UIAppFonts键添加字体不同,在下载字体后,它可供所有应用程序使用。

下面是一个关于如何asynchronous下载字体并将其设置为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