【发布时间】:2017-01-31 01:44:37
【问题描述】:
我想知道,谷歌字体如何找出要加载的字体。例如,当我在我的 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:有关。
【问题讨论】: