bozai 发表于 2007-1-8 16:02:17

GB2312字库制作方法

今天花了几个小时做了一下汉字的字库,以前做过16*16点阵的字库但是花了很长时间。现在摸索出简单的方法供大家参考。希望对大家有所帮助。

点击此处下载armok01140782.rar

上面上传的这个文件里包含了一下内容:

st12.bin 和 st16.bin 为宋体字库

kt12.bin 和 kt16.bin 为楷体字库

ziku.txt为按顺序写有8178个汉字和字符的txt文档

ziku.exe 我写的一个小程序,配合“牧马字模0.84测试版”生成bin文件。

“牧马字模0.84测试版”程序在本站

http://www.ouravr.com/es_lcd_chinese_pixel_generat_software.html



现在说一下字库制作方法。

1)打开“牧马字模0.84测试版”程序

2)打开文件ziku.txt(上传的那个文件)

3)选择你要的取模方式和大小然后按上方“输出”按钮 并等待其完成

4)保存文件 例如 字库.txt

5)把ziku.exe(上传的程序)复制到4)中文件保存的地方

6)在cmd窗口里进入文件路径 按下图操作



http://cache.amobbs.com/bbs_upload782111/files_6/armok01140784.JPG



最后就会生成一个ziku.bin文件,这个就是你需要的文件。



不会MFC只写了个命令行程序,大家凑合着用吧。

fsclub 发表于 2007-1-8 18:12:34

沙发1!!!!!

poppush 发表于 2007-1-8 18:22:48

恩 好的谢谢



为什么输入“新建文件夹”输出时文字排列就不对了?



http://cache.amobbs.com/bbs_upload782111/files_6/armok01140798.JPG


-----此内容被poppush于2007-01-08,18:43:02编辑过

j_sunny 发表于 2007-1-8 18:25:05

hellokilly 发表于 2007-1-8 20:47:56

想问一下unicode与gb2312的转换原理是怎么样的啊?

win2kddk 发表于 2007-1-8 21:45:07

好,很实用啊。

bozai 发表于 2007-1-8 21:48:04

Sorry 上面发的程序ziku.exe有个bug 我在做GBK字库的时候发现了问题,GB2312没问题。

请下载这个

点击此处下载armok01140819.zip





回2楼

它内部作了排序处理,我这么认为的。因为它并没有打乱我作的按内码顺序放的字库文件。

它这个做法也许是为了你只要显示一段文字(比如一篇文章)中间有重复的字,这样就不许要你去从中挑出不重复的字,你外排好序你在程序中就可以用2分法查找点阵在什么地方。

这样解释应该够全面了吧。(我的个人理解)



回4楼

两者之间的转化这能通过查表,两者没有对应关系。所以要建一张unicode-2312的对照表。

当然如过想节省程序运行时间,要建两张表,分别按照各自的线性关系放,这样就免去查找的所耗的时间了。但是这样字库就会变大。我觉得用空间去换取速度可行。我现在正在做这二者的转换。打算用GBK字库 大概兼容2万多个汉字。

hellokilly 发表于 2007-1-9 08:29:09

bozai的回复总是这个急时



通过一张对照表

那这个对照表它的原理是怎么样的啊?

如果我知道一个汉字的unicode码,怎么样在对照表里面找到对应的gb2312码?

dgxll 发表于 2007-1-9 08:29:44

好,谢谢

dgxll 发表于 2007-1-9 08:29:44

好,谢谢

cnpollux 发表于 2007-1-9 09:07:36

用龙版的字模3啊

SW7005 发表于 2007-1-9 09:21:14

谢谢

lrzxc 发表于 2007-1-9 09:40:19

好教程,我顶

bozai 发表于 2007-1-9 09:51:51

回7楼:

只要弄一张这样的表,如2312-unicode 把2312对应的unicode码按照2312的顺序存放,因为2312的存放是有顺序的,只要根据汉字的内码计算出汉字在这张表的偏移量然后到这张表相应的位置找就可以了。

bozai 发表于 2007-1-9 10:10:18

10楼:

我通过你在c51bbs上的回的帖了

http://www.c51bbs.com/product/zimo3.htm

好软件,但是要收费。不然批量生成字模会在字中央加一道横线。

hellokilly 发表于 2007-1-9 11:11:17

那就是说这个转换表的大小应该跟GB2312的大小是一样的咯.

因为uicode和gb2312的都是2字节. 根据汉字的内码在转换表里面找到对应的UNICODE的编码?

那样好大啊gb2312有262K吧.怎么我看到有一些说转换表才8K呢?

bozai 发表于 2007-1-9 11:18:26

262K那是点阵文件,一个汉字32个字节的数据。

8K的转换表可能是一级字库的转换表,整个2312的转换表应该有16K 即约8K个汉字。

hellokilly 发表于 2007-1-9 18:52:11

还有不太懂啊

把2312对应的unicode码按照2312的顺序存放.

就把一个汉字来说;"啊"对应的机内码就知道,然后转换成区位码,然后按区位码在点阵字库里面找对应的点阵数据.

但是现在知道"啊"的unicode码,通过什么方法在转换表中找到它的机内码或者区位码呢?

转换的原理.

wxb1986527525 发表于 2007-1-9 19:02:37

晕,那个UNICODE与GB2312的表是这样的,按照GB2312中汉字的顺序存放了相应汉字的UNICODE编码,你知道了“啊“的UINCODE后,查这个表,发现它存放在第一个位置,那么说明这个汉字就是GB2312汉字库的第一个区的第一个汉字!知道它是GB2312的第一个字之后,它的区位码也就知道了。

hellokilly 发表于 2007-1-9 20:00:21

那这样的话 我不是知道一个unicode编码就要遍历这个查找表才有可能找到我需要的gb2312的编码啊?(如果是gb2312的最后一个汉字)

bozai 发表于 2007-1-9 20:20:40

所以要做两张表啊,一张2312的 一张unicode的。

做mp3只要知道unicode怎么转成2312,如果真正做文件系统当然两张都要了。

zqljg 发表于 2007-8-31 16:32:59

楼主的这种东西有用啊,比hzk16,hzk12这两种文件特定的取模方式有用多了,根据不同的液晶驱动算法去得出不同的汉字库,的确利害,不过就是不知道如何得到比较全面的中字TXT,谢!实在感谢!

shalixi 发表于 2007-12-17 09:53:08

top

zxq6 发表于 2007-12-17 09:59:43

谢谢。

stevenlu 发表于 2007-12-17 10:17:54

不错的东东,做个记号。以后也许用得着

chuanhuibh 发表于 2007-12-17 23:27:39

波仔好贴多啊

caai2005 发表于 2007-12-24 13:19:38

我在玩GPRS模块的时候也碰到了unicode码可我对些码还不熟悉 楼主可以指点下在哪能查到相关的入门资料吗???谢谢

1235679 发表于 2008-1-21 23:34:15

其它外文字体:如日文、韩文能效仿做么?

bozai 发表于 2008-1-22 01:50:09

to 【26楼】 caai2005
    看另一个帖子

to 【27楼】 1235679
    这个帖子里的是不行的,如果你学会我处理这个问题的思路应该会很容易。

511cxl 发表于 2008-2-21 16:42:25

楼主,看了上面几楼的讨论,我萌生了一个问题,既然是在知道汉字unicode码情况下查找此汉字对应的GB2313码,
那我们只要按汉字unicode码的大小顺序存放GB2313码,不就可以很简单的找到吗?

bozai 发表于 2008-2-21 18:27:41

to 【29楼】 511cxl
    我就是这样做的呵,不过这戏码不是所有的都能找的全.

CN.Cn 发表于 2008-2-21 22:40:36

留个脚印

njchenmin 发表于 2008-5-2 07:57:00

我也留个位置,有空仔细拜读。

chhaich 发表于 2008-5-2 11:00:21

留个脚印

suncq 发表于 2008-5-3 09:51:45

记下

xingzhang 发表于 2008-5-3 12:32:20

不顶不行

yibin818 发表于 2008-5-3 12:47:18

pcwinner 发表于 2008-5-3 15:12:07

记号..........

weiwgml 发表于 2008-5-3 17:39:53

有用,收下

yangyi 发表于 2008-5-4 16:03:17

留个脚印

xscn1986 发表于 2008-8-30 11:18:30

请教一下,我在做字库的时候,按照bozai的方法打开cmd的命令,输入相应路径,结果就打开了相应的文件,并没有创建文件

shdzbsl 发表于 2008-8-30 16:07:53

请看楼主位图片的第8行。
不是直接输入文件的路径(...\GB2312>宋体.txt)而是要输入命令(...\GB2312>ziku 宋体.txt)。

draapho 发表于 2008-8-30 16:23:16

thanks!真打算做12x16的字库呢

sws222 发表于 2008-8-30 16:31:40

试试

pcwinner 发表于 2008-8-30 20:58:00

自己做字库爽呀

af00 发表于 2008-8-30 21:21:14

mark,谢谢

huamao 发表于 2008-9-6 00:02:37

很好很方便

thoro_avr 发表于 2008-9-6 07:58:03

up

afctl 发表于 2008-9-6 12:31:34

记号

minier 发表于 2008-9-6 21:13:56

强,实用

626986 发表于 2008-9-6 22:25:50

farmer 发表于 2008-10-29 16:30:47

mark!

sunhot 发表于 2008-10-29 13:53:46

mark!

yaya001 发表于 2008-10-29 13:33:28

mark

thefrogking 发表于 2008-10-29 09:54:34

学习

xiaowenge 发表于 2008-9-16 20:41:11

akin 发表于 2009-3-13 10:56:38

我的字库直接放LPC2387的片内FLASH里面, 字库和代码是分别烧进去的,
先用用BIN文件转换到 0x40000基址上的HEX文件,然后用ISP下载进去。

用下面的一条语句就可以找到字库位置,速度相当快
#define        GB2312_ZK_BASE        0x40000// 字库大小192KB, 放在高256K区
unsigned char *p = (unsigned char *)(GB2312_ZK_BASE + ((((hiByte - 0xa1) * 94) + (loByte - 0xa1)) * 24));

hiByte 和 loByte 分别是字体内码的高低字节

AWEN2000 发表于 2009-3-13 11:07:33

unicode 和汉字编码没有线形的公式,也就是无法通过运算转换,只能查表

pinocchio 发表于 2009-3-13 11:37:11

mark

hiux 发表于 2009-3-19 15:15:29

英文和特殊字符是怎么寻址?

lndlzwp 发表于 2009-3-29 23:48:39

正好要用到。谢谢!!

yaonui 发表于 2009-3-30 13:11:30

收藏先

wangff2531 发表于 2009-4-8 14:50:14

好东西收藏了

mysky 发表于 2009-4-8 15:20:20

mark

wangff2531 发表于 2009-4-11 16:52:43

GB2312字库制作方法

zsl602 发表于 2009-4-12 08:50:22

收藏了,有空好好看看

tkdr2001 发表于 2009-4-12 23:58:19

收藏一个先:)

shouwangzhe 发表于 2009-4-15 20:52:47

正在学习GSM无线点阵屏!
Unicode码子是解析出来了,可不知道在程序中怎么使用BIN中的内容!

Ideal-007 发表于 2009-7-25 15:44:59

mark,
谢谢波仔

ideality0214 发表于 2009-7-26 22:38:10

fan313220 发表于 2009-8-9 13:35:22

mark

wuqi716 发表于 2009-8-11 17:31:58

marmk

hailiyidishui 发表于 2009-8-11 18:02:25

mark,真的是好东西啊。太好了。千万不要沉了。
虽然关键是牧马字模强大,但是楼主的这个小工具太实用了。

jchqxl 发表于 2009-8-25 21:18:37

谢谢BOZAI

hlei5202008 发表于 2009-9-7 18:25:01

为什么我总是无法生成那个BIN文件?
ziku.exe我也放在ziiku.txt一起了!!!用cmd打开总是只打开ziku.txt记事本!!!

tanguoyong 发表于 2009-9-7 21:14:55

谢谢BOZAI

flyan.oo 发表于 2009-9-15 21:29:32

非常好的软件啊!!

51hubao 发表于 2009-9-20 14:38:35

m

sem521562 发表于 2009-12-3 22:13:23

终于找到,合适的了。

12fen 发表于 2009-12-3 23:42:38

mark

pk.luo 发表于 2010-3-6 19:35:29

好东西啊

wcm_e 发表于 2010-3-6 21:28:43

mark

bluelool 发表于 2010-3-7 14:02:09

mark

avrwoo 发表于 2010-3-7 14:06:35

mark

liitom 发表于 2010-3-10 16:55:07

mark

chys01 发表于 2010-3-10 20:09:59

好东西

loongsuns 发表于 2010-3-18 09:43:07

mark

orange2348 发表于 2010-3-18 11:36:30

mark

hkap 发表于 2010-3-18 11:50:26

收藏备用,谢谢

stoneee 发表于 2010-3-18 14:34:38

好。

在UE里编辑中文,然后改成hex编辑。
这个是什么方式呢?

mghy201 发表于 2010-3-18 15:05:22

我这里也有一个多国字库生成软件,可是怎么才能上传呢???

zhames 发表于 2010-3-18 15:17:04

dig

sem521562 发表于 2010-3-18 19:07:24

回去试一下。

twlkzxy 发表于 2010-3-18 21:02:46

hsztc 发表于 2010-3-18 22:07:02

56楼的这段更有价值,我有库但是不会用。。。

#define GB2312_ZK_BASE 0x40000// 字库大小192KB, 放在高256K区
unsigned char *p = (unsigned char *)(GB2312_ZK_BASE + ((((hiByte - 0xa1) * 94) + (loByte - 0xa1)) * 24));

hiByte 和 loByte 分别是字体内码的高低字节

这个怎么算的?

czz777 发表于 2010-3-19 12:39:43

支持楼主。

dongtengfei 发表于 2010-3-22 16:03:43

谢谢波仔的软件 弄了一下午 呵呵

cgbabc 发表于 2010-3-22 16:37:19

顶一个

guke 发表于 2010-3-27 20:38:11

收藏了

zmkj520 发表于 2010-3-27 21:06:22

mark
页: [1] 2 3
查看完整版本: GB2312字库制作方法