【问题标题】:Google Font not working on Safari谷歌字体无法在 Safari 上运行
【发布时间】:2014-07-26 13:00:29
【问题描述】:

我正在努力让我的网站在 Safari 和 Chrome 下看起来一样。在 Chrome 中,它看起来正是我想要的样子。主要问题是 Google 字体似乎没有在 Safari 下加载。因为我使用的是 Google Font 网站上给出的确切代码,所以我不明白为什么 Safari 不能获取它。它只是与 Safari 不兼容,我必须依赖备用字体吗?

The site can be found here

【问题讨论】:

  • 对于导航,菜单中有一个空的ul 标签。
  • @NickR +1 谢谢,实际上它应该是结束 标记。
  • 啊,事实证明它确实有效。但是您在 <ul> 标签上有 font-weight:bold,这导致字体在 Chrome 和 Safari 中看起来如此不同 - 如果您在 Safari 中查看该网站的图片,并且关闭了 font-weight:bold :@ 987654322@ 基本上不要使用light 版本的字体,尝试在CSS 中加粗,而是使用bold 700 版本的字体-google.com/fonts#UsePlace:use/Collection:Nunito
  • @NickR 谢谢!现在看起来确实好多了。我已经减轻了大胆的重量,它更接近我想要的样子。具有完全相同配置的字体在浏览器之间看起来不同是否正常?还是因为我的 CSS 技能差?
  • 我觉得这篇文章解释的很好——alistapart.com/article/say-no-to-faux-bold

标签: css safari google-font-api


【解决方案1】:

您的 CSS 不应仅包含

font-family: 'Source Sans Pro', sans-serif;

它还应该有 FONT-STYLE 和 FONT-WEIGHT 的值:

font-family: 'Source Sans Pro', sans-serif; font-weight:900; font-style:italic;

如果您使用包含这些值的字体,例如: https://fonts.googleapis.com/css?family=Source+Sans+Pro:900italic

【讨论】:

  • 是的,添加 font-stylefont-weight 对我有用。我正在使用导入到 sass 文件中的字体的斜体版本,它可以在 Chrome 上运行,但需要 font-style 和 safari 的权重
【解决方案2】:

2018 年更新

我过去曾遇到过这个问题,我不得不求助于提供更多字体文件格式的选项。 2018 年再次遇到它让我有点惊讶。但事实证明,我的问题不在于文件格式,而在于没有请求和指定正确的字体粗细。

如果我们不自定义从 Google 请求此字体的 URL,我们的链接标签将如下所示:

<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro" rel="stylesheet">

让我们看一下请求的 URL 中的内容。它将包含几个看起来像这样的字体规则:

/* latin */
@font-face {
  font-family: 'Source Sans Pro';
  font-style: normal;
  font-weight: 400;
  src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v11/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.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-weight 属性。它被指定为 400,这是一种“正常”加权字体。一些浏览器能够采用这种字体并将其变为粗体,但看起来仍然不错。这称为"faux bold"。不过,它永远不会像手工制作的粗体字体那么好。而在某些浏览器上,尤其是移动版 Safari,它会掉下来,看起来很糟糕。

补救方法是请求并指定您要使用的实际字体粗细变体。就我而言,它看起来像这样:

这将产生以下链接标签:

<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700&amp;subset=latin-ext" rel="stylesheet">

如果您查看该 URL 的内容,您会发现现在其中包含字体规则 font-weight: 700 的条目。

现在,如果我想为我的 h1 标签使用这种字体的粗体版本,我将使用以下 CSS。

h1 {
    font-family: 'Source Sans Pro', sans-serif;
    font-weight: 700;
}

大多数浏览器会自动将 h1 设置为font-weight: bold。如果我想利用该默认设置,我必须提供自己的字体规则。我可以通过简单地复制 Google 提供的字体规则,将 font-face: 700 交换为 font-face: bold 并将这些更改的规则放入我自己的 css 中来做到这一点。

所以这条规则:

/* latin */
@font-face {
  font-family: 'Source Sans Pro';
  font-style: normal;
  font-weight: 700;
  src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(https://fonts.gstatic.com/s/sourcesanspro/v11/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.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;
}

会变成这样:

/* latin */
@font-face {
  font-family: 'Source Sans Pro';
  font-style: normal;
  font-weight: bold;
  src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(https://fonts.gstatic.com/s/sourcesanspro/v11/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.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-family: 'Source Sans Pro' 的h1 标签将使用正确的字体变体。 如果您想更深入地阅读,请查看此 2012 A List Apart article

【讨论】:

  • 我不知道为什么,但是我的链接不起作用&lt;link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css2?family=Calibri:ital,wght@0,400;0,700;1,400;1,700&amp;display=swap" /&gt;,但是如果我复制CSS,它就可以正常工作。
【解决方案3】:

如果你像这样在 css 中使用 @import 代码

删除它并在head标签中使用link

【讨论】:

  • 大帮助!!谢谢!
【解决方案4】:

出于某种奇怪的原因,我在 Google 的一些网络字体上遇到过这种情况...发生这种情况时,我通常会将它们发送到我的服务器和/或在 fontsquirrel 中转换它们 ....Safari应该可以获取 TTF 文件,不管是什么版本:

Nunito TTF ver

【讨论】:

  • Google 字体通常可以在 Safari 中使用,所以一定是发生了其他事情……什么版本的 Safari?你怎么知道它不起作用——你在你的开发工具控制台中看到错误吗? (关于它在导航标题中的使用方式,无论如何,这些字符看起来与大多数无衬线字体几乎没有区别)。
  • @BenPoole agreen 和 Ben ...也许你可以截屏你的 Safari 看看它的样子?
  • 只是做一些调查...它作为.woff 文件提供 - fonts.googleapis.com/css?family=Nunito:300 - 这表示caniuse.com/woff Safari 5.1+ 可以使用 .woff 文件,尽管我刚刚在 5.1.7 (Windows Safari) 中检查了 OPs 站点,但字体不起作用。
【解决方案5】:

我的情况是我使用了不带引号的字体名称。所以换个方式

body{
    font-family: roboto, Arial, sans-serif;
}

body{
    font-family: 'roboto', Arial, sans-serif;
}

Chrome 可以在没有引号的情况下完美运行,但 Safari 不行。

【讨论】:

  • 有趣的事情 - 使用相同的字体有问题
  • 谢谢你..我也有同样的字体问题
【解决方案6】:

我有一个案例,因为我使用了text-rendering: optimizeLegibility;,所以 Google Webfont (Londrina) 没有出现在 Safari(对于 Windows)中。去掉之后就好了。

示例:http://codepen.io/julia-r/pen/gagbdy

【讨论】:

  • 如果您有新问题,请点击按钮提出;您可能希望包含指向此链接的链接以获取上下文。或者,您可以将此问题加注为收藏夹,以便收到任何新答案的通知。一旦你有足够的声誉,you may also upvote 它,或add a bounty 以吸引更多关注。
  • 我没有新问题,我只是想提另一个原因,为什么字体可能不显示。可能是我做的不够干净……
  • 不太清楚为什么有人会认为这是一个新问题。过分热心的copypasta?
【解决方案7】:

2021 年发生在我身上。必须将 URL 中的 & 符号切换为 &amp;amp;

&lt;link href="https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@300;700&amp;amp;display=swap" rel="stylesheet"&gt;

【讨论】:

  • 2022 年对我来说也是如此,这是行之有效的解决方案!
猜你喜欢
  • 2015-04-02
  • 2019-03-11
  • 2014-05-16
  • 1970-01-01
  • 2013-09-06
  • 1970-01-01
  • 2013-07-16
  • 2020-08-17
  • 1970-01-01
相关资源
最近更新 更多