Google Font API 使用浏览器检测。如何获取字体的所有字体变体

Posted

技术标签:

【中文标题】Google Font API 使用浏览器检测。如何获取字体的所有字体变体【英文标题】:Google Font API uses browser detection. How to get all font variations for font-face 【发布时间】:2014-09-20 14:27:06 【问题描述】:

我刚刚发现 Google Font API 使用浏览器检测

这意味着当您打开http://fonts.googleapis.com/css?family=Racing+Sans+One 时,它将显示仅适用于您当前浏览器的内容

所以如果我想让它在所有浏览器中工作,我不能只是抓住它并在我自己的字体中使用它。许多人这样做,但不知道它不会在任何地方都有效

获取字体的所有变体的方法是什么? woff2/woff/ttf/等? (用作字体的后备)

我刚刚尝试在 Chrome 中打开该 api 页面,在 Developer 中更改浏览器用户代理欺骗,并查看变体。我看到至少 4 个

woff2/woff/ttf 是否足够,或者我需要多少个版本才能安全?我也需要 EOT/SVG 版本吗?

【问题讨论】:

【参考方案1】:

正确的答案是,使用 MajoDev 的这个网站:

https://google-webfonts-helper.herokuapp.com/

它为所有浏览器生成 CSS,并让您下载文件以用于自托管 Google 字体文件。效果很好!

【讨论】:

这是一个很棒的工具!如果您一直在胡闹谷歌网络字体的来源,试图下载正确的 woff、eof 和 svg 文件,请不要再犹豫了。我多年来一直需要这个工具。【参考方案2】:

以 Open Sans 为例。

http://fonts.googleapis.com/css?family=Open+Sans

向不同的用户代理发出请求以查看不同的字体:.eot、.woff、woff2、.ttf、.svg

对于 .eot,请使用以下用户代理:

IE8
Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB7.4; InfoPath.2; SV1; .NET CLR 3.3.69573; WOW64; en-US)

IE7
Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)

@font-face 
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 400;
  src: url(http://fonts.gstatic.com/s/opensans/v10/cJZKeOuBrn4kERxqtaUH3fY6323mHUZFJMgTvxaG2iE.eot);

对于 .woff2,请使用以下用户代理:

Firefox 36.0
Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0

@font-face 
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 400;
  src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v10/cJZKeOuBrn4kERxqtaUH3VtXRa8TVwTICgirnJhmVJw.woff2) format('woff2'), url(http://fonts.gstatic.com/s/opensans/v10/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff) format('woff');

对于 .woff,请使用以下用户代理:

Safari 6.0
Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (Khtml, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25

Internet Explorer 11.0
Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko

Internet Explorer 10.0
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)

Internet Explorer 9.0
Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US))

@font-face 
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 400;
  src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v10/cJZKeOuBrn4kERxqtaUH3bO3LdcAZYWl9Si6vvxL-qU.woff) format('woff');

对于 .ttf,请使用以下用户代理:

Safari 5.0.5
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; de-at) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1

Safari 3.1
Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_2; en-gb) AppleWebKit/526+ (KHTML, like Gecko) Version/3.1 iPhone

@font-face 
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 400;
  src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v10/cJZKeOuBrn4kERxqtaUH3SZ2oysoEQEeKwjgmXLRnTc.ttf) format('truetype');

我在尝试其他用户代理时发现了另一个 .ttf。不知道有什么区别。

Safari 4.1
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-en) AppleWebKit/533.16 (KHTML, like Gecko) Version/4.1 Safari/533.16

Firefox 5.0
Mozilla/5.0 (X11; Linux) Gecko Firefox/5.0

Firefox 3.5.9
Mozilla/5.0 (Windows; U; Windows NT 6.1; et; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9

Safari 3.1.1
Mozilla/5.0 (Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0_1 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20

@font-face 
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 400;
  src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v10/cJZKeOuBrn4kERxqtaUH3aCWcynf_cDxXwCLxiixG1c.ttf) format('truetype');

对于 .svg,请使用以下用户代理:

Safari 4.0.4
Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10gin_lib.cc

Safari 3.0
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1C25 Safari/419.3

Safari 3.0
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3

@font-face 
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 400;
  src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/l/font?kit=cJZKeOuBrn4kERxqtaUH3Zbd9NUM7myrQQz30yPaGQ4#OpenSans) format('svg');

哪些浏览器支持哪些字体格式?

    http://caniuse.com/#search=eot http://caniuse.com/#search=ttf http://caniuse.com/#search=svg http://caniuse.com/#search=woff http://caniuse.com/#search=woff2

【讨论】:

到目前为止,woff 和 woff2 基本上涵盖了所有基础。除了 Opera Mini,但是那个浏览器什么都不支持。 使用这种方法,我能够生成带有 ttf 字体的样式。这使我能够修复浏览器中从 html 生成的 PDF 文件中的搜索功能。使用 woff2 字体搜索不起作用。【参考方案3】:

尝试至少下载这些 webfonts 的变体:eot、woff、ttf、svg,然后您可以像这样使用它们以获得最大的跨浏览器优势:

@font-face 
  font-family: 'MyWebFont';
  src: url('webfont.eot'); /* IE9 Compat Modes */
  src: url('webfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
       url('webfont.woff') format('woff'), /* Modern Browsers */
       url('webfont.ttf')  format('truetype'), /* Safari, android, ios */
       url('webfont.svg#svgFontName') format('svg'); /* Legacy iOS */

有关更多信息,请参阅此答案:Link

【讨论】:

是的,我也是这么做的。毕竟,我的目标是对字体进行本地后备。然后我意识到现在使用谷歌字体实际上很好(而且快速简单)..但是thanx ;) 此时你真的只需要woff2和woff。至少不支持 woff 的浏览器要么根本不支持 webfonts,要么是非常老的浏览器,充满了安全问题。

以上是关于Google Font API 使用浏览器检测。如何获取字体的所有字体变体的主要内容,如果未能解决你的问题,请参考以下文章

Google Web Font 呈现浏览器的差异

使用 Google 的文本识别 API 检测图像中的水平线而不是块

如何使用 google vision api 从图像中进行文本检测?

是否有任何 API 访问 Google 翻译的“您的意思是”功能?

Google 开发者控制台中的“我们检测到您的应用正在使用旧版本的 Google Play 开发者 API”警告是啥?

如何使用 Google Vision Api 检测块内的所有文本