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 来应用自定义的字体。

更多资料参考:

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

更多资料参考:

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

更多资料参考:

多种字体格式转换: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 等字体的更多相关文章

  1. [转]真正了解CSS3背景下的@font face规则

    本文转自:http://www.zhangxinxu.com/wordpress/2017/03/css3-font-face-src-local/ by zhangxinxu from http:/ ...

  2. 使用@font-family时各浏览器对字体格式(format)的支持情况

    说到浏览器对@font-face的兼容问题,这里涉及到一个字体format的问题,因为不同的浏览器对字体格式支持是不一致的,这样大家有必要了解一下,各种版本的浏览器支持什么样的字体,前面也简单带到了有 ...

  3. 如何让Ubuntu系统支持WebP图片格式

    本文主要向大家介绍如何让 Ubuntu 系统支持查看 WebP 图片格式,以及如何将 WebP 转为 JPEG 或 PNG 图片格式的方法. 什么是WebP图片 Google开发并推出 WebP 图片 ...

  4. BX2001: IE 支持使用 window.clipboardData 访问系统剪贴板,Chrome 和 Safari 中存在类似的 Clipboard 对象但尚未实现,Firefox 和 Opera 不支持这类对象

    http://www.w3help.org/zh-cn/causes/BX2001 标准参考 无 问题描述 IE 支持使用 window.clipboardData 对象内的一系列方法访问系统剪贴板: ...

  5. 火狐firefox提示“内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式。”

    火狐firefox浏览器打开网也是时提示“内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式.” 今早一来打开用PHPCMS做的网站时就提示这个错误,用其他浏览器打开提示的是 ...

  6. BT9034: 仅 IE 和 Opera 支持 HTMLFrameElement 和 HTMLIFrameElement 的 document 属性

    标准参考 根据 DOM-2 中的描述,HTMLFrameElement 和 HTMLIFrameElement 都没有 'document' 属性. 关于 HTMLFrameElement 对象的详细 ...

  7. safari不支持new Date函数

    最近在做移动Web的时候,在PC上用Chrome调试都成功了,但是在iPhone上真机一测就出现了奇怪的问题.经过一系列调试发现是日期相关的地方出现了问题.起初怀疑是生产环境的问题,但用Mac版的sa ...

  8. 支持10种格式的 HTML 表格导出 jQuery 插件

    HTML 表格导出 jQuery 插件可以帮助用户导出 HTML 表格到 JSON.XML.PNG.CSV.TXT.SQL.MS-Word.MS-Excel.MS-PowerPoint 和 PDF 格 ...

  9. 各种浏览器(IE,Firefox,Chrome,Opera)COOKIE修改方法[转]

    各种浏览器(IE,Firefox,Chrome,Opera)COOKIE修改方法[转] 网站通过 Cookie 保存了我们访问网站的信息,在不同的浏览器中修改 Cookie 可以如下操作: Firef ...

随机推荐

  1. 【Java基础】对象的具体创建过程

    所有的类(以Dog类为例)在第一次使用时,动态的加载到JVM中,当首次创建Dog对象时,或者是Dog类的静态方法.静态属性域在第一次被访问时,JVM解释器查找到classpath,定位到Dog.cla ...

  2. [Ext JS 4] 实战Chart 协调控制(单一的坐标,两个坐标)

    前言

  3. jxl创Excel档java示例代码说明

    记得下载 并 导入jxl.jar 包,免积分下载地址:http://download.csdn.net/detail/u010011052/7561041 package Test; import j ...

  4. iOS在地图上WGS84、GCJ-02、BD-09互转解决方案

    该项目的最新进展包括地图共享模块,android同事集团开始,使用百度地图sdk,我开始回,运用iOS SDK的mapkit做,之后,问题是,用纬度和经度坐标iOS端和Android端出现了比較大偏差 ...

  5. Activity生命周期解决(有图有真相)

    Activity完整的生命周期: 启动Activity的周期历程: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGVuZ2t2/font/5a6L5L2 ...

  6. zoj-3795-Grouping-tarjan确定最长的公路收缩

    使用tarjan缩合点. 然后,dfs寻找最长的公路. 水体. . . #include<stdio.h> #include<string.h> #include<alg ...

  7. windows 10 install oracle 12c error:[ INS-30131 ]

    "[ INS-30131 ] the Initial Setup That Is Required to Run the Installation Program Validation Wa ...

  8. 编写爬虫程序的神器 - Groovy + Jsoup + Sublime(转)

    写过很多个爬虫小程序了,之前几次主要用C# + Html Agility Pack来完成工作.由于.NET FCL只提供了"底层"的HttpWebRequest和"中层& ...

  9. hdu 3683 Gomoku (模拟、搜索)

    Gomoku Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  10. iOS发展系列II - UILabel 使用摘要

    // 初始化标签 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 150)]; // 设置标签文字 l ...