254

在页面上包含 Google 字体的首选方式是什么?

  1. 通过<link>标签
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Judson:ital,wght@0,400;0,700;1,400&display=swap" rel="stylesheet">
    
  2. 通过样式表中的导入
    @import url('https://fonts.googleapis.com/css2?family=Kameron:wght@400;700&display=swap');
    
  3. 使用Web 字体加载器
4

4 回答 4

384

对于 90% 以上的情况,您可能需要<link>标签。根据经验,您希望避免使用@import规则,因为它们会延迟加载包含的资源,直到获取文件为止。如果您有一个“扁平化”@import 的构建过程,那么您会使用 Web 字体创建另一个问题: 像 Google WebFonts 这样的动态提供程序提供特定于平台的字体版本,因此如果您只是内联内容,那么您最终会在某些平台上遇到损坏的字体。

现在,你为什么要使用网络字体加载器?如果您需要完全控制字体的加载方式。大多数浏览器会将内容绘制到屏幕上,直到所有的 CSS 都被下载并应用——这避免了“无样式内容的闪烁”问题。缺点是……在内容可见之前,您可能会有额外的暂停和延迟。使用 JS 加载器,您可以定义字体可见的方式和时间。例如,您甚至可以在将原始内容绘制到屏幕上之后淡入它们。

再一次,90% 的情况是<link>标签:使用好的 CDN,字体会很快下降,甚至更有可能从缓存中提供。

如需更多信息并深入了解 Google Web Fonts,请查看此GDL 视频

于 2012-09-12T01:12:53.093 回答
13

如果您关心 SEO(搜索引擎优化)和性能,最好使用<link>标签,因为它可以预加载字体。

例子:

<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin>
<link rel="preload" href="https://fonts.gstatic.com/s/quicksand/v7/6xKtdSZaM9iE8KbpRA_hK1QNYuDyPw.woff2" as="font" crossorigin>
<link rel="preload" href="https://fonts.gstatic.com/s/lato/v14/S6uyw4BMUTPHjx4wXiWtFCc.woff2" as="font" crossorigin>
<style>
@font-face {
 font-family: 'Lato';
 font-style: normal;
 font-weight: 400;
 src: local('Lato Regular'), local('Lato-Regular'), url(https://fonts.gstatic.com/s/lato/v14/S6uyw4BMUTPHjx4wXiWtFCc.woff2) format('woff2');
 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
 font-family: 'Quicksand';
 font-style: normal;
 font-weight: 400;
 src: local('Quicksand Regular'), local('Quicksand-Regular'), url(https://fonts.gstatic.com/s/quicksand/v7/6xKtdSZaM9iE8KbpRA_hK1QNYuDyPw.woff2) format('woff2');
 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>

有关更多信息,请阅读: https ://ashton.codes/preload-google-fonts-using-resource-hints/

于 2019-06-03T08:27:30.020 回答
7

使用<link>Google 提供的,因为字体有版本控制,但在它上面使用 HTML5 的预连接功能要求浏览器打开 TCP 连接并提前与 fonts.gstatic.com 协商 SSL。这是一个示例,显然需要驻留在您的<head></head>标签中:

<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin>
<link href="https://fonts.googleapis.com/css?family=Roboto&display=swap" rel="stylesheet">
于 2019-06-03T08:18:29.070 回答
3

我了解其他答案的建议是<link>在 html 文件中使用。

我最近意识到有一个用例供我@import在 css 文件中使用。

原因很简单:我正在为我的业余项目制作静态网站,我更看重便捷方式而不是 SEO 或与稀有平台的兼容性等。

在 css 文件中使用的好处@import是,如果我想更改字体,我需要做的就是在 css 文件中修改几行。就这样,故事结束。如果我<link>在html文件中使用,除了更改css文件中的字体之外,我还必须更新和上传所有html文件,这有点不方便。

长话短说:@import在css文件中是自包含的,所以更新方便。它对于测试和尝试不同的字体特别有用。

于 2021-05-25T14:36:30.930 回答