液晶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) 我也想知道不知道这些字库怎么用
我都是自己用区字模软件取好字模在程序中调用的,但是这样汉字就很少了 而且用起来也不方便
万能的坛啊,给我指条道吧 顶吧~~高手快来帮忙呀!! 看GBK编码, 根据编码计算点阵数据地址.
例:X1X2
if ( X2 >= 0xA1 )
{
X2 -= 0xA1;
}
12点阵:
adr = ((X1-0xA1)*94 + X2)*24
16点阵:
adr = ((X1-0xA1)*94 + X2)*32 有用的资料 马克一下 有没有关连字库...比如输入"中"==>显示"1.国2.央...." 没搞过这个,顶一下。 哎,至于这么麻烦吗,在gui盛行的时代,看看ucgui的字体生成吧,很简单的。 字体生成工具,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;
} MARK!!! mark------------- ANRK MARK mark 回复【楼主位】maidilong
-----------------------------------------------------------------------
很有用,谢谢 mark mark!! 谢谢。 关注一下,谢谢 关注一下 mark mark 字模地址计算公式:
汉字: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 mark
页:
[1]