优化(减少)网络字体请求


8

我的主页当前使用5种网络字体-由于对Helvetica Neue的支持不一,我希望它是6种。字体之一是“ FontAwesome”图标,其他四种仅用于一个或两个单词(即,我的标题是“ Optimization”,用看起来像旧计算机的字母写)。

这些字体中有2种可以通过Google获得,我只要求提供所需的字母(效果很好)。但是,其他2个来自openfontlibrary.org,并且仅以单一格式提供。没什么大不了的(无论如何,我都会安全地需要它们,这样本地副本会更好),带有Fontsquirrel.com @ font-face生成器的快捷工具,并且我有多种格式,可以引导CSS。

然后我测试页面加载时间...呃。我认为我可以将本地副本归为一个子集,有人在这方面有经验吗?

Answers:


3

与仅使用标准的Web安全系统字体相比,使用非标准的Web字体对页面加载时间有显着的性能影响。无论您使用的是JavaScript还是@ font-face,都是这种情况。

人们应始终仔细分析是否应使用非标准的网络字体。

在考虑使用非标准Web字体时需要问自己的一些问题:

  • 您是否仅使用它们来表明您可以并且知道如何做?
  • 它是否旨在执行更好的设计并提供更好的用户体验?
  • 用于实现跨浏览器字体的方法是否兼容?
  • 一张图像就足够了,尤其是在一张纸上只有几个字或只有几页的情况下?
  • 字体与网络安全字体是否足够不同,以使其值得使用?
  • 如果该字体用作正文,是否易于阅读,或者该字体是为标题设计的?

确保您至少了解排版基础知识以及排版如何影响您的设计,并充分利用其优势。


感谢您提供详细的答案,但到目前为止,我将对这些答案感到有些沮丧。我意识到这正在影响加载时间;我知道排版和网络安全字体。我意识到我可以使用图片(或图片精灵)和替代文字。但是,这些是我的不得已的选择。我可以使用一个非常安全的字体堆栈,但这无法达到使用Web字体的目的(甚至替代字体都需要HTTP连接)。然后,您将进入SEO,调整字体大小的可访问性问题,翻译,视障人士的设置等。如果合理的话,我更喜欢优化我的Web字体。
2012年

如果您阅读了我链接到的第一篇文章,您将找到有关在使用非标准Web字体时缩短页面加载时间的方法的信息。
2012年

抱歉,链接数量不知所措,我现在就开始做。
2012年

您说的没错,对我的不耐烦(这实际上是他给出的第二个链接)。详细介绍了自托管,TypeKit,Google,字体松鼠(某种程度上我错过了尝试使用@ font-face生成器的高级选项的想法),甚至分析了不同浏览器中的不同方法。对于那些一路走来的人,它回答了我所有的问题。
2012年

感谢您让我知道这是第二个链接。我把它们混在一起。现在已修复,因此它是第一个链接。如果您还没有的话,可能还需要研究Cufon和sIFR。另外,我的很多回答都针对将来的读者,因此他们在考虑使用Web字体之前要三思而后行。
tacotuesday,2012年

6

其他4个仅用于一个或两个单词

那是字面意思吗?
如果是这样,您为什么不介意完全嵌入这些字体(子集与否)?在这种情况下,您甚至不应该进行优化,只需删除即可。使用所需的文本制作图像并使用您喜欢的文本替换技术。只需几句话,您就可以添加HTTP请求并下载时间到您的站点。


那发生在我身上,我只是想,如果我说我可以用CSS3编码几种Web字体,并且通过媒体查询进行响应式设计可能是明智的。
adam-asdf 2012年

我注意到您对此社区非常尊重(显然还有实践经验)。我在看什么 我知道http(s)请求每次都花时间,但是请给我一些信息以做出明智的决定...我们是在说2秒还是2微秒?我很实际,但是在设计方面我有审美取向。请给我一种做出明智决定的方法。
2012年

1
@Su'是完全正确的。每个站点的HTTPRequests都不相同,这实际上取决于客户端和服务器之间的路由。与使用DSL或T1的人相比,使用拨号(静止)或卫星连接的人将经历更长的加载时间。好的美学非常重要,但是好的结构和优化也同样重要。最小化加载时间的余量是一种常见的做法,因此限制了到您站点的HTTPRequest数量。对单词进行图像处理将减少加载时间,并且您的用户将一无所知。同时查看CSS Sprites。
克里斯托弗·

@Christopher我很高兴您提到sprites,我想您可能会说我正在寻找一种在webfonts中创建自定义的本地sprites版本的方法。
2012年

@ user1332729简单,按照Su'的建议(创建单词的图像)进行操作,并对其应用CSS Sprite原理。爆炸,没有经过图像格式的处理,就可以实现最大程度的优化。你是什​​么意思本地可用?给你还是你的客户?
克里斯托弗·

2

为了跟进,我最终使用@ font-face生成器的高级选项来划分我的字体,所以我只加载了所需的字符。

选项之一是对字体进行Base64编码(这使我可以将它们嵌入CSS文件中)。如果提供内存,Base64将对.woff.ttf字体进行编码。

虽然我希望支持尽可能多的浏览器用户,但我认为通过额外的,可能是冗余的数据来减慢现代浏览器的用户的速度是不值得的,因此我使用了Modernizr(使用yep / nope.js)CSS按照强化的防弹字体语法,异步加载引用所有字体格式的独立文件。

我去来回的Base64编码之间的.woff字体和包括字体声明的其余部分在主CSS文件或仅包括Base64编码.woff在初级CSS,然后包括在其他格式CSS文件,该文件通过我异步加载Modernizr.load

我喜欢快速加载而不是美观,因此FOUC并不是什么大问题,但是我会注意到大多数浏览器在加载时(在加载了Base64编码字体之后CSS)异步地对字体进行了“闪烁” 。

从好的方面来说,一旦字体被加载并存储在缓存中(服务器上设置的长期过期标头),便消除了“闪烁”,并且我能够加载扩展的字体集,以便使用其他语言的用户(并使用随附的Google翻译小部件)仍会看到样式化的文本。

由于这是我自己的网站,因此我可以进行试验,但是我主要是为了“炫耀”它,因此我对客户网站比较保守。

我实现的另一种技术是将所有.svg字体放到一个文件中,并用自己的ID标识每个字体,而不是像@ font-face生成器生成的那样将每个字体保存在单独的文件中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.