Easier use of variable fonts with AppKit, UIKit and SwiftUI. For iOS, macOS, tvOS, watchOS and visionOS
Extends AppKit's NSFont
, UIKit's UIFont
and SwiftUI's Font
with variable font features. Couldn't be easier!
let font = NSFont(name: "Amstelvar", size: 20, aces: [
"wght": 650,
"opsz": 100,
"XTRA": 700,
])
let scienceGothic = UIFont(name: "ScienceGothic", size: 20)!
let slanted = scienceGothic.withAxis("slnt", value: -10)
let tiltWarp = NSFont(name: "TiltWarp-Regular", size: 100)!
let axes = tiltWarp.allAxes()
print(axes)
/*
[VariableFonts.FontAxis(
id: 1481789268,
name: "XROT",
description: "Rotation in X",
minimumValue: -45.0,
maximumValue: 45.0,
defaultValue: 0.0),
etc...]
*/
Text("Hello world")
.font(.custom(name: "Fraunces", size: 40, axes: [
"wght": 900,
"SOFT": 100,
"WONK": 1,
]))
let nunito = UIFont(name: "NunitoSans", size: 20)!
let axes = nunito.allAxes()
// Creates a UIFont with all axes set to their maximum value.
let megaNunito = nunito.withAxes(
Dictionary(uniqueKeysWithValues: axes.map { axis in
return (axis.id, axis.maximumValue)
})
)