中文点阵字库的使用方法

中文点阵字库的使用方法

在嵌入式设备LCD上显示的汉字大多数都属于点阵汉字。常用的点阵字库来自UCDOS。大家可以去网上下载一个UCDOS的完全安装版本,里面可以找到很多点阵字库文件。下面几个字库文件是常用的:

HZK12 : 12点阵汉字库(宽度x高度 = 12x12)

ASC12 : 12点阵ASCII字库(宽度x高度 = 6x12)

HZK16 : 16点阵汉字库(宽度x高度 = 16x16) 最常用的中文字库

ASC16 : 16点阵ASCII字库(宽度x高度 = 8x16)最常用的ASCII字库

HZK24 : 24点阵汉字库(宽度x高度 = 24x24)票据打印机用得较多

UCDOS的字库排列标准符合国标一、二级字库标准,即GB2312,汉字个数为6000多个。按照汉语拼音顺序排列,前面一部分是一级常用汉字大约2000多个,后面一部分是二级汉字大约4000多个。

大多数情况下,一二级字库就可以满足我们的需求。但是在某些特殊应用(比如显示每个人的姓名)中可能需要用到GB18030字库,该字库除了包括一、二级字库外还包含很多不常用的汉字,总汉字个数为27538个。

下面是GB18030字库点阵的截图。

![在这里插入图片描述](https://img-blog.csdnimg.cn/de43cab0aef1457bb10a8fd75b44e6a9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAd2h6aXdlbg==,size_20,color_FFFFFF,t_70,g_se,x_16

这个放大的汉字就是二级字库中最后一个汉字,这个字后面的汉字就属于GB18030特有的汉字了。估计大多数人一个都不认识。

我们来看看GB18030字库最后区域的汉字长得啥样子。

中文点阵字库的使用方法(安富莱电子)

汉字点阵在汉字库中的地址计算公式

汉字库种类繁多,但都是按照区位的顺序排列的。前一个字节为该汉字的区号,后一个字节为该字的位号。每一个区记录94个汉字,位号则为该字在该区中的位置。

计算公式为: (94*(区号-1)+位号-1) * 一个汉字字模占用字节数

对于16点阵的字库,1个汉字字模占用32字节。对于12点阵字库,字摸每行的位数均补齐为8的整数倍,于是实际该字库的位长度是16*12,即占用24字节。

我们在计算机中常用的汉字编码为汉字内码,不是区位码,需要进行转换。因此最终的计算公式为:

ADDRESS = [(内码1-0xa1) * 94 + (内码2-0xa1)] * 32

这个计算结果是相对全角空格字符的相对地址。

16点阵的数据格式

汉字的字型可由其点阵数据来表示。每个字型的点阵数据为16×16(横行点数×纵列点数),共256个二进制位,32个字节。

汉字16点阵字型数据的32个字节排列次序是以0字节开始到31字节结束,均用十六进制表示,其记录格式如下:

在这里插入图片描述

举个具体的例子,大家一看就懂。

“啊”是汉字区第1个汉字,对应的数据为:

0x00,0x00,0x0E,0xFC,0xEA,0x08,0xAA,0x08,

中文点阵字库的使用方法(安富莱电子)

0xAA,0xE8,0xAA,0xA8,0xAC,0xA8,0xAA,0xA8,

0xAA,0xA8,0xAA,0xA8,0xEA,0xE8,0xAA,0xA8,

0x0C,0x08,0x08,0x08,0x08,0x28,0x08,0x10,

大家明白了点阵字库的排列原理,编程实现汉字显示就比较容易了。

下面再推荐给大家一个非常好用的工具,专门用于查看和分析国标点阵字库的软件。
在这里插入图片描述
在这里插入图片描述

这个程序仅支持8个字符的文件名,要求文件名的最后4位数字表示点阵的大小。

比如我们要分析HZK16 文件,可以将文件名修改HZKs1616.hz,然后用FONTSHOW.exe程序打开。

  • 1
    点赞
  • 3
    收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论 1
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值