我想制作一个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不是正确的大小。我可以在里面放任何我想要的尺寸,它们看起来都一样。
您是为iOS还是Mac OS X编写?
这在我的Mac应用程序中运行良好:
NSFont* font = [NSFont fontWithName:@"Arial" size:30];
用粗体和/或斜体更新:这对你来说足够了吗?
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];
更新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种其他字体样式(具有特征)不是由算法动态生成的。