转_汉字点阵字库原理

http://blog.csdn.net/zixu/archive/2008/01/15/2045164.aspx  原文连接

一、      汉字编码

1.        区位码 在国标GD2312—80中规定,所有的国标汉字及符号分配在一个94行、94列的方阵中,方阵的每一行称为一个“区”,编号为01区到94区,每一列称为一个“位”,编号为01位到94位,方阵中的每一个汉字和符号所在的区号和位号组合在一起形成的四个阿拉伯数字就是它们的“区位码”。区位码的前两位是它的区号,后两位是它的位号。用区位码就可以唯一地确定一个汉字或符号,反过来说,任何一个汉字或符号也都对应着一个唯一的区位码。汉字“母”字的区位码是3624,表明它在方阵的36区24位,问号“?”的区位码为0331,则它在03区3l位。

2.        机内码

汉字的机内码是指在计算机中表示一个汉字的编码。机内码与区位码稍有区别。如上所述,汉字区位码的区码和位码的取值均在1~94之间,如直接用区位码作为机内码,就会与基本ASCII码混淆。为了避免机内码与基本ASCII码的冲突,需要避开基本ASCII码中的控制码(00H~1FH),还需与基本ASCII码中的字符相区别。为了实现这两点,可以先在区码和位码分别加上20H,在此基础上再加80H(此处“H”表示前两位数字为十六进制数)。经过这些处理,用机内码表示一个汉字需要占两个字节,分别 称为高位字节和低位字节,这两位字节的机内码按如下规则表示: 高位字节 = 区码 + 20H + 80H(或区码 + A0H) 低位字节 = 位码 + 20H + 80H(或位码 + AOH) 由于汉字的区码与位码的取值范围的十六进制数均为01H~5EH(即十进制的01~94),所以汉字的高位字节与低位字节的取值范围则为A1H~FEH(即十进制的161~254)。 例如,汉字“啊”的区位码为1601,区码和位码分别用十六进制表示即为1001H,它的机内码的高位字节为B0H,低位字节为A1H,机内码就是B0A1H。

二、  点阵字库结构

1.     点阵字库存储

在汉字的点阵字库中,每个字节的每个位都代表一个汉字的一个点,每个汉字都是由一个矩形的点阵组成,0代表没有,1代表有点,将0和1分别用不同颜色画出,就形成了一个汉字,常用的点阵矩阵有    12*12, 14*14, 16*16三种字库。 字库根据字节所表示点的不同有分为横向矩阵和纵向矩阵,目前多数的字库都是横向矩阵的存储方式(用得最多的应该是早期UCDOS字库),纵向矩阵一般是因为有某些液晶是采用纵向扫描显示法,为了提高显示速度,于是便把字库矩阵做成纵向,省得在显示时还要做矩阵转换。我们接下去所描述的都是指横向矩阵字库。

2.        16*16点阵字库

对于16*16的矩阵来说,它所需要的位数共是16*16=256个位,每个字节为8位,因此,每个汉字都需要用256/8=32个字节来表示。 即每两个字节代表一行的16个点,共需要16行,显示汉字时,只需一次性读取32个字节,并将每两个字节为一行打印出来,即可形成一个汉字。

点阵结构如下图所示:

第一字节             第二字节

0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zixu/archive/2008/01/15/2045164.aspx

3.    14*14与12*12点阵字库

对于14*14和12*12的字库,理论上计算,它们所需要的点阵分别为(14*14/8)=25, (12*12/8)=18个字节,但是,如果按这种方式来存储,那么取点阵和显示时,由于它们每一行都不是8的整位数,因此,就会涉到点阵的计算处理问题,会增加程序的复杂度,降低程序的效率。 为了解决这个问题,有些点阵字库会将14*14和12*12的字库按16*14和16*12来存储,即,每行还是按两个字节来存储,但是14*14的字库,每两个字节的最后两位是没有使用,12*12的字节,每两字节的最后4位是没有使用,这个根据不同的字库会有不同的处理方式,所以在使用字库时要注意这个问题,特别是14*14的字库。

三、  汉字点阵获取

1.  利用区位码获取汉字 汉字点阵字库是根据区位码的顺序进行存储的,因此,我们可以根据区位来获取一个字库的点阵,

它的计算公式如下: 点阵起始位置 = ((区码- 1)*94 + (位码 – 1)) * 汉字点阵字节数

获取点阵起始位置后,我们就可以从这个位置开始,读取出一个汉字的点阵。

2.   利用汉字机内码获取汉字

前面我们己经讲过,汉字的区位码和机内码的关系如下: 机内码高位字节 = 区码 + 20H + 80H(或区码 + A0H) 机内码低位字节 = 位码 + 20H + 80H(或位码 + AOH) 反过来说,我们也可以根据机内码来获得区位码: 区码 = 机内码高位字节 - A0H 位码 = 机内码低位字节 - AOH 将这个公式与获取汉字点阵的公式进行合并计就可以得到汉字的点阵位置。

时间: 2024-10-29 18:19:10

转_汉字点阵字库原理的相关文章

点阵字库的生产原理(转)

源:点阵字库的生产原理 所有的汉字或者英文都是下面的原理, 由左至右,每8个点占用一个字节,最后不足8个字节的占用一个字节,而且从最高位向最低位排列. 生成的字库说明:(以12×12例子) 一个汉字占用字节数:12÷8=1····4也就是占用了2×12=24个字节. 编码排序A0A0→A0FE A1A0→A2FE依次排列. 以12×12字库的“我”为例:“我”的编码为CED2,所以在汉字排在CEH-AOH=2EH区的D2H-A0H=32H个.所以在12×12字库的起始位置就是[{FE-A0}*2

当点阵字库遇到3D

早在遥远的DOS时代,点阵汉字库为计算机处理汉字起到了关键作用.当时的显示器在图形模式下的分辨率只有640x480甚至320x200,显示汉字直接使用点阵字库在屏幕上打点就可以了.如今的电脑屏幕甚至手机.电视屏幕都已经进入视网膜高清屏时代,字体也早使用了矢量化技术.其实在工控机等嵌入式设备领域点阵字库依旧用途广泛.除此之外,前辈们苦心整理的这些HZK12.HZK16.HZK24汉字点阵字库还有什么用途吗?本文我们就尝试用twaver的3d技术来继续发挥这些点阵字库的余热. 字库 网上可以轻松搜索

基于点阵字库的汉字显示

使用字库HZK16,该字库是符合GB2312标准的16×16点阵字库,存储每个汉字需要32字节(16*16/8=32字节).HZK16中的一个汉字的偏移地址计算公式(假设机内码为ABCD):offset=[(AB-0XA1)*94+(CD-0XA1)]*32 证明: GB2312编码对所收录字符进行了分区处理,共94区,每区含有94位,这种表示方式称为区位码. 如"啊"位于16区的01位,所以它的区位码就是1601(区位码用十进制表示). 由区位码得到一个汉字在GB2312中的序号:o

四轴飞行器1.6 emwin与ucgui的移植,汉字外挂字库移植和DEMO效果对比

飞控的遥控器打算自己做,这样全局都能掌握,可以通过遥控器对飞控的参数和飞行模式进行修改,而买遥控器是做不到这样的哈..以后做图传的时候,屏幕还可以实时现实摄像头拍回来的画面,挺好的哈.. 做遥控我们选的是原子的战舰开发板,开发板附带小霸王那种遥控器,可以用这个来控制飞控哈,回忆童年有木有...板子还带一个ADXL345的加速度传感器,那还可以用开发板的姿态控制飞控的姿态..哈..应该挺好玩... 第一步我们打算先写一个GUI的界面,UI这东西就让我头疼哈.额..打算第一版就没什么UI,就把要显示

高通MP3、音响点阵字库解决方案

高通歌词同步方案,为MP3/MINI音响提供最优质的文字方案.高通自主研发生产的MP3.音响字库芯片GT20L16P1Y,提供标准简繁体字库,不再有错字漏字等现象,字库内容包含中文简繁体及173国多国外文点阵字库,单颗芯片搞定内外销.在提供优秀的软件内容同时,以MASKROM为载体,充分保证数据稳定性,不再担忧廉价FLASH烧录所带来的麻烦及费用.针对MP3行业,此款芯片具有极高的性价比,售价不高于空白FLASH市场价. 使用劣质字库.私造字模,导致字型丑陋中文字体结构出错,严重影响正常阅读.

高通标准点阵字库芯片在行业中的应用

目前一些企业在开发含有点阵文字显示或者打印的产品过程中,经常会遇到字库相关的技术问题.传统的方法是通过厂商自己制作字库或者从网络获取未认证的字库,然后再研究如何通过取字模软件进行调用.此类方法会导致:1.研发人员需要研究并了解字库技术和需求,而字库涉及到的国家标准较多,内部参数繁多,对于新接触此类技术的人员是个挑战.2.字库在国家是有对应的字型和字符集标准的,由于涉及文化传播,国家将此设为强制标准,以防错误的文字在民间传播以影响到文化传承.一些企业由于对国家标准不熟悉,从各种渠道获得了非认证的字

高通彩屏电子烟UI显示方案 — 支持多国语言、点阵字库

高通240x240彩屏屏电子烟UI显示方案针对电子烟人机交互.健康管理等特点,依托三十多年的信息技术积累,数百例文字应用案例,除了常规显示近3万个简繁体汉字及180多国语言字库,更将动态图片嫁接入字库芯片中,增加电子烟的交互性.除了常规电量.电压.功率.发热丝电阻值等显示.特别对于智能电子烟健康控烟功能,可设定每天吸烟次数,并设置提醒数值,帮助想要戒烟的烟民们,通过逐步减少每日抽烟次数的方式,日渐摆脱烟瘾,成功戒烟. 字库芯片优势: 电子烟 -- 240x240界面UI显示 公司介绍:深圳高通半

高通POS机点阵字库解决方案;

在移动支付成为中国社会现象,基于二维码支付这几年在中国快速发展的事实,证明了无现金社会是全球大势所趋,不可逆转.这不但在中国社会发生,也是中国业界推动全球支付升级进化的机会.目前市场上较多打印机的文字显示效果单一,字型选择余地少,采用未经认证的字库.厂商通常取得的字库存在字型不标准,字符集有错漏,没有合法字库版权等问题.当厂商碰到一些字库问题或者有特殊字库需求及外文需求时,厂商需要花费较大的精力去研究字库技术,且主要问题在于自行研发字库会存在技术错误和无认证授权等问题. 高通针对目前市面上缺乏专

高通点阵字库解决方案

年来随着IT产业的日新月异,高通一直坚持发展中文信息产品,开发多款标准点阵字库芯片.无论电子产品如何升级换代,汉字信息处理永远是信息终端产品的刚性需求.通过不断地适应产业的更新换代,高通秉承着服务客户的理念,持续开发并升级产品,为客户提供更好的中文信息解决方案.其点阵汉字库芯片为行业树立了汉字显示标准,提升了客户的字库品质,极大降低了市面上的伪劣汉字显示的状况. 高通字库芯片支持国标GB18030标准字库,包含27484个简繁体汉字兼容UNICODE,并内置日文.韩文.法文.西班牙文.德文和阿拉