字体“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 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.
【讨论】:
以上是关于字体“SF Mono”的 NSFont 名称是啥?的主要内容,如果未能解决你的问题,请参考以下文章
OSX NSFont 与 Photoshop 中完全相同的字体不同