什么是字体'SF Mono'的NSFont名称?

时间:2016-10-06 08:07:28

标签: swift nsfont

Xcode 8引入了一种名为'SF Mono'的新字体。

这是我个人觉得非常易读的字体,我想在NSTextView中使用它。但是,要为NSTextView设置字体,需要使用NSFont对象。问题是我似乎无法通过SF Mono在可用字体列表中找到NSFontManager.shared().availableFonts字体。

有没有人知道SF Mono的编程名称是什么用于为其字体初始化NSFont(NSFont(name: String, size: CGFloat))?

2 个答案:

答案 0 :(得分:14)

“SF Mono”不是系统字体。您无法在终端,控制台和Xcode之外选择SF Mono,因为它未安装到系统中。

终端中的“SF Mono”是/Applications/Utilities/Terminal.app/Contents/Resources/Fonts/中的custom font

同样,控制台中的“SF Mono”是/Applications/Utilities/Console.app/Contents/Resources/Fonts中的另一个自定义字体

同样,Xcode中的“SF Mono”也是/Applications/Xcode.app/Contents/SharedFrameworks/DVTKit.framework/Resources/中的自定义字体

当然,如果不违反Apple的版权许可,您不能将SF Mono与您的程序捆绑在一起:

  

此Apple Mono字体(“Apple字体”)由Apple Inc.(“Apple”)根据您对以下条款的同意授权给您。如果您不同意这些条款,请不要使用Apple字体。

     

您可以将Apple Font与Apple品牌的应用程序结合使用,包括但不限于Xcode,Terminal.app和Console.app。您不得在任何其他软件应用程序或程序或其他产品中嵌入或使用Apple字体,并且您不得使用Apple字体创建,开发,展示或以其他方式分发任何内容,文档,艺术作品或任何内容其他工作产品。

     

您只能将Apple字体用于本许可证中所述的目的或Apple书面明确许可的其他目的。

如果用户手动安装了该字体,则可以找到姓氏 SF Mono ,或字体名称 SFMono-Regular (类似对于其他权重)。

let f = NSFont(name: "SFMono-Regular", size: 12)

答案 1 :(得分:1)

在iOS 13和macOS 10.15中,苹果公司向开发人员提供了新的系统字体,包括 SF Mono New York

您可以使用NSFont.monospacedSystemFont(ofSize: 0, weight: .regular)获得SF Mono。

或者,如果您要使用其他系统字体,则可以使用NSFontDescriptor:

if let sfMonoDescriptor = NSFont.systemFont(ofSize: 0).fontDescriptor.withDesign(.monospaced) {
    let sfMonoFont = NSFont(descriptor: sfMonoDescriptor, size: 0)!
}

有关更多信息,请参见WWDC会议Font Management and Text Scaling.