iOS 6 自带字体:iOS 6: Font list
iOS 7 自带字体:iOS 7: Font list
OS X Mavericks 自带字体:
OS X: Fonts included with Mavericks
上面两篇文档里列出的字体名字并非编程时用的fontName
,只是对应的字体文件的名字。
可以使用下面的代码查系统自带字体的 fontName,在任意 UIViewController 里加上:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. for (NSString* family in [UIFont familyNames]) { NSLog(@"%@", family); for (NSString* name in [UIFont fontNamesForFamilyName: family]) { NSLog(@"%@", name); } } }
以下是真机 debug 在控制台打印出来的:
Thonburi Thonburi-Bold Thonburi Thonburi-Light ... Didot-Bold Didot-Italic Didot DIN Alternate DINAlternate-Bold Bodoni 72 Smallcaps BodoniSvtyTwoSCITCTT-Book
加入我想要在 iOS 的 UILabel 中使用 mac 中自带的Yuanti SC
,怎么搞?
1.下载你想要的字体的字体文件,可以是 ttf、otf、ttc 等格式(ttc 格式需要特别注意),此处我从 mac 的系统默认字体存储目录拷贝;
2.把字体文件添加到 xcode 项目中;
2.在Info.plist添加以下代码并保存;
UIAppFonts Yuanti.ttc WawaSC-Regular.otf Lantinghei.ttc 汉仪楷体简.ttf
3.在 Build Phases/Copy Bundle Resources添加字体文件;
4.使用上面 viewDidLoad 代码查找新增的 fontName,比如我添加 Yuanti.ttc 后新增了
Yuanti SC STYuanti-SC-Light STYuanti-SC-Bold STYuanti-SC-Regular
最后在代码中
self.contentLabel.font = [UIFont fontWithName:@"Yuanti SC" size:16.0f];
Lantinghei.tcc 下面包含8个字体。
Lantinghei TC //繁体细 FZLTXHB--B51-0 //繁体extralight FZLTTHB--B51-0 //繁体heavy FZLTZHB--B51-0 //繁体demibold Lantinghei SC //简体 FZLTZHK--GBK1-0 //简体demibold FZLTTHK--GBK1-0 //简体heavy FZLTXHK--GBK1-0 //简体extralight
如果不适用粗体,就直接用Lantinghei SC
就可以了。
ttc 字体文件是字体集合,提取 ttc 字体名方法:
-(NSArray*)customFontArrayWithPath:(NSString*)path size:(CGFloat)size { CFStringRef fontPath = CFStringCreateWithCString(NULL, [path UTF8String], kCFStringEncodingUTF8); CFURLRef fontUrl = CFURLCreateWithFileSystemPath(NULL, fontPath, kCFURLPOSIXPathStyle, 0); CFArrayRef fontArray =CTFontManagerCreateFontDescriptorsFromURL(fontUrl); CTFontManagerRegisterFontsForURL(fontUrl, kCTFontManagerScopeNone, NULL); NSMutableArray *customFontArray = [NSMutableArray array]; for (CFIndex i = 0 ; i < CFArrayGetCount(fontArray); i++){ CTFontDescriptorRef descriptor = CFArrayGetValueAtIndex(fontArray, i); CTFontRef fontRef = CTFontCreateWithFontDescriptor(descriptor, size, NULL); NSString *fontName = CFBridgingRelease(CTFontCopyName(fontRef, kCTFontPostScriptNameKey)); UIFont *font = [UIFont fontWithName:fontName size:size]; [customFontArray addObject:font]; } return customFontArray; }
另一种思路是直接从 ttc 提取 ttf,有待研究。
参考资料:
Tutorial: Porting fonts to the iPhone
The post iOS使用自定义字体 appeared first on wingyiu.