sIFR、typeface.js和cufon文本替换技术

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

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">
<!-- 再加载typeface.js 库文件和typeface.js字体文件-->
    <script type="text/javascript" src="typeface-0.10.js"></script>
    <script type="text/javascript" src="helvetiker_regular.typeface.js"></script>
  </head>
  <body>
<!-- 继续并使用CSS指定typeface.js 字体 -->
    <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. 版权问题是一个很重要的问题,无论你使用哪种技术,都需要考虑文字的授权。

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索字体
, 文件
, 浏览器
, 样式
, 替换难度
, js技术
, 支持
, 一个
, 加载字体资源
js文本比较工具
sifr浏览器、cufon、cufon 中文字体、cufon yui.js、cufon yui,以便于您获取更多的相关知识。

时间: 2024-12-31 19:23:31

sIFR、typeface.js和cufon文本替换技术的相关文章

简述sIFR、typeface.js和cufon文本替换技术

一个常常令设计师和前端开发人员都头疼的事情就是字体的使用,设计师常常在设计稿中使用某些很漂亮的字体,以实现比较酷炫的界面.但这样常常给编码人员造成一些难度,如果在页面中放弃使用这些字体,设计师会感到郁闷,而如果使用这些字体的话,就要切图并使用很多额外的样式--又一个鱼和熊掌的抉择.还好,现在已经有了一些相关的替代技术了. 1. @font-face CSS3的@font-face属性(事实上CSS2中就已引入),为我们带来了一些希望,而Firefox 3.5新增的对@font-face的支持,让

js使用函数绑定技术改变事件处理程序的作用域_javascript技巧

第一种,也是 最常见的,就是直接在html标签里面通过指定事件处理程序同名的HTML属性来注册事件,代码如下: 复制代码 代码如下: function eventHandler() { alert("当前作用域是 input 元素本身"); } <input type="button" value="单击我" onclick="eventHandler(this)"/> 第二种方式就是将一个函数赋值给一个事件处理程

如何以及何时使用sIFR

作者:阿宏 2005-5-28 16:05:36 原文:http://usabletype.com/articles/2004/how-and-when-to-use-sifr/ 原作者:Andrew Hume 翻译:阿宏 在分析sIFR之前,先来快速的了解一下sIFR是什么,以及它是如何工作的.sIFR表示scalable Inman Flash Replacement,是一种在web上准确发布自定义排版的技术.这种技术的实现方法是,当页面下载时,在一个指定的元素中用Flash渲染的文字来代替

写一段js代码,实现分页展示与导航功能,使用对象模式

问题描述 写一段js代码,实现分页展示与导航功能,使用对象模式 我是个js入门者,技术总监给我出了这个问题,我想问一下使用对象模式是什么意思,导航功能又是指什么,有高手给我指点一下吗?最好有代码,非常谢谢! 解决方案 对象模式就是使用js中的对象模型,定义对象,将数据和函数封装起来.导航功能分为三部分,一个是导航菜单,用于定位栏目的链接,一个是站点地图,层次展示站点全部页面,一个是路径指示器,包含当前页和首页之间关系的列表,几乎所有的网站都有,只要你留心就可以看到. 解决方案二: 导航,从字面应

什么是 JSP 技术?

js JavaServer Pages (JSP) 技术提供了一种简单快速的方法来创建显示动态生成内容的 Web 页面.由业界处于领先地位的 Sun 公司制定了相关的 JSP 技术规范,该规范定义了如何在服务器和 JSP 页面间进行交互,还描述了页面的格式和语法.  JSP 技术的工作原理? JSP 页面使用 XML 标签和 scriptlets(一种使用 Java 语言编写的脚本代码),封装了生成页面内容的逻辑.它将各种格式的标签(HTML 或者 XML)直接传递回响应页面.通过这种方式,JS

一个开发人员眼中的JSP技术(上)

js JavaServerTM Pages(JSP)技术为我们提供了一种建立动态网页的简单方法,而且也简化了构造web程序的工作.本文从一个开发人员的角度对JSP技术做了一个全面介绍(并提供了一些JSP实例程序). 前言 JavaServer Pages技术可以让web开发人员和设计人员非常容易的创建和维护动态网页,特别是目前的商业系统.作为JavaTM技术的一部分,JSP能够快速开发出基于web.独立于平台的应用程序.JSP 把用户界面从系统内容中分离开来,使得设计人员能够在不改变底层动态内容

JSP分页技术实现

js|分页 JSP分页技术实现 目前比较广泛使用的分页方式是将查询结果缓存在HttpSession或有状态bean中,翻页的时候从缓存中取出一页数据显示.这种方法有两个主要的缺点:一是用户可能看到的是过期数据:二是如果数据量非常大时第一次查询遍历结果集会耗费很长时间,并且缓存的数据也会占用大量内存,效率明显下降. 其它常见的方法还有每次翻页都查询一次数据库,从ResultSet中只取出一页数据(使用rs.last();rs.getRow()获得总计录条数,使用rs.absolute()定位到本页

与SEO密切相关的网页技术

SEO与技术是密切相关的,许多人都认为做SEO是不需要技术的,其实这是一个误区,如果你不懂技术,就不可能把SEO做得很成功,出了问题也不能做出科学的决策,在许多人的眼里,SEO无非是每天发一些文章.发一些外链这样,如果你也这样理解SEO,那说明你的水平还处于一个非常初级的阶段,即使搜索引擎是一个技术很强的东西,那么,我们要想在它上边获取相应的流量,我们必需具备一定的技术,至少应该理解它的原理,那么在网站的页面是否符合SEO的技术要求上,我们应该注意哪些问题呢? 1.使用文本浏览器来检查你的网页,

knockout.js源码解析

简介 本文主要对源码和内部机制做较深如的分析,基础部分请参阅官网文档. knockout.js (以下简称 ko )是最早将 MVVM 引入到前端的重要功臣之一.目前版本已更新到 3 .相比同类主要有特点有: 双工绑定基于 observe 模式,性能高. 插件和扩展机制非常完善,无论在数据层还是展现层都能满足各种复杂的需求. 向下支持到IE6 文档.测试完备,社区较活跃. 入口 以下分析都将对照 github 上3.x的版本.有一点需要先了解:ko 使用 google closure compi