typedef struct typFNT_GB16 // 汉字字模数据结构
{
signed char Index[2]; // 汉字内码索引
char Msk[32]; // 点阵码数据
};
/////////////////////////////////////////////////////////////////////////
// 汉字字模表 //
// 汉字库: 宋体16.dot,横向取模左高位,数据排列:从左到右从上到下 //
/////////////////////////////////////////////////////////////////////////
struct typFNT_GB16 code GB_16[] = // 数据表
{
"爱", 0x00,0x78,0x3F,0x80,0x11,0x10,0x09,0x20,
0x7F,0xFE,0x42,0x02,0x82,0x04,0x7F,0xF8,
0x04,0x00,0x07,0xF0,0x0A,0x20,0x09,0x40,
0x10,0x80,0x11,0x60,0x22,0x1C,0x0C,0x08,
"你", 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
};
void dprintf(uchar col,uchar layer,uchar *ptr)//ASCII的汉字混合显示程序
{
uchar c1,c2;
uchar i,j,k;
uchar ulen;
uchar ucol,ulayer;
ulen=0;
ucol=col;
ulayer=layer;
i=0;
while(ptr[ulen]!='\0') ulen++;//判断字符串的长度
while(i<ulen)
{
c1=ptr[i];
c2=ptr[i+1];
if(c1<=128)//字符和汉字的分界线
{
显示字符的没问题
i++;
}
else
{
for(j=0;j<255;j++)
{
if((c1==GB_16[j].Index[0])&&(c2==GB_16[j].Index[1]))//索引汉字.....这里查找汉字什么就是找不到?
{这里显示汉字什}
}
ucol+=16;
i+=2;
}
}
}
主函数调用dprintf(1,1,“爱你”)时查找不到汉字、还有索引用c1=ptr[i]和第个字,c2=ptr[i+1];算是第二个字了,我有点搞不明白,
一个汉字是有两个内码,但什么把它分出来啊、各位大虾懂的和小弟说说啊?
|