Xcode 8引入了一种名为'SF Mono'的新字体。
这是我个人觉得非常易读的字体,我想在NSTextView
中使用它。但是,要为NSTextView
设置字体,需要使用NSFont
对象。问题是我似乎无法通过SF Mono
在可用字体列表中找到NSFontManager.shared().availableFonts
字体。
有没有人知道SF Mono
的编程名称是什么用于为其字体初始化NSFont(NSFont(name: String, size: CGFloat)
)?
答案 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.