【用python玩花样】python实现点阵字体
- 2019 年 10 月 29 日
- 笔记
来源:python编程之美
点阵字介绍
今天给大家分享的是利用python实现点阵字体,可能大家对这个名词不太熟悉。给各位找了专业的解释:点阵字体是把每一个字符都分成16×16或24×24个点,然后用每个点的虚实来表示字符的轮廓。点阵字体也叫位图字体,其中每个字形都以一组二维像素信息表示(来源百度百科)。如下图,就是点阵字体

要实现这个功能要借助点阵字库HZK16。
HZK16字库是符合GB2312标准的16×16点阵字库,HZK16字库里的16×16汉字一共需要256个点来显示,也就是说需要32个字节(一个字节占8位)才能达到显示一个普通汉字的目的。所以我们只要去HZK16字库中获取点阵信息,拿到信息后根据16*16点阵每个点的数据,print出不同字符即可。
python代码实现
首先需要得到汉字的区码和位码
我们知道,一个汉字占两个字节,这两个中前一个字节为该汉字的区号,后一个字节为该字的位号。
- 区码:汉字的第一个字节-0xA0,因为汉字编码是从0xA0区开始的,所以文件最前面就是从0xA0区开始,要算出相对区码
- 位码:汉字的第二个字节-0xA0

通过区码和位码计算在点阵字库中的偏移量,基于偏移量在HZK16文件中找到对应的32个字节字模数据。
注意:在本代码中HZK16文件是和代码文件在同一目录。如需更改,记得写对路径。

解析字模数据获取点阵坐标信息

获取到的16*16点阵信息,打印到控制台

来看一下运行结果