这个在OC和cocos2d-x都适用,就是增加系统之外的字体,原理就是在工程中增加新的字体文件,比如*.ttf这种字体文件,在工程运行的时候,会到工程之中去寻找,而不用找系统的字体。
Xcode增加新字体的方法
在Xcode中增加新字体就是把字体拖进工程中,然后修改info.plist文件拓展。
在info.plist文件中,增加Fonts provided by application选项,后面跟着字体,可以直接写上字体名,也可以带路径。但是带路径的话,后面引用最好都带路径。后面我出的一个问题就是出在了这里。
新字体的使用
增加完字体之后,可以在相应的地方使用的时候注明要使用的字体即可,比如像下面这样使用新字体来定义label的字体。
新字体不能使用的解决方案
一、确保你的字体正确添加
要先判断info.plist文件是否添加正确,然后要确保已经引入工程。就是看你工程设置里德Build Phases选项里面,Copy Bundle Resources这个里面是否正确引入了字体,以及路径是否正确。
二、判断你添加的路径是否正确
我上次的问题就出现在路径这里,你如果在info.plist文件里面的字体带路径了,在工程相应地方引用的时候也要带路径,就像上面说的那个Label,并且注意你拖字体文件进工程的时候也要带路径,就想下面这样。
既然info.plist里面带路径,你这个引用到文件夹的时候,就要选择真实路径Create folder references,而不是创建groups,这个要注意了,否则就算引入正确,路径写错,他还是会使用系统默认字体。
三、确保你的字体名称正确
有的时候你引用的字体名称并不是真的字体名称,你要判断下。
在OC中可以通过下面这段代码输出下
NSArray *fontFamilies = [UIFont familyNames]; for (int i = 0; i < [fontFamilies count]; i++) { NSString *fontFamily = [fontFamilies objectAtIndex:i]; NSArray *fontNames = [UIFont fontNamesForFamilyName:[fontFamilies objectAtIndex:i]]; NSLog (@"%@: %@", fontFamily, fontNames); }
网上Alexander Bekert说了个方法在Swift中可以使用这个代码判断
let fontFamilies = UIFont.familyNames(); for familyName in fontFamilies { let fontNames = UIFont.fontNamesForFamilyName(familyName as String); println("\(familyName): \(fontNames)"); }
看这里的代码输出是否有你的字体名称,比如说你引用的Damon-Light_0.otf,但是输出的时候输出的Damon-Light,那你使用的时候就只能用后面的这个,可以这样使用
UIFont *customFont = [UIFont fontWithName:@"Damon-Light" size:20];
版权属于:东哥笔记 - DongGe.org
本文链接:https://dongge.org/blog/222.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!