编码机

图文详解GuiTool的编码方式以及存储

发布时间:2023/3/18 14:39:06   

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

一、存储格式

存储格式主要分2种:HeightFixed,NotFixed;

1、HeightFixed

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

2、NotFixed

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

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

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

二、编码方式

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

1、内码

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

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

1.1、CJK

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

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

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

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

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

1.2、拉丁文

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

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

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

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

2、Unicode

按Unicode的编码顺序存放字库。

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

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

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

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

3、精简Unicode

按Unicode的编码顺序存放字库。

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

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

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

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

三、图文分析

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

1、存储空间

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

2、检索效率

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

3、绘点效率

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

四、汇总比较

1、存储格式

2、编码方式

总结:

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

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



转载请注明:http://www.aideyishus.com/lkzp/3690.html
------分隔线----------------------------