font-spider-plus

2026年8月9日
工具

字蛛+:智能 WebFont 压缩工具

字体文件太大?让字蛛+帮你瘦身。

背景

在构建个人作品集网站时,我使用了多种装饰性中文字体来提升视觉体验——玄宗体、朱雀仿宋、佑字、平方相思体、夏日手写等。这些字体文件动辄十几 MB,单一个玄宗体就达到了 37MB。

自托管这些字体带来了两个问题:

  1. 服务器带宽压力大:Nginx 代理大文件时容易连接重置
  2. 页面加载慢:用户需要下载几十 MB 的字体才能看到页面

Google Fonts 可以解决主流字体的问题,但装饰性中文字体往往不在 Google Fonts 上,只能自托管。

什么是字蛛+?

字蛛+(Font-spider-Plus) 是一个智能 WebFont 压缩工具,它能自动分析页面中实际使用的文字,然后按需保留字形,删除未使用的部分,大幅减小字体体积。

它基于 font-spider(字蛛) 开发,额外支持线上动态渲染的页面和 GBK 编码的文件。

工作原理

字蛛+ 的原理很简单:

  1. 扫描 HTML 页面,提取所有使用指定字体的文字
  2. 分析每个字符的 Unicode 码点
  3. 用 fonttools 对字体文件进行子集化(subset),只保留用到的字形
  4. 输出压缩后的字体文件

安装

npm i font-spider-plus -g

安装后提供 fsp 命令行工具。

基本用法

压缩本地页面:

fsp local index.html

压缩线上页面:

# 初始化配置文件
fsp init

# 编辑 fspconfig.js,填入 URL 和字体路径
# 然后执行
fsp run

实际效果

在我的项目中,使用字蛛+ 的核心思想对自托管字体进行压缩,效果非常显著:

字体 压缩前 压缩后 节省
玄宗体 37MB 40KB 99.9%
朱雀仿宋 8.4MB 1.3MB 84.5%
佑字 8.2MB 1.3MB 84.1%
平方相思体 3.6MB 0.7MB 80.6%
夏日手写 4.8MB 0.8MB 83.3%
合计 61.7MB 4.1MB 93.4%

注:玄宗体只用于首页标题「人生若只如初见」,因此压缩后仅保留这 7 个汉字,体积从 37MB 降至 40KB。

与 CDN 方案的配合

字蛛+ 最适合与 Google Fonts CDN + 自托管 的组合方案配合使用:

  • 主流字体(Inter、Noto Serif SC 等)→ Google Fonts CDN 加载,速度快、不占服务器带宽
  • 装饰性字体(玄宗体、朱雀仿宋等)→ 自托管,用字蛛+ 压缩后体积极小

注意点

  1. 字符集覆盖:如果页面内容是动态的(如歌词、用户生成内容),确保压缩前包含所有可能出现的字符,否则会出现缺字
  2. 原始备份:压缩会直接修改原字体文件,建议先备份
  3. fonttools 的坑:fontTools.subset 在包含大范围标点符号时,偶发丢失部分 CJK 字符,建议手动指定标点字符集

相关资源