UILabel与自定义字体显示*错误*自定义字体

时间:2011-01-07 06:11:54

标签: iphone objective-c cocoa-touch ios

我正在使用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。

2 个答案:

答案 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种变体。“