如何让 Google 字体在 IE 中工作?

发布于 2024-09-18 23:16:46 字数 686 浏览 8 评论 0原文

我一直在开发一个使用 Google Fonts API 的网站。它很棒,据说已经在 IE 中进行了测试,但是在 IE 8 中测试时,字体根本没有样式化。

我按照 Google 指示添加了该字体,因此:

<link href="http://fonts.googleapis.com/css?family=Josefin+Sans+Std+Light"  
 rel="stylesheet" type="text/css" />

并将其名称添加到 CSS 中字体系列的前面,因此:

<前><代码>正文{ 字体系列:“Josefin Sans Std Light”、“Times New Roman”、Times、serif; 字体大小:16px; 溢出-y:滚动; 溢出-x:隐藏; 颜色:#05121F; }

在 Chrome、Firefox、Safari 中发挥作用。 IE 8 中没有骰子。有人知道为什么吗?

I've been developing a site that uses the Google Fonts API. It's great, and supposedly has been tested in IE, but when testing in IE 8 the fonts simply don't get styled.

I included the font, as Google instructs, thus:

<link href="http://fonts.googleapis.com/css?family=Josefin+Sans+Std+Light"  
 rel="stylesheet" type="text/css" />

and added its name to the front of a font family in CSS thus:

body {
font-family: "Josefin Sans Std Light", "Times New Roman", Times, serif;
font-size: 16px;
overflow-y: scroll;
overflow-x: hidden;
color: #05121F;
}

Works like a charm in Chrome, Firefox, Safari. No dice in IE 8. Anybody know why?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

心不设防 2024-09-25 23:16:46

看起来 IE8-IE7 无法通过使用 link 标记 href同一文件请求来理解多种 Google Web Font 样式。

这两个链接帮助我解决了这个问题:

我让它在 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]-->

希望这可以帮助其他人!

Looks like IE8-IE7 can't understand multiple Google Web Font styles through the same file request using the link tags href.

These two links helped me figure this out:

The only way I have gotten it to work in IE7-IE8 is to only have one Google Web Font request. And only have one font style in the href of the link tag:

So normally you would have this, declaring multiple font styles in the same request:

<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:400,600,300,800,700,400italic" /> 

But in IE7-IE8 add a IE conditional and specify each Google font style separately and it will work:

<!--[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]-->

Hope this can help others!

悲念泪 2024-09-25 23:16:46

正如其技术注意事项页面所示,该方法是正确的 - 因此你绝对没有做错任何事。不过,Google 代码上的此错误报告表明存在Google 为此制作的字体存在问题,特别是 IE 版本。这似乎只影响某些字体,但这确实令人沮丧。

该线程上的答案表明问题出在 Google 提供的文件上,因此您无能为力。作者建议从其他位置获取字体,例如 FontSquirrel,并在本地提供字体,在这种情况下您也可以对可移动字体联盟等网站感兴趣。

注意:截至 2010 年 10 月,该问题在 Google Code 错误报告中被报告为已修复并已关闭。

The method, as indicated by their technical considerations page, is correct - so you're definitely not doing anything wrong. However, this bug report on Google Code indicate that there is a problem with the fonts Google produced for this, specifically the IE version. This only seems to affect only some fonts, but it's a real bummmer.

The answers on the thread indicate that the problem lies with the files Google's serving up, so there's nothing you can do about it. The author suggest getting the fonts from alternative locations, like FontSquirrel, and serving it locally instead, in which case you might also be interested in sites like the League of Movable Type.

N.B. As of Oct 2010 the issue is reported as fixed and closed on the Google Code bug report.

我还不会笑 2024-09-25 23:16:46

Google Fonts 使用 Web 开放字体格式 (WOFF),这很好,因为它是 W3C 推荐的字体格式。

IE9 之前的 IE 版本不支持 Web 开放字体格式 (WOFF),因为当时还不存在。支持< IE9,您需要以嵌入式开放类型(EOT)提供字体。为此,您需要编写自己的 @font-face css 标记,而不是使用 Google 的嵌入脚本。您还需要将原始 WOFF 文件转换为 EOT。

您可以在此处将 WOFF 转换为 EOT,方法是先将其转换为 TTF,然后再转换为 EOT:
http://convertfonts.com/

然后您可以像这样提供 EOT 字体:

@font-face {
    font-family: 'MyFont';
    src: url('myfont.eot');
}

现在它可以在 http://convertfonts.com/ 中使用: 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')格式('woff)中找到字体,并将继续使用第一个指定的字体(eot)。

现在您的 Google Webfonts 可以为 << IE9 和现代浏览器!

有关不同字体类型和浏览器支持的更多信息,请阅读 Alex Tatiyants 撰写的这篇完美文章:
http://tatiyants.com/如何获取-ie8-to-support-html5-tags-and-web-fonts/

Google Fonts uses Web Open Font Format (WOFF), which is good, because it's the recommended font format by the W3C.

IE versions older than IE9 don't support Web Open Font Format (WOFF) because it didn't exist back then. To support < IE9, you need to serve your font in Embedded Open Type (EOT). To do this you will need to write your own @font-face css tag instead of using the embed script from Google. Also you need to convert the original WOFF file to EOT.

You can convert your WOFF to EOT over here by first converting it to TTF and then to EOT:
http://convertfonts.com/

Then you can serve the EOT font like this:

@font-face {
    font-family: 'MyFont';
    src: url('myfont.eot');
}

Now it works in < IE9. However, modern browsers don't support EOT anymore, so now your fonts won't work in modern browsers. So you need to specify them both. The src property supports this by comma seperating the font urls and specefying the type:

src: url('myfont.woff') format('woff'),
     url('myfont.eot') format('embedded-opentype');

However, < IE9 doesn't understand this, it just graps the text between the first quote and the last quote, so it will actually get:

myfont.woff') format('woff'),
url('myfont.eot') format('embedded-opentype

as the URL to the font. We can fix this by first specifying a src with only one url which is the EOT format, then specifying a second src property that's meant for the modern browsers and < IE9 will not understand. Because < IE9 will not understand it it will ignore the tag so the EOT will still be working. The modern browsers will use the last specified font they support, so probably WOFF.

src: url('myfont.eot');
src: url('myfont.woff') format('woff');

So only because in the second src property you specify the format('woff'), < IE9 won't understand it (or actually it just can't find the font at the url myfont.woff') format('woff) and will keep using the first specified one (eot).

So now you got your Google Webfonts working for < IE9 and modern browsers!

For more information about different font type and browser support, read this perfect article by Alex Tatiyants:
http://tatiyants.com/how-to-get-ie8-to-support-html5-tags-and-web-fonts/

友欢 2024-09-25 23:16:46

虽然 Yi Jiang 的解决方案可能有效,但我不认为放弃 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]-->

以下是我使用自定义字体的过程:

  1. 从 Google 下载字体的 ZIP 文件夹,然后使用 Font Squirrel's
    @font-face Generator
    创建本地网络字体。
  2. 创建一个 fonts.css 文件,该文件调用新创建的本地托管字体文件(仅当 < IE9 时才链接到该文件,如上所示)。注意:@font-face 生成器会为您创建此文件。

    <前><代码>@font-face {
    字体系列:'cardoitalic';
    src: url('cardo-italic-webfont.eot');
    src: url('cardo-italic-webfont.eot?#iefix') 格式('embedded-opentype'),
    url('cardo-italic-webfont.woff') 格式('woff'),
    url('cardo-italic-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-bold-webfont.ttf') 格式('truetype'),
    url('cardo-bold-webfont.svg#cardobold') 格式('svg');
    字体粗细:正常;
    字体样式:正常;
    }
    @font-face {
    字体系列:'cardoreregular';
    src: url('cardo-regular-webfont.eot');
    src: url('cardo-regular-webfont.eot?#iefix') 格式('embedded-opentype'),
    url('cardo-regular-webfont.woff') 格式('woff'),
    url('cardo-regular-webfont.ttf') 格式('truetype'),
    url('cardo-regular-webfont.svg#cardoregular') 格式('svg');
    字体粗细:正常;
    字体样式:正常;
    }

  3. 在主样式表中使用 IE 条件类来避免 假粗细和样式,您的字体样式可能如下所示:

    <前><代码>h1{
    字体大小:3.25em;
    字体粗细:正常;
    字体样式:斜体;
    font-family:'Cardo','cardoitalic',serif;
    行高:1.25em;
    }
    小时2{
    字体大小:2.75em;
    字体粗细:700;
    font-family:'Cardo','cardobold',serif;
    行高:1.25em;
    }
    强的
    ,b{
    font-family:'Cardo','cardobold',serif;
    字体粗细:700,
    }
    .lt-ie9 h1{
    字体样式:正常;
    }
    .lt-ie9 h2{
    字体粗细:正常;
    }
    .lt-ie9强,
    .lt-ie9 b{
    字体粗细:正常,
    }

当然,这是一个额外的工作,但我们不是已经开始期待 IE 会这样做吗?此外,过了一段时间,它就变成了第二天性。

While Yi Jiang's solution may work, I don't believe abandoning the Google Web Font API is the right answer here. We serve a local jQuery file when it's not properly loaded from the CDN, right?

<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>

So why wouldn't we do the same for fonts, specifically for < 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]-->

Here's my process when using custom fonts:

  1. Download the font's ZIP folder from Google, and use Font Squirrel's
    @font-face Generator
    to create the local web font.
  2. Create a fonts.css file that calls the newly created, locally hosted font files (only linking to the file if < IE9, as shown above). NOTE: The @font-face Generator creates this file for you.

    @font-face {
      font-family: 'cardoitalic';
      src: url('cardo-italic-webfont.eot');
      src: url('cardo-italic-webfont.eot?#iefix') format('embedded-opentype'),
        url('cardo-italic-webfont.woff') format('woff'),
        url('cardo-italic-webfont.ttf') format('truetype'),
        url('cardo-italic-webfont.svg#cardoitalic') format('svg');
      font-weight: normal;
      font-style: normal;
    }
    @font-face {
      font-family: 'cardobold';
      src: url('cardo-bold-webfont.eot');
      src: url('cardo-bold-webfont.eot?#iefix') format('embedded-opentype'),
        url('cardo-bold-webfont.woff') format('woff'),
        url('cardo-bold-webfont.ttf') format('truetype'),
        url('cardo-bold-webfont.svg#cardobold') format('svg');
      font-weight: normal;
      font-style: normal;
    }
    @font-face {
      font-family: 'cardoregular';
      src: url('cardo-regular-webfont.eot');
      src: url('cardo-regular-webfont.eot?#iefix') format('embedded-opentype'),
         url('cardo-regular-webfont.woff') format('woff'),
         url('cardo-regular-webfont.ttf') format('truetype'),
         url('cardo-regular-webfont.svg#cardoregular') format('svg');
      font-weight: normal;
      font-style: normal;
    }
    
  3. Using IE conditional classes in your main stylesheet to avoide faux weights and styles, your font styles might look like this:

    h1{
      font-size:3.25em;
      font-weight:normal;
      font-style:italic;
      font-family:'Cardo','cardoitalic',serif;
      line-height:1.25em;
    }
    h2{
      font-size:2.75em;
      font-weight:700;
      font-family:'Cardo','cardobold',serif;
      line-height:1.25em;
    }
    strong
    ,b{
      font-family:'Cardo','cardobold',serif;
      font-weight:700,
    }
    .lt-ie9 h1{
      font-style:normal;
    }
    .lt-ie9 h2{
      font-weight:normal;
    }
    .lt-ie9 strong,
    .lt-ie9 b{
      font-weight:normal,
    }
    

Sure, it's a little extra work, but haven't we come to expect this from IE? Besides, it becomes second-nature after awhile.

荒路情人 2024-09-25 23:16:46

就其价值而言,我无法让它在 IE7/8/9 上运行,并且多重声明选项没有任何区别。

我的修复是根据技术注意事项页面上的说明进行的,其中它突出...

为了在 IE 中获得最佳显示效果,请将样式表“link”标记放在第一个
HTML“head”部分中的元素。

现在对我来说适用于 IE7/8/9。

For what its worth, I couldn't get it working on IE7/8/9 and the multiple declaration option didn't make any difference.

The fix for me was as a result of the instructions on the Technical Considerations Page where it highlights...

For best display in IE, make the stylesheet 'link' tag the first
element in the HTML 'head' section.

Works across IE7/8/9 for me now.

贪了杯 2024-09-25 23:16:46

我尝试了上面的所有选项,但它们都不起作用。
然后我在我的文件夹(新)中找到了 google 字体(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]-->

我希望它会有所帮助

I tried all the options from above and they didn't work.
Then I located the google font (Over the Rainbow) in my folder (new) and used IE conditional below and it worked perfect.

<!--[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]-->

I hope it will help

记忆で 2024-09-25 23:16:46

您可以尝试 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/

You can try fontsforweb.com where fonts are working for all browsers, because they are provided in TTF, WOFF and EOT formats together with CSS code ready to be pasted on your page i.e.

@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";
}

or you can download them zipped in a package with CSS file attached

then just add class to any element to apply that font i.e.

<h2 class="fontsforweb_fontid_5903">This will be written with Gotham Bold font and will work in all browsers</h2>

See it working: http://jsfiddle.net/SD4MP/

金橙橙 2024-09-25 23:16:46

这一切都是为了尝试所有这些答案,对我来说,除了下一个解决方案之外没有任何效果:
建议使用谷歌字体

@import 'https://fonts.googleapis.com/css?family=Assistant';

但是,我在这里使用的是外语字体,并且它仅在 IE11 上不起作用。我发现这个解决方案有效:

@import 'https://fonts.googleapis.com/css?family=Assistant&subset=hebrew';

希望节省某人宝贵的时间

It's all about trying all those answers, for me, nothing works except the next solution:
Google font suggested

@import 'https://fonts.googleapis.com/css?family=Assistant';

But, I'm using here foreign language fonts, and it didn't work on IE11 only. I found out this solution that worked:

@import 'https://fonts.googleapis.com/css?family=Assistant&subset=hebrew';

Hope that save someone precious time

烟沫凡尘 2024-09-25 23:16:46

尝试这种类型的链接,它也可以在 IE 中运行。希望这有帮助。

<link href='//fonts.googleapis.com/css?family=Josefin+Sans:300,400,600,700,300italic' rel='stylesheet' type='text/css'>

Try this type of link , it will run in also IE . hope this helps .

<link href='//fonts.googleapis.com/css?family=Josefin+Sans:300,400,600,700,300italic' rel='stylesheet' type='text/css'>
萤火眠眠 2024-09-25 23:16:46

我和你有同样的问题。
我找到了一个使用 Adob​​e Web Fonts 代码的解决方案,在 Internet Explorer、Chrome、Firefox 和 Safari 中完美运行。

此页面的更多信息:http://html.adobe.com/edge/webfonts/

I had the same problem with you.
I found a solution using a Adobe Web Fonts code, work perfect in Internet Explorer, Chrome, Firefox and Safari.

More info in this page: http://html.adobe.com/edge/webfonts/

一片旧的回忆 2024-09-25 23:16:46

经过调查,我得出了这个解决方案:

//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;不会工作,因为我们没有将900(如200,300,400,600,700,800)纳入使用上述链接从 Google 导入时的 URL 地址。我们可以在上述网址中添加或包含 900,但这只有在上述Google Font 在嵌入时有此选项。

After my investigation, I came up to this solution:

//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');

MUST OBSERVE:
We must need to write the font-weight correctly of this font. For example: font-weight:900; will not work as we have not included 900 like 200,300,400,600,700,800 into the URL address while importing from Google with the above link. We can add or include 900 to the above URL, but that will work only if the above Google Font has this option while embedding.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文