前端使用Font-Spider(字蛛)压缩字体文件

痛点

前端开发的同学,我们经常会碰到需要还原设计稿中的特殊字体。我们可能会采用两种方案

  1. 使用photoshop将文本图层单独导出成图片;
  2. 直接引入改字体的字体库.ttf文件

第一种方案:适合字体加图案复杂,文案一般不会变
第二种方案:适合普通的文本,文案变化

但字体文件通常都会有几 M 大小,加载速度很慢,体验会十分不好。我们可以采用 Font-Spider (字蛛) 来对字体文件进行压缩。

缺点:不适合前端渲染的页面,文字数据是从后端接口获取的

实际操作

我们是拿到一些死文字,或者后端的渲染页面

<!-- static/font/ysf-white.ttf -->
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <link rel="stylesheet" href="./font.css">
</head>

<body>
  <!-- 这里的class="font" 对应上面font.css中的代码 -->
  <div class="font">
    <span></span>解析报告</span>
    <span>角色验证</span>
    <span>健康机关</span>
  </div>
  <div class="font">
    <span>角色验证</span>
    <span>请输入数值,确认您的信息!</span>
    <span>体重</span>
    <span>身高</span>
    <span>腰围</span>
    <span>臀围</span>
    <span>CM</span>
    <span>Kg</span>
    <span>提交</span>
  </div>
</body>

</html>
@charset 'utf-8';

@font-face {
  /*所有的ysf-white填入你的字体名称*/
  font-family: 'ysf-white';
  /*这里的路径填入你的相对路径即可*/
  src: url('./ysf-white.ttf');
  font-weight: normal;
  font-style: normal;
}

.font {
  /*引用字体*/
  font-family: 'ysf-white';
}

项目中的字体文件

在 src/style/common.css 我们引入了字体文件

@font-face {
    font-family: 'ysf-white';
    src: url('../../static/font/ysf-white.ttf');
}

这个字体文件路径是 static/font/ysf-white.ttf,此文件是压缩后的文件
压缩前的文件是 static/font/.font-spider/ysf-white.ttf

字体压缩font-spider的使用

了解更多http://font-spider.org/
首先全局安装:

npm install font-spider -g

原理:搜索当前页面所有使用@font-face的字体,然后执行font-spider压缩的时候,将字体包中没用用到的文字全部排除,只留下要使用的部分文字已达到压缩的目的。

修改或添加static/font/font.html中的文字
# 进入字体文件夹
cd static/font
# 把源文件拷贝并替换当前font目录下的字体文件,并且删除.font-spider
cp ./.font-spider/ysf-white.ttf ./ysf-white.ttf && rm -rf ./.font-spider
# 执行新的压缩
font-spider ./font.html

压缩完会发现,新的压缩文件在static/font/ysf-white.ttf
源文件在static/font/.font-spider/ysf-white.ttf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章