-
Notifications
You must be signed in to change notification settings - Fork 402
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WebFont 智能压缩工具——字蛛 1.0.0 正式版发布-新增图标字体压缩 #79
Comments
請問除了靜態頁面 |
@tpai jsx 是不支持的,它无法用浏览器解析。下一版本计划加入模板片段支持 |
请问为什么运行命令之后无效? 只是打印了一行"Load ...."就结束了...... |
@Kirito-H 你的问题我很难回答,请按照标准的提 BUG 方式完善你的问题,不要贴到无关问题下。 |
@aui 噢,不好意思,发错地方了。 |
模板片段求支持啊,用vue,angular单页没法用啊 |
请问前辈,如何在vue中使用~~~~ |
前辈,请问在国际化方案中如何压缩字体啊,我的字体在不同语言环境下的js文件中 |
@14glwu 字蛛仅仅用来处理静态页面,你可以使用 fontmin 的 API 来处理 |
基于字蛛font spider 我开发了一个网站,免费在线使用:https://www.mainww.com |
字蛛是一个 WebFont 智能压缩工具,它能自动化分析页面中所使用的 WebFont 并进行按需压缩,通常好几 MB 的中文字体可以被压缩成几 KB 大小。
字蛛主页:http://font-spider.org
字蛛从 2014 年 7 月诞生以来,时隔近两年,终于发布了 v1.0.0 正式版本,改进如下:
content: "string"
与content: attr(value)
表达式<style>
、<link>
、@import
、style=""
新特性:图标字体库压缩
得益于对 CSS 伪元素的支持进一步完善,除了常规中英文字体压缩之外,v1.0.0 还带来了万众期待的——图标字体压缩支持。
以 Font Awesome 为例,它是一个典型的开源图标字体项目,目前包含有 628 个图标,并且还不断在添加中。虽然它已经做了很多优化,但字库的体积在移动端来说依然偏大,会影响页面载入速度。实际项目中往往用不了这么多图标,使用字蛛可以删除掉字体中没有用到的图标,从而将字体瘦身。例如一个使用 Font Awesome 的示例页面:
输入
font-spider
命令,启动字蛛进行字体压缩:经过字蛛分析与压缩处理后,Font Awesome 字体中只保留了页面所用到的 20 个图标,ttf 格式字体体积由 142 KB 降为 6 KB,如果再配合使用 Webpack 等前端工具将字体 Base64 编码后内嵌到 CSS 中,载入速度可以进一步提升。
中文字体瘦身
中文字体通常都有好几 MB 大小,直接嵌入网页中显然不太现实,利用字蛛压缩后可以大幅度的减少体积:
爬虫实现原理
为什么字蛛能够找到字体中没有使用的字形数据?这里就涉及到对 HTML 与 CSS 的静态分析。
虚拟浏览器技术
字蛛 v1.0.0 版本使用了虚拟浏览器技术来实现 HTML 与 CSS 加载与解析,爬虫模块所依赖的浏览器相关 API 均为它提供。
<base>
标签以及资源定位<link>
标签或@import
语句导入的 CSS 文件由于虚拟浏览器部分涉及到太多的东西且不是本文重点,所以本文将会略过这部分细节。这部分代码已经分离出来并开源,有兴趣可以去了解: https://github.com/aui/browser-x
操作样式语法树
字蛛是通过解析样式表语法树(CSSOM)来获得 WebFont 信息,在浏览器中可以通过
document.styleSheets
来访问 CSS 的语法树,遍历 CSS 规则的函数实现:查找字体
遍历样式表每一个规则,收集
CSSFontFaceRule
信息:以如下页面作为示例:
得到
webFonts
:查找字符
利用
document.querySelectorAll()
来获取使用 WebFont 的字符:此时
webFonts
:伪元素
此时 WebFont:
完整代码在线演示:https://jsfiddle.net/9ont96c4/2
至此,以上例子已经成功演示了字蛛爬虫查找字体、查找文本的工作原理。实际上 HTML 与 CSS 远比上面示例页面复杂,需要处理:
font
缩写由于篇幅有限,上述细节部分可以参见字蛛爬虫模块源码。
相关链接
The text was updated successfully, but these errors were encountered: