【问题标题】:NSFont - How to get the right font?NSFont - 如何获得正确的字体?
【发布时间】:2012-01-25 07:01:07
【问题描述】:

我想制作一个 NSFont 来描述 Arial,正常,30pt 高度。到目前为止,我有:

    NSNumber *weight = [NSNumber numberWithFloat:1.0];
    NSNumber *slant = [NSNumber numberWithFloat:1.0];
    NSDictionary *fontTraits = [NSDictionary dictionaryWithObjectsAndKeys: weight, NSFontWeightTrait, slant, NSFontSlantTrait, nil];
    NSDictionary *fontAttributes = [NSDictionary dictionaryWithObjectsAndKeys: @"Arial", NSFontFaceAttribute, 
                                                                               fontTraits, NSFontTraitsAttribute, nil];
    NSFontDescriptor *fontDescriptor = [NSFontDescriptor fontDescriptorWithFontAttributes: fontAttributes];
    NSFont *largeFont = [NSFont fontWithDescriptor: fontDescriptor size: 30];

但生成的 NSFont 大小不合适。我可以放任何我想要的尺寸,它们看起来都一样。

【问题讨论】:

    标签: objective-c nsfont


    【解决方案1】:

    您是为 iOS 还是 Mac OS X 编写?

    这在我的 Mac 应用中运行良好:

    NSFont* font = [NSFont fontWithName:@"Arial" size:30];
    

    UPDATE用粗体和/或斜体:这对你来说足够了吗?

    NSFont* font = [NSFont fontWithName:@"Arial Italic" size:30];
    NSFont* font = [NSFont fontWithName:@"Arial Bold" size:30];
    NSFont* font = [NSFont fontWithName:@"Arial Bold Italic" size:30];
    

    UPDATE 2 可以看看 NSFontManager

    // convert font
    NSFont* font = [NSFont fontWithName:@"Arial" size:30];
    font = [[NSFontManager sharedFontManager] convertFont:font toHaveTrait:NSFontItalicTrait];
    
    // create with traits and weight
    NSFont* font = [[NSFontManager sharedFontManager]  fontWithFamily:@"Arial" traits:NSFontItalicTrait weight:2 size:30];
    

    但是使用这两者,您都无法创建粗细为 5 且倾斜度为 4 的字体。

    我最近与一位设计师讨论了字体,他告诉我通常像 Arial 这样的字体实际上是 4 种字体(即 Arial、Arial Italic、Arial Bold 和 Arial Bold Italic)。这 3 种其他字体样式(具有特征)不是由算法动态生成的。

    【讨论】:

    • 这行得通,但我不能用这种处理方法改变重量或倾斜度。
    • 这对你来说够了吗?还是您真的想要动态重量和倾斜度?
    • 当使用一些硬编码的字体名称时,准备好使用 SystemFontOfSize 的后备,以防它在用户系统上不存在。即使字体名称是“Arial”。我们曾经遇到过支持问题,因为出于某种奇怪的原因,用户没有“Verdana”。
    猜你喜欢
    • 1970-01-01
    • 2014-05-15
    • 2020-08-12
    • 1970-01-01
    • 2020-12-05
    • 2011-11-03
    • 2021-12-25
    • 2014-03-05
    • 1970-01-01
    相关资源
    最近更新 更多