我的NSFontDescriptor没有效果;这是怎么回事?

时间:2012-07-13 07:56:32

标签: objective-c macos cocoa nsfont

好吧,我试图在NSAttributedString上使用斜体和衬线,但由于某种原因,字体特征完全没有效果。我认为我正确地使用了它们(在我看来NSFontDescriptor引用并不是特别好,所以我不确定。)

    NSMutableAttributedString *pellString = [[NSMutableAttributedString alloc]
                  initWithString:@"x2 – Dy2 = N"];
    NSFontSymbolicTraits varMask = NSFontModernSerifsClass | NSFontItalicTrait;
    NSDictionary *varSymbolic = [NSDictionary dictionaryWithObject:
                                 [NSNumber numberWithUnsignedInteger:varMask] 
                                                            forKey:NSFontSymbolicTrait];
    NSDictionary *varAttrs = [NSDictionary dictionaryWithObject:varSymbolic
                                                         forKey:NSFontTraitsAttribute];
    NSFontDescriptor *varDesc = [NSFontDescriptor fontDescriptorWithFontAttributes:varAttrs];
    NSFont *variables = [NSFont fontWithDescriptor:varDesc
                                              size:24];
    [pellString addAttribute:NSFontAttributeName value:variables range:NSMakeRange(0, 12)];

当我NSLog variablesNSFont对象时,我得到以下内容:

"LucidaGrande 24.00 pt. P [] (0x7f9f43e18970) fobj=0x7f9f43e18b40, spc=7.59"

换句话说,NSFont没有像我问的那样创建衬线字体,也没有创建斜体字体(我也独立地尝试了它们,没有其他字体)。记录NSFontDescriptor会产生我放在那里的键值对,因此问题必须出现在创建NSFont对象的步骤中。我的猜测是这些是只读属性,我无法设置它们,只能读取它们。我正确读到了吗?

如果是这样,指定通用serif字体的首选方法是什么?或者我是否必须选择特定的一个并处理可能无法访问该字体的用户?

0 个答案:

没有答案