从iOS 13开始,应用程序就可以使用新的Fonts权限,有一个子选项“ use Installed字体”可以使用特殊字体提供程序安装的自定义字体。这些应用程序使用相同的权限,但使用的子选项是'Install字体‘。这类应用的例子有来自Adobe的CreativeCloud和来自MonoType的MyFonts。
除了使用WKWebView之外,使用已安装的字体可以工作得很好。
例如,我使用以下代码在WKWebView控件中加载一些文本,并使用UIFontPickerViewController选择字体。选择字体后,将更新webView控件和导航栏的字体。这与内置的系统字体很好。但在选择自定义已安装字体后,只更新导航栏的字体。这表示应用程序支持安装的自定义字体,但WKWebView控件除外。
class ViewController: UIViewController {
@IBOutlet weak var webView: WKWebView!
var font = "Avenir Next"
let html = """
<style>
body {
font-family: 'FONTFAMILY';
font-size: 40pt;
}
</style>
<body>
This is a test string to demonstrate the characters of a custom installed font named “<b>FONTFAMILY</b>”. Hopefully it will not be replaced by Times New Roman or some other ugly looking font.
</body>
"""
override func viewDidLoad() {
super.viewDidLoad()
loadHTML()
}
@IBAction func selectFont(_ sender: AnyObject) {
let picker = UIFontPickerViewController()
picker.delegate = self
present(picker, animated: true, completion: nil)
}
fileprivate func loadHTML() {
webView.loadHTMLString(html.replacingOccurrences(of: "FONTFAMILY", with: font), baseURL: nil)
navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.font : UIFont(name: font, size: 24)!]
}
}
extension ViewController: UIFontPickerViewControllerDelegate {
func fontPickerViewControllerDidPickFont(_ viewController: UIFontPickerViewController) {
if let family = viewController.selectedFontDescriptor?.object(forKey: .family) as? String {
font = family
loadHTML()
}
}
}问题:我必须做什么使那些自定义安装的字体在WKWebView中工作
堆栈溢出中存在的大多数关于WKWebView和外部字体的问题都与从包或外部服务器加载自定义字体的应用程序有关。在iOS中安装自定义字体的一种较旧的技术使用了配置配置文件。这在WKWebView中非常有效,但我的问题是关于新的iOS 13字体安装技术,如这里所解释的:https://developer.apple.com/videos/play/wwdc2019/227/。
发布于 2020-09-03 11:31:39
在通过DTS与Apple联系后,我间接地收到了这个问题是一个bug的确认,因为“它可能需要对您正在使用的操作系统、工具或框架进行更改”。我已经提交了一份反馈意见,并希望一切顺利。
https://stackoverflow.com/questions/63603049
复制相似问题