一个经常令设计师和前端开发人员都头疼的事情就是字体的使用,设计师经常在设计稿中使用某些很漂亮的字体,以实现比较酷炫的界面。但这样经常给编码人员形成一些难度,若是在页面中放弃使用这些字体,设计师会感到郁闷,而若是使用这些字体的话,就要切图并使用不少额外的样式——又一个鱼和熊掌的抉择。还好,如今已经有了一些相关的替代技术了。javascript
CSS3的@font-face属性(事实上CSS2中就已引入),为咱们带来了一些但愿,而Firefox 3.5新增的对@font-face的支持,让咱们离这个但愿更进了一些。css
到如今为止,已经有Safari、Chrome、Opera 10和Firefox 3.5支持@font-face了,比较意外的是,IE系列浏览器也部分支持该属性。Mozilla旗下的其它产品,SeaMonkey 2 和Thunderbird 3 也支持该属性。html
浏览器 | 最低版本 | 支持字体 |
---|---|---|
Internet Explorer | 4.0 | 只支持OpenType字体(eof格式) |
Firefox (Gecko) | 3.5(1.9.1) | TrueType(ttf格式)和OpenType 字体 |
Opera | 10.0 | TrueType和OpenType 字体 |
Safari (WebKit) | 3.1 (525) | TrueType和OpenType 字体 |
从表中能够看出,IE系浏览器不支持TTF格式的字体,只支持eof格式,不过,微软官方发布了一个WEFT工具,能够将TTF转化为EOF,须要的朋友能够去下载使用。前端
可使用的样式以下:java
@font-face {font-family: qianduanNet;font-style:normal;font-weight:400; src:url("SketchRockwell.ttf");} .fontFace{font-family: qianduanNet;font-size:3.2em;letter-spacing:1px;text-align:center;} |
IE中的样式以下:css3
@font-face {font-family: Goudy Stout;font-style:normal;font-weight:400; src:url(GOUDYST0.eot);} |
这是目前最简单实现嵌入字体的方法。git
sIFR并不是一种新技术,而是已经存在并被使用不少年了。sIFR是一种颇有用也很好用的文本替换技术,经过Flash+JS+CSS将网络字体嵌入到页面中。github
考虑到网上已经有不少资源,本文就再也不赘述,想要了解的朋友能够参考一下文章:web
Typeface被认为是替代SIFR的最佳方案,相对于sIFR,Typeface少了Flash的应用,使用纯JS来嵌入相关字体,并且用法也很简单:在页面中引入相应的js文件就OK了。canvas
<html><head><!-- 加载全部的样式先 --><linkrel="stylesheet"type="text/css" ref="/style.css"><!-- 再加载typeface.js 库文件和typeface.js字体文件--><scripttype="text/javascript"src="typeface-0.10.js"></script><scripttype="text/javascript"src="helvetiker_regular.typeface.js"></script></head><body><!-- 继续并使用CSS指定typeface.js 字体 --><divclass="myclass typeface-js"style="font-family: Helvetiker"> 文本文本... </div></body></html> |
从中咱们能够看出来,使用Typeface只须要着简单的几步就能够在页面中使用嵌入字体了。
cufon是一个比较新的技术,被定位为有价值的sIFR替代方案,它有不少优点:
cufon经过生成器将字体文件转化为SVG字体,再将其转换为VML文件,这对IE很重要,由于IE原生支持VML文件。最后,使用复杂的JavaScript函数将VML文件编码为JSON文件(typeface的原理与此相似)。以下图所示:
这样作有不少好处:
cufon的用法与typeface相似,须要加载一个库文件和字体文件。而与typeface不一样的是,你须要使用js初始化cufon:
<script type="text/javascript"> Cufón.replace('h2',{ fontFamily:'Qlassik Medium'});</script> |
这与typeface的在样式中定义字体很不同。
Cufón | Typeface.js | |
---|---|---|
File size | 14.0kb (压缩后) | 16.3kb (未压缩) |
支持的浏览器 | Firefox 1.5+, Safari 3+, Opera 9.5+, Google Chrome 和 Internet Explorer6+ | Firefox 1.5+, Safari 2+, and Internet Explorer 6+, 最新版已经支持IE8 |
支持的字体类型 | .ttf, .otf, PFB, postscript | .ttf |
支持的字体样式 | font-size, font-style, font-weight, line-height, text-shadow, color | font-size, font-style, font-weight, font-stretch, letter-spacing, line-height |
可选文字? | 尚不支持 | 尚不支持 |
从这个对比中能够看出来,二者并无太大的不一样,cufon支持更多的浏览器和字体类型,而typeface支持更多的字体样式。实际应用中貌似typeface方便一些,能够直接在样式中定义字体,而cufon则有整体文件大小方面的优点。具体用哪个,看你本身的喜爱吧。
事实上,sIFR、typeface.js和cufon都是目前常说的文本替换技术,这些技术均可以用来替换@font-face,而且实现更好的浏览器兼容性。可是每种技术都不是完美的:
因此,使用哪一种方案,要看你的需求和喜爱,或许你宁愿切更多的图片也不肯使用这些技术?