之前为了图方便,使用了google font api来解决LOGO字体跨浏览器兼容性的问题。不过由于众所周知的原因,Google Web font在国内经常不稳定,速度在国内延迟也很高,而且不能使用个性化字体。带来的问题就是LOGO显示不正常,而且还引发网页打开速度慢。

    在使用本地化的Google Font字体后,从原先远程调用google font api的700ms延迟,提高到了现在的136ms,网站访问速度得到了明显的提高,百度测试效果如下:

2767524786.jpg

    下面,分享一下通过@font-face,将Google Font的字体进行本地化使用的方法:

    一、常见的字体格式介绍

    不同的浏览器对字体格式支持是不一致的,常见的如下:

    1、TureTpe(.ttf):

    .ttf字体是Windows和Mac的最常见的字体,是一种RAW格式,因此他不为网站优化,支持这种字体的浏览器有【IE9+,Firefox3.5+,Chrome4+,Safari3+,Opera10+,iOS Mobile Safari4.2+】;

    2、OpenType(.otf):

    .otf字体被认为是一种原始的字体格式,其内置在TureType的基础上,所以也提供了更多的功能,支持这种字体的浏览器有【Firefox3.5+,Chrome4.0+,Safari3.1+,Opera10.0+,iOS Mobile Safari4.2+】;

    3、Web Open Font Format(.woff):

    .woff字体是Web字体中最佳格式,他是一个开放的TrueType/OpenType的压缩版本,同时也支持元数据包的分离,支持这种字体的浏览器有【IE9+,Firefox3.5+,Chrome6+,Safari3.6+,Opera11.1+】;

    4、Embedded Open Type(.eot):

    .eot字体是IE专用字体,可以从TrueType创建此格式字体,支持这种字体的浏览器有【IE4+】;

    5、SVG(.svg)格式:

    .svg字体是基于SVG字体渲染的一种格式,支持这种字体的浏览器有:
    【Chrome4+,Safari3.1+,Opera10.0+,iOS Mobile Safari3.2+】。

    所以,如果不考虑手机上的字体兼容,实际上我们只需要2种格式就好.

    (1)eot :用于兼容IE浏览器的字体格式
    (2)woff :其他非IE浏览器都已经兼容的字体格式


    二、获取你所需要的google font的各类型字体格式

    一般来说,google font 只提供了字体的TTF格式,将你喜欢的google font的字体TTF下载下来。网上转换的工具很多,我们只要将TTF转换为上述的其他几种格式,比如eot,woff即可。

    我使用的是http://www.fontsquirrel.com/fontface/generator在线转换它可以一次性的生成eot,woff.svg,ttf多种字体格式,而且还带有相应的CSS和HTML预览,非常方便。    

    转换完成后,将相关的字体上传到你的网站服务器,接下来,我们用@font-face的语法来调用他就可以了。

    三、在你的CSS中使用@font-face,本地化使用google font。

    基本语法网上说明很多,不多介绍了。来个实际例子:

@font-face {
font-family:'Tangerine-b';
    src: url('./font/Tangerine_Bold.eot');
    src: url('./font/Tangerine_Bold.eot?#iefix') format('embedded-opentype'),
         url('./font/Tangerine_Bold.woff') format('woff'),
         url('./font/Tangerine_Bold.ttf') format('truetype'),
         url('./font/Tangerine_Bold.svg#tangerinebold') format('svg');
}

    在这里,通过@font-face,我自定义了一个名为的Tangerine-b字体,相关的eot,woff,ttf,svg字体格式上传在/font/目录下面。我这里使用的是相对路径,当然你也可以使用绝对路径。

    离最后效果只差一步了,就是把自己定义的字体应用到你的Web中的DOM元素上,比如:

googlefont {
     font-family: 'Tangerine-b'
   }

    可以看看我的LOGO效果。

    到此,我们就完成了google font字体的本地化。