2012-01-24 86 views
5

我想提出一个NSFont描述宋体,正常,30pt高度。到目前为止,我有:NSFont - 如何获得正确的字体?

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是不正确的大小。我可以把任何尺寸放在那里,它们看起来都一样。

回答

8

是你写的iOS或Mac OS X?

能正常工作在我的Mac应用程序:

NSFont* font = [NSFont fontWithName:@"Arial" size:30]; 

UPDATE以大胆和/或斜体:是够吗?

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

倾斜字体

我最近遇到一个关于字体设计师,他告诉我,平时如A​​rial字体实际上是4字体(宋体即,宋体斜体,Arial粗体和Arial粗斜体)。这3种其他字体样式(具有特征)不是由算法实时生成的。

+0

这个工作,但我不能做事的这种方法改变重量或倾斜。 – Justin808

+0

对你来说足够了吗?或者你真的想要动态的重量和倾斜? – JeanLuc

+0

是的,这很奇妙。感谢 – Justin808