iOS自定义字体

本文详细介绍了如何在Mac系统上配置并使用字体。包括使用自带的字体册应用查看内置字体,配置字体到项目的方法,以及如何在代码中正确使用字体文件。同时讨论了字体配置对App体积的影响,并提供了遍历系统中可用字体名称的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字体在哪?

Mac 有一款自带App叫做字体册.  打开这个应用以后,可以看到目前内置在系统中的字体,iOS支持显示的格式有两种,分别是otf 和ttf.

首选是otf



如何配置?

第一步:

将要使用的字体拖动到项目中.

第二步:

在Info.plist中添加Fonts provided by application项,加入一个item值为刚刚添加的字体文件文件名.



如何使用?

使用时要注意,字体文件名称,并非真正使用时的名称.

真正的名称在字体册的查看某一字体的详细参数时可以看到.如下图:



或者根据字体文件在应用中的路径通过代码来获得(不是特别准,可能偶尔需要手动调整):

[csharp]  view plain copy
  1. NSString *fontPath = [[NSBundle mainBundle] pathForResource:fontFileNameArray[i] ofType:nil];  
  2. NSURL *url = [NSURL fileURLWithPath:fontPath];  
  3.   
  4. CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)url);  
  5. if (fontDataProvider == NULL)  
  6. {  
  7.     break;  
  8. }  
  9.   
  10. CGFontRef newFont = CGFontCreateWithDataProvider(fontDataProvider);  
  11. CGDataProviderRelease(fontDataProvider);  
  12. if (newFont == NULL)  
  13. {  
  14.     break;  
  15. }  
  16. CFStringRef fontName = CGFontCopyFullName(newFont);  
  17.   
  18. NSString *fontNameString = (__bridge id)(fontName);  
  19. if ([fontNameString isEqualToString:@"Yuppy SC Regular"]) {  
  20.     fontNameString = @"YuppySC-Regular";  
  21. }  
  22. [fontNameMDic setObject:fontNameString forKey:fontFileNameArray[i]];  
  23.   
  24. CFRelease(fontName);  
  25. CGFontRelease(newFont);  

以下代码可以遍历出目前在iOS系统中可以使用的字体名称

[csharp]  view plain copy
  1. NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]];  
  2. NSArray *fontNames;  
  3. NSInteger indFamily, indFont;  
  4. for(indFamily=0;indFamily<[familyNames count];++indFamily)  
  5. {  
  6.     NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]);  
  7.     fontNames =[[NSArray alloc]initWithArray:[UIFont fontNamesForFamilyName:[familyNames objectAtIndex:indFamily]]];  
  8.     for(indFont=0; indFont<[fontNames count]; ++indFont)  
  9.     {  
  10.         NSLog(@" Font name: %@",[fontNames objectAtIndex:indFont]);  
  11.     }  
  12. }  


总结:

唯一不好处是字体的数据包很占用App的体积. 这个问题,有待解决.


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值