设计师的春天:中文WebFont解决方案Font-Spider(字蛛)

Fufu

我们在日常需求中,经常会碰到视觉设计师对某个中文字体效果非常坚持的情况,因为页面是否高大上,字体选择是很重要的一个因素,选择合适的字体可以让页面更优雅。面对这种问题,我们通常以下方式来进行设计还原:

使用图片背景还原设计,即使用 photoshop 将文本图层单独导出成网页背景图片。

产生的问题

1.    制作与维护成本很高。切图繁琐、高清屏适配繁琐、合并雪碧图更繁琐,后期修改更加繁琐。

2.    用户体验差。导致网页不支持选中、复制、搜索、翻译、矢量缩放,也会影响视障用户使用读屏器操作网页。

3.    带来更多带宽消耗。导出的图片体积随着文本面积增加,且字形无法重复利用,这消耗着大量的服务器资源

WebFont技术提供了在网页使用特殊字体的可能,从而避免用图片的方法。它的实现方法是通过CSS@font-face引入字体。很多互联网公司已经率先采用了这种方法,比如Apple官网就是采用了自己的字体。Google也推出了免费的WebFont云托管服务,在国外网站自定义字体得到很好的应用。

在中文方面自定义字体却迟迟没有广泛应用,这是有什么原因呢?

中文WebFont的困境:

  1. 中文字体体积大

英文字体文字部分由26个字母组成,所以字体文件通常不会太大;而中文汉字数量总共约有九万左右, 国标(GB)字库 有6763字,  而根据《现代汉语常用字表》统计数据,常用汉字也要有3500个左右。 中文字体文件通常都会几M的大小,参照现在中国的网络环境,显然不适合在项目中使用。

  1. 浏览器支持

不同浏览器对字体的支持也是不同的,没有一种可以支持所有浏览器的字体,这就要求我们针对不同的浏览器制作不同的字体。(N=Not supported, P=Partial support, Y=Supported)

table

针对以上的问题,我们可以得出中文WebFont要解决的问题是:压缩和转码。

Font-Spider中文WebFont解决方案的诞生:

了不让工程与体验制约着设计师对字体选择以及创意的实现,我们利用业余时间解决了中文WebFont的两大问题即压缩和转码,于是便有了 Font-Spider (字蛛)的诞生。作为业界首款中文 WebFont 本地自动化压缩与转码工具,中文字体 web 化问题迎刃而解。它是一个 web 字体工具,通过自动化技术来压缩、转码跨平台的中文字体,让网页自由嵌入中文字体成为可能。

原理

1.    爬行本地 html 文档,分析所有 css 语句

2.    记录@font-face语句声明的字体,并且记录使用该字体的 css 选择器

3.    通过 css 选择器的规则查找当前 html 文档的节点,记录节点上的文本

4.    找到字体文件并删除没被使用的字符

5.    编码成跨平台使用的字体格式

编码零干预

不需要改变 web 工程师现有的编码习惯、工程师可直接通过 css @font-face与选择器定义并应用字体。

压缩与转码

剔除没有使用的字符,通常可将数 MB 的字体压缩成数十 KB 大小,解决中文字体过大的问题,并编码成跨平台兼容的格式。

ip_image004

主页

web 中文字体演示与工具使用请前往主页:http://font-spider.org/

项目实践

2014年接到的最后一个项目需求——腾讯云解决方案改版。新的腾讯云解决方案采用了全新的排版方式,更加简洁大气。标题部分字体更是采用了Adobe与Google所领导开发的开源字体——思源字体。面对项目中特殊字体的需求,快速整理了实现方案。腾讯云线上的解决方案已经采用了思源的特殊字体。

E5DF5B4B-D859-425E-98AD-6AA6B08459A5

开源

我们把Font-Spider(字蛛)不断完善,并且回馈给开源社区,希望为中文WebFont的发展出一份力,让更多的中文站点可以使用精美的字体。

Tags: , ,

Fufu
Fufu
前端技术
上一遍
下一遍
QQ空间 腾讯微博 新浪微博 Facebook Google+

相关推荐

留下你的想法吧

  1. 包仔 says:

    啊? 我的春天来了? (✪ω✪)

  2. 云平-Owen 云平-Owen says:

    设计师的春天真心来了

  3. Hui Zeng says:

    官网对安装和使用的介绍实在是…,反正我研究了半天也没整明白。

  4. yong says:

    如果有些文字是动态写入的,怎么办?

  5. lifephoto says:

    这是必须静态化的节奏啊

  6. unliu says:

    热泪盈眶……如果字蛛能顺便把字体版权的问题解决了就更好了,比如建立一个cdn,方便监控及以合理的价格定价付费。

    为什么我被识别为Spam?

  7. unliu says:

    @yong 动态写入的问题用cdn方式解决就毫无压力了

  8. 11 says:

    这个,,,,,扩展性有些问题吧

  9. 中文字体还有一个更麻烦的就是font-face格式转换,一般手头只有ttf或者otf一种,要转出其它格式的实在麻烦,英文的字体还好办,在线工具好多,中文的动不动就超过文件尺寸限制转不了。不知有没有比较推荐的工具,能够解决中文字体的font-face格式转换的。

  10. kjah says:

    请教这个能压缩处理字体图标库吗?能爬出通过 ::before写入的字符么

  11. sole says:

    如果一个网站都使用了自定义字体,而且网站的页面有很多,一个页面对应一个css,这个时候,还行么

  12. mao says:

    不是业界首款吧,我记着台湾有个网站早有这服务了

  13. 饕餮 says:

    请问如何声明在网页中使用两种或者两种以上的字体?

  14. 包包 says:

    没用上,老提示这个错误:Please install perl,我安装Strawberry Perl的时候说安装不了,安装了 ActiveState Perl,好像是perl的包管理器

  15. @糖饼 says:

    @kjah v0.2.0 已经支持 ::before 的 content 属性了

  16. 蓝巧克力 says:

    爬虫是否支持间接文字绑定,如 angular 的 translate

  17. 啊啊 says:

    你觉得美工有权利给服务器装NodeJS嘛?

  18. 柠檬 says:

    可惜ie8还不支持啊

  19. 十六_SK says:

    想请教,移动端中文字体有什么可行性方法来压缩字体减小APP大小??

  20. badboy says:

    能不能只针对中文压缩,我试了一下中文确实好用了。但是我里面定义的英文字体也压缩掉了。因为英文字体到时要经常更换的。

  21. JasonLeung says:

    如果需要保留英文和数字的话,压缩之前在网页中插入一段英文和数字就好啦

  22. 阿荣 says:

    为什么之前用过*.html是可以的,但到今天再用*.html就无法识别路径了?同样位置同样的文件,只是不一样的文字而以,而只能用针对名:如“index.html”

  23. hiluluke says:

    热泪盈眶啊!

  24. moon says:

    这么强大的东西为啥没多少人使用呢

  25. ExplorePress says:

    这个工具对大家太好了!