我有一个NSFont
,我想修改它的大小,家庭,特征。
我发现我可以使用NSFontManager
来做到这一点(使用例如convertFont:toFamily
或convertFont:toSize
),但我怀疑有可能一次改变所有(我想象像convertFont:toFamily:toSize:toHaveTrait
这样的东西)。然而,我没有发现任何这样的事情,这就是为什么我目前正在做一个逐步转换。
我考虑的另一件事是使用NSFontDescriptor
。然而,如果我已经开始使用NSFont (NSFont -> NSFontDescriptor -> modified NSFontDescriptor -> modified NSFont
看起来比NSFont -> converted NSFont
更冗长),使用这个似乎有点麻烦。
那么,是否有一种理想的方法来转换NSFont
s?如果有,是什么?
字体描述符是解决这个问题的常用方法。参见WWDC 2013的使用字体和文本工具包,从26:00开始(这个演讲主要集中在UIKit上,但许多原则也适用于AppKit)。NSFontManager
设计用于交互式字体选择器UI(特别是字体面板)。如果您正在与用户选择的字体进行交互(以一种类似ui的方式),则绝对应该使用NSFontManager
,但在大多数情况下,随着用户选择和取消选择各种选项,您将逐渐修改内容。如果你要独立于用户操作字体,你可能需要使用字体描述符,特别是这样你就不会无意中修改字体面板。