使用自定义字体的UILabel显示了*错误的*自定义字体

4

我正在使用这个方法在我的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。让人难以置信。

2个回答

5

1
这个还是真的吗?4年后? - Ben Mosher

2
也许这是UIFont的限制?你尝试使用Core Text了吗?
根据iOS Core Text字体的说明,"Core Text并不会为你提供更多的字体,但是它提供了对更多字体变化的支持。举个例子:当你使用UIFont时,Helvetica Neue有4种变体,而使用Core Text时则有11种变体。"

听起来很有趣。我会尝试并回报。 - winsmith
2
我回来了。使用Core Text确实有效。然而,与使用NSLabel相比,它需要更多的工作,特别是如果你像我一样一直在使用Interface Builder来布局你的应用程序。 - winsmith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接