苹果其实不仅仅只有系统自带的字体,还可以有选择性的动态下载所需的字体。
像娃娃体、行楷、丽黑……等常见字体都支持。
具体支持列表见(iOS7):
那么问题来了,既然苹果系统支持这么多字体,怎么下载?怎么使用?
先看唐大的一篇文章,写的比较详细:
http://blog.devtang.com/2013/08/11/ios-asian-font-download-introduction
当然,看苹果的SampleCode更直接:
不过有一个问题,按照苹果的SampleCode使用后,下载的字体只在当前的程序周期中有效,重启后又不认上次的下载的字体了,打印所有字体也发现没有上次下载的字体。
打印字体代码:
NSArray* familys = [UIFont familyNames];
for (int i = 0; i<[familys count]; i++) {
NSString* family = [familys objectAtIndex:i];
NSLog(@"\r\n\r\nFontfamily:%@\r\n=====",family);
NSArray* fonts = [UIFont fontNamesForFamilyName:family];
for (int j = 0; j<[fonts count]; j++) {
NSLog(@"%@",[fonts objectAtIndex:j]);
}
}
字体文件虽然保存在了
/private/var/mobile/Library/Assets/com_apple_MobileAsset_Font
在 Mac 或是模拟器上,用kCTFontURLAttribute可以获得字体的绝对路径,但是在 iOS 上是不可能的。因此,只好在需要时重新执行一遍CTFontDescriptorMatchFontDescriptorsWithProgressHandler。
另外,这里有字体相关的官方介绍:《Using Fonts with TextKit》
https://developer.apple.com/videos/play/wwdc2013/223/
http://devstreaming.apple.com/videos/wwdc/2013/223xex5xsgdfh1ergtjrqwoghbj/223/223.pdf