1 Star 13 Fork 5

Polarix / MinimumFontLib

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 4.68 KB
一键复制 编辑 原始数据 按行查看 历史
Polarix 提交于 2018-09-14 22:18 . 更新ReadMe。

MinimumFontLib

简介

此应用为隶属于SimpleGUI的子项目,用于再资源不允许的情况下,使开发者能够方便的生成或使用对系统资源消耗最小的字库。

起源

这个就说来话长了…… 最初开发SimpleGUI的时候,为了方便,使用了完整的GB2312字库,当时还没有开发模拟器环境,只是在STM32+KS0108显示屏的硬件环境下开发和调试,但是GB2312字库的体积实在是大了点儿,片上Flash资源要被字库吃掉大半。 在SimpleGUI正式发布后,随着学习和使用的人越来越多,这个问题越发严重的凸显出来。例如很多人都在STM32F103C8上学习和开发,但是这款芯片的Flash资源就十分有限,根本不足以容纳GB2312字库,精简字库的问题必须提上日程了。 针对字库的精简,我构思了几种方式:

  • 只使用ASCII字库,这种方式自己玩儿玩儿还行,纯英文的界面用在产品上确实捉急了点儿。
  • 对GB2312字库进行精简,老实说,用处不大,能精简掉的部分也就是俄文字母、日文假名和一些奇怪的特殊符号,如果你有心情重新整理索引,那么每一个页的空白也可以精简掉,但是通过实操,我发现这种方式节省下的资源非常有限,很多时候并不能解决问题。
  • 分系和思考了以上两种情况,我想了一种很强力很极端的方法。那就是可以让用户把界面上的每一个字符串(比如说窗口标题,要显示的文字等)都写出来。然后对这些文字进行提炼和去重,留下一个最小化的字符集,然后对这个字符集重新编码,并根据新的编码对用户输入的字符串重新编码。这种方法在针对UI规模小且没有动态内容的时候,对字库控件的削减效果相当可观。

出于第三种解决问题的思路,字库精简工具MinimumFontLib诞生了。

安装教程

  1. 本工具基于wxWidgets图形库,使用TDM-GCC5.1.0编译器,在Codeblocks IDE 17.12 版本下开发。想要从源代码开始搞的朋友,可以下载wxWidgets3.0.3以上版本和Codeblocks 16.01以上版本的IDE进行编译和二次开发。wxWidgets的编译指令如下 mingw32-make -f makefile.gcc MONOLITHIC=0 SHARED=0 UNICODE=1 BUILD=release CXXFLAGS="-fno-keep-inline-dllexport -std=gnu++11"

  2. 不想关心代码的朋友,在工程目录的Build/Execute文件夹下有编译好的可执行文件,可直接运行。Build/Execute/Bin中为程序可执行文件,Build/Execute/Lang下位语言文件,目前支持中、英、日三国语言,自己翻译的,如果错了或者不合适的,还请指正。

使用说明

  1. 打开工具后,可以打开文本文件或粘贴整理好的字符串。

输入图片说明

  1. 然后点击工具栏上的重编码按钮输入图片说明,就可以自动对字库进行提取和对文字进行重编码了。

输入图片说明

输入图片说明

  1. 目前编码只有一种格式,基本ASCII字符占用一个Byte,最大值0X7F。ASCII以外的字符使用两个Byte,最大值0x7FFF,但为了解析和标记,非ASCII的高字节最高为均为1。

  2. 工具栏上的“标准ASCII”按钮输入图片说明被选中后,代表用户将使用标准ASCII表中的所有可见字符(0x20-0x7F),此时工具将不再对标准ASCII字符进行编码,非ASCII字符的编码自0x0060起,根据前文中的规则,第一个字符在字符串编码中将被反应为0x80, 0x60。

  3. 在提取字库和重编码完成后,使用者就可以通过提取的字符集,配合取模软件做出最小化的字库数据了。

开发计划

这个工具本身目前就是个半成品,我本来的计划是将取模功能一并开发的。但是由于取模功能开发比较繁琐,需要考虑的东西很多,所以短时间内可能难见成效,所以先放出此工具给各位朋友应急,目前取模工具正在开发中,介时将会呈现给大家一个完整的集成化的字库制作工具,敬请期待。

建议与反馈

如果您在使用中发现了Bug或有更好的建议,可以通过以下方式告知开发者。

  1. 在下方留言
  2. 加入QQ交流群:799501887

感谢您的理解和支持。

C++
1
https://gitee.com/Polarix/MinimumFontLib.git
git@gitee.com:Polarix/MinimumFontLib.git
Polarix
MinimumFontLib
MinimumFontLib
master

搜索帮助