【问题标题】:UILabel with custom font displays *wrong* custom font带有自定义字体的 UILabel 显示 *错误* 自定义字体
【发布时间】:2011-06-05 02:38:03
【问题描述】:

我正在使用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。令人难以置信。

【问题讨论】:

    标签: iphone objective-c cocoa-touch ios


    【解决方案1】:

    UIFont 仅限于每个字体系列的两种变体。但是,您可以通过在编辑器中打开额外的 n-2 字体并更改系列名称来解决此问题。

    在这里回答了我自己的问题:UIFont fontWithName: limited to loading 2 variations per family

    【讨论】:

    • 这仍然是真的吗? 4 年后?
    【解决方案2】:

    也许这是 UIFont 的限制?您是否尝试过使用 Core Text?

    根据iOS Core Text Fonts,“Core Text 不会让您访问更多字体,但它提供了对更多字体变体的支持。举个例子:当您使用 UIFont 时,Helvetica Neue 有 4 种变体,而它有使用 Core Text 时的 11 种变体。”

    【讨论】:

    • 看起来很有趣。我会尝试并报告。
    • 我回来了。使用 Core Text 确实有效。但是,与使用 NSLabel 相比,它的工作量很大,尤其是如果您像我一样使用 Interface Builder 来布局您的应用程序。
    猜你喜欢
    • 2011-11-18
    • 2012-04-02
    • 1970-01-01
    • 2014-11-22
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多