Какое имя NSFont используется для шрифта «SF Mono»?

Новый шрифт под названием «SF Mono» был представлен с Xcode 8.

Лично я нахожу этот шрифт очень удобочитаемым, и я хотел бы использовать его в NSTextView. Однако, чтобы установить шрифт для NSTextView, необходимо использовать объект NSFont. Проблема в том, что я не могу найти шрифт SF Mono в списке доступных шрифтов через NSFontManager.shared().availableFonts.

Кто-нибудь знает, что такое программное имя SF Mono для инициализации NSFont (NSFont(name: String, size: CGFloat)) для его шрифта?


person perhapsmaybeharry    schedule 06.10.2016    source источник
comment
Тот же вопрос для iOS здесь: /где-это-sf-моно-шрифт. Судя по всему шрифт недоступен разработчикам :(   -  person Martin R    schedule 06.10.2016
comment
@MartinR это не тот же вопрос (или, по крайней мере, я так не интерпретирую); Я ищу имя программного шрифта (что-то вроде .SFNSText), но другой вопрос ищет сам файл шрифта. Жаль, что это недоступно разработчикам :(   -  person perhapsmaybeharry    schedule 06.10.2016


Ответы (2)


«SF Mono» не является системным шрифтом. Вы не можете выбрать SF Mono вне терминала, консоли и Xcode, потому что он не установлен в системе.

«SF Mono» в Терминале — это пользовательский шрифт в /Applications/Utilities/Terminal.app/Contents/Resources/Fonts/.

Точно так же «SF Mono» в консоли — это еще один пользовательский шрифт в /Applications/Utilities/Console.app/Contents/Resources/Fonts.

Точно так же «SF Mono» в Xcode также является настраиваемым шрифтом в /Applications/Xcode.app/Contents/SharedFrameworks/DVTKit.framework/Resources/.

И, конечно же, вы не можете связать SF Mono со своей программой, не нарушая авторских прав Apple:

Этот монофонический шрифт SF («Шрифт 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)
person kennytm    schedule 06.10.2016

В iOS 13 и macOS 10.15 Apple сделала новые системные шрифты, в том числе SF Mono и New York, доступными для разработчиков.

Вы можете получить SF Mono, используя 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 Управление шрифтами и масштабирование текста

person alexkaessner    schedule 08.10.2019