如何在网页设计中使用个性化字体(2)
作者:神采飞扬 来源:前端观察 发布时间:2009-07-07 11:29:00
cufon
cufon是一个比较新的技术,被定位为有价值的sIFR替代方案,它有很多优势:
无需浏览器插件——被浏览器原生支持;
兼容性——兼容各个主流浏览器
易用—— 无需配置
速度—— 快速渲染大量字体
cufon的原理:
cufon通过生成器将字体文件转化为SVG字体,再将其转换为VML文件,这对IE很重要,因为IE原生支持VML文件。最后,使用复杂的JavaScript函数将VML文件编码为JSON文件(typeface的原理与此类似)。如下图所示:
这样做有很多好处:
与加载一个字体文件,你只需要加载一些js文件就可以;
客户端无需再次手工编码;
外部js文件直到加载完成才会被执行,这可以让我们实现无闪烁的干净的替换。
压缩率高。相对于字体文件,可压缩掉60-80% 。
cufon的用法:
cufon的用法与typeface类似,需要加载一个库文件和字体文件。而与typeface不同的是,你需要使用js初始化cufon:
<script type="text/javascript">
Cufón.replace('h2', { fontFamily: 'Qlassik Medium' });
</script>
这与typeface的在样式中定义字体很不一样。
cufon资源:
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,并且实现更好的浏览器兼容性。但是每种技术都不是完美的:
@font-face最简单,虽然大部分浏览器也都支持了,但是其浏览器兼容性并不是很完美,对IE还需要eof字体的特殊支持,而且对于中文字体来说,一般都很大,这会占用很大的页面加载时间和服务器流量。
sIFR是兼容性和可用性最好、对SEO友好的一种方案,但也是实现起来最复杂的,而且需要浏览器支持Flash插件。
typeface和cufon都是利用在IE中渲染VML,而在非IE浏览器中使用canvas的方式实现“伪”字体的,他们使用起来相对简单,但是可用性和用户体验以及SEO都不是很理想。
版权问题是一个很重要的问题,无论你使用哪种技术,都需要考虑文字的授权。
所以,使用哪种方案,要看你的需求和喜好,或许你宁愿切更多的图片也不愿使用这些技术?


猜你喜欢
- 从前有三只小猪,长大自立了分别造房子住。老大搬来草堆堆出草屋,老二搬来木头搭出木屋,老三搬来砖头,砌墙,造烟囱,造出了坚固的砖房。一天晚上大
- Gtid + Mha +Binlog server配置:1:测试环境OS:CentOS 6.5Mysql:5.6.28Mha:0.56192
- mysql drop database命令用于删除一个数据库,如果试图使用drop database命令删除一个不存在的数据库,那么那么你会
- 总的来说视觉设计是一个很大的范畴,囊括了我们身边很多产品的再创作设计,比如工业产品设计,广告设计,新媒体设计,服饰设计,还有我们这里要讨论的
- Linux下MySQL数据库的主从同步配置的好处是可以把这个方式当做是一个备份的方法,用来实现读写分离,缓解一个数据库的压力。让运行海量数据
- 什么是高阶函数高阶函数就是能够把函数当成参数传递的函数就是高阶函数,换句话说如果一个函数的参数是函数,那么这个函数就是一个高阶函数。高阶函数
- 前言实现一个帧动画,使用的一个图,根据不同的时间显示不同的图。使用的就是如下所示的一张图,宽度780 * 300 ,使用加载图片 260 *
- 当我们需要批量删除数据库中的表时,对于单个删除一些表是否感到烦躁,厌倦,干脆写个脚本用得了。本脚本使用游标循环删除,对于数量比较小,用游标暂
- 本文实例讲述了JS表单验证插件之数据与逻辑分离操作。分享给大家供大家参考,具体如下:之前已经写过一个表单验证插件了,为什么还会重复造轮子呢?
- 命名空间:using System.IO;写文本文件StreamWriter sw=File.CreateText("c:\\te
- 在使用lepus3.7监控MySQL数据库的时候,碰到了以下几个问题,本博客给出了这些问题产生的原因,以及相应的解决办法。1. 问
- 通常,会话管理是通过服务器将 Session ID 作为一个 cookie 存储在用户的 Web 浏览器中来唯一标识每个用户会话。如果浏览器
- 之前写了Python实现登录接口的示例代码,最近需要回顾,就顺便发到随笔上了要求:1.输入用户名和密码2.认证成功,显示欢迎信息3.用户名3
- 小白学习一下vue,然后了解到了webpack相关的知识,然后就各种安装cnpm 是国内的源相比国际源要快很多,不知道cnpm的自己查一下吧
- CentOS7的yum源中默认好像是没有MySQL的。为了解决这个问题,我们要先下载mysql的repo源。1. 下载mysql的repo源
- 数据持久化vuex-persistedstate使用vuex是在中大型项目中必不可少的状态管理组件,刷新会重新更新状态,但是有时候我们并不希
- 本文实例讲述了Python实现PS滤镜碎片特效功能。分享给大家供大家参考,具体如下:这里用 Python 实现 PS 滤镜中的碎片特效,这个
- 直接分析,如原矩阵如下(1): (1) 我们要截取的矩阵(取其一三行,和三四列数据构成矩阵)为如下(2): (2)错
- 如果你在爬虫过程中有遇到“您的请求太过频繁,请稍后再试”,或者说代码完全正确,可是爬虫过程中突然就访问不了,那么恭喜你,你的爬虫被对方识破了
- 数据库索引是一个数据结构,提高操作的速度,在一个表中可以使用一个或多个列,提供两个快速随机查找和高效的顺序访问记录的基础创建索引。在创建索引