关于字体剥离和精简工具 FontSubsetGUI 和 FontPruner 的比较。
在 Unity 中制作游戏时对动态字体的剥离和精简是现在常用的手段,现在有两篇博客是大家阅读和参照较多的,分别是 如何精简Unity中使用的字体文件 和 FontPruner 字体精简工具。他们各自提供了一个用于精简字体的工具, FontSubsetGUI 和 FontPruner。前者是网络上一个作者提供的免费软件,现在不是很好找,后者是西山居开源的内部工具,基于 google 的 sfntly 制作。
我分别使用两个工具裁剪同一个字体,使用同一套文本,发现结果还是有区别。字体:仿宋;大小10Mb;裁剪文本:“abcdefg0123我要喝咖啡”;裁剪后查看工具:FontCreator(试用了众多工具后发现是最好用和专业的工具)。
使用 FontSubsetGUI 裁剪后的字体大小:182Kb,FontCreator 打开后如图:

图一

图二
注意红色线框部分,Glyphs 总共定义了 28562 个,同原始字体一样,但是 Empty 了 28542 个,就是如上 图一 中所有空白方快,他们都是缺失字体外形定义,但有字体符号表,也就是说有这个字但没有定义和映射字体外形,处于不可用状态。下面 Characters 是当前拥有的字体定义和外形,一共19个,奇怪的是多出了一个“双引号”和一个“M”,而这一部分空的 Glphys 定义其实也是需要占空间的。
下面看 FontPruner 的裁剪结果,环境和数据都相同,裁剪后文件大小6Kb,结果如下:

图三

图四
如 图三 所示,我的裁剪文本是16个,字体文件内可用的 Characters 也是16个,显示的 Glyphs 定义是17个,其中包含一个 .notdef 系统预留的定义(图四),值为0;也就是其余所有没用到的 Glyphs 都被裁剪掉了,变得更加精简,所以文件就更小。总体结果如下:

图五
以上两种导入到项目中使用都没有问题,但是 FontPruner 更加精简准确,所以我最终选择后者集成到项目中,做一个批处理能够自动根据设定的文本来处理所有使用的字体,也非常方便。
但是以上两个工具都不能直接处理 otf 字体,均会报错。在处理前建议使用 FontCreator 将 otf 转换为 ttf 然后在处理,选择 “File->Export Font As...->Export as TrueType/OpenType Font...” 弹出的对话框中第一个选项 “Outline Format” 一定要选择 “TrueType”,否则即使最终在保存对话框选择 ttf 格式后导出了也无法使用。

经过此步骤,就可以处理 otf 字体了(比如安卓默认的那一套思源字体等)。
另外,原本 FontPruner 在处理临时路径时有一点点小 bug,我修复提交了 pr 且已经合并了;不过每次运行裁剪命令 Temp 目录都不会自动创建需要先手动创建好,这样使用有点不方便,我修改成自动创建,但是没有 pr,需要这个功能的请在这里下载:https://github.com/yaukeywang/FontPruner/tree/extend。
发现很多朋友在找 FontSubsetGUI 的下载地址,现在不是太好找了,这里给出下载地址:https://download.csdn.net/download/yaukeywang/10012038。
关于字体剥离和精简工具 FontSubsetGUI 和 FontPruner 的比较。的更多相关文章
- Font Combiner – 自定义网页字体和图标生成工具
Font Combiner 是一个功能丰富的 Web 字体生成工具和字体改进工具,提供字距调整.构造子集.各种提示选项和自定义字体字形组合.您可以生成您自己的自定义字体的格式和文件大小. 另外还有成千 ...
- CSS精简工具——除去多余的css样式
有时候开发网页中在改版之后,存在很多无意义的样式,对于后期的管理和维护很不友好. 如果手动去删除,很可能会导致出现更混乱的问题. 最近找到一个Chrome插件,CSS remove and combi ...
- 代码精简工具lombok
Lombok是一种通过注解的方式减少JAVA实体类中大量冗余代码,诸如get.set以及构造方法等的Java库 一.安装Lombok 步骤一 项目引入lombok插件 1 - 非maven依赖托管项目 ...
- 通过使用 NTLite 工具实现精简Windows系统
NTLite 是一款专业于Windows平台的系统精简工具,NTLite主要面对系统封装人员使用,比如各大下载站及GHO镜像下载站,Windows系统二次精简封装打包使用,NTLite可以对系统进行极 ...
- TrueType字体
TrueType字形描述技术和TTF文件 TrueType字体技术的研究分析与应用 看起来上面两篇都是翻译的文档. 看微软的原文介绍: TrueType fundamentals 其他文章: 获取Tr ...
- [转]TrueType(TTF)字体文件裁剪(支持简体中文,繁体中文TTF字体裁剪)
原文入口: TTF字体文件裁剪(支持简体中文,繁体中文TTF字体裁剪) 对于TrueType(TTF)字体格式的介绍可以看: https://www.cnblogs.com/slysky/p/1131 ...
- Kali 使用ssh,安装vmware tools 和字体重叠
Kali一直是我所爱,说说遇到的问题吧 第一个:字体重叠 gnome-tweak-tool --打开工具 第二个:ssh 修改sshd_config文件,命令为: vi /etc/ssh/sshd_c ...
- [原创] Win7全自动精简批处理_绝对原创,绝对给力_感谢无忧给了我一年的潜水
2011htpcfans发表于 2012-5-5 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=210043 @echo 全自动/手动精简 ...
- [分享] 晒一晒我的Windows7_SP1封装母盘(多图,附部分工具),老鸟飘过~
[分享] 晒一晒我的Windows7_SP1封装母盘(多图,附部分工具),老鸟飘过~ 大宝贝1 发表于 2012-8-9 18:01:57 https://www.itsk.com/thread-20 ...
随机推荐
- 前端开发进阶:推荐的 CSS 书写规范
写了这么久的CSS,但大部分前端er都没有按照良好的CSS书写规范来写CSS代码,这样会影响代码的阅读体验,这里总结一个CSS书写规范.CSS书写顺序供大家参考,这些是参考了国外一些文章以及我的个人经 ...
- 如何构建一个很棒网站页脚(Website Footer)
对于很多人来说,制作页脚是只是设计师顺手而为的任务.它似乎很容易,似乎可以忽略不计.因为很多人都觉得网站底部很少人会去看,而且页脚链接的所有链接的点击率(CTR)都是最低的,何必呢? 真是这样的吗?下 ...
- jQuery经典面试题及答案精选[转]
这两天有个面试,把这些记在这里. 问题:jQuery的美元符号$有什么作用? 回答:其实美元符号$只是”jQuery”的别名,它是jQuery的选择器,如下代码: $(document).ready( ...
- 自定义li项目符号
使用background-image属性 先清除ul的默认list-style ul{ list-style:none } li{ background-image:url('./image/symb ...
- c语言学习笔记.预处理.#ifndef
#ifndef -> if not define 配合 #endif使用 在h头文件中使用,防止重复包含和编译. 也可以用条件编译来实现. 例如: 编写头文件 test.h 在头文件开头写上两行 ...
- 15 - reduce-pratial偏函数-lsu_cache
目录 介绍 1 reduce方法 2 partial方法(偏函数) 2.1 partial方法基本使用 2.2 partial原码分析 2.3 functools.warps实现分析 3 lsu_ca ...
- Mysql存储之原生语句操作(pymysql)
Mysql存储之原生语句操作(pymysql) 关系型数据库是基于关系模型的数据库,而关系模型是通过二维表时实现的,于是构成了行列的表结构. 表可以看作是某个实体的集合,而实体之间存在联系,这个就需要 ...
- 多个id或class属性相同的元素绑定事件
<td class="tools"><a href="javascript:void(0);" status="0" na ...
- 014 JVM面试题
转自:http://www.importnew.com/31126.html 本文从 JVM 结构入手,介绍了 Java 内存管理.对象创建.常量池等基础知识,对面试中 JVM 相关的基础题目进行了讲 ...
- Ural Sport Programming Championship 2015
Ural Sport Programming Championship 2015 A - The First Day at School 题目描述:给出课程安排,打印一个课程表. solution 暴 ...