好吧,我正在尝试在 上使用斜体和衬线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
创建对象的步骤上。我的猜测是这些是只读属性,我不能设置它们,只能读取它们。我读对了吗?
如果是这样,指定通用衬线字体的首选方法是什么?还是我必须选择一个特定的字体并处理可能无法访问该字体的用户?