GuiTool是一款转换点阵字库的软件,非常灵巧,掌握其设置选项,将事半功倍,特别是存储格式编码方式。如下图示:

gui表格布局(图文详解GuiTool的编码方式以及存储格式)(1)

一、存储格式

存储格式主要分2种:Height Fixed, Not Fixed;

1、Height Fixed

Height Fixed 表示等高模式,字符等高,且周边补白边。适用于一个编码对应一个字符,且逐个顺序显示。

gui表格布局(图文详解GuiTool的编码方式以及存储格式)(2)

2、Not Fixed

Not Fixed 表示BBX模式,宽高不固定,只记录有效区域像素信息。适用于各种不同场景,包含字符叠加,内嵌等。

gui表格布局(图文详解GuiTool的编码方式以及存储格式)(3)

其二者差异化主要表现为:文件头、点阵信息,绘点,特效处理等等。

gui表格布局(图文详解GuiTool的编码方式以及存储格式)(4)

说明:后续涉及的文件头、点阵信息,皆与软件预设的存储格式相关。

二、编码方式

编码方式主要分3种:内码(MBCS),Unicode, 精简Unicode。

gui表格布局(图文详解GuiTool的编码方式以及存储格式)(5)

1、内码

内码的编码顺序存放字库。

它又分2种情况:CJK方块字、拉丁文。暂不支持 Not Fixed。

1.1、CJK

针对CJK(中日韩)方块字符,采取强制等宽等高处理,可以省去检索表,提高检索效率;计算一个字符点阵数据大小公式:(w * bpp 7)/8 * h。

例如:单色(1bpp),24点阵,则所有字符宽(w)、高(h)皆为24,则一个字符点阵数据大小为:( 24 * 1 7)/8 * 24 =72。

数据:文件头 等宽等高点阵数据(字符数*单字符点阵数据大小)

检索:直接通过编码、字符宽高,即可通过公式计算定位点阵信息。

适应场景:内码,等宽字库

1.2、拉丁文

拉丁文,不等宽,需要检索表,但由于编码少且规则,检索也非常高效便捷。

数据:文件头 检索表(256*4Byte) 点阵数据

检索:通过编码快速定位检索信息,然后通过检索信息定位点阵信息。

适应场景:内码,编码范围:0x00~0xFF。

2、Unicode

Unicode的编码顺序存放字库。

数据:文件头 段信息 检索表 点阵数据

说明:段信息记录字符分段信息,尽可能优化检索表空间。

检索:先通过编码定位编码段,然后计算在编码段中的位置定位检索信息,再通过检索信息定位点阵信息。

适应场景:字符多,连续字符。

3、精简Unicode

Unicode的编码顺序存放字库。

数据:文件头 编码表 检索表 点阵数据

说明:编码表记录有效字符的所有编码,升序排列。

检索:通过查找编码在编码列表中的位置来定位检索信息,再通过检索信息定位点阵信息。

适应场景:字符少,非连续字符。

三、图文分析

gui表格布局(图文详解GuiTool的编码方式以及存储格式)(6)

注:由于字符数相同,都是7480个字符,故三个bdf文件大小相同,皆为1458KB,但是bin格式存储方式不一,大小存偏差。

1、存储空间

gui表格布局(图文详解GuiTool的编码方式以及存储格式)(7)

补充说明:unicode 和 精简unicode 的空间差异,由于检索方式不同,导致检索表大小不同。换一句话说:精简unicode针对不连续编码,且字符少时,极致地优化了检索表空间,同时也会(稍微)降低检索效率。

2、检索效率

gui表格布局(图文详解GuiTool的编码方式以及存储格式)(8)

补充说明:由于检索方式不同,故检索效率存差异。效率值越小,表示效率越高。

3、绘点效率

gui表格布局(图文详解GuiTool的编码方式以及存储格式)(9)

补充说明: 效率值越小,表示效率越高。

四、汇总比较

1、存储格式

gui表格布局(图文详解GuiTool的编码方式以及存储格式)(10)

2、编码方式

gui表格布局(图文详解GuiTool的编码方式以及存储格式)(11)

总结:

a、选择怎样的存储格式,什么样的编码方式,具体还请视实际情况而定。

b、推荐组合:unicode not fixed,适应广,便于后期扩展。

,