打印

请教关于字模提取的若干问题

[复制链接]
5115|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
天雨粟|  楼主 | 2009-2-5 18:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
试用VB编了一个小程序,希望通过文本框输入汉字及ASC字符(100个汉字或200个ASC字符),运行程序,获得汉字及ASC字符的点阵码。程序尚能运行,但不知取的模是否对。为了验证之,我从网上下了三款字模提取软件,分别对“你”的字模进行提取,差异存在,似乎还很巨大。我用的字库是HZK16及ASC16。我曾用PC TO LCD2002提取字模,直接烧录到单片机里,显示效果还是很满意的。
我想问的是,差异是如何造成的?是字库不同引起的吗?字库有标准吗?通过观察字模形状,PC TO LCD2002取的模其模样显然比其它两款要酷一些,他是否有秘藏不宣的字库,还是在HZK16上进行了软件修饰?其算法是怎样?极想得到一款能提取中英文字模的范例程序源码(VB下),不知能否共享?

以下是不同取模软件对同一汉字取出的字模:

 “你”的字模
畔畔字模提取软件提取:
0x11,0x00,0x11,0x00,0x11,0x00,0x23,0xFC,0x22,0x04,0x64,0x08,0xA8,0x40,0x20,0x40,0x21,0x50,0x21,0x48,0x22,0x4C,0x24,0x44,0x20,0x40,0x20,0x40,0x21,0x40,0x20,0x80
经过观察属逐行式、高位在前顺序取模的模式

字模.EXE提取:
0x11,0x00,0x11,0x00,0x11,0x00,0x23,0xFC,0x22,0x04,0x64,0x08,0xA8,0x40,0x20,0x40,0x21,0x50,0x21,0x48,0x22,0x4C,0x24,0x44,0x20,0x40,0x20,0x40, 0x21,0x40,0x20,0x80

PC TO LCD2002提取:(设置为逐行式,高位在前的顺序取模方式)
{0x09,0x00,0x09,0x80,0x11,0x04,0x13,0xFE,0x22,0x04,0x34,0x48,0x68,0x40,0xA2,0x50},0x23,0x48,0x22,0x48,0x24,0x44,0x24,0x46,0x28,0x44,0x21,0x40,0x20,0x80,0x00,0x00},/*"你",0*/

自编程序提取的字模:
11 00 11 00 11 00 23 FC 22 04 64 08 A8 40 20 40 21 50 21 48 22 4C 24 44 20 40 20 40 21 40 20 80 00 00 

相关帖子

沙发
hotpower| | 2009-2-5 19:18 | 只看该作者

???

使用特权

评论回复
板凳
hotpower| | 2009-2-5 22:01 | 只看该作者

这个要掌握区位码,HZK16及ASC16很好提取

94个区94个位
HZK16为16*16,即2*8*16=2*16字节 即每个汉字32个字节

使用特权

评论回复
地板
天雨粟|  楼主 | 2009-2-5 22:27 | 只看该作者

请教前辈

如果汉字的话,取模基本上是对的,而ASC字符用上程序去取,却是错误的,我逐语句执行过这个程序,ASC码码值能正确取出来,但到ASC16点阵库中取模时就不对了,VB的数据结构太复杂,一时掌握不了,您看上面的程序基本思路是否正确,如何进行修改?

使用特权

评论回复
5
hotpower| | 2009-2-5 22:31 | 只看该作者

时间久远都忘了,估计是字库不对

使用特权

评论回复
6
天雨粟|  楼主 | 2009-2-5 22:39 | 只看该作者

我已经换过字库了,问题在哪里呢?

有时间时编程把ASC16中的内容读出来,看是否正确。
再则ASC字符文本格式的点阵码易求得,考虑不用ASC16文件,再试试!

使用特权

评论回复
7
天雨粟|  楼主 | 2009-2-6 17:48 | 只看该作者

已DEBUG了一个明显错误,问题仍未解决

ASC点阵库的定位有问题,求得码值后,减掉&H20,此时当乘以16,才能得到字符在库中对应的点阵首地址.
如此改正后,仍未得到正确结果.

VB下初始化数组极为困难,原先想将文本格式的ASC点阵字节集直接写入数组,避免进行文件操作,由于无法写入,只得放弃.

通过编写程序,顺序读出ASC16中的数据,与书上查到的文本格式的点阵字符集大相径庭,却与用改正后的程序求得的字模相同,初步判断是ASC16文件有问题,想求一个好用的ASC16文件,烦各位老师给予指导帮助!

使用特权

评论回复
8
xwj| | 2009-2-6 17:56 | 只看该作者

是吗?把PC TO LCD2002软件打包传上来看看啊

 天雨粟 发表于 2009-2-5 18:57 侃单片机 ←返回版面    

楼主: 请教关于字模提取的若干问题 

试用VB编了一个小程序,希望通过文本框输入汉字及ASC字符(100个汉字或200个ASC字符),运行程序,获得汉字及ASC字符的点阵码。程序尚能运行,但不知取的模是否对。为了验证之,我从网上下了三款字模提取软件,分别对“你”的字模进行提取,差异存在,似乎还很巨大。我用的字库是HZK16及ASC16。我曾用PC TO LCD2002提取字模,直接烧录到单片机里,显示效果还是很满意的。
我想问的是,差异是如何造成的?是字库不同引起的吗?字库有标准吗?通过观察字模形状,PC TO LCD2002取的模其模样显然比其它两款要酷一些,他是否有秘藏不宣的字库,还是在HZK16上进行了软件修饰?其算法是怎样?极想得到一款能提取中英文字模的范例程序源码(VB下),不知能否共享? 
 

使用特权

评论回复
9
天雨粟|  楼主 | 2009-2-6 18:34 | 只看该作者

回xwj老师

我刚在网上查了资料,我对ASC16文件的使用有误,定位法不能减&H20,直接用码值乘以16再加1即可定位ASC字符的点阵首地址,程序运行结果与网上C语言程序运行结果完全一致,但与PC TO LCD2002给出结果不同,不知是什么原因.
我对电脑基本上是盲,KEIL软件都是请朋友帮忙安装的,至于怎样将PC TO LCD2002打包传上来,不太会操作,烦您指点,努力试下!

使用特权

评论回复
10
天雨粟|  楼主 | 2009-2-6 18:54 | 只看该作者

先将其文本文件(使用说明)传上来

在正式版中,用户可生成自己需要的各种小字库,也可以生成自定义的国标一二级汉字库。
0.生成自定义的小字库:
  0.使用PCTOLCD的各种调整功能调整出您需要的文字样式,如字体,字样(下划,倾斜,加
粗),大小(各种点阵大小的字体,可锁定点阵本身大小(如16*16),然后在这个固定的点阵大小
内调节文字的大小(例如在16*16的点阵中居中显示12*12大小的汉字)
  1.将您需要的汉字和符号集中形成一个文本文件
  2.使用“导入文本”的按钮
  3.确认“生成二进制字库”被选中(建议选中"生成索引文件"原因后析)
  4.点“开始生成”按钮,选择生成的字库文件名
  5.然后耐心等待一段时间(与处理文本大小有关),在此期间建议不要动键盘和鼠标。
  6.字库生成完毕.

1.生成国标一二级汉字库
  0.使用PCTOLCD的各种调整功能调整出您需要的文字样式,如字体,字样(下划,倾斜,加
粗),大小(各种点阵大小的字体,可锁定点阵本身大小(如16*16),然后在这个固定的点阵大小
内调节文字的大小(例如在16*16的点阵中居中显示12*12大小的汉字).
  1.使用“导入文本”的按钮
  2.点右下角"生成国标汉字库"按钮.
  3.选择字库文件名后单击确定
  4.耐心等待一段时间后既得到生成的汉字库(时间视具体机器而定).

生成汉字库结构介绍
 本软件使用的汉字库采用与HZK16相近似的结构,即按照输入汉字的顺序依次排列各汉字的
点阵数据,以生成的16*16点阵汉字库举例介绍
  16*16点阵汉字库
点阵大小16*16,所以每个汉字点阵数据占用32个字节.用户要使用生成的16*16点阵小字库中
的点阵数据,可以在程序中采用如下算法:
    0.在生成的字库汉字列表中得到该汉字的偏移量,也就是汉字的记录号HzNum
    1.将其*32(HzNum*32)即可得出该汉字点阵在字库中的偏移地址.
    3.以这个偏移地址为起点,连续读取文件中的32个字节,既为该汉字的点阵信息.

实际上,对于本软件生成的16*16点阵的国标汉字库是采用区位码排列的,所以与标准的HZK16
结构是一样的,完全可以互换使用.

例如生成一个24*48点阵,楷体,倾斜的汉字库,
    0.由于每个汉字占用24*48/8= 144个字节,所以用户可先读取生成的索引列表找到该汉
字的记录号.
    1.将记录号*144即得到该汉字在字库中的偏移地址.
    2.以这个偏移地址为起点,在字库文件中连续读取144个字节,即为该汉字的点阵信息.


对于其他点阵汉字库的使用方法,可以依次类推……


当然,如果不选中“生成二进制字库”的复选框,生成的字库将是文本格式的字模数据,采
用那种方式完全取决于您的需要了


完美版新增生成英文点阵字库功能,使用方法同上。
 

使用特权

评论回复
11
asdx147258| | 2011-9-14 14:09 | 只看该作者
谢谢

使用特权

评论回复
12
WJ20110308| | 2012-5-2 21:02 | 只看该作者
:P

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

168

帖子

0

粉丝