好吧,我试图在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 variables
,NSFont
对象时,我得到以下内容:
"LucidaGrande 24.00 pt. P [] (0x7f9f43e18970) fobj=0x7f9f43e18b40, spc=7.59"
换句话说,NSFont
没有像我问的那样创建衬线字体,也没有创建斜体字体(我也独立地尝试了它们,没有其他字体)。记录NSFontDescriptor
会产生我放在那里的键值对,因此问题必须出现在创建NSFont
对象的步骤中。我的猜测是这些是只读属性,我无法设置它们,只能读取它们。我正确读到了吗?
如果是这样,指定通用serif字体的首选方法是什么?或者我是否必须选择特定的一个并处理可能无法访问该字体的用户?