cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 2961|回复: 0

[fx-9860/9750] 基于HZK16和HZK12的点阵字体显示体验

[复制链接]
发表于 2023-3-20 11:31:26 | 显示全部楼层 |阅读模式
HZK16字库是符合GB2312国家标准的16×16点阵字库,同理HZK12字库采用的12*12点阵,HZK字库支持的汉字有6763个,符号682个。 其中一级汉字有 3755个,按声序排列,二级汉字有3008个,按偏旁部首排列。

HZK16字库是二进制文件 每个汉字有32个字节,所以HZK16字符很小,两百多k,编译进bin基本不改变大小,
比起HZK16,HZK12字库更小,
每个汉字有24个字节,字符数量一样,在图形计算器上显示效果清晰,

环境:pc + love2d 模拟运行环境,先可以不用碰sdk

原理解释下:


1) 载入字库
  1. local ffile = io.open("HZK16", "rb")
  2. sdata = ffile:read("*all")
  3. ffile:close()
复制代码

3) 单字绘图 有了bit库可以方便进行位操作,用矩形代替9860sdk画点,真计算不能直接绘制,等绘制完成后 再一起更新到屏幕
  1. function print_char(x,y,a0,a1)
  2.         local pos = (94*a0+a1)*32
  3.         for i = 1,16 do
  4.                 for j = 1,2 do
  5.                         sb = string.sub(sdata,j+pos+2*(i-1),j+pos+2*(i-1)+1)
  6.                         num = string.byte(sb,1)
  7.                         bnum = bit:d2b(num)
  8.                         for k = 1,8 do
  9.                                 if bnum[k]==1 then
  10.                                         G.rectangle("fill",x+k*1+j*8,y+i,1,1)
  11.                                 end
  12.                         end
  13.                 end
  14.         end
  15. end
复制代码
  1. for i = 1,12 do
  2.                 for j = 1,2 do
  3.                         sb = string.sub(sdata,j+offset+2*(i-1),j+offset+2*(i-1)+1)
  4.                         G.print(bin2hex(sb),160+j*20,i*10+20)
  5.                         num = string.byte(sb,1)
  6.                         bnum = bit:d2b(num)
  7.                         for k = 1,12 do
  8.                                 if bnum[k]==1 then
  9.                                         G.rectangle("fill",k*6+160+j*48+20,i*6+20,5,5)
  10.                                 end
  11.                         end
  12. end
  13.         end
复制代码
char12-12.png
12*12样例
char16-16.png

16*16样例

附件
HZK12 (191.67 KB, 下载次数: 42) HZK16 (261.34 KB, 下载次数: 37)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-12-22 11:14 , Processed in 0.048191 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表