第8章 点阵汉字.pdfVIP

  • 0
  • 0
  • 约9.43千字
  • 约 29页
  • 2026-02-12 发布于陕西
  • 举报

《C语言课程设计案例教程》

第8章

点阵汉字

CONTENTS

8.1需求分析8.4测试

8.2总体设计8.5总结

8.3详细设计与编码

8.1需求分析

8.1需求分析

汉字点阵模拟显示与第7章的内容非常相似。

汉字呈现在用户面前的轮廓实际上是由一个一个点勾勒出来的,即其呈现

出的模样是由画点操作完成的。怎样画点呢?问题的关键则是知晓每个汉字的

轮廓是怎样的。每个汉字都有相对应的字模,问题转化为每个汉字的点阵字模

在字库文件中存储在什么位置、具体存储格式是怎样的、存储的二进制信息是

怎样的。

因此,本项目的解答必须解决两个问题。一是确定汉字在字库文件中的存

储位置,二是取得汉字的点阵信息并按“行、列”输出各个点而形成汉字。

8.2总体设计

8.2.1汉字点阵信息的获取

点阵字库主要有3种格式的字模:12*12、14*14、16*16,其中以16*16最为

清晰和简便。所谓16*16即是用256个点来描述一个汉字的轮廓,也就是用32个

字节(即256个二进制位)来描述哪些位置出现黑点,哪些位置出现空白,从而

勾勒出一个汉字。

HZK16字库是符合GB2312国家标准的16×16点阵字库,HZK16的GB2312-

80支持的汉字有6

763个、符号682个。其中一级汉字有

3

755个,按声序排列;

二级汉字有3

008个,

按偏旁部首排列。在一般应用场合根本用不到这么多汉字,所以在应用时

可以只提取部分作为己用就可以了。

8.2.1汉字点阵信息的获取

一个GB2312汉字是用两个字节编码的,范围为0xA1A1~0xFEFE。A1-A9

为符号区、B0-F7为汉字区,每一个区有94个字符(这只是编码的许可范围,不

一定都有符号对应,比如符号区就有很多编码空白区域)。

一个汉字占两个字节,高字节为该汉字的区号,低字节为该字的位号。每

个区有94个汉字,位号为该汉字在该区中的位置。假定c1、c0分别为某汉字机

内码的高字节和低字节,则其在字库文件中的位置可以使用公式:

int

n

(c1-0xa1)

*

94

+

(c0-0xa1);

计算来获得。

这个计算过程涉及汉字的机内码、国标码、区位码的概念及转换关系。

8.2.2一维数组存储点阵信息

利用公式“(c1-0xa1)

*

94

+

(c0-0xa1)”计算出了某汉字在字库文件中的起始

位置,从此位置开始,连续的32个字节就是该汉字的具体点阵信息。将这32个

字节取出并存储于长度为32的一维无符号字符数组之中,按16行输出即可得到

该汉字的轮廓。

8.2.3项目功能图

根据前两小节的内容,绘制了汉字显示功能图,如图所示。

汉字显示功能图

完成一个汉字的点阵显示,须经历3个步骤,实现对应的3项功能。

(1)针对一个汉字构成的字符串,分别取出其两个字节中存储的无符号字符值。

(2)依据前面的公式进行计算,得出该汉字在字库文件中的存储位置,读取从该位置开

始、连续的32个字节的信息,即得到其16*16的二进制点阵信息。

(3)将32字节的点阵信息按16行进行输出,即可得其“点阵图形”。

8.3

文档评论(0)

1亿VIP精品文档

相关文档