9

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

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

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

4

2 回答 2

15

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

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

同样,Console 中的“SF Mono /Applications/Utilities/Console.app/Contents/Resources/Fonts.

同样,Xcode 中的“SF Mono 也是/Applications/Xcode.app/Contents/SharedFrameworks/DVTKit.framework/Resources/.

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

考虑到您同意以下条款,此 SF Mono 字体(“Apple 字体”)由 Apple Inc.(“Apple”)授权给您。如果您不同意这些条款,请勿使用 Apple 字体。

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

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

如果用户手动安装了字体,可以通过 family nameSF Mono或字体名称SFMono-Regular(其他权重类似)找到它。

let f = NSFont(name: "SFMono-Regular", size: 12)
于 2016-10-06T08:49:16.740 回答
10

在 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)!
}

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

于 2019-10-08T10:26:15.563 回答