搜索
首页web前端css教程优化性能的Web字体:最新的状态

Optimizing Web Fonts for Performance: the State of the Art

>本文是Siteground合作伙伴关系的贡献。 感谢您支持我们的赞助商。 67%的网站现在使用自定义的Web字体。 但是,这种广泛的采用提出了绩效和用户体验挑战。 本文探讨了Web字体实施中的常见陷阱,并提供解决方案,包括既定的解决方法和未来的标准。

密钥点:

在67%的网站上使用的自定义Web字体,由于其大小和加载时间,可能会对性能和用户体验产生负面影响,可能会导致无形文本(FOIT)。 优化自定义字体涉及使用浏览器兼容格式(优先级WOFF2),仅加载必要的样式和限制字符集的字体最小化字体。

>对抗FOIT,考虑使用系统字体,使用Web字体加载程序进行异步加载或利用CSS字体加载API进行颗粒状控制。
    >
  • > CSS
  • 属性提供高级字体加载管理,尽管浏览器支持仍然不完整。
  • >虽然未风格的文本(fout)可能会持续存在,但可以通过将后备字体指标(x-height and Width)与自定义字体对齐。
  • 自定义Web字体的魅力:
  • >网站访问者优先考虑内容。 因此,出色的排版对于可读性,可读性和品牌标识至关重要。 自定义Web字体(未在用户设备上预安装的字体)登录出色的印刷设计。 尽管CSSfont-display规则已启用了广泛采用,但字体文件的固有大小会影响站点性能。 有效的字体加载至关重要。
  • >
  • 理解隐形文本的闪光
>使用自定义字体的典型方法 - 通过CSS

定义它们并依赖默认浏览器行为 - 是次优的。 浏览器通常会延迟字体加载,直到CSS解析完成。 此外,正如Zach Leatherman的亮点一样,字体下载需要特定条件:> 使用指定的

的HTML元素 @font-face在Webkit和blink浏览器中,该元素不得为空。

对于支持Unicode范围描述符的浏览器,内容必须与指定的范围匹配。

此延迟下载通常会导致FOIT:文本隐形性,直到字体负载为止。 FOIT的浏览器处理各不相同:

    眨眼和Firefox使用三秒钟的超时;如果字体未加载,则会显示一个后备字体,可能导致Fout(未风格的文本闪光)。
  • > Safari,Android的默认浏览器和BlackBerry在字体加载之前不显示文本,使用户留有空白。
  • IE/Edge直接显示后备字体,一种更易于用户友好的方法。
  • >
  • 虽然福特比FOIT的破坏性不大,但理想情况下,应避免两者。 但是,许多专家都认为福特比FOIT更可取。

>优化自定义字体文件:

> 几种策略最小化字体文件大小:

  1. >最小化字体:

    使用少量精心选择的字体。>

  2. >浏览器兼容的格式:优先级WOFF2,倒退到Woff。 示例:
  3. @font-face {
      font-family: 'Open Sans';
      src: local('Open Sans'), local('OpenSans'),
           url('fonts/open-sans.woff2') format('woff2'),
           url('fonts/open-sans.woff') format('woff');
    }
    >仅加载必要的样式:
  4. 避免加载未使用的字体变化(斜体,粗体等)。
  5. >

    >

    >子集字符集:
  6. 仅包含页面上使用的字符。 (有关详细信息
  7. 地址foit:

  8. 几种方法减轻foit:

避免自定义字体(系统字体后备):一种简单的,尽管在美学上较少令人愉悦,但解决方案是仅依靠系统字体。 示例:

  1. Web字体加载程序:此JavaScript库异步加载字体,显示后备直到自定义字体可用。

    body {
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
    }
  2. >
  3. CSS字体加载API:该标准API可对字体加载进行精细元素的控制,从而可以使用系统字体,直到准备好自定义字体为止。 (有关教程,请参见Manuel Matuzovic的“从CSS字体加载开始”)。

    未来:CSS
  4. >

    > CSS 属性提供了对字体加载和后备行为的颗粒状控制。 值包括

。 虽然浏览器支持仍然有限,但它代表了Web字体加载的未来。> font-display 缓解福特:

font-display当上述方法解决foit时,可能仍会发生fout。 最大程度地减少其影响涉及使用Monica Dinculescu的字体样式匹配器等工具将后备字体的X-Height和Width与自定义字体的尺寸匹配。> autoblock结论: swap fallback有效的Web字体管理需要优化文件大小并控制字体加载行为。 这里讨论的方法以及提供的资源提供了有效的解决方案,以增强网站性能和用户体验。 optional

常见问题(常见问题解答):

>(原始输入的常见问题解答部分已经写得很好,不需要对此重写进行重大修改。)

)原始FAQ部分保留了。

以上是优化性能的Web字体:最新的状态的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
什么是CSS网格?什么是CSS网格?Apr 30, 2025 pm 03:21 PM

CSS网格是创建复杂,响应式Web布局的强大工具。它简化了设计,提高可访问性并提供了比旧方法更多的控制权。

什么是CSS Flexbox?什么是CSS Flexbox?Apr 30, 2025 pm 03:20 PM

文章讨论了CSS FlexBox,这是一种布局方法,用于有效地对齐和分布响应设计中的空间。它说明了FlexBox用法,将其与CSS网格进行了比较,并详细浏览了浏览器支持。

我们如何使用CSS使网站迅速响应?我们如何使用CSS使网站迅速响应?Apr 30, 2025 pm 03:19 PM

本文讨论了使用CSS创建响应网站的技术,包括视口元标签,灵活的网格,流体媒体,媒体查询和相对单元。它还涵盖了使用CSS网格和Flexbox一起使用,并推荐CSS框架

CSS盒装属性有什么作用?CSS盒装属性有什么作用?Apr 30, 2025 pm 03:18 PM

本文讨论了CSS盒装属性,该属性控制了元素维度的计算方式。它解释了诸如Content-Box,Border-Box和Padding-Box之类的值,以及它们对布局设计和形式对齐的影响。

我们如何使用CSS动画?我们如何使用CSS动画?Apr 30, 2025 pm 03:17 PM

文章讨论使用CSS,关键属性并与JavaScript结合创建动画。主要问题是浏览器兼容性。

我们可以使用CSS向我们的项目添加3D转换吗?我们可以使用CSS向我们的项目添加3D转换吗?Apr 30, 2025 pm 03:16 PM

文章讨论了Web项目的3D转换,关键属性,浏览器兼容性和性能注意事项的讨论。(角色计数:159)

我们如何在CSS中添加梯度?我们如何在CSS中添加梯度?Apr 30, 2025 pm 03:15 PM

文章讨论了使用CSS梯度(线性,径向,重复)来增强网站视觉效果,添加深度,焦点和现代美学。

CSS中的伪元素是什么?CSS中的伪元素是什么?Apr 30, 2025 pm 03:14 PM

文章讨论了CSS中的伪元素,它们在增强HTML样式方面的使用以及与伪级的差异。提供实用的例子。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),