我正在使用this方法在我的iPhone应用中嵌入自定义字体。
嵌入有效:当我运行以下代码时,会列出字体。 (目前,我正在以OTF格式嵌入Myriad Pro的所有家庭成员)
for( NSString *familyName in [UIFont familyNames] ){
for( NSString *fntName in [UIFont fontNamesForFamilyName:familyName] ){
NSLog(@"%@", fntName);
}}
当我尝试将标签的字体设置为MyriadPro或MyriadPro-Bold时,这可以正常工作。但是,当我将字体设置为MyriadPro-BoldCond时,标签仍然设置在MyriadPro-Bold而不是压缩版本中。 (字体名称是正确的,我查了一下。)我的代码:
[recommendationLabel setFont:[UIFont fontWithName:@"MyriadPro-BoldCond" size:140]];
recommendationLabel.adjustsFontSizeToFitWidth = YES;
这是什么交易?
编辑:除了Ingve的解决方案之外,我发现 - 至少对于Myriad Pro - 只要我从plist中删除未使用的字体,就会显示正确的字体变体。在这种情况下,我需要删除MyriadPro-SemiBold。 Mindboggling。
答案 0 :(得分:5)
UIFont限制为每个字体系列有两种变体。但是,您可以通过在编辑器中打开其他n-2字体并更改系列名称来解决此问题。
在这里回答了我自己的问题:UIFont fontWithName: limited to loading 2 variations per family
答案 1 :(得分:2)
也许这是UIFont的限制?您是否尝试过使用Core Text?
根据iOS Core Text Fonts,“Core Text不允许您访问更多字体,但它提供了对更多字体变体的支持。举个例子:当您使用UIFont时,Helvetica Neue有4种变体使用Core Text时有11种变体。“