字体“SF Mono”的 NSFont 名称是啥?

Posted

技术标签:

【中文标题】字体“SF Mono”的 NSFont 名称是啥?【英文标题】:What is the NSFont name for the font 'SF Mono'?字体“SF Mono”的 NSFont 名称是什么? 【发布时间】:2016-10-06 08:07:27 【问题描述】:

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

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

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

【问题讨论】:

这里对于 ios 的同样问题:***.com/questions/39296282/where-is-sf-mono-font。显然该字体对开发人员不可用:( @MartinR 这不是同一个问题(或者至少我不认为它是);我正在寻找程序化字体名称(类似于“.SFNSText”),但另一个问题是寻找字体文件本身。很遗憾它对开发人员不可用:( 【参考方案1】:

“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 与您的程序捆绑在一起:

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

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

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

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

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

【讨论】:

【参考方案2】:

在 iOS 13 和 macOS 10.15 中,Apple 为开发人员提供了新的系统字体,包括 SF MonoNew 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.

【讨论】:

以上是关于字体“SF Mono”的 NSFont 名称是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Core Text 中的规范字体粗细是啥?

OSX NSFont 与 Photoshop 中完全相同的字体不同

从 NSFont 获取所有字符

检查 NSFont 在 Swift 中是不是为粗体

NSFont 在 macOS Catalina 中无法正常工作

iOS 9.3 系统字体名称是啥?