目标:在 SwiftUI 上使用自定义字体,针对 MacOS。
问题:在 iOS 上,自定义字体在 SwiftUI 中工作正常:
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundColor(.accentColor)
Text("Hello, world!")
.font(Font.custom("SourceCodePro-ExtraLight", size: 40))
Text("Hello, world!")
.font(Font.custom("LobsterTwo", size: 40))
}
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
尝试过:我确保这两种字体都添加到相应 iOS 和 MacO 目标上的“信息”选项卡中:
似乎是 SwiftUI 在幕后使用 UIFont 的问题,需要一个特殊的 NSFont...
非常感谢任何帮助!
只是Mane Manero的回答的一些进一步解释:
Info.plist
键ATSApplicationFontsPath实际上是指应用程序包的Resources
文件夹,而不是您的项目目录。这是来自docs的具体参考:
If you set this key, the system allows the app in the bundle to use the fonts at the specified path. Set this key to the path relative to the bundle’s Resources folder. For example, if the fonts are in .../Resources/MyFonts, set this key to MyFonts/.
您可以通过在 Xcode 中存档和导出您的应用程序来确认这一点 -> 将应用程序包保存到
Applications
文件夹 -> 右键单击应用程序包 > 显示包内容 > 打开 Resources
文件夹 -> 您应该看到您的 .ttf
或 .otf
此目录中的字体文件。