首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何知道浏览器将使用哪个‘`unicode range`’预加载字体?

如何知道浏览器将使用哪个‘`unicode range`’预加载字体?
EN

Stack Overflow用户
提问于 2020-12-22 17:35:46
回答 1查看 390关注 0票数 2

我搜索从CSS文件预加载字体。

Css文件通过unicode-range削减字体:非常好,它只加载了我想要的部分字体。

但是:我想预先加载(在这个CSS文件之前),字体将由浏览器使用。我不知道怎么知道我应该预装的字体是什么?

例:

代码语言:javascript
复制
<head>
    <!-- Which font ? a.woof2 / b.woff2 or c.woff2 ? -->
    <link rel="preload" href="fonts/myFont_x.woff2" as="font" type="font/woff2" crossorigin="anonymous">
    <!-- other elements -->
    <link rel="stylesheet" href="mystyleFont.css">
</head>

css文件(mystyleFont.css):

代码语言:javascript
复制
@font-face {
  font-family: 'myFont';
  font-display: swap;
  src: url(https://example.com/a.woff2) format('woff2');
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; // That is the unicode-range
}

@font-face {
  font-family: 'myFont';
  font-display: swap;
  src: url(https://example.com/b.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129;
}

@font-face {
  font-family: 'myFont';
  font-display: swap;
  src: url(https://example.com/c.woff2) format('woff2');
  unicode-range: U+0460-052F;
}

在本示例中,如果浏览器使用unicode-range U+0460-052F...,则只希望预加载 c.woff2

--我不想在我的页面上预装所有字体。

你有什么主意吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-12-23 12:59:33

Mozilla文档所述

如果页面在此范围内不使用任何字符,则不会下载字体;如果使用至少一个字符,则会下载整个字体。

为了清楚起见,它仍然会在需要时下载整个文件。不仅仅是其中的一部分。

关于unicode-range行为的一些精确性:

  • 它只对范围内的字符更改字体,即使css应用于整个元素也是如此。
  • 它只在范围内的字符出现时加载字体,这将重新加载所有受影响元素的样式,即使它们没有字符,但样式是附加的。这将在页面中显示为眨眼,眨眼时间是获取字体的时间。
  • 使用preload将确保页面的样式重新加载闪烁时间最小
  • 使用preload必须包括as=type=,否则字体将被重新下载。

当你说:

如果浏览器使用unicode范围U+0460-052F,则只预加载c.woff2 .

对于支持该属性的浏览器(除IE外,所有最近的浏览器),当需要显示范围内的至少一个字符时,字体将全部下载。但是preload将在页面加载时发生,因此css属性尚未加载,从而导致下载所有标记为preload的字体。对于当前的配置,如果删除preload,将只获取页面中实际使用的字体。

要扩展答案,还可以通过删除字形(这里的一些例子)来减小字体大小。这意味着您可以使用css的属性unicode-range将字体分割成块并检索相关部分。

请注意,如果您的字体不是很大(超过Mb),那么这个优化是过分的,您应该关注其他选项(缓存、http的压缩、http2的多路复用、.)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65413270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档