掌控字体文件大小,我有一套

191 阅读2分钟

临近下班,ui靓仔邪魅一笑,甩给了我一个字体文件,说我们app需要更换一下字体文件,以前的字体文件现在收费了,看了看时间17:57分那一刻我明白,免费蹭水电费的机会来了。

我们的app是react-native做的,展示数字的地方是使用DINAlternateBold字体,这一次也主要是改这个字体,打开项目想着直接把字体文件换一下就行了,结果发现新的字体文件102kb老字体文件75kb?这一刻,我发现并不是所有的东西我都喜欢大的,why???不就几个数字吗,为什么这么大?

那就先看看字体里面都有什么把?双击ui给我的ttf文件,点击安装

image.png 再打开windows自带的字符映射表找到刚刚安装的字体,发现

image.png 这一大堆都是我不要的阿,我不要这么大的,我只要我能掌控的大小就行了。 那怎么把多余的字去掉呢?这里介绍一个简单的方法fontmin

1662521618212.png

新建一个文件夹,命名为font,打开cmd输入:

npm install --save fontmin

新建一个index.js文件

const Fontmin = require('fontmin');
const fontmin = new Fontmin()
  .src('BarlowSemiCondensed-SemiBold.ttf')
  .dest('./fonts').use(Fontmin.glyph({
    text: '0123456789',
    hinting: false
  }))
fontmin.run(function (err, files) {
  if (err) {
    throw err;
  }
  console.log(files[0]);
});

然后打开cmd,执行

node index.js

打开我们的fonts文件夹,里面的字体文件就是我们提取出来的了,看看大小

image.png

嗯,5kb,小了很多了 卸载之前的老字体,重新安装提取之后的字体再使用字符映射表看看

image.png

嗯,只剩我想要的0-9数字了!场景有限,使用了最简单的处理方式,我记得这个东西还有webpack插件,可以少量配置然后动态提取,但是我没有试过,有用过的小伙伴可以互相交流!

没事的话,先下班?