CSS @font-face属性详解

@font-face是 CSS3 中的一个模块,他主要是把自己定义的 Web 字体嵌入到你的网页中。
本文介绍了该模块的一些使用方法。

语法规则

首先我们一起来看看@font-face 的语法规则:

@font-face {
      font-family: <YourWebFontName>;
      src: <source> [<format>][,<source> [<format>]]*;
      [font-weight: <weight>];
      [font-style: <style>];
    }
  • font-family: <YourWebFontName> :自定义字库名称(一般设置为所引入的字库名),后续样式规则中则通过该名称来引用该字库。
  • src :设置字体的加载路径和格式,通过逗号分隔多个加载路径和格式
  • srouce :字体的加载路径,可以是绝对或相对 URL。
  • format :字体的格式,主要用于浏览器识别,一般有以下几种——truetype, opentype, truetype-aat, embedded-opentype, avg 等。
  • font-weightfont-style 和之前使用的是一致的。
  • src属性后还有一个 local(font name) 字段,表示从用户系统中加载字体,失败后才加载webfontsrc: local(font name), url("font_name.ttf")

兼容浏览器

兼容浏览器

字体格式

对于@font-face 而言,兼容性问题就是各浏览器所能识别的字体格式不尽相同。

  • TrueType 格式(.ttf)
    Windows 和 Mac 上常见的字体格式,是一种原始格式,因此它并没有为网页进行优化处理。
    浏览器支持:IE9+, FireFox3.5+, Chrome4.0+, Safari3+, Opera10+, IOS Mobile Safari4.2+

  • OpenType 格式(.otf)
    以 TrueType 为基础,也是一种原始格式,但提供更多的功能。
    浏览器支持:FireFox3.5+, Chrome4.0+, Safari3.1+, Opera10.0+, IOS Mobile Safari4.2+

  • Web Open Font 格式(.woff)
    针对网页进行特殊优化,因此是 Web 字体中最佳格式,它是一个开放的 TrueType/OpenType 的压缩版,同时支持元数据包的分离。
    浏览器支持:IE9+, FireFox3.5+, Chrome6+, Safari3.6+, Opera11.1+

  • Embedded Open Type 格式(.eot)
    IE 专用字体格式,可以从 TrueType 格式创建此格式字体。
    浏览器支持:IE4+

  • SVG 格式(.svg)
    基于 SVG 字体渲染的格式。
    浏览器支持:Chrome4+, Safari3.1+, Opera10.0+, IOS Mobile Safari3.2+

这就意味着在@font-face 中我们至少需要.woff, .eot 两种格式字体,甚至还需要.svg 等字体达到更多种浏览版本的支持。

为了使@font-face 达到更多的浏览器支持,Paul Irish 写了一个独特的@font-face 语法叫 Bulletproof @font-face:

@font-face {
  font-family: "YourWebFontName";
  src: url("YourWebFontName.eot"); /* IE9 Compat Modes */
  src: url("YourWebFontName.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */
      url("YourWebFontName.woff") format("woff"),
    /* Modern Browsers */ url("YourWebFontName.ttf") format("truetype"), /* Safari, Android, iOS */
      url("YourWebFontName.svg#YourWebFontName") format("svg"); /* Legacy iOS */
}

字体转换

Online Font Converter