我一直在开发一个使用 Google Fonts API 的网站。它很棒,据说已经在 IE 中测试过了,但是在 IE 8 中测试时,字体根本就没有样式。
我将字体作为 Google instructs 包含在内,因此:
<link href="http://fonts.googleapis.com/css?family=Josefin+Sans+Std+Light"
rel="stylesheet" type="text/css" />
并将其名称添加到 CSS 中字体系列的前面,因此:
body { font-family: "Josefin Sans Std Light", "Times New Roman", Times, serif;字体大小:16px;溢出-y:滚动;溢出-x:隐藏;颜色:#05121F; }
在 Chrome、Firefox、Safari 中工作就像一个魅力。 IE 8 中没有骰子。有人知道为什么吗?
看起来 IE8-IE7 无法通过使用 link
标记 href
的相同文件请求 理解多种 Google Web 字体样式。
这两个链接帮助我解决了这个问题:
请参阅此未解决的 Google 问题,并查看评论。
另请参阅此 StackOverlow 答案 Google Web Fonts don't work in IE8
我让它在 IE7-IE8 中工作的唯一方法是只有一个 Google Web Font 请求。并且在 link
标记的 href
中只有一种字体样式:
所以通常你会有这个,在同一个请求中声明多种字体样式:
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:400,600,300,800,700,400italic" />
但是在 IE7-IE8 中添加一个 IE 条件并分别指定每种 Google 字体样式,它将起作用:
<!--[if lte IE 8]>
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:400" />
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:700" />
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:800" />
<![endif]-->
希望这可以帮助别人!
如他们的 technical considerations 页面所示,该方法是正确的 - 所以您绝对没有做错任何事情。但是,Google 代码上的 this bug report 表明 Google 为此制作的字体存在问题,特别是 IE 版本。这似乎只影响某些字体,但它真的很糟糕。
线程上的答案表明问题出在谷歌提供的文件上,所以你无能为力。作者建议从其他位置(例如 FontSquirrel)获取字体,并改为在本地提供字体,在这种情况下,您可能还会对 the League of Movable Type 等网站感兴趣。
注意截至 2010 年 10 月,该问题已在 Google 代码错误报告中报告为已修复并已关闭。
lato
,但它仍然没有被应用...
Google Fonts 使用 Web 开放字体格式 (WOFF),这很好,因为它是 W3C 推荐的字体格式。
早于 IE9 的 IE 版本不支持 Web 开放字体格式 (WOFF),因为它当时不存在。要支持 < IE9,您需要在 Embedded Open Type (EOT) 中提供您的字体。为此,您需要编写自己的 @font-face css 标签,而不是使用 Google 的嵌入脚本。您还需要将原始 WOFF 文件转换为 EOT。
您可以在这里将您的 WOFF 转换为 EOT,方法是先将其转换为 TTF,然后再转换为 EOT:http://convertfonts.com/
然后你可以像这样提供 EOT 字体:
@font-face {
font-family: 'MyFont';
src: url('myfont.eot');
}
现在它可以在 < IE9 中运行。但是,现代浏览器不再支持 EOT,因此现在您的字体将无法在现代浏览器中使用。所以你需要同时指定它们。 src 属性通过逗号分隔字体 url 并指定类型来支持这一点:
src: url('myfont.woff') format('woff'),
url('myfont.eot') format('embedded-opentype');
但是,< IE9 不理解这一点,它只是抓住了第一个引号和最后一个引号之间的文本,所以它实际上会得到:
myfont.woff') format('woff'),
url('myfont.eot') format('embedded-opentype
作为字体的 URL。我们可以通过首先指定一个只有一个 EOT 格式的 url 的 src 来解决这个问题,然后指定第二个 src 属性,该属性适用于现代浏览器,而 < IE9 将无法理解。因为 < IE9 不会理解它,它会忽略标签,所以 EOT 仍然可以工作。现代浏览器将使用它们支持的最后一个指定字体,因此可能是 WOFF。
src: url('myfont.eot');
src: url('myfont.woff') format('woff');
所以只是因为在第二个 src 属性中您指定了 format('woff')
,< IE9 不会理解它(或者实际上它只是在 url myfont.woff') format('woff
处找不到字体)并将继续使用第一个指定的字体(eot)。
所以现在您的 Google Webfonts 可以在 < IE9 和现代浏览器上运行!
有关不同字体类型和浏览器支持的更多信息,请阅读 Alex Tatiyants 撰写的这篇完美文章:http://tatiyants.com/how-to-get-ie8-to-support-html5-tags-and-web-fonts/
@font-face
的相同解决方案并且它有效。我不确定,但如果它是一个完美的解决方案,因为它使用的是一个 url,将来可能会改变
虽然 Yijiang 的解决方案可能有效,但我不认为放弃 Google Web Font API 是正确的答案。当本地 jQuery 文件没有从 CDN 正确加载时,我们会提供它,对吗?
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="/js/jquery-1.9.0.min.js"><\/script>')</script>
那么为什么我们不对字体做同样的事情,特别是 < IE9 呢?
<link href='http://fonts.googleapis.com/css?family=Cardo:400,400italic,700' rel='stylesheet' type='text/css'>
<!--[if lt IE 9]><link href='/css/fonts.css' rel='stylesheet' type='text/css'><![endif]-->
这是我使用自定义字体时的过程:
从 Google 下载字体的 ZIP 文件夹,并使用 Font Squirrel 的 @font-face Generator 创建本地网络字体。创建一个 fonts.css 文件,该文件调用新创建的本地托管字体文件(如果 < IE9,则仅链接到该文件,如上所示)。注意:@font-face 生成器会为您创建此文件。 @font-face { font-family: 'cardoitalic'; src: url('cardo-italic-webfont.eot'); src: url('cardo-italic-webfont.eot?#iefix') 格式('embedded-opentype'), url('cardo-italic-webfont.woff') 格式('woff'), url('cardo-斜体webfont.ttf')格式('truetype'),url('cardo-italic-webfont.svg#cardoitalic')格式('svg');字体粗细:正常;字体样式:正常; } @font-face { 字体系列:'cardobold'; src: url('cardo-bold-webfont.eot'); src: url('cardo-bold-webfont.eot?#iefix') 格式('embedded-opentype'), url('cardo-bold-webfont.woff') 格式('woff'), url('cardo-粗体-webfont.ttf')格式('truetype'),url('cardo-bold-webfont.svg#cardobold')格式('svg');字体粗细:正常;字体样式:正常; } @font-face { font-family: 'cardoreregular'; src: url('cardo-regular-webfont.eot'); src: url('cardo-regular-webfont.eot?#iefix') 格式('embedded-opentype'), url('cardo-regular-webfont.woff') 格式('woff'), url('cardo-常规-webfont.ttf')格式('truetype'),url('cardo-regular-webfont.svg#cardoregular')格式('svg');字体粗细:正常;字体样式:正常;在主样式表中使用 IE 条件类来避免虚假的粗细和样式,您的字体样式可能如下所示: h1{ font-size:3.25em;字体粗细:正常;字体样式:斜体;字体系列:'Cardo','cardoitalic',衬线;行高:1.25em; } h2{ 字体大小:2.75em;字体粗细:700;字体系列:'Cardo','cardobold',衬线;行高:1.25em; } 强 ,b{ 字体系列:'Cardo','cardobold',serif;字体重量:700,} .lt-ie9 h1{ 字体样式:正常; } .lt-ie9 h2{ 字体粗细:正常; } .lt-ie9 强,.lt-ie9 b{ 字体粗细:正常,}
当然,这是一些额外的工作,但我们难道没有期待 IE 会这样做吗?此外,它会在一段时间后成为第二天性。
对于它的价值,我无法让它在 IE7/8/9 上运行,并且多重声明选项没有任何区别。
对我来说,解决方法是根据 Technical Considerations Page 上的说明突出显示...
为了在 IE 中获得最佳显示效果,请将样式表的“链接”标记设置为 HTML 的“头”部分中的第一个元素。
现在适用于我的 IE7/8/9。
我尝试了上面的所有选项,但它们都不起作用。然后我在我的文件夹(新)中找到了谷歌字体(Over the Rainbow),并在下面使用了 IE 条件,它工作得很好。
<!--[if IE]>
<style type="text/css">
@font-face {
font-family: "Over the Rainbow";
src: url("../new/over.ttf");
src: local("Over the Rainbow"), url("../new/over.ttf");
}
</style>
<![endif]-->
我希望它会有所帮助
您可以尝试 fontsforweb.com,其中字体适用于所有浏览器,因为它们以 TTF、WOFF 和 EOT 格式提供,以及准备粘贴到您的页面上的 CSS 代码,即
@font-face{
font-family: "gothambold1";
src: url('http://fontsforweb.com/public/fonts/5903/gothambold1.eot');
src: local("Gotham-Bold"), url('http://fontsforweb.com/public/fonts/5903/gothambold1.woff') format("woff"), url('http://fontsforweb.com/public/fonts/5903/gothambold1.ttf') format("truetype");
}
.fontsforweb_fontid_5903 {
font-family: "gothambold1";
}
或者您可以下载压缩包并附上 CSS 文件
然后只需将类添加到任何元素以应用该字体即
<h2 class="fontsforweb_fontid_5903">This will be written with Gotham Bold font and will work in all browsers</h2>
看到它工作:http://jsfiddle.net/SD4MP/
这一切都是为了尝试所有这些答案,对我来说,除了下一个解决方案之外没有任何效果:建议使用 Google 字体
@import 'https://fonts.googleapis.com/css?family=Assistant';
但是,我在这里使用的是外文字体,它只在 IE11 上不起作用。我发现这个解决方案有效:
@import 'https://fonts.googleapis.com/css?family=Assistant&subset=hebrew';
希望能节省一些宝贵的时间
试试这种类型的链接,它也可以在 IE 中运行。希望这可以帮助 。
<link href='//fonts.googleapis.com/css?family=Josefin+Sans:300,400,600,700,300italic' rel='stylesheet' type='text/css'>
我和你有同样的问题。我找到了一个使用 Adobe Web Fonts 代码的解决方案,在 Internet Explorer、Chrome、Firefox 和 Safari 中完美运行。
此页面中的更多信息:http://html.adobe.com/edge/webfonts/
经过我的调查,我想出了这个解决方案:
//writing the below line into the top of my style.css file
@import url('https://fonts.googleapis.com/css?family=Assistant:200,300,400,600,700,800&subset=hebrew');
必须注意:我们必须要正确书写此字体的 font-weight
。例如:font-weight:900;
将不起作用,因为在使用上述链接从 Google 导入时,我们没有在 URL 地址中包含 900
(如 200,300,400,600,700,800
)。我们可以在上面的 URL 中添加或包含 900
,但只有当上面的 Google Font 在嵌入时具有此选项时,才起作用。
@import
规则时.. 不在IE conditional
内。 @import 一直都有限制,更不用说性能缓慢了。我看不到您将加载那么多样式表的实例。如果是这样,最好将所有样式表结合起来以获得最佳性能来限制服务器请求。