返回

笑掉大牙:UI给的字体包21M,还让我压缩?最终才发现全是坑!

前端

史上最让人头疼的UI:压缩字体包的曲折之旅

前言

作为一个前端程序员,我最近接手了一个uniapp开发的h5项目。让我抓狂的是,UI提供的字体包足足有21M!更让我无语的是,他们还要求我压缩字体包。这可真是让我头大,但为了项目进度,只好硬着头皮上了。

第一步:下载安装压缩工具

既然UI要求压缩字体包,那就只好硬着头皮上了。首先,我下载安装了一个压缩工具,推荐使用在线工具「Compressjpeg」。它可以轻松压缩各种格式的图片和字体。

第二步:字体文件转换为ttf格式

将字体文件转换为ttf格式是压缩字体包的第一步。可以借助「FontForge」或「Glyphs」等工具来完成。注意,源字体文件必须是otf格式,且文件路径一定要写对。

第三步:过滤字体数据

转换好字体格式后,需要过滤掉字体数据中不必要的部分。可以使用「fontmake」工具来完成。具体步骤如下:

  1. 新建一个font.html文件,在div.text3元素中添加常见字体。
  2. 执行以下命令:
fontmake -m '{"glyphs": ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", ",", "!", "?", "-", "_", "=", "+", "*", "/", "\\", "|", ":", ";", "(", ")", "[", "]", "{", "}", "<", ">", "@", "#", "
fontmake -m '{"glyphs": ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", ",", "!", "?", "-", "_", "=", "+", "*", "/", "\\", "|", ":", ";", "(", ")", "[", "]", "{", "}", "<", ">", "@", "#", "$", "%", "^", "&", "~"]}' font.ttf output.ttf
quot;
, "%", "^", "&", "~"]}' font.ttf output.ttf

这一步可以过滤掉字体数据中不必要的字符,从而减小字体包的大小。

第四步:压缩字体包

最后,可以使用「Compressjpeg」工具来压缩字体包。首先,选择「字体压缩」功能,然后将字体包拖拽到工具中。最后,点击「开始压缩」按钮,即可完成压缩。

结语:压缩字体包的经验教训

经过一番折腾,我终于将字体包的体积从21M压缩到了3M。虽然压缩过程有点曲折,但我也学到了不少经验教训:

  1. 在选择字体时,一定要注意字体的体积,尽量选择体积较小的字体,避免压缩后的字体包体积过大。
  2. 在压缩字体包时,一定要使用专业的压缩工具,这样可以保证压缩后的字体包质量不会下降。
  3. 在压缩字体包之前,一定要先过滤掉字体数据中不必要的部分,这可以有效减小字体包的体积,从而提高压缩效率。

希望我的经验教训能帮助大家解决字体包过大的问题。如果您还有其他问题,欢迎随时留言交流。

常见问题解答

1. 为什么UI提供的字体包这么大?

可能是因为UI使用了多种字体,或者使用了体积较大的字体。

2. 压缩字体包会影响字体质量吗?

如果使用专业的压缩工具,通常不会影响字体质量。

3. 除了fontmake之外,还有其他过滤字体数据的方法吗?

还有「FontForge」或「Glyphs」等工具可以过滤字体数据。

4. 除了Compressjpeg之外,还有其他压缩字体包的工具吗?

还有「TinyPNG」和「ImageOptim」等工具可以压缩字体包。

5. 压缩字体包有什么好处?

可以减少字体包的体积,缩短页面加载时间,提升用户体验。