【问题标题】:Font Face Observer loading all fonts on page load?Font Face Observer 在页面加载时加载所有字体?
【发布时间】:2019-07-15 20:07:50
【问题描述】:

也许我误解了 Font Face Observer 的工作原理。我的理解是,这允许您仅在使用时加载字体。但无论我在代码中输入什么字体,它总是将其加载到浏览器中。下面的示例代码。如果加载所有字体,这不会使我的页面“沉重”吗?特别是如果我没有使用所有字体?这部分描述让我感到困惑:

与 Web Font Loader Font Face Observer 不同,它使用滚动事件来 以最小的开销有效地检测字体加载。

在我看来,当您向下滚动时,它会检测是否正在使用字体,如果是,则加载它。另外,如果我没有指定权重,说 Roboto 的字体加载器会加载所有可用的权重吗?

var fontA = new FontFaceObserver('Roboto');
var fontB = new FontFaceObserver('Roboto Condensed');
var fontC = new FontFaceObserver('Open Sans');
var fontD = new FontFaceObserver('Open Sans Condensed');
var fontE = new FontFaceObserver('Oswald');

fontA.load().then(function () {
  console.log('Roboto font is available');
});

fontB.load().then(function () {
  console.log('Roboto Condensed font is available');
});

fontC.load().then(function () {
    console.log('Open Sans font is available');
});

fontD.load().then(function () {
    console.log('Open Sans Condensed Font is available');
});

fontE.load().then(function () {
    console.log('Oswald font is available');
});

当它运行时,我在控制台中看到:

Roboto font is available
Open Sans font is available
Roboto Condensed font is available
Open Sans Condensed Font is available
Oswald font is available

所以回顾一下,这个字体加载器的目的是加载我指定的所有字体吗?如果我只使用没有特定权重的字体名称,它会自动加载所有权重吗?还是我还需要为每种字体添加我想使用的每个重量?

【问题讨论】:

    标签: fonts font-face webfont-loader


    【解决方案1】:

    你在这里描述的:

    我的理解是,这允许您仅在使用时加载字体。

    ...实际上是@font-face 的默认浏览器行为。如果您有 10 个 @font-face 声明,但在页面上只使用了一个对应的 font-family,则只会加载其中一个字体文件。

    Font Face Observer 非常适合当您想要在字体可用后执行其他操作时,例如。在canvas 上使用它,应用 CSS 类等。我认为 Font Face Observer 将需要使用该系列来检查它是否可用,这就是即使你没有在任何地方使用它们也会被加载的原因其他在您自己的 CSS 中。如果您在字体加载后不需要执行任何其他操作,那么浏览器默认行为可能会按原样为您工作。

    【讨论】:

    • 所以字体观察器不是通过异步加载字体来帮助加快网站速度的工具吗?因为我看到一篇又一篇文章谈论如何使用这个工具甚至谷歌网络字体加载器,因为它具有异步字体加载功能,可以帮助你加快页面加载速度。
    • 对于 Web Font Loader,他们可能指的是异步加载 JavaScript 库本身。来自自述文件,“使用 Web 字体加载器异步避免在加载 JavaScript 时阻塞您的页面。”一个常见的感知性能问题可以使用这两个库来管理无样式文本的 Flash (FOUT) —This article from the library author shows some good examples — 但现在在许多浏览器中也可以使用 CSS 属性 font-display 来管理这一问题。
    猜你喜欢
    • 2014-11-19
    • 2016-10-21
    • 2010-11-22
    • 2013-01-15
    • 2012-11-01
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    相关资源
    最近更新 更多