在 Unity 中制作游戏时对动态字体的剥离和精简是现在常用的手段,现在有两篇博客是大家阅读和参照较多的,分别是 如何精简Unity中使用的字体文件FontPruner 字体精简工具。他们各自提供了一个用于精简字体的工具, FontSubsetGUIFontPruner。前者是网络上一个作者提供的免费软件,现在不是很好找,后者是西山居开源的内部工具,基于 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 的比较。的更多相关文章

  1. Font Combiner – 自定义网页字体和图标生成工具

    Font Combiner 是一个功能丰富的 Web 字体生成工具和字体改进工具,提供字距调整.构造子集.各种提示选项和自定义字体字形组合.您可以生成您自己的自定义字体的格式和文件大小. 另外还有成千 ...

  2. CSS精简工具——除去多余的css样式

    有时候开发网页中在改版之后,存在很多无意义的样式,对于后期的管理和维护很不友好. 如果手动去删除,很可能会导致出现更混乱的问题. 最近找到一个Chrome插件,CSS remove and combi ...

  3. 代码精简工具lombok

    Lombok是一种通过注解的方式减少JAVA实体类中大量冗余代码,诸如get.set以及构造方法等的Java库 一.安装Lombok 步骤一 项目引入lombok插件 1 - 非maven依赖托管项目 ...

  4. 通过使用 NTLite 工具实现精简Windows系统

    NTLite 是一款专业于Windows平台的系统精简工具,NTLite主要面对系统封装人员使用,比如各大下载站及GHO镜像下载站,Windows系统二次精简封装打包使用,NTLite可以对系统进行极 ...

  5. TrueType字体

    TrueType字形描述技术和TTF文件 TrueType字体技术的研究分析与应用 看起来上面两篇都是翻译的文档. 看微软的原文介绍: TrueType fundamentals 其他文章: 获取Tr ...

  6. [转]TrueType(TTF)字体文件裁剪(支持简体中文,繁体中文TTF字体裁剪)

    原文入口: TTF字体文件裁剪(支持简体中文,繁体中文TTF字体裁剪) 对于TrueType(TTF)字体格式的介绍可以看: https://www.cnblogs.com/slysky/p/1131 ...

  7. Kali 使用ssh,安装vmware tools 和字体重叠

    Kali一直是我所爱,说说遇到的问题吧 第一个:字体重叠 gnome-tweak-tool --打开工具 第二个:ssh 修改sshd_config文件,命令为: vi /etc/ssh/sshd_c ...

  8. [原创] Win7全自动精简批处理_绝对原创,绝对给力_感谢无忧给了我一年的潜水

    2011htpcfans发表于 2012-5-5 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=210043 @echo 全自动/手动精简 ...

  9. [分享] 晒一晒我的Windows7_SP1封装母盘(多图,附部分工具),老鸟飘过~

    [分享] 晒一晒我的Windows7_SP1封装母盘(多图,附部分工具),老鸟飘过~ 大宝贝1 发表于 2012-8-9 18:01:57 https://www.itsk.com/thread-20 ...

随机推荐

  1. 一款基于react-native的弹窗提示组件

    介绍一款基于react-native的弹窗提示插件 react-native-ms , github地址:https://github.com/jiangzhenfei/react-native-ms ...

  2. Sublime快捷键(一)

    最近在工作中,遇到的sublime的快捷键,以后再工作中用到的我会稍后增加的~ 快捷键: 1.切换标签页: Ctrl + Tab    切换标签页: Ctrl + Shift + Tab   返回刚切 ...

  3. 根据 plist 还原 图片

    1. python 环境自己配置(支持windows Mac ) 2. 把所有的 plist  和 大图片放到一个目录下 3.如果添加了 系统环境变量 就直接双击运行脚本,如果没有设置,把脚本拽到DO ...

  4. php常用函数——数组函数

    php常用函数——数组函数

  5. 自己看之区间DP

    //菜鸡制作,看的时候可能三目运算符略烦;;; 区间DP入门题:Brackets 地址:http://59.77.139.92/Problem.jsp?pid=1463 分析(对区间DP的代码原理进行 ...

  6. 64_n2

    nodejs-from-0.1.3-4.fc26.noarch.rpm 11-Feb-2017 15:01 9982 nodejs-from2-2.1.0-6.fc26.noarch.rpm 11-F ...

  7. Machine Learning系列--维特比算法

    维特比算法(Viterbi algorithm)是在一个用途非常广的算法,本科学通信的时候已经听过这个算法,最近在看 HMM(Hidden Markov model) 的时候也看到了这个算法.于是决定 ...

  8. mysql delete 注意

    mysql中You can't specify target table <tbl> for update in FROM clause错误的意思是说,不能先select出同一表中的某些值 ...

  9. mysql军规

    总是在灾难发生后,才想起容灾的重要性.总是在吃过亏后,才记得曾经有人提醒过. 一,核心军规 不在数据库做计算,cpu计算务必移至业务层 控制单表数据量,单表记录控制在千万级 控制列数量,字段数控制在2 ...

  10. LightOJ 1410 Consistent Verdicts(找规律)

    题目链接:https://vjudge.net/contest/28079#problem/Q 题目大意:题目描述很长很吓人,大概的意思就是有n个坐标代表n个人的位置,每个人听力都是一样的,每人发出一 ...