hzk16的介绍以及简单的使用方法_图图_百度空间

图图
原来我的CPU也会发热！
主页 博客 相册| 个人档案| 好友| i贴吧

| 查看文章 |  |

hzk16的介绍以及简单的使用方法
2008-04-13 9:48

HZK16 字库是符合GB2312标准的16×16点阵字库,HZK16的GB2312-80支持的汉字有6763个，符号682个。其中一级汉字有3755个，按 声序排列，二级汉字有3008个，按偏旁部首排列。我们在一些应用场合根本用不到这么多汉字字模，所以在应用时就可以只提取部分字体作为己用。

HZK16字库里的16×16汉字一共需要256个点来显示，也就是说需要32个字节才能达到显示一个普通汉字的目的。

我们知道一个GB2312汉字是由两个字节编码的，范围为A1A1~FEFE。A1-A9为符号区，B0到F7为汉字区。每一个区有94个字符（注意：这只是编码的许可范围，不一定都有字型对应，比如符号区就有很多编码空白区域）。下面以汉字“我”为例，介绍如何在HZK16文件中找到它对应的32个字节的字模数据。

前面说到一个汉字占两个字节，这两个中前一个字节为该汉字的区号，后一个字节为该字的 位号。其中，每个区记录94个汉字，位号为该字在该区中的位置。所以要找到“我”在hzk16库中的位置就必须得到它的区码和位码。（为了区别使用了区码 和区号，其实是一个东西，别被我误导了）

区码：区号（汉字的第一个字节）-0xa0 (因为汉字编码是从0xa0区开始的，所以文件最前面就是从0xa0区开始，要算出相对区码)

位码：位号（汉字的第二个字节）-0xa0

这样我们就可以得到汉字在HZK16中的绝对偏移位置：

offset=(94*(区码-1)+(位码-1))*32

注解：1、区码减1是因为数组是以0为开始而区号位号是以1为开始的

2、(94*(区号-1)+位号-1)是一个汉字字模占用的字节数

3、最后乘以32是因为汉字库文应从该位置起的32字节信息记录该字的字模信息（前面提到一个汉字要有32个字节显示）

有了偏移地址就可以从HZK16中读取汉字编码了，剩下的就是文件操作了，就不说了，要看代码可以到我的文章：“hzk16汉字库的简单读写程序 ”看一下，是一个最简单的c语言程序。

类别：自己文章|| 添加到搜藏 | 分享到i贴吧|浏览(8351)| 评论 (3)
已有9人分享了这篇文章：

还是呼唤 Ta的分享 | 545777899 Ta的分享 | 忆粟 Ta的分享 | thisiswoa Ta的分享 | 庭超 Ta的分享 | weiwdr05 Ta的分享 | huizhixin2008 Ta的分享 | idealpark Ta的分享 |

最近读者：

gzxintong | 宋氏三少爷 | 柠檬_精灵_ | gw820522 | szcare2008 | 踏风PK逐浪 | n1ancy1 | liubin0558 |

网友评论：

1 | 匿名网友 | 2008-06-20 12:47 | 回复 建议你在 “hzk16汉字库的简单读写程序"的网址贴出来方便观看

2 | youngahao | 2010-11-20 15:00 | 回复 请教大侠，怎么在VC中打开hzk16文件，我已经把它放在工程目录下了

3 | hfhrman | 2011-01-12 23:06 | 回复 回复youngahao：：和“hzk16汉字库的简单读写程序 ”打开方式一样的，把字库作为一个C库使用就可以了

发表评论：

姓　名： | 倾天99 *姓名最长为50字节

内　容：

插入表情

| 同时将此文章分享给好友
验证码： | 请点击后输入四位验证码，字母不区分大小写 看不清?
| 取消回复

帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu