中文WebFont解决方案Font-Spider(字蛛)

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

使用图片背景还原设计,即使用 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)

针对以上的问题,我们可以得出中文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 大小,解决中文字体过大的问题,并编码成跨平台兼容的格式。

主页

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

项目实践

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

开源

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

感谢你的阅读,本文由 腾讯ISUX 版权所有,转载时请注明出处,违者必究,谢谢你的合作。
注明出处格式:腾讯ISUX (http://isux.tencent.com/zh-hans/font-spider.html)

时间: 2024-08-26 17:01:14

中文WebFont解决方案Font-Spider(字蛛)的相关文章

字蛛的使用及说明

web字体体积大导致加载过慢,对于前端来说是一大需要解决的问题,作为一个前端小白,看不懂文档也是个通病,不过还是花了一些时间和朋友一起研究了这个问题,并找到了解决方案就是"字蛛". 字蛛网站:http://font-spider.orgGitHub源码:https://github.com/aui/font-s... 字蛛简介: 官方的说法 "字蛛是一款中文字体压缩器".字蛛通过分析本地 CSS 与 HTML 文件 获取 WebFont 中没有使用的字符,并将这些字

中文字体【字蛛】的使用

官网:http://font-spider.org/ 安装字蛛需要先安装node. 先安装好 NodeJS,然后执行: npm install font-spider -g 构建插件:grunt-font-spider | gulp-font-spider 在 CSS 中使用 WebFont: /*声明 WebFont*/ @font-face { font-family: 'pinghei'; src: url('../font/pinghei.eot'); src: url('../font

字蛛 自定义字体

可能 网站中会用到一些漂亮的文字,又不想用图片, 这样可以用自定义字体, 用的工具是 字蛛http://font-spider.org/ 字蛛工具 依赖 nodeJs, 先安装好 NodeJS,然后执行安装字蛛: npm install font-spider -g 字蛛通过分析本地 CSS 与 HTML 文件获取 WebFont 中没有使用的字符,并将这些字符数据从字体中删除以实现压缩,同时生成跨浏览器使用的格式. 以下都是必须的,字蛛生成的字体是文件中有的文字,第一步 声明@font-fac

PHP函数imagefttext( )因--enable-gd-jis-conv引发中文乱码解决方案

阐述 最近几天与公司的PHP开发人员测试即将上线的WEB站点(致难忘的青春岁月:http://hd.gfan.com),在内网测试环境没有任何问题,但在线上测试时,发现通过PHP的GD函数 imagefttext()引用FreeType字体将文本信息写入图像时,出现中文乱码:对此问题,我们在整个排查过程中,总结了三个能引起中文乱码的原因,如下: 1.Linux系统字符集是否支持中文? [email protected]:~#locale LANG=en_US.UTF-8 LANGUAGE=en_

字体压缩 - 字蛛 font-spider

个人博客:柚子青年. 原文链接:字体压缩 - 字蛛 font-spider 安装 font-spider npm install font-spider index.html <div class="content">0123456789</div> index.css @font-face { font-family: 'DINAlternateBold'; src: url('./font/DIN-Alternate-Bold.ttf') } .conten

客户端cmd打开mysql,执行插入中文报错或插入中文乱码解决方案

最近在制作一个安装包,需要安装的时候执行mysql脚本儿,做了一个批处理,但是发现总是执行到 插入中文的时候报错,或者插入中文是乱码. 网上查了好多资料,说是把编码改成GBK什么的,终究还是不成功. 最后经过多次测试,现把解决方案分享给大家. 第一步:打开mysql中的配置文件,my.ini,看一看配置文件中 [mysql] default-character-set=utf8 [mysqld] character-set-server=utf8 看是不是这样配置的.因为utf8 是国际通用的,

boost::xml——基本操作以及中文乱码解决方案

下面是本人使用boost库的xml部分的基础操作,并且解决对于大家使用boost库读写中文xml内容出现的乱码问题. 1.实现boost库xml基本操作2.解决boost对xml中中文乱码问题3.实现普通字符串和宽字符串的傻瓜切换(模仿tchar.h)4.代码运行环境为VS2010,需要导入boost库才能正常运行5.VS2010运行时可能会发生错误.例如:cl.exe 或者 cvtres.exe 报错. 解决办法就是重新打开项目或者切换其它正常项目运行一下(反正我是这么解决的) 下面是源码部分

页面传参中文乱码解决方案

jsp页面传递参数到servlet,只要参数有中文就是乱码,大多数是??????乱码,尝试了网上比较普遍的好多种办法都不行,最后加了一句话解决掉,分享给大家. 1.打开tomcat安装目录 2.找到conf文件夹 3.打开里面的server.xml 4.找到 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443

ubuntu下中文乱码解决方案(全)

ubuntu下中文乱码解决方案(全) UBUNTU linux中解压zip 中文乱码 (unzip) 有2种方式解决问题: 1. 通过unzip行命令解压,指定字符集 unzip -O CP936 xxx.zip (用GBK, GB18030也可以) 有趣的是unzip的manual中并无这个选项的说明, unzip --help对这个参数有一行简单的说明. 2. 在环境变量中,指定unzip参数,总是以指定的字符集显示和解压文件 /etc/environment中加入2行 UNZIP="-O