Я использую функцию NSAttributedString
draw(at:)
внутри NSView
, чтобы визуализировать некоторый текст произвольным шрифтом внутри моего окна.
Однако шрифт выглядит странно размытым и «слишком тяжелым» при работе на MacBook без сетчатки (как на внутреннем дисплее, так и на внешнем ЖК-дисплее).
Поскольку я могу в точности воспроизвести желаемый результат в Sketch на той же машине, я предполагаю, что это проблема с моим кодом.
Вот мой код:
import Cocoa
class StepNameLabel: NSView {
// Im aware that this is not the intended way of loading Apple's system fonts
// However, this was the best way I could find to make sure that both Sketch
// and the app were using the exact same fonts.
var font = NSFont(name: "SF Pro Text Semibold", size: 22)
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
let text = "Choose your Images"
let attributes: [NSAttributedString.Key: Any] = [
.font: font,
.foregroundColor: NSColor.white
]
print(font?.fontName)
let drawableString = NSAttributedString(string: text, attributes: attributes)
frame.size = drawableString.size()
drawableString.draw(at: NSPoint(x: 0, y: 0))
}
}
А вот снимок экрана, показывающий разницу между Sketch-файлом и приложением, работающим на одном экране (слева: рисунок в приложении Sketch, справа: вывод приведенного выше кода):
В коде приложения и на рисунке Sketch используется шрифт Apple «SF Pro Text» с весом шрифта «Semibold» и размером 22 единицы.
Любая помощь в выяснении того, что здесь происходит, будет принята с благодарностью.