47 lines
1.6 KiB
Swift
47 lines
1.6 KiB
Swift
import SwiftUI
|
|
|
|
@discardableResult
|
|
public func registerFonts() -> Bool {
|
|
[
|
|
registerFont(bundle: .module, fontName: "Inter-Black-900", fontExtension: "ttf"),
|
|
registerFont(bundle: .module, fontName: "Inter-ExtraBold-800", fontExtension: "ttf"),
|
|
registerFont(bundle: .module, fontName: "Inter-Bold-700", fontExtension: "ttf"),
|
|
registerFont(bundle: .module, fontName: "Inter-SemiBold-600", fontExtension: "ttf"),
|
|
registerFont(bundle: .module, fontName: "Inter-Medium-500", fontExtension: "ttf"),
|
|
registerFont(bundle: .module, fontName: "Inter-Regular-400", fontExtension: "ttf"),
|
|
registerFont(bundle: .module, fontName: "Inter-Light-300", fontExtension: "ttf"),
|
|
registerFont(bundle: .module, fontName: "Inter-ExtraLight-200", fontExtension: "ttf"),
|
|
registerFont(bundle: .module, fontName: "Inter-Thin", fontExtension: "ttf"),
|
|
registerFont(bundle: .module, fontName: "SFMonoRegular", fontExtension: "otf")
|
|
]
|
|
.allSatisfy { $0 }
|
|
}
|
|
|
|
private func registerFont(bundle: Bundle, fontName: String, fontExtension: String) -> Bool {
|
|
guard let fontURL = bundle.url(forResource: fontName, withExtension: fontExtension) else {
|
|
return false
|
|
}
|
|
|
|
guard let fontDataProvider = CGDataProvider(url: fontURL as CFURL) else {
|
|
return false
|
|
}
|
|
|
|
guard let font = CGFont(fontDataProvider) else {
|
|
return false
|
|
}
|
|
|
|
var error: Unmanaged<CFError>?
|
|
|
|
guard CTFontManagerRegisterGraphicsFont(font, &error) else {
|
|
print(
|
|
"""
|
|
Error registering font: \(fontName). Maybe it was already registered.\
|
|
\(error.map { " \($0.takeUnretainedValue().localizedDescription)" } ?? "")
|
|
"""
|
|
)
|
|
return true
|
|
}
|
|
|
|
return true
|
|
}
|