
这个js库可以使用特定的字体显示字,字体文件放在服务器上面,所以就算本地没有对应的字体,文字也能正常显示出来。以前要实现这个比较普遍的做法是生成图片或者使用flash,所以这个方法还是比较新颖的。这个方法的原理是使用浏览器到矢量绘图功能,例如FF和opera的<canvas>标签,IE的VML。
要使用这个,你的网页需要包含两个js,一个是生成文字的js,一个就是字体的js(每个字体都需要转化成专门格式的js文件)。其他的操作就跟普通的html一样了,不过需要在使用这个字体的文字使用"typeface-js"这个样式,同时制定它要使用的字体。
官网上的例子:
Text here in Helvetiker font...
效果:
这个方式支持常用的css样式,包括font-weight,font-style,color,line-height等等,详情可以到官网看看。
color: green;font-weight:bold的效果:
比较麻烦的是,要使用bold需要另外一个独立的bold字体js,要使用italic也需要一个独立的italic字体js,就是说几乎每种样式都需要一个对应的js,这点还是挺麻烦的。
总得来说这个东西还是挺有意思的,但是事实上它有很多局限性和有待改善的地方。
1.这个js库支持FF 1.5+, Safari 2+和IE 6+,但在其他浏览器上效果会有所走样。
2.这东西应用在body里面,性能会比用在title和heading低,特别是大段文字的时候。
3.在支持canvas标签的浏览器里能够选择文字,例如FF和Opera。所以使用VML的IE不能选择文字。但是有一点要注意的是,虽然支持canvas标签的浏览器能够选择文字,但是当你选择文字的时候,不会看到任何反馈和高亮显示……
同时还有几点需要注意到地方:
- heading会默认使用typeface.js(从0.11版本开始),但是必须记住的一点是,heading(例如h1,h2等等)默认是粗体的,所以当需要应到到typeface.js时,要么把heading的样式设为font-weight: normal要么再加载一个粗体的字体js文件。 其他元素要使用typeface.js字体的话就必须加上"typeface-js"这个样式名。
- 你需要在加载typeface.js前先加载外部的样式文件,不然FF3在用typeface.js绘制文字时可能不会应到到样式。
- font-stretch样式只会在内部的CSS时有效,就是说不能写在样式文件里。
- 在IE7的某些情况下,当页面渲染完在显示typeface.js文字前你可能会看到短暂的延迟和闪烁的现象。一个解决方法是在body的闭合标签前手动调用_typeface_js.renderDocument()。
同时,开发者也提出了以后想改进的几点:
- 对文字选择有更好的支持(现在你能在某些浏览器上选择文字,但是不会高亮)
- 可能的话实现完全支持@font-face
- 支持提示(这个看起来可行)
- 提高渲染速度,特别是IE下
- 解决Opera的getComputedStyle()问题
- 可能会支持SVG
- 解决需要指定样式为'typeface-js'的问题
- 支持更多的CSS样式,包括:hover和x-height
- 起用DOMNode*事件以支持DHTML
下载:
typeface.js
Fonts
(页面同时提供了把字库文件转化为js的功能,使用perl实现)
官网:
typeface.js