ArialRoundedMTBold
ChalkboardSE粗体
TrebuchetMS粗体
而是以标准字体显示.
任何想法为什么这些可能不会出现?
解决方法 如何配置自定义字体要使用自定义字体(一个不包括在iOS中),您必须编辑< appname> -Info.pList文件,并使用数组类型创建一个新的UIAppFonts键,其中数组的每个元素都是一个字符串,名称为字体文件.示例:VAGRoundedStd-light.ttf.您还必须将文件添加到项目中.
注意:当您输入UIAppFonts并按回车键时,该键将转换为“由应用程序提供的字体”.
但是,当您使用Interface Builder(或UIFont)中的字体时,不要使用字体的文件名,而是在Mac应用程序Font Book中打开字体时出现的名称.对于前面的例子,它将是VAG圆形标示灯.
OS X比iOS消化TrueType格式更容忍,所以在极少的情况下,您可能会发现一种在OS X中工作的字体,但不在iOS中.如果发生这种情况,请更换字体以查看是否至少您得到了正确的过程.
如何以编程方式加载字体
这解决了字体许可证要求您分发加密字体的情况.
>第一步是使用您认为合适的算法对字体进行加密和解密.
>将字体加载为NSData对象并反转加密.
>以编程方式注册字体.
以下食谱来自marco Arment的Loading iOS fonts dynamically.它使UIFont和UIWebVIEw中的字体可用.相同的代码可用于从Internet加载字体.
NSData *inData = /* your decrypted Font-file data */;CFErrorRef error;CGDataProvIDerRef provIDer = CGDataProvIDerCreateWithCFData((CFDataRef)inData);CGFontRef Font = CGFontCreateWithDataProvIDer(provIDer);if (! CTFontManagerRegistergraphicsFont(Font,&error)) { CFStringRef errorDescription = CFErrorcopyDescription(error) NSLog(@"Failed to load Font: %@",errorDescription); CFRelease(errorDescription);}CFRelease(Font);CFRelease(provIDer);
如何加载同一家族的两种以上的字体
这是iOS拒绝从同一家族中加载两种以上字体的情况.
以下是来自stackoverflow用户Evadne Wu的代码解决方法.只需将以下内容粘贴到应用程序委托中(请注意,它使用两个框架):
#import <CoreText/CoreText.h>#import <MobileCoreServices/MobileCoreServices.h>- (BOol)application:(UIApplication *)application dIDFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ CTFontManagerRegisterFontsForURLs((__brIDge CFArrayRef)((^{ NSfileManager *fileManager = [NSfileManager defaultManager]; NSURL *resourceURL = [[NSBundle mainBundle] resourceURL]; NSArray *resourceURLs = [fileManager contentsOfDirectoryAtURL:resourceURL includingPropertIEsForKeys:nil options:0 error:nil]; return [resourceURLs filteredArrayUsingPredicate:[nspredicate predicateWithBlock:^BOol(NSURL *url,NSDictionary *bindings) { CFStringRef pathExtension = (__brIDge CFStringRef)[url pathExtension]; NSArray *allIDentifIErs = (__brIDge_transfer NSArray *)UTTypeCreateallIDentifIErsForTag(kUTTagClassfilenameExtension,pathExtension,CFSTR("public.Font")); if (![allIDentifIErs count]) { return NO; } CFStringRef utType = (__brIDge CFStringRef)[allIDentifIErs lastObject]; return (!CFStringHasPrefix(utType,CFSTR("dyn.")) && UTTypeConformsTo(utType,CFSTR("public.Font"))); }]]; })()),kCTFontManagerScopeProcess,nil); return YES;}
可作为gist.在作者博客中评论:Loading 2+ fonts on iOS from the same font family.
一个替代方案,从pixeldock.com更多涉及的解决方法:
If you add more than 2 Font variants of the same Font family (e.g.
“normal”,“Bold” and “Extended”),only the last two Font variants that
you added to the project will be usable.
如果看到这种情况发生,这是您的SDK版本的限制,唯一的办法是使用Fontforge等字体编辑器来编辑字体系列.再次,从pixeldock.com:
>在Fontforge中打开你的字体>转到“元素” – > ‘字体信息’并更改’家庭名称’字段>转到“元素” – > “TTF名称”,并改变“家庭”和“首选家庭”> Goto’file’ – > “生成字体”并保存编辑的字体
总结以上是内存溢出为你收集整理的ios – 某些字体不显示?全部内容,希望文章能够帮你解决ios – 某些字体不显示?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)