建站资讯

sIFR、typeface.js和cufon文本替换技术(网站嵌入特殊

2012-09-18 23:52:01

浏览:

最近客户的页面开发需要嵌入特殊字体的问题,搞的人很头疼,在网上找了很多相关的文章,以下转载自某位网友的文章以供参考: 一个常常令设计师和前端开发人员都头疼的事情就是

最近客户的页面开发需要嵌入特殊字体的问题,搞的人很头疼,在网上找了很多相关的文章,以下转载自某位网友的文章以供参考:

一个常常令设计师和前端开发人员都头疼的事情就是字体的使用,设计师常常在设计稿中使用某些很漂亮的字体,以实现比较酷炫的界面。但这样常常给编码人员造成一些难度,如果在页面中放弃使用这些字体,设计师会感到郁闷,而如果使用这些字体的话,就要切图并使用很多额外的样式——又一个鱼和熊掌的抉择。还好,现在已经有了一些相关的替代技术了。

1. @font-face

css3的@font-face属性(事实上css2中就已引入),为我们带来了一些希望,而firefox 3.5新增的对@font-face的支持,让我们离这个希望更进了一些。

到现在为止,已经有safari、chrome、opera 10和firefox 3.5支持@font-face了,比较意外的是,ie系列浏览器也部分支持该属性。mozilla旗下的其它产品,seamonkey 2 和thunderbird 3 也支持该属性。

浏览器兼容性

 

浏览器 最低版本 支持字体
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,需要的朋友可以去下载使用

可以使用的样式如下:

@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中的样式如下:

@font-face {
    font-family: goudy stout;
    font-style:  normal;
    font-weight: 400;
    src: url(goudyst0.eot);
}

这是目前最简单实现嵌入字体的方法。

@font-face资源:

  • css3系列教程:嵌入字体/网络字体
  • mozilla开发者中心:@font-face
  • web fonts with @font-face

sifr

sifr并非一种新技术,而是已经存在并被使用很多年了。sifr是一种很有用也很好用的文本替换技术,通过flash+js+css将网络字体嵌入到页面中。

考虑到网上已经有很多资源,本文就不再赘述,想要了解的朋友可以参考一下文章:

  1. 如何以及何时使用sifr
  2. sifr-文本替换技术
  3. sifr——百度百科

typeface.js

typeface被认为是替代sifr的最佳方案,相对于sifr,typeface少了flash的应用,使用纯js来嵌入相关字体,而且用法也很简单:在页面中引入相应的js文件就ok了。

<html>
  <head>

    <link rel="stylesheet" type="text/css" ref="/style.css">

    <script type="text/javascript" src="typeface-0.10.js"></script>
    <script type="text/javascript" src="helvetiker_regular.typeface.js"></script>
  </head>
  <body>

    <div class="myclass typeface-js" style="font-family: helvetiker">
      文本文本...
    </div>
  </body>
</html>

从中我们可以看出来,使用typeface只需要着简单的几步就可以在页面中使用嵌入字体了。

typeface资源:

  • 下载的字体(该页面可以包含一个字体生成器)
  • typeface查看演示

cufon

cufon是一个比较新的技术,被定位为有价值的sifr替代方案,它有很多优势:

  1. 无需浏览器插件——被浏览器原生支持;
  2. 兼容性——兼容各个主流浏览器
  3. 易用—— 无需配置
  4. 速度—— 快速渲染大量字体

cufon的原理:

cufon通过生成器将字体文件转化为svg字体,再将其转换为vml文件,这对ie很重要,因为ie原生支持vml文件。最后,使用复杂的javascript函数将vml文件编码为json文件(typeface的原理与此类似)。如下图所示:

这样做有很多好处:

  1. 与加载一个字体文件,你只需要加载一些js文件就可以;
  2. 客户端无需再次手工编码;
  3. 外部js文件直到加载完成才会被执行,这可以让我们实现无闪烁的干净的替换。
  4. 压缩率高。相对于字体文件,可压缩掉60-80% 。

cufon的用法:

cufon的用法与typeface类似,需要加载一个库文件和字体文件。而与typeface不同的是,你需要使用js初始化cufon:

<script type="text/javascript">
cufón.replace('h2', { fontfamily: 'qlassik medium' }); 
script>

这与typeface的在样式中定义字体很不一样。

cufon资源:

  • cufon项目
  • cufon演示
  • cufon生成器
  • wp-cufon 一个使用cufon的wordpress插件

cufon和typeface.js对比:

 

  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,并且实现更好的浏览器兼容性。但是每种技术都不是完美的:

  1. @font-face最简单,虽然大部分浏览器也都支持了,但是其浏览器兼容性并不是很完美,对ie还需要eof字体的特殊支持,而且对于中文字体来说,一般都很大,这会占用很大的页面加载时间和服务器流量。
  2. sifr是兼容性和可用性最好、对seo友好的一种方案,但也是实现起来最复杂的,而且需要浏览器支持flash插件。
  3. typeface和cufon都是利用在ie中渲染vml,而在非ie浏览器中使用canvas的方式实现“伪”字体的,他们使用起来相对简单,但是可用性和用户体验以及seo都不是很理想。
  4. 版权问题是一个很重要的问题,无论你使用哪种技术,都需要考虑文字的授权。

所以,使用哪种方案,要看你的需求和喜好,或许你宁愿切更多的图片也不愿使用这些技术? 

作者: admin
sIFR、typeface.js和cufon文本替换技术(网站嵌入特殊
最近客户的页面开发需要嵌入特殊字体的问题,搞的人很头疼,在网上找了很多相关的文章,以下转载自某位网友的文章以供参考: 一个常常令设计师和前端开发人员都头疼的事情就是
长按图片保存/分享

深圳网站建设公司

启邦互动,深圳网站建设公司,致力于帮助深圳企业提供公司网站建设,手机网站建设,外贸网站建设,电商网站建设,学校网站建设

网站建设资讯

联系方式

深圳市龙华区大和路翠湖商务中心0210

Call us : + 137 2425 9054

Email us : service@sz-qibang.com

在线咨询

您好,请点击在线客服进行在线沟通!

联系方式
热线电话
400-12346578
上班时间
周一到周五
E-mail地址
123456@qq.com
扫一扫二维码
二维码
添加微信好友,详细了解产品
使用企业微信
“扫一扫”加入群聊
复制成功
添加微信好友,详细了解产品
我知道了