6

我想制作一个 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 大小不合适。我可以放任何我想要的尺寸,它们看起来都一样。

4

1 回答 1

9

你是为 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 种其他字体样式(具有特征)不是由算法动态生成的。

于 2012-01-24T21:15:19.260 回答