如何创建既粗体又斜体的NSFont?

Arn*_*son 9 fonts cocoa

这是关于Cocoa中字体处理的初学者问题.我有一个字体系列,例如Verdana,它有以下字体:Regular,Bold,ItalicBold Italic.我知道这些字体存在,因为它们在"字体"面板中可用.

这有效:

NSFont *regular = [NSFont fontWithName:@"Verdana" size:75];
NSFont *bold = [NSFont fontWithName:@"Verdana-Bold" size:75];
NSFont *italic = [NSFont fontWithName:@"Verdana-Italic" size:75];
Run Code Online (Sandbox Code Playgroud)

这不起作用:

NSFont *boldItalic = [NSFont fontWithName:@"Verdana-Bold Italic" size:75];
Run Code Online (Sandbox Code Playgroud)

获得给定字体系列的Bold Italic版本的最简单方法是什么?

Arn*_*son 21

这有效:

NSFontManager *fontManager = [NSFontManager sharedFontManager];
NSFont *boldItalic = [fontManager fontWithFamily:@"Verdana"
                                          traits:NSBoldFontMask|NSItalicFontMask
                                          weight:0
                                            size:75];
Run Code Online (Sandbox Code Playgroud)


eri*_*icg 8

请参阅NSFontManager和-convertFont:toHaveTrait:

有关更多详细信息,我建议您阅读字体处理指南,特别是标题为手动转换字体的部分.

请注意,您使用的字体需要具有您要求的特征的某个版本,否则,您将获得字体,但没有请求的特征.

如果最终您想要将斜体特征添加到没有斜体的字体,请查看:

如何在我的应用程序中获得Lucida Grande斜体?


ken*_*ytm 7

Verdana-BoldItalic.

(字体的粗体斜体变体的实际名称取决于系列,有些字体没有粗体斜体,使用NSFontDescriptorwith -fontDescriptorWithSymbolicTraits:来获得精确的粗体斜体字体.)