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

per*_*rry 9 nsfont swift

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

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

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

ken*_*ytm 14

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

在"SF单"在终端是一个自定义字体/Applications/Utilities/Terminal.app/Contents/Resources/Fonts/.

类似地,"SF单声道"在控制台是另一自定义字体/Applications/Utilities/Console.app/Contents/Resources/Fonts.

类似地,"SF单声道"在Xcode也是自定义字体/Applications/Xcode.app/Contents/SharedFrameworks/DVTKit.framework/Resources/.

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

Apple Inc.("Apple")授权此SF Mono字体("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)
Run Code Online (Sandbox Code Playgroud)


ale*_*ner 8

在 iOS 13 和 macOS 10.15 中,Apple为开发人员提供了包括SF MonoNew York在内的新系统字体。

您可以使用NSFont.monospacedSystemFont(ofSize: 0, weight: .regular).

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

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

有关更多信息,请查看 WWDC 会话字体管理和文本缩放。