打印

有前辈制作过GBK汉字字库吗?地址计算公式是怎么样的?

[复制链接]
4071|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
redcar|  楼主 | 2012-11-19 20:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
取点阵Mold.rar (29.21 KB) GBK全文本TXT.rar (43.58 KB)
这2个文本文件是按照编码顺序排列的,gbk-gb18030.txt 是 根据 中国GBK码与Unicode码及原字形对照表.txt去掉无关字符排列的.
现在想用牧马字符这类的 文本文件转 点阵工具来转换,
转换结果成功,但是 计算汉字在 点阵库中的地址公式不明

网上找了个这个
我们把第一个字节代表的意义称为区,那么GBK 里面总共有126 个区(0XFE-0X81+1 ),
每个区内有 190 个汉字(0XFE-0X80+0X7E-0X40+2 ),总共就有 126*190=23940 个汉字。我
们的点阵库只要按照这个编码规则从 0X8140  开始,逐一建立,每个区的点阵大小为每个汉字
所用的字节数*190。这样,我们就可以得到在这个字库里面定位汉字的方法:

        当GBKL<0X7F 时:Hp=((GBKH-0x81)*190+GBKL-0X40)*(size*2) ;
        当GBKL>0X80 时:Hp=((GBKH-0x81)*190+GBKL-0X41)*(size*2) ;

    其中GBKH、GBKL 分别代表GBK 的第一个字节和第二个字节(也就是高位和低位) ,size
代表汉字字体的大小(比如16 字体,12 字体等),Hp 则为对应汉字点阵数据在字库里面的起
始地址(假设是从0 开始存放) 。

结果发现,字库前面部分,也就是 gb2312字符之前的,编号 0-6079 的汉字 正常
之后的,就错乱了,不知道公式了
求大侠指点

相关帖子

沙发
NE5532| | 2012-11-19 22:31 | 只看该作者
chinese:
        ld        xwa,0
        ld        xbc,0
        ld        a,(xix)
        sub        xwa,0xB0
        mul        xwa,94
        inc        1,xix
        ld        c,(xix)
        sub        xbc,0xA1
        add        xbc,xwa
        mul        xbc,15
        add        xbc,zikuadr+0x6AE

TOSHIBA的汇编写的,先看下看懂不,16*16点

使用特权

评论回复
板凳
redcar|  楼主 | 2012-11-20 08:24 | 只看该作者
啊??!!
看不懂汇编啊,麻烦前辈弄成C语言啊

使用特权

评论回复
地板
NE5532| | 2012-11-20 11:19 | 只看该作者
晚上回去给你翻译了。

使用特权

评论回复
5
Levi_NO1| | 2015-7-21 11:46 | 只看该作者
mark一下

使用特权

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

本版积分规则

20

主题

228

帖子

2

粉丝