maidilong 发表于 2011-6-2 18:17:05

液晶GBK大字库,要的下载

液晶GBK字库比较大,好多生僻的字也会有,所以想用这个字库来做产品,但是网上下载的几个字库文件,没有后缀,不会用呀?请教大侠怎样才能让这些字库变成我们经常用的bin 或 hex文件呢?会的大侠麻烦帮我转换一下,能把转换过程说出来的更好,感谢~!


字库我是从下面这个网址下的:
http://www.hackchina.com/cont/17225

GBK的点阵字库,包括GBK12,GBK14,GBK16和ASC12,ASC14,ASC16-GBK font of dot matrix, including GBK12, GBK14, GBK16 and ASC12, ASC14, ASC16


GBK12+GBK14+GBK16.zi ourdev_645296RGRDEW.zip(文件大小:1.07M) (原文件名:GBK12+GBK14+GBK16.zi (1.07 MB) 源代码下载.zip)

z421868436 发表于 2011-6-2 19:03:52

我也想知道不知道这些字库怎么用
我都是自己用区字模软件取好字模在程序中调用的,但是这样汉字就很少了 而且用起来也不方便
万能的坛啊,给我指条道吧

maidilong 发表于 2011-6-2 20:18:51

顶吧~~高手快来帮忙呀!!

KongQuan 发表于 2011-6-2 20:31:31

看GBK编码, 根据编码计算点阵数据地址.
例:X1X2
if ( X2 >= 0xA1 )
{
   X2 -= 0xA1;
}

12点阵:
adr = ((X1-0xA1)*94 + X2)*24

16点阵:
adr = ((X1-0xA1)*94 + X2)*32

polar 发表于 2011-6-3 00:24:00

有用的资料 马克一下

j-link 发表于 2011-6-3 05:36:36

有没有关连字库...比如输入"中"==>显示"1.国2.央...."

hetao7241 发表于 2011-6-3 08:12:26

没搞过这个,顶一下。

258963519 发表于 2011-6-3 12:39:37

哎,至于这么麻烦吗,在gui盛行的时代,看看ucgui的字体生成吧,很简单的。

258963519 发表于 2011-6-3 12:44:44

字体生成工具,windows7可以运行,xp没有测试ourdev_645499EJD6OK.rar(文件大小:41K) (原文件名:FontGen.rar)
附上解码程序,有需要的人可以研究下
U8 FSGUI_DrawCharPixelNormal(U16 CharIndex,U16 x,U16 y)
{
        U8 CharHighRead,CharWidthRead;
        U16 CharMemLenPer,CharAreaNumRead,CharAreaStart,CharAreaEnd;
        U32 CharDataPos,i,i2,j,px,Displayx,Displayy;
        U8 CharPoint;

        FSGUI_DriveActual->FontOper->FONTDataGoto(2*sizeof(U8));
       
        FSGUI_DriveActual->FontOper->FONTDataRead(&CharHighRead,sizeof(U8));
        FSGUI_DriveActual->FontOper->FONTDataRead(&CharWidthRead,sizeof(U8));

        CharMemLenPer=((CharHighRead+7)/8)*CharWidthRead+2;

        FSGUI_DriveActual->FontOper->FONTDataRead((U8*)&CharAreaNumRead,sizeof(U16));

        CharDataPos=CharAreaNumRead*4+6;

        for(i=0;i<CharAreaNumRead;i++)
        {
                FSGUI_DriveActual->FontOper->FONTDataRead((U8*)&CharAreaStart,sizeof(U16));
                FSGUI_DriveActual->FontOper->FONTDataRead((U8*)&CharAreaEnd,sizeof(U16));
               
                if((CharIndex<=CharAreaEnd)&&(CharIndex>=CharAreaStart))
                {
                        CharDataPos+=(CharIndex-CharAreaStart)*CharMemLenPer;

                        FSGUI_DriveActual->FontOper->FONTDataGoto(CharDataPos);
                        FSGUI_DriveActual->FontOper->FONTDataRead(&CharHighRead,sizeof(U8));
                        FSGUI_DriveActual->FontOper->FONTDataRead(&CharWidthRead,sizeof(U8));

                        if(x+CharWidthRead>FSGUI_DriveActual->LCD_SizeH)
                        {
                                //表示不能写字体数据了
                                return 0x0;
                        }
                        else
                        {
                                Displayx=CharWidthRead;
                        }

                        if(y+CharHighRead>FSGUI_DriveActual->LCD_SizeV)
                        {
                                //表示不能写字体数据了
                                return 0x0;
                        }
                        else
                        {
                                Displayy=CharHighRead;
                        }

                        for(i2=0;i2<Displayy;i2++)
                        {
                                FSGUI_DriveActual->FontOper->FONTDataRead(CharPoint,(CharHighRead+7)/8);
                                px=x;
                                for(j=0;j<Displayx;j++)
                                {
                                        if((CharPoint)&(FSGUI_AndValue))
                                        {
                                                FSGUI_DriveActual->LCD_DrawPixelAt(px++,y,FSGUI_DriveActual->ColorFront);
                                        }
                                        else
                                        {
                                                FSGUI_DriveActual->LCD_DrawPixelAt(px++,y,FSGUI_DriveActual->ColorBack);
                                        }
                                }
                                y++;
                        }
                        return Displayx;
                }       
                else
                {
                        CharDataPos+=(CharAreaEnd-CharAreaStart+1)*CharMemLenPer;
                }
        }

        if(x+CharWidthRead>FSGUI_DriveActual->LCD_SizeH)
        {
                //表示不能写字体数据了
                return 0x0;
        }

        if(y+CharHighRead>FSGUI_DriveActual->LCD_SizeV)
        {
                //表示不能写字体数据了
                return 0x0;
        }

        if(CharIndex<0x80)
        {
                Displayx=FSGUI_GetCharWidthMax()/2;
        }
        else
        {
                Displayx=FSGUI_GetCharWidthMax();
        }
        Displayy=FSGUI_TextGetCharHigh();

        for(i2=0;i2<Displayy;i2++)
        {
                FSGUI_DriveActual->FontOper->FONTDataRead(CharPoint,(CharHighRead+7)/8);
                px=x;
                for(j=0;j<Displayx;j++)
                {
                        FSGUI_DriveActual->LCD_DrawPixelAt(px,y,FSGUI_DriveActual->ColorBack);
                        px++;
                }
                y++;
        }
        return Displayx;
}

joing2000 发表于 2011-7-6 14:52:59

MARK!!!

MINI2440 发表于 2011-7-8 15:36:37

mark-------------

jlinkv7 发表于 2011-7-10 16:51:23

ANRK MARK

summerliyang 发表于 2011-7-12 14:40:10

mark

fngcng 发表于 2011-7-15 15:37:04

回复【楼主位】maidilong
-----------------------------------------------------------------------

很有用,谢谢

summerliyang 发表于 2011-7-19 12:59:54

mark

beihai326 发表于 2011-10-3 09:30:40

mark!!

Excellence 发表于 2011-12-1 22:32:01

谢谢。

scutllc 发表于 2011-12-2 11:22:02

关注一下,谢谢

Automaticc 发表于 2011-12-11 11:05:04

关注一下

kiema 发表于 2011-12-11 13:38:59

mark

dingliming 发表于 2011-12-17 10:28:15

mark

KongQuan 发表于 2011-12-27 10:24:08

字模地址计算公式:

汉字:x1x2

gb2312 字库: (x1>=0xA1, x2>=0xA1)
12点阵: ((x1-0xA1)*94 + (x2-0xA1))*24
14点阵: ((x1-0xA1)*94 + (x2-0xA1))*28
16点阵: ((x1-0xA1)*94 + (x2-0xA1))*32

gbk字库: (x1>=0x81, x2>=0x40)
12点阵: ((x1-0x81)*191 + (x2-0x40))*24
14点阵: ((x1-0x81)*191 + (x2-0x40))*28
16点阵: ((x1-0x81)*191 + (x2-0x40))*32

dingliming 发表于 2012-2-29 17:24:30

mark
页: [1]
查看完整版本: 液晶GBK大字库,要的下载