Google网络字体的本地回退

时间:2013-06-07 23:30:13

标签: cdn webfonts

如果由于某种原因导致Google CDN版本无法加载,HTML5 Boilerplate将使用脚本加载jQuery的本地副本:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.9.1.min.js"><\/script>')</script>

是否可以使用Google网络字体执行此类操作?含义:如果远程字体无法加载,请使用服务器上存储的字体的本地副本。

3 个答案:

答案 0 :(得分:20)

我刚刚遇到这个问题并且在我来到这个页面之后想到了一个解决方案:

@import url(http://fonts.googleapis.com/css?family=Ubuntu:400,400italic,700,700italic);

@font-face {
    font-family: "UbuntuFallback";
    font-style: normal;
    font-weight: normal;
    src: url("/webfonts/ubuntu/ubuntu-webfont.eot?#iefix") format("embedded-opentype"), url("/webfonts/ubuntu/ubuntu-webfont.woff") format("woff"), url("/webfonts/ubuntu/ubuntu-webfont.ttf") format("truetype");
}
@font-face {
    font-family: "UbuntuFallback";
    font-style: normal;
    font-weight: bold;
    src: url("/webfonts/ubuntu/ubuntu-bold-webfont.eot?#iefix") format("embedded-opentype"), url("/webfonts/ubuntu/ubuntu-bold-webfont.woff") format("woff"), url("/webfonts/ubuntu/ubuntu-bold-webfont.ttf") format("truetype");
}
@font-face {
    font-family: "UbuntuFallback";
    font-style: italic;
    font-weight: normal;
    src: url("/webfonts/ubuntu/ubuntu-italic-webfont.eot?#iefix") format("embedded-opentype"), url("/webfonts/ubuntu/ubuntu-italic-webfont.woff") format("woff"), url("/webfonts/ubuntu/ubuntu-italic-webfont.ttf") format("truetype");
}
@font-face {
    font-family: "UbuntuFallback";
    font-style: italic;
    font-weight: bold;
    src: url("/webfonts/ubuntu/ubuntu-bolditalic-webfont.eot?#iefix") format("embedded-opentype"), url("/webfonts/ubuntu/ubuntu-bolditalic-webfont.woff") format("woff"), url("/webfonts/ubuntu/ubuntu-bolditalic-webfont.ttf") format("truetype");
}

body 
{
    font-family: Ubuntu, UbuntuFallback, Tahoma, Sans-Serif;
}

所以我想使用Ubuntu字体,但我们的网站是在本地主机上运行的,不一定会连接到互联网。我为Ubuntu字体创建了一些@ font-face声明,称之为其他东西(“UbuntuFallback”),并将它放在font-family样式列表中。

瞧!

答案 1 :(得分:1)

如果您下载所有必要的网络字体并存储它,例如在本地文件Webfonts.css中,您可以执行以下操作:

<script type="text/javascript">
if (window.jQuery) {
    document.write(unescape('%3Clink href="http://fonts.googleapis.com/css?family=OFL+Sorts+Mill+Goudy+TT|Yanone+Kaffeesatz|Tangerine" rel="stylesheet" type="text/css"%3E'));
}
else {
   document.write(unescape('%3Clink href="css/WebFonts.css"    rel="stylesheet" type="text/css"%3E'));
   document.write('<script src="js/vendor/jquery-1.9.1.min.js"><\/script>')
}
</script>

注意:这是假设cdn的fonts.googleapis.com和ajax.googleapis.com同时失败..

答案 2 :(得分:0)

A client-side fallback calling a css file containing the call different fonts (here Tangerine font):

(function test($){
    var $span = $('<span style="display:none;font-family:Tangerine"></span>').appendTo('body'); // span test creation
    if ($span.css('fontFamily') !== 'Tangerine'){
        $('head').append('<link href="./Styles/Public/Fonts.css" rel="stylesheet">'); // fallback link
    }
    $span.remove(); // span test remove
})(jQuery);