// 汉字字模提取的基本原理
// 如同画点画线一样 ,汉字是经过电脑画出来的。这样,就必须
// 为每一个字准备一个数组 , 这就是“ 字模 ” 。字模分为点阵和矢量
// 两种 ,我们常用的是点阵字模 ,一般有 1 6 x1 6和 2 4 x 2 4两种 ,
// 分别称为16点阵字和24点阵字 。它们的原理是依据点阵中的 0和 l
// 把汉字画出来 ( 即 0表示不画点 , 1表示 画点) 。本文以16点阵的
// 汉字显示为例, 因此需访问UCDOS中的字库文件 HZK1 6 。 HZK16
// 的内容是按照字节存放的 ,即把 1 6 x1 6个“ 位” 变成 32个“ 字节 ”
// 来存放 。另外 ,每个汉字在字库中有唯一的区位码与之对应 , 根据
// 汉字的机内码可以确定其区位码及其在字库中的起始位置,就可以从字库中
// 取出汉字字模 。具体步骤如下 :
// 根据汉字的机内码 推算 出区位码 :
// 区码= 机内码 高字节一 A0 H (因为汉字编码是从0xa0区开始的,所以文件最前面就是从0xa0区开始,要算出相对区码)
// 位码= 机内码 底字节一 A0 H
// 根据 区位码计算出汉字在字库中的偏移量( 即汉字在字库中的位置 ) :
// 偏移量 L = [ ( 区码一 1 ) x 94 + ( 位码一 1 ) ] x 32
// 从该偏移地址中读取32字节(16*16位)或者128字节(32*32位),就是相关字符的点阵字模代码.
// 1、区码减1是因为数组是以0为开始而区号位号是以1为开始的
//
// 2、(94*(区号-1)+位号-1)是一个汉字字模占用的字节数
//
// 3、最后乘以32是因为汉字库文应从该位置起的32字节信息记录该字的字模信息
//
// 4、94为区位码94*94的方阵;32为从偏移地址中读取32字节(16*16位)
2021-08-31 10:37:52
3.16MB
字模
1