详解汉字库与字模:存储原理与Java实现

需积分: 12 2 下载量 13 浏览量 更新于2024-09-10 1 收藏 423KB PDF 举报
"超级详细解析——字模" 字模是一种用于在计算机屏幕上显示汉字的数字化形式,它是汉字库中的核心元素。在信息技术领域,汉字库扮演着存储和检索汉字形状的角色,常见的汉字库如HZK16、HZK24和HZK32等,分别对应16x16、24x24和32x32点阵,点阵尺寸越大,字形越清晰,但占用的存储空间也相应增加。 汉字库文件结构中,每个汉字用两个字节来编码,其中高八位和低八位分别存储。例如,在HZK16库中,汉字的偏移地址计算公式是基于其二进制编码的高低八位,通过特定的计算公式得出在文件中的准确位置。这个过程涉及到字节操作和位运算,确保了在不同大小的点阵中,每个汉字都能正确地映射到内存中的字模数据。 Java编程中,可以通过读取字库文件并计算偏移量来获取特定汉字的字模。首先,将字节数据分解为高八位和低八位,然后根据公式调整偏移量,最后通过文件流读取指定偏移处的字节数组,这些字节包含了16x2的点阵信息,可以进一步解码显示在屏幕上。 点阵大小的选择影响着字模的质量和性能。较小的点阵(如16x16)虽然节省存储空间,但可能牺牲字形的清晰度,特别对于复杂或繁体字的显示效果较差。更大的点阵(如64x64或128x128)则能提供更优的视觉效果,但需要更多的存储空间。 在实际应用中,开发人员需要根据设计需求权衡字模的存储成本与显示质量,同时也要熟知如何使用合适的工具进行字模的创建、管理和加载,以便于在各种软件和硬件平台上实现良好的汉字显示效果。通过理解这些原理,可以有效地提升汉字信息处理系统的效率和用户体验。"
2011-08-03 上传
// 汉字字模提取的基本原理 // 如同画点画线一样 ,汉字是经过电脑画出来的。这样,就必须 // 为每一个字准备一个数组 , 这就是“ 字模 ” 。字模分为点阵和矢量 // 两种 ,我们常用的是点阵字模 ,一般有 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位)