几种小字库的创建方法和对应的字模提取方式

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/07 19:29:23

几种小字库的创建方法和对应的字模提取方式
几种小字库的创建方法和对应的字模提取方式

几种小字库的创建方法和对应的字模提取方式
关于点阵字库的读取的文章很多,这里就不再累赘了.直接读取点阵字库文件,虽然比较方便,但是有一定的限制.首先,完整的字库包含超过6000个汉字,体积相对较大,而大多数时候我们只需要显示几百个或更少的汉字.显然此方式不适于空间占用要求高的场合.其次,程序运行时依赖字库,不能独立运行.再者,为了显示在区位相距较远的字,反复长距离移动文件指针,也影响效率.于是,就有了所谓的“小字库”,剔除没有用到的字模,仅仅把需要的字模提取出来.一般是这样的:把字模存入特定的名称(如以拼音方式命名)数组,要使用的时候直接从对应的数组读取.优点:占用空间极少,读取速度极快!缺点:它只适用于汉字极少的情况,和内码无关无法直接通过内码找到字摸,使用时必须手动指定非常麻烦.直接用位图方式此种方式用得较少,适应于一次显示一整段字,且重复的字很少的情况.这个不属于小字库的范畴了.通过回顾标准字库的字摸提取方式,应该可以找出适应于小字库的提取方式.标准16*16点阵字库的字摸提取流程 优点:由于字模按照标准的区位排列,如果不考虑文件指针的移动消耗,字模的定位提取是相当方便且高效的.直接由内码得到区位码,由区位码定位文件指针.完全不用查找或者判断.这个是标准流程,还可以直接把内码减去0xa1,这样区码和位码可以不减1.可以支持汉字数量不受限制.字模位置和区位码相关,使用方便.缺点:前面已经提到,这里不再重复.介绍完标准字库字模提取流程,如果只提取要用到的部分字模,势必会打乱原来的区位排列排列.不能直接用区位码定位了.下面开始介绍针对小字库字模提取另外三种方法.查找法读取字库这是比较常用的方法,一般使用自定义数据结构数组,数组中的每个元素包含一个区位码和一个字符数组用于存放字模.建立小字库的时候,把区位码和对应的字模写进数组.这是一个以时间换取空间的方法.查找法读取字库简单流程 优点:额外内存占用小,几乎不会浪费空间.每个元素储存一个字模,仅仅多用了两个字节来储存区位码.可以支持汉字数量仅受内存限制.字模位置和区位码相关,使用方便.缺点:速度慢,消耗CPU资源,每读取一个字模都必须经过一番查找和对比.改进:可以通过优化查找算法,获得稍微改善. 码表转换法读取字库借助表来定位.首先,建立一个94*94的索引表,对应94个区码和位码.再建立一个数组用于储存字模.建立小字库的时候,把字模在数组中位置写入索引表对应的区位.读取的时候直接定位到索引表得到重新编排的字库位置码,所以我姑且称之为码表转换法.这是一种以空间换取时间的方法.码表转换法读取字库简单流程 由于索引表按照标准的区位生成,直接根据区位码访问索引表就可以得到字模位置.优点:完全不用查找或者判断,定位效率很高.可以支持汉字数量仅受内存限制.字模位置和区位码相关,使用方便.缺点:索引表会占用额外内存.这个可以说是最致命的也是唯一的缺点.最糟糕的情况:所谓最糟糕的情况,你用到的字中有包含最高区码和最高位码的.那么他的占用空间是:94*94=8836,如果你需要使用超过256个不同的字,那占用空间就是 94*94=8836*2=17672 [因为单字节能表示的最大数是256],超过17kb,有可能超过字模本身的体积!幸好这种情况不常见.改进:通常只要使用到的 [最高区号]*[最高位号] 就可以了.还可以优化一下剔除低区位,这时候空间占用为使用到的 [最高区号-最低区号]*[最高位号-最低位号].总而言之,对于区位比较集中的字,用表驱动法还是比较理想的. Switch法读取字库通过额外编制一个Switch结构的函数,给出区位码,函数返回字模在数组中位置.建立字库的时候,把区位码作为case值,把字模位置作为 return 值,写入函数.这其实是查找法的变形.选择法读取字库简单流程 优点:额外内存占用小.字模位置和区位码相关,使用方便.缺点:速度慢,消耗CPU资源,每读取一个字模都必须调用函数.可以支持汉字数量受case 条数限制,部分编译器支持的case条目少.改进:取决于不同的编译器对Switch结构的优化.且较高级的编译器支持的case条目,已经足够代表全部区位码.

几种小字库的创建方法和对应的字模提取方式 几种小字库的创建方法和对应的字模提取方式 如何提取汉字字模,有几种取字模的方法? 每一个字库就是一个字体字模的组合吗 在16*16的点阵的字库中,“网”字的字模和“络”的字模所占的存储单元个数是 .A、 两个字一样多 B、 “信息学 汉字系统中,汉字字库里存放的是汉字的【A】内码 【B】外码 【C】字模 【D】国标码 4.16×16点阵的汉字字库中,存储10个汉字的字模信息共需 多少字节 在24X24点阵的字库中,存储一个汉字的字模信息需要________字节.[请说明理由] 在16*16点阵字库中,存储一个汉字的字模信息需用的字节数是求大神帮助 在16×16点阵的汉字字库中,储存一个汉字的字模所占的字节数是?想要学会是如何计算的. 在32×32点阵的汉字字库中,存储一个汉字的字模信息需要多少字节?请讲讲是怎么算出来的 在24*24点阵字库中,存储一个汉字的字模信息所需的字节数是多少ppt幻灯片页码编号在哪里更改? 在16*16点阵字库中,存储一个汉字的字模信息需用的字节数是?(望给出计算原理) 各选项都是什么作用?汉字系统中汉字字库里存放的是汉字A.字模 B.机内码C.拼音 D.国标码 汉子输入方法确定后,同一个汉字的不同字体.不同字号对应于不同的?内玛?外码?字模?国际码? 在24×16点阵字库中,每个汉字的字模信息需要用多少个字节存储?在24×16点阵字库中,每个汉字的字模信息需要用()个字节存储.【A】 48 【B】 96 【C】 24 【D】 384 多糖的提取方法? 钒的提取方法,