ios - 在 WKWebView 中使用自定义字体

标签 ios css fonts uiwebview wkwebview

我在我的应用程序中使用自定义字体。它们被复制到 bundle 并硬编码到 appName-info.plist。 这种字体在整个应用程序和 UIWebView 中都能完美运行。

我正在加载 htmlString [webView loadHTMLString:htmlString baseURL:nil]; 我在带有 css 的 webView 中使用这种字体: fontFamily: fontName

但是当我尝试使用 WkWebView 自定义字体时不起作用。 WkWebView 显示随机默认字体。

我尝试使用基本 url 中的主包路径加载它并在 css 中使用 font-face - WkWebView 仍然显示随机字体。

如何让自定义字体在 WKWebView 中工作?

最佳答案

我遇到了同样的问题,在我的情况下,我可以WITHOUT使用base64编码GCDWebServer来修复它。

场景:

  • WkWebView 加载是通过字符串 html
  • WkWebView 使用本地 .css
  • 字体是本地的,并在顶级元素中添加
  • 字体条目在 appName-info.plist 中的键 UIAppFonts/Fonts provided by application 下提供(注意:我们需要这个舞蹈是因为 WKWebView 忽略了这个键,但是声明它仍然是一个好主意,这样您就可以在 native 控件中使用字体)

解决方案:

在顶层的.css中添加字体,如下所示

@font-face
{
    font-family: 'FontFamily';
    src: local('FontFamily'),url('FontFileName.otf') format('opentype');
}

演示元素:

GitHub Project Link

注意:新的演示应用程序运行可能需要 2-3 秒,我已经针对长 html 字符串对其进行了测试,它与 UIWebView 的工作方式相同,没有延迟。相同的字体在 WKWebView 中可能看起来比 UIWebView 小一些。

关于ios - 在 WKWebView 中使用自定义字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25785179/

相关文章:

iphone - RootViewController 可以实例化 Storyboard吗?

iphone - dispatch_async 是否在 for 语句中有什么区别

ios - 使用主体参数进行 API 调用

jquery - 使用 JQuery Page Scroller 的 100% 高度 div

css - Materialise css - 字体混合内容警告

ios - 我可以将 CoreML 和 PencilKit 等 Apple 库与 React-Native 应用程序一起使用吗?

css - 从 webpack 中排除 css 中引用的图像

html - 2行数据自动调整列宽

c++ - 使用 EnumFontFamiliesEx 函数枚举时字体过多

html - 为什么我的 HTML 中只有部分系统字体可用?