Xcode 8 引入了一种名为“SF Mono”的新字体。
这是我个人觉得非常可读的字体,我想在NSTextView
. 但是,要为 设置字体,NSTextView
需要使用NSFont
对象。问题是我似乎无法SF Mono
通过NSFontManager.shared().availableFonts
.
有谁知道SF Mono
NSFont ( NSFont(name: String, size: CGFloat)
) 的字体初始化的程序名称是什么?
“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)
在 iOS 13 和 macOS 10.15 中,Apple 为开发人员提供了新的系统字体,包括SF Mono和New 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 会话字体管理和文本缩放。