首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WKWebView不显示字体提供程序安装的字体

WKWebView不显示字体提供程序安装的字体
EN

Stack Overflow用户
提问于 2020-08-26 17:44:22
回答 1查看 146关注 0票数 1

从iOS 13开始,应用程序就可以使用新的Fonts权限,有一个子选项“ use Installed字体”可以使用特殊字体提供程序安装的自定义字体。这些应用程序使用相同的权限,但使用的子选项是'Install字体‘。这类应用的例子有来自Adobe的CreativeCloud和来自MonoType的MyFonts。

除了使用WKWebView之外,使用已安装的字体可以工作得很好。

例如,我使用以下代码在WKWebView控件中加载一些文本,并使用UIFontPickerViewController选择字体。选择字体后,将更新webView控件和导航栏的字体。这与内置的系统字体很好。但在选择自定义已安装字体后,只更新导航栏的字体。这表示应用程序支持安装的自定义字体,但WKWebView控件除外。

代码语言:javascript
复制
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/

EN

回答 1

Stack Overflow用户

发布于 2020-09-03 11:31:39

在通过DTS与Apple联系后,我间接地收到了这个问题是一个bug的确认,因为“它可能需要对您正在使用的操作系统、工具或框架进行更改”。我已经提交了一份反馈意见,并希望一切顺利。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63603049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档