2

好吧,我正在尝试在 上使用斜体和衬线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创建对象的步骤上。我的猜测是这些是只读属性,我不能设置它们,只能读取它们。我读对了吗?

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

4

0 回答 0