当前位置: 首页 > 知识库问答 >
问题:

谷歌字体加载说明

燕意蕴
2023-03-14

我想知道google fonts是如何发现的,应该加载哪些字体。例如,当我在CSS中使用此

@import '//fonts.googleapis.com/css?family=Roboto:300';

返回一个立即解释的CSS(加载此资源甚至会阻止浏览器呈现afaik):

/* cyrillic-ext */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 300;
  src: local('Roboto Light'), local('Roboto-Light'), url(http://fonts.gstatic.com/s/roboto/v15/0eC6fl06luXEYWpBSJvXCIX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
  unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
}
/* cyrillic */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 300;
  src: local('Roboto Light'), local('Roboto-Light'), url(http://fonts.gstatic.com/s/roboto/v15/Fl4y0QdOxyyTHEGMXX8kcYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2');
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
// ...and some more

我一直认为,当您在CSS中提供url(...)时,浏览器会立即加载此资源。

但是,当您打开这支笔http://codepen.io/anon/pen/EgkvEr并查看您的网络选项卡(可能清除您的缓存)时,您可以看到它恰好加载了两个资源:http://fonts.googleapis.com/css?family=Roboto: 300,然后http://fonts.gstatic.com/s/roboto/v15/Hgo13k-tfSpn0qi1SFdUfZBw1xU1rKptJj_0jans920.woff2这是正常的拉丁范围(在加载的字体css的底部定义):

/* latin */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 300;
  src: local('Roboto Light'), local('Roboto-Light'), url(http://fonts.gstatic.com/s/roboto/v15/Hgo13k-tfSpn0qi1SFdUfZBw1xU1rKptJj_0jans920.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}

那么,浏览器是否会查看您使用的字符,然后加载使用的字体?还是取决于您的浏览器设置?我找不到任何记录此行为的资源(或者我搜索了错误的关键字)。我怀疑它与CSS底部的Unicode-range:有关。

共有2个答案

萧心水
2023-03-14
  • 浏览器执行页面布局并确定在页面上呈现指定文本需要哪些字体变体。
  • 对于每个所需的字体,浏览器都会检查该字体是否在本地可用。
  • 如果文件在本地不可用,它会迭代外部定义:
    • 如果出现格式提示,浏览器会在启动下载之前检查它是否支持它,否则会前进到下一个。
    • 如果没有格式提示,浏览器会下载资源。

    Google web字体优化

潘安邦
2023-03-14

>

  • 浏览器读取导入指令,该指令告诉他加载Google提供的CSS页面:http://fonts.googleapis.com/css?family=Roboto:300.此页面立即加载。

    在该页面中,有一些指示告诉浏览器字体文件的位置。浏览器在需要这些字体之前不会下载它们。例如,如果任何元素从未使用过该字体,浏览器将不会下载该字体。

    我怀疑这与CSS底部的unicode范围有关。

    是的,就是这样<代码>unicode范围指定该字体包括哪类字符(例如西里尔字符)。如果页面中没有这种愤怒的字符,这些字体将不会被下载。

    供参考:https://en.wikipedia.org/wiki/Unicode_block

  •  类似资料:
    • 我与使用google-webaffts有一个非常严重的冲突。好的,这是代码: 这是在头: 这是在css文件中: “奥斯瓦尔德”是由3种字体组成的字体系列: 书(300) 正常(400) 粗体(700) 正如你看到的那样..我只加载了粗体字(700)。(你可以在查询中看到)它一直工作到这里,但是… 问题是: 我的计算机上安装了3种字体(300,400,700)的桌面版本,只要这些字体被激活…浏览器在

    • 我一直在阅读GoogleMapsJSAPI的文档,我无法理解这一点。我想将geojson文件加载到地图,以便它可以显示所有标记,但在文档(如下所示)中,它使用url。除了使用本地文件(使用我自己的geojson)之外,我如何做同样的事情? 这是GoogleAPI文档 这是我的geojson。根据控制台,错误出现在“类型”:“FeatureCollection”(the):) 控制台错误 控制台错误

    • Gatsby入门-当我用google字体向public/index.html添加链接标记时,它在开发模式下工作。当我构建站点时,index.html会被重置。所以我猜还有另外一种适当的方式添加字体?

    • 问题内容: 我在我的网站上使用了一些服装字体,但是我遇到了一个问题,因为它没有被加载,因此我无法找出问题所在,这是代码: 该作品的。我也试图让每个人都不同,但没有奏效。 问题答案: 每个字体必须有一个@ font-face声明: 不需要单引号。 如果要为IE9使用自定义字体,则还需要提供“.eot”字体文件。 编辑:好的,不同的浏览器有不同的字体实现方式: 您可能还需要将以下类型添加到.htacc

    • 目前,我正在从谷歌云存储桶中为我的网站加载图像。 我的印象是,一个多区域的谷歌云存储桶应该是互联网上加载图像的最快方式之一。 然而,这似乎不是这样的情况,当我比较瀑布我的网站上的一个竞争对手的图像加载时间是比我好的联盟。 (我的网站网址aelieve.com) 我的网站加载时间/瀑布 比赛加载时间(比赛网址mopro.com)

    • 我试图用OAuth2 Google在我的Kotlin Android studio应用程序中添加登录,但它一直在加载而不登录,我该怎么办?