【问题标题】:How do I create an NSFont that is both Bold and Italic?如何创建一个既是粗体又是斜体的 NSFont?
【发布时间】:2010-03-12 13:52:45
【问题描述】:

这是一个关于 Cocoa 中字体处理的初学者问题。我有一个字体系列,例如Verdana,具有以下字体:RegularBoldItalicBold Italic时间>。我知道这些字体存在,因为它们在“字体”面板中可用。

这行得通:

NSFont *regular = [NSFont fontWithName:@"Verdana" size:75];
NSFont *bold = [NSFont fontWithName:@"Verdana-Bold" size:75];
NSFont *italic = [NSFont fontWithName:@"Verdana-Italic" size:75];

这不起作用:

NSFont *boldItalic = [NSFont fontWithName:@"Verdana-Bold Italic" size:75];

获取给定字体系列的粗斜体版本的最简单方法是什么?

【问题讨论】:

    标签: cocoa fonts


    【解决方案1】:

    这行得通:

    NSFontManager *fontManager = [NSFontManager sharedFontManager];
    NSFont *boldItalic = [fontManager fontWithFamily:@"Verdana"
                                              traits:NSBoldFontMask|NSItalicFontMask
                                              weight:0
                                                size:75];
    

    【讨论】:

    • 我为明显的插件道歉,但我想提一下,我已经在 GitHub 上提供了 CocoaPuffs 框架,它包含一个很好的类别,可以与 NSFont 和 NSFontManager 一起使用。还有一些细节here。在这种特定情况下,如果您已经引用了 Verdana 字体,那么您需要做的就是 verdana.fontVariationBoldItalic。
    • @aLevelOfIndirection : 你给我们的两个链接坏了。
    • 道歉。我已经取消了这个框架。我刚刚添加了Gist 及其代码。所以继续下载吧。
    【解决方案2】:

    参见 NSFontManager 和 -convertFont:toHaveTrait:

    有关更多详细信息,我建议阅读Font Handling Guide,特别是标题为Converting Fonts Manually 的部分。

    请注意,您使用的字体需要具有您所要求的特征的某个版本,否则,您将得到一个字体,但没有请求的特征。

    如果您最终要为没有斜体特征的字体添加斜体特征,请查看:

    How do I get Lucida Grande italic into my application?

    【讨论】:

      【解决方案3】:

      Verdana-BoldItalic.

      (字体的粗斜体变体的实际名称取决于系列,并且某些字体没有粗斜体,使用NSFontDescriptor-fontDescriptorWithSymbolicTraits: 以获得确切的粗斜体字体。)

      【讨论】:

        猜你喜欢
        • 2020-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-02
        • 2012-01-21
        相关资源
        最近更新 更多