RF1001: 各浏览器对 '@font-face' 规则支持的字体格式不同,IE 支持 EOT 字体,Firefox Safari Opera 支持 TrueType 等字体
http://w3help.org/zh-cn/causes/RF1001
http://blog.csdn.net/agileclipse/article/details/12450949
http://www.zhaozi.cn/html/fonts/ 字体网
作者:陆远标准参考
根据 CSS3 草案中的描述,'@font-face' 规则允许使用链接到需要时自动激活的字体。这使得用户可以使用在线的字体,而不仅仅拘泥于使用用户端系统内的字体。一套对字体的描述定义了字体资源的位置,可以是本地也可以是其他地方,以及自定义个性化字体风格。
规则定义格式:
@font-face {
descriptor: value;
descriptor: value;
[...]
descriptor: value;
}
如:
@font-face {
font-family: Gentium;
src: url(http://site/fonts/Gentium.ttf);
}
p { font-family: Gentium, serif; }
字体引用:src 描述
- 名称
- src
- 值
- [ <uri> [format(<string> [, <string>]*)] | <font-face-name> ] [, <uri> [format(<string> [, <string>]*)] | <font-face-name> ]*
- 初始值
- N/A
此描述指定了资源中包含的字体数据。无论字体是下载的或者是本地安装的,这个描述都是必需的,以逗号作为分隔的外部引用或本地安装的字体名称的列表中各值的优先级依次递减。当遇到不合理的数据则被当作未找到字体处理。 外部引用包含一个 URI,后面有一个可选的 format 参数可以提示该资源 URI 所引用的字体格式,format 与 URI 之间通过逗号分隔。 如:src: url(../fonts/LateefRegAAT.ttf) format("truetype-aat"), url(../fonts/LateefRegOT.ttf) format("opentype"); 初步定义的格式字符串列表:
| String | Font Format | Common extensions |
|---|---|---|
| truetype | TrueType | .ttf |
| opentype | OpenType | .ttf, .oft |
| truetype-aat | TrueType with Apple Advanced Typography extensions | .ttf |
| embedded-opentype | Embedded OpenType | .eot |
| svg | SVG Font | .svg, .svgz |
关于 @font-face rule 的详细资料,请参考 CSS Fonts Module Level 3 草案 4.1 The @font-face rule 中的内容。
关于 src descriptor 的详细资料,请参考 CSS Fonts Module Level 3 草案 4.3 Font reference: the 'src' descriptor 中的内容。
问题描述
各浏览器对 '@font-face' 规则支持的字体格式不同,IE 仅支持 Embedded OpenType,Firefox 支持 TrueType、OpenType 及 WOFF,Chrome、Safari、Opera 则支持 TrueType、OpenType、SVG Font。
造成的影响
若在使用 '@font-face' 规则时仅仅考虑一种字体格式,则可能在某些浏览器中无法应用规则所引入的字体。
受影响的浏览器
| IE6 | 仅支持 Embedded OpenType(.eot) 格式。 |
|---|---|
| IE7 | 仅支持 Embedded OpenType(.eot) 格式。 |
| IE8 | 仅支持 Embedded OpenType(.eot) 格式。 |
| Firefox 3.5 | 支持 TrueType、OpenType(.ttf, .otf) 格式。 |
| Firefox 3.6 | 支持 TrueType、OpenType(.ttf, .otf) 及 WOFF 格式。 |
| Chrome | 支持 TrueType、OpenType(.ttf, .otf) 及 SVG Font(.svg) 格式。 |
| Safari | 支持 TrueType、OpenType(.ttf, .otf) 及 SVG Font(.svg) 格式。 |
| Opera | 支持 TrueType、OpenType(.ttf, .otf) 及 SVG Font(.svg) 格式。 |
问题分析
'@font-face' 规则首先定义在 CSS2 规范中,但是在 CSS2.1 中被删除,目前又被纳入到 CSS3 推荐草案中。at-rule(@)包含一条或多条被称作 font descriptor (字体描述)的特性声明,与那些在常规的 CSS 规则中的类似。由于 '@font-face' 规则没有被纳入到目前应用最广泛的 CSS2.1 规范中,各浏览器虽然对此规则均支持,但支持的细节有所区别。
IE 从 4.0 开始支持 '@font-face' ,使用了 Embedded OpenType (EOT) 格式。借助微软官方提供的字体压缩工具 'Microsoft WEFT(Web Embedding Fonts Tool)' 可以将 OpenType TT(.ttf) 格式的字体压缩至较小的体积,压缩后的类型即 .eot 格式。.eot 格式的字体仅被 IE 所支持。而到目前正式发布的最新版本的 IE8 也仍然仅支持 .eot 格式的字体。
IE 同样不支持 '@font-face' 规则中 src 描述中使用 format 提示所引用字体文件的格式。这将导致 '@font-face' 规则认为 src 描述定义错误而失效。
在互联网上随机找到一个 TrueType 字体 'Cherl',通过 'Microsoft WEFT' 将 'Cherl' 字体文件转换为 .eot 格式。或者通过开源的转换工具 'ttf2eot' 进行字体格式转换。
接下来就可以在 IE 中以类似 CSS3 草案中提到的格式定义 '@font-face' 规则。如:
<style>
@font-face {
font-family: Cherl;
src: url(cherl.eot);
}
</style>
这时就可以通过为声明设定 font-family: Cherl 来应用自定义的字体。
更多资料参考:
- http://www.w3.org/Submission/EOT/
- http://en.wikipedia.org/wiki/Embedded_OpenType
- http://msdn.microsoft.com/en-us/library/ms530757(VS.85).aspx
从 Firefox 3.5 Chrome 3.0 Safari 3.1 Opera 10 开始,其他非 IE 的主流浏览器均提供了对 '@font-face' 规则的支持。相比 IE 中所支持的微软私有的 .eot 格式,这些浏览器则提供了对使用范围更广泛、更常见的 TrueType 与 OpenType 格式的支持。
'@font-face' 规则的定义格式与 IE 中类似,但是支持 CSS3 草案中所描述的 format 提示参数等。
<style>
@font-face {
font-family: Cherl;
src: url(cherl.ttf);
}
</style>
更多资料参考:
- https://developer.mozilla.org/en/css/@font-face
- http://developer.apple.com/safari/library/documentation/appleapplications/reference/SafariCSSRef/Articles/OtherStandardCSS3Features.html#//apple_ref/doc/uid/TP40007601-SW2
- http://my.opera.com/ODIN/blog/font-face-web-fonts-resources
非 IE 浏览器对其他一些字体格式的支持
Chrome Safari Opera 在 TrueType 与 OpenType 字体格式之外,还支持 SVG 字体。通过 SVG 中的 FONT 元素及其他相关元素可以在 SVG 文件中定义字体。如:
<!doctype html>
<html>
<head>
<style>
@font-face {
font-family: ubuntu;
src: url(UbuntuTitleBold.svg#UbuntuTitleBold) format("svg");
}
#webfont {
font: 24px/150% ubuntu;
width: 300px;
}
</style>
</head>
<body>
<div id="webfont">The quick brown jumps over the lazy dog. 1234567890</div>
</body>
</html>
SVG 字体范例:UbuntuTitleBold.svg
目前 IE 和 Firefox 尚不支持此格式,在 Chrome Safari Opera 中效果如下: 
SVG 字体转换:http://xmlgraphics.apache.org/batik/tools/font-converter.html
更多资料参考:
此外,Firefox 3.6 开始,又增加了一种字体格式支持 —— WOFF(Web Open Font Format,开放式字体规范)。WOFF 由字体设计师 Erik van Blockland、Tal Leming 和 Mozilla 的 Jonathan Kew 主持设计,可以看作是 TrueType、OpenType 字体数据的简单重新封装,不过内建了压缩功能,因而体积更小、方便下载和传播。另外还支持元数据,所以厂商可以在他们的字体中加入相关识别信息。
WOFF 字体转换:http://people.mozilla.com/~jkew/woff/
更多资料参考:
- https://developer.mozilla.org/en/About_WOFF
- http://people.mozilla.com/~jkew/woff/woff-spec-latest.html
多种字体格式转换:http://www.fontsquirrel.com/fontface/generator
下面列表查看各浏览器对各种 Web 字体的支持情况:
| IE6 IE7 IE8 | Firefox 3.5+ | Firefox 3.6+ | Chrome | Safari | Opera | |
|---|---|---|---|---|---|---|
| TrueType, OpenType | 不支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
| Embedded OpenType | 支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
| SVG Font | 不支持 | 不支持 | 不支持 | 支持 | 支持 | 支持 |
| WOFF | 不支持 | 不支持 | 支持 | 不支持 | 不支持 | 不支持 |
解决方案
由于各浏览器对 '@font-face' 规则字体格式支持存在差异,若仅通过定义一个 '@font-face' 规则,可以通过 CSS hack 的方式在 IE、Firefox、Chrome、Safari、Opera 中得到相同的字体效果。
参考代码如下:
<!doctype html>
<html>
<head>
<style>
@font-face {
font-family: Cherl;
src: url(cherl.ttf);
src: url(cherl.eot)\9;
}
#webfont {
font: 24px/150% Cherl;
width: 300px;
}
</style>
</head>
<body>
<div id="webfont">The quick brown jumps over the lazy dog. 1234567890</div>
</body>
</html>
上面代码在各浏览器中的效果均为: 
同时,Google 提供了一种创建在线字体(WebFont)的方式:http://code.google.com/intl/zh-CN/apis/webfonts/ 利用 Google 提供的 API,可以在任何页面中加入 WebFont,同时支持各种主流浏览器。
参见
知识库
相关问题
测试环境
| 操作系统版本: | Windows 7 Ultimate build 7600 |
|---|---|
| 浏览器版本: | IE6 IE7 IE8 Firefox 3.6.6 Chrome 6.0.477.0 dev Safari 5.0 Opera 10.10 |
| 测试页面: | fontface.html svgfont.html |
| 本文更新时间: | 2010-07-08 |
关键字
font-face CSS 字体 自定义 font SVG TrueType OpenType WOFF EOT
百度 搜素 web 字体格式,一大把的案例,wcschool 里面 css3 字体 部分 有讲解怎么引用。
以上都TM 废话。
其实 需要某种字体兼容各种浏览器 就只要 ttf和 eot 就行,ttf很好下载,eot 一般不好转换,http://down.51cto.com/data/178142 这个 转换器 非常好,我测试 ok .
http://7sbrz8.com1.z0.glb.clouddn.com/51CTO下载-字体转换工具(测试OK).rar (我的七牛网盘下载)
RF1001: 各浏览器对 '@font-face' 规则支持的字体格式不同,IE 支持 EOT 字体,Firefox Safari Opera 支持 TrueType 等字体的更多相关文章
- [转]真正了解CSS3背景下的@font face规则
本文转自:http://www.zhangxinxu.com/wordpress/2017/03/css3-font-face-src-local/ by zhangxinxu from http:/ ...
- 使用@font-family时各浏览器对字体格式(format)的支持情况
说到浏览器对@font-face的兼容问题,这里涉及到一个字体format的问题,因为不同的浏览器对字体格式支持是不一致的,这样大家有必要了解一下,各种版本的浏览器支持什么样的字体,前面也简单带到了有 ...
- 如何让Ubuntu系统支持WebP图片格式
本文主要向大家介绍如何让 Ubuntu 系统支持查看 WebP 图片格式,以及如何将 WebP 转为 JPEG 或 PNG 图片格式的方法. 什么是WebP图片 Google开发并推出 WebP 图片 ...
- BX2001: IE 支持使用 window.clipboardData 访问系统剪贴板,Chrome 和 Safari 中存在类似的 Clipboard 对象但尚未实现,Firefox 和 Opera 不支持这类对象
http://www.w3help.org/zh-cn/causes/BX2001 标准参考 无 问题描述 IE 支持使用 window.clipboardData 对象内的一系列方法访问系统剪贴板: ...
- 火狐firefox提示“内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式。”
火狐firefox浏览器打开网也是时提示“内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式.” 今早一来打开用PHPCMS做的网站时就提示这个错误,用其他浏览器打开提示的是 ...
- BT9034: 仅 IE 和 Opera 支持 HTMLFrameElement 和 HTMLIFrameElement 的 document 属性
标准参考 根据 DOM-2 中的描述,HTMLFrameElement 和 HTMLIFrameElement 都没有 'document' 属性. 关于 HTMLFrameElement 对象的详细 ...
- safari不支持new Date函数
最近在做移动Web的时候,在PC上用Chrome调试都成功了,但是在iPhone上真机一测就出现了奇怪的问题.经过一系列调试发现是日期相关的地方出现了问题.起初怀疑是生产环境的问题,但用Mac版的sa ...
- 支持10种格式的 HTML 表格导出 jQuery 插件
HTML 表格导出 jQuery 插件可以帮助用户导出 HTML 表格到 JSON.XML.PNG.CSV.TXT.SQL.MS-Word.MS-Excel.MS-PowerPoint 和 PDF 格 ...
- 各种浏览器(IE,Firefox,Chrome,Opera)COOKIE修改方法[转]
各种浏览器(IE,Firefox,Chrome,Opera)COOKIE修改方法[转] 网站通过 Cookie 保存了我们访问网站的信息,在不同的浏览器中修改 Cookie 可以如下操作: Firef ...
随机推荐
- 【Bootstrap】自己主动去适应PC、平面、手机Bootstrap网格系统
酒吧格英语作为一门系统"grid systems",也有人翻译成"网络格系统".使用固定格子设计布局,其风格整齐而简洁,在二战结束后人气,流风格之中的一个. 1 ...
- Swing动画之游戏角色
一.动画效果:实现了飞机飞行的动画效果,也实现了飞机的移动. 二.实现原理: 1.飞机飞行 的效果:事实上也还是重写paintComponent,依照一定的时间间隔更换图片就有了飞行的效果,动画就是更 ...
- 【浅墨著作】《OpenCV3编程入门》内容简单介绍&勘误&配套源码下载
经过近一年的沉淀和总结,<OpenCV3编程入门>一书最终和大家见面了. 近期有为数不少的小伙伴们发邮件给浅墨建议最好在博客里面贴出这本书的文件夹,方便大家更好的了解这本书的内容.事实上近 ...
- MD5和Base64
一. 简述 MD5: 全称为message digest algorithm 5(信息摘要算法), 能够进行加密, 可是不能解密, 属于单向加密, 通经常使用于文件校验 Base64: 把随意序列的8 ...
- AspNet MVC4 教育-28:Asp.Net MVC4 Ajax技术部门四舍五入余速Demo
A.创建一个Basic项目类型. B.于Models创建一个文件夹: DivModel.cs: using System; using System.Collections.Generic; usin ...
- 【Hibernate步步为营】--(一对多映射)之双向关联
上篇文章讨论了单向关联的一对多映射,在一的一端维护双向的关系这样的做法尽管能实现可是存在非常多缺陷,首先生成非常多多余的SQL语句,由于多的一端不维护关系,仅仅有一的一端维护,在进行操作时一的一端会发 ...
- 对LevelDB的“升级版”存储引擎RocksDB的调研成果
Google的leveldb是个非常优秀的存储引擎.但还是有一些不尽人意的地方,比方leveldb不支持多线程合并.对key范围查找的支持还非常easy,未做优化措施,等等.而Facebook的Roc ...
- 7.oracle学习门户系列七---网络管理和配置
oracle学习门户系列七 网络管理和配置 们学习了模式和用户.包含模式定义以及模式的作用. 这篇我么来看下ORACLE数据库中的网络管理和配置.只是这篇好像和上篇没有继承啊.这怎么看? Ok,事实上 ...
- 离robots.txt启动网络爬虫之旅
要成为一个网络爬虫或搜索引擎(在这里,共同蜘蛛)它不会陌生,在搜索引擎爬虫的第一个文件或者访问该网站上浏览robots.txt该.robots.txt文件讲述了蜘蛛server哪些文件要观看正在. 当 ...
- 国产与第三方库FFmpeg SDK
一个.编译并安装第三方库 1. libfaac # tar -zxvf faac-1.28.tar.gz # cd faac-1.28 # ./configure --prefix=/opt/YOUR ...