GuiTool是一款转换点阵字库的软件,非常灵巧,掌握其设置选项,将事半功倍,特别是存储格式和编码方式。如下图示:
一、存储格式
存储格式主要分2种:Height Fixed, Not Fixed;
1、Height Fixed
Height Fixed 表示等高模式,字符等高,且周边补白边。适用于一个编码对应一个字符,且逐个顺序显示。
2、Not Fixed
Not Fixed 表示BBX模式,宽高不固定,只记录有效区域像素信息。适用于各种不同场景,包含字符叠加,内嵌等。
其二者差异化主要表现为:文件头、点阵信息,绘点,特效处理等等。
说明:后续涉及的文件头、点阵信息,皆与软件预设的存储格式相关。
二、编码方式
编码方式主要分3种:内码(MBCS),Unicode, 精简Unicode。
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的编码顺序存放字库。
数据:文件头 编码表 检索表 点阵数据
说明:编码表记录有效字符的所有编码,升序排列。
检索:通过查找编码在编码列表中的位置来定位检索信息,再通过检索信息定位点阵信息。
适应场景:字符少,非连续字符。
三、图文分析
注:由于字符数相同,都是7480个字符,故三个bdf文件大小相同,皆为1458KB,但是bin格式存储方式不一,大小存偏差。
1、存储空间
补充说明:unicode 和 精简unicode 的空间差异,由于检索方式不同,导致检索表大小不同。换一句话说:精简unicode针对不连续编码,且字符少时,极致地优化了检索表空间,同时也会(稍微)降低检索效率。
2、检索效率
补充说明:由于检索方式不同,故检索效率存差异。效率值越小,表示效率越高。
3、绘点效率
补充说明: 效率值越小,表示效率越高。
四、汇总比较
1、存储格式
2、编码方式
总结:
a、选择怎样的存储格式,什么样的编码方式,具体还请视实际情况而定。
b、推荐组合:unicode not fixed,适应广,便于后期扩展。
,