如何先显示页面然后加载自定义字体?

Posted

技术标签:

【中文标题】如何先显示页面然后加载自定义字体?【英文标题】:How to display page first then load custom fonts? 【发布时间】:2013-08-27 10:33:24 【问题描述】:

我有一个时间敏感的网页,我希望它先显示该页面,然后再加载任何自定义字体。换句话说,页面将首先显示为好像没有加载字体一样。

这意味着自定义字体(如果被浏览器缓存)只会在用户第二次及以后访问该页面时使用。

我试过了:

<style>
@font-face 
    font-family: 'FontName'; 
    src: url('http://domain.com/fonts/font.ttf');

</style>

但它不会后加载字体。这意味着页面加载会延迟。

在没有 javascript 的情况下实现此功能可能有哪些解决方案/技巧

【问题讨论】:

页面加载后能否通过 jquery/js 更改样式? @BrianAdkins,没有 JavaScript ..... 天啊! ...完全错过了。 所以你有一个时间敏感的网页,你想加载像字体这样的大量外部二进制 blob。好吧,您想同时兼顾两者是件好事,但您有没有想过这根本行不通? @hakre,字体是可选的补充。实际上,我希望优先考虑减少页面加载时间。 【参考方案1】:

有哪些解决方案可以在不使用 Javascript 的情况下实现此功能?

不可能。当字体是整个页面的一部分时,您不能加载整个页面然后加载字体。这是自相矛盾的。

使用 javascript,您可以更改页面,以便拥有一整页,然后使其更加“完整”。

【讨论】:

“一些解决方案”是什么样的?【参考方案2】:

这是一个艰难的想法......但这是一个开箱即用的笨拙想法......不知道它是否有效,它可能会被否决。 :

使用两个几乎相同的页面:

    加载不使用自定义字体的页面“A”,除了底部的一些文本使用自定义字体的内联样式呈现。希望这能让浏览器有机会缓存​​字体。

    不使用 js(元刷新?)重定向到页面“B”,除了应用了缓存字体外,该页面具有相同的内容。

但是,如果没有 js,我想不出一种正确计时的方法,所以你会陷入竞争状态。

【讨论】:

但即使是底部的文字也需要浏览器预先下载字体,这违背了尝试后加载字体的目的......

以上是关于如何先显示页面然后加载自定义字体?的主要内容,如果未能解决你的问题,请参考以下文章

自定义字体未加载到对话框的 listView 中

在 CSS 中使用自定义 (ttf) 字体

从应用程序特定文件夹加载自定义字体文件

如何配置 webpack 以将自定义字体加载到故事书中?

全局字体设置 老年模式

将自定义字体加载到网站中[重复]