页面加载时可变字体闪烁

variable font flickers on page load

我有以下问题:我正在使用来自 inter 家族 (https://rsms.me/inter/) 的可变字体并按以下方式实现它:

@font-face {
  font-family: 'Inter var';
  font-weight: 100 900;
  font-display: swap;
  font-style: normal;
  font-named-instance: 'Regular';
  src: url("Inter-roman.var.woff2?v=3.15") format("woff2");
}

html { font-family: 'Inter var', sans-serif; }

设置字体样式时,我只想更改字体粗细,因此我这样声明:

p { font-variation-settings: 'wght' 200; }

浏览器以正确的系列和粗细呈现字体,但不幸的是在页面加载时,字体总是短暂地“闪烁”。在我看来,浏览器首先以正常的字体粗细呈现字体,然后以我想要的粗细重新呈现它。这个问题发生在我使用变量 font-variation-settings 的所有字体上。

该行为发生在每次页面加载时,也发生在重新加载时。您可以在此处查看页面重新加载期间的问题:

感谢提示!

这似乎是字体本身的问题,我能提供的最佳解决方案是简单地使用另一种字体。我建议使用 google 字体

HTML:

    <head>
        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans">
    </head>

CSS:

p {
    font-family: 'Open Sans';
}

------------原版Post----------

为什么不直接使用 p {font-weight: 200;},这可能会解决问题并且可能更易于阅读(至少从外部角度来看)

也可以尝试将 font-family 添加到 body 而不是 html 如果这不起作用

我们发现字体闪烁的原因有很多。

  1. post 问题的解决方案由 post 创建者找到:

    “我已经以某种方式修复了它:我问过字体的创建者,这是他的回答:”可能是因为你正在使用 font-display:swap(它故意导致对字体的请求“闪烁”没有缓存在客户端,这应该很少见。)参见 developer.mozilla.org/en-US/docs/Web/CSS/@font-face/…”如果我将字体显示更改为块,它不再闪烁但是有一段较长的时间,字体不会被渲染。我决定改变项目并使用标准的非可变字体。– Mista K."

  2. 正在服务器上加载:

    虽然我当然不是这方面的专家。在服务器上加载文件可以解决问题。这可能是由于样式 sheet 在服务器上加载时被缓存。

  3. 更改字体:

    这不是一个修复,但不幸的是,错误可能是由字体本身引起的。

  4. 另一个快速修复:

    项目可能需要添加加载屏幕,因此可以在其中加载字体。

抱歉,这不是最权威的 post,这只是我们在讨论此问题时发现的解决方案。请随时对此发表评论以添加内容,甚至告诉我我错了。