WKWebView 和动态类型 + 自定义字体

Posted

技术标签:

【中文标题】WKWebView 和动态类型 + 自定义字体【英文标题】:WKWebView and Dynamic Type + Custom Fonts 【发布时间】:2019-08-21 11:11:54 【问题描述】:

我无法让WKWebView 同时使用自定义字体和动态类型,但它可以单独使用。

这部分的 CSS 非常简单:

body 
    font-family: 'MyCustomFont';
    font-size: 15px;

为了允许动态类型,我将其更改为:

body 
    font-family: 'MyCustomFont';
    font: -apple-system-body;

我有一个观察者来收听通知UIContentSizeCategory.didChangeNotification 以重新加载webview,它会优雅地更改字体大小,但使用的是系统字体,而不是自定义字体。

知道如何让这两个东西都工作吗?

【问题讨论】:

【参考方案1】:

我终于设法解决了,只需将此块添加到 CSS 中

html 
    font: -apple-system-body;
    

然后像这样离开body,没有font-size

body 
    font-family: 'MyCustomFont';

只有这样,两件事都会奏效。

【讨论】:

这仅适用于正文文本(这在大多数情况下已经足够好)但是如果您正在修改与它相关的其他部分,例如标题并且它是使用 px 设置的,这不起作用正确【参考方案2】:

font shorthand property 将覆盖您的 font-family 属性,仅将系统字体应用于您的选择器。

您不能同时为同一个选择器使用两种字体,但您可以尝试使用系统字体作为后备,如下所示:

font-family: 'MyCustomFont', -apple-system-body;

我不确定这是否是您正在寻找的答案...

【讨论】:

感谢 Torllsyn,但它不起作用。顺便说一句,我设法找到了解决方案,我会分享。

以上是关于WKWebView 和动态类型 + 自定义字体的主要内容,如果未能解决你的问题,请参考以下文章

在 WKWebView 中使用自定义字体

WKWebview 中的动态类型与设置不匹配

界面生成器中具有动态类型的自定义字体

使用 CSS 修复自定义字体行高

自定义Label的字体颜色和大小

如何在 ListView 和 AlertDialog 中设置自定义字体?