用python做一些有趣的事(二)——根据汉字生成点阵

上一篇,写了通过照片生成版画。有评论说,可以用汉字试一下。所以研究了一下汉字的点阵。

点阵字体是把每一个字符都分成16×16,然后用每个点的虚实来表示字符的轮廓。点阵字体中,汉字是有16*16的0,1点阵构成,比如“啊”字,他的点阵如下:

有点看不太清,我用“■”代替1,“○”代替0:

这里我们用到了点阵字库,这是一个标准通用字库,如果需要,可以留言找我。

同时,还要了解GB2312的编码,关于编码的介绍,请看http://www.qqxiuzi.cn/zh/hanzi-gb2312-bianma.php

简单来说,GB2312编码是第一个汉字编码国家标准,由中国国家标准总局1980年发布,1981年5月1日开始使用。GB2312编码共收录汉字6763个,其中一级汉字3755个,二级汉字3008个。同时,GB2312编码收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。

我们还需要利用binascii来实现16进制转换,他有两个方法,b2a_hex:二进制数据的十六进制;a2b_hex:b2a_hex的逆向函数。

准备工作完毕,开始上代码:

rect_list = [] * 16

for i in range(16):

rect_list.append([] * 16)

text = '啊'

gb2312 = text.encode('gb2312')

hex_str = binascii.b2a_hex(gb2312)

result = str(hex_str, encoding='utf-8')

area = eval('0x' + result[:2]) - 0xA0

index = eval('0x' + result[2:]) - 0xA0

offset = (94 * (area-1) + (index-1)) * 32

font_rect = None

with open("./font/hzk1216/HZK16", "rb") as f:

f.seek(offset)

font_rect = f.read(32)

for k in range(len(font_rect) // 2):

row_list = rect_list[k]

for j in range(2):

for i in range(8):

asc = font_rect[k * 2 + j]

flag = asc & KEYS[i]

row_list.append(flag)

for row in rect_list:

for i in row:

if i:

print('■',end=' ')

else:

print('○',end=' ')

print()

print()

这样就可以输出一个点阵的汉字“啊”了。

在线汉字取模-1616 led字模工具

需要一款中文取模工具的时候,百度了好多页发现大都是windows下的exe文字取模工具,找不到在线版本的,所以决定自己研究做一个。

原理:

在网页中输入中文,通过js读取该文字的unicode码,然后通过查表法得到它的GB2312码,然后通过hzk16这个字库,找出该字体的点阵数据,最后通过html5的canvas绘画出来。基本原理就是这样。欢迎试用并给出意见。

网址如下: http://www.lixin.me/wordmodel/

相关问答

stm32led点阵显示?

先写蓝牙模块和OLED的驱动,做到能够通过蓝牙模块发送指定字符到OLED上。再利用点阵字库生成软件生成你想要的宽高比的GBK字库,注意生成的.DZK文件后缀要改成.f...

如何用单片机小精灵生成汉字,用16*16的LED点阵显示?

通过撰写代码来实现。Proteus中只有5×7和8×8等LED点阵,并没有16×16LED点阵,而在实际应用中,要良好地显示一个汉字,则至少需要16×16点阵。下面我们就首先...

什么是倒易空间?

简单地说,倒-倒数,分之一;易-变换。倒易空间就是通过“倒”“易”操作把一个看得见摸得到的真实晶体晶胞的真实点阵变换成虚拟的看不见摸不到的倒易空间。但...

信息技术字型码是什么?

分享汉字字型码又称汉字字模,用于汉字在显示屏或打印机输出。汉字字型码通常有两种表示方式:点阵和矢量表示方法。用点阵表示字型时,汉字字型码指的是这个汉字...

二维码软件如何制作圆形点阵的DataMatrix二维码?

在二维码软件中制作的datamatrix二维码,一般是由点阵式的正方形像素点组成的。如果想要圆点组成的datamatrix二维码,在二维码软件中双击二维码,在图形属性-...

即开票的防伪措施及真假识别-彩票问答-彩经网

彩票是国家为筹集社会公益资金,促进社会公益事业发展而特许发行、依法销售,自然人自愿购买,并按照特定规则获得中奖机会的凭证。即开型彩票(以下简...

疤痕的修复方法有哪些?

疤痕是很让人苦恼的,目前医学水平还没有达到祛除疤痕的效果。那么疤痕修复除了找到合适的方法以外,还有较好的治疗时机才能达到理想的效果。下面为大家一一讲解...

痘坑是不是无法修复了_千问健康

前些日子,我脸上长几个痘,痘痘消除以后有了痘坑,痘坑是不是无法修复了?

彩票有哪些防伪科技?

拼接、挖补等手段伪造的中奖票,其漂移字母反映的中奖信息与伪造的中奖信息是不一致的。随着系统升级改造工作的完成,漂移字母由原来的2个字母10个位置改...

嘴唇疤痕修复有哪些办法?_千问健康

朋友的嘴唇上有疤痕,一直觉得很难受,请问嘴唇疤痕修复有哪些办法?