新手上路
- 积分
- 41
- 金钱
- 41
- 注册时间
- 2014-7-20
- 在线时间
- 1 小时
|
5金钱
//ftinfo.f12addr=ftinfo.ugbkaddr+ftinfo.ugbksize; //UNIGBK之后,紧跟GBK12字库
//ftinfo.ugbkaddr=FONTINFOADDR+sizeof(ftinfo); //信息头之后,紧跟UNIGBK转换码表
//#define FONTINFOADDR (4916+100)*1024
//sizeof(ftinfo);是ftinfo结构体数据的长度其值为33
#define f12addr (4916+100)*1024+33+174344
#define f16addr (4916+100)*1024+33+174344+574560
#define f24addr (4916+100)*1024+33+174344+574560+766080
//code 字符指针开始
//从字库中查找出字模
//code 字符串的开始地址,GBK码
//mat 数据存放地址 (size/8+((size%8)?1:0))*(size) bytes大小
//size:字体大小
void Get_HzMat(unsigned char *code,unsigned char *mat,u8 size)
{
unsigned char qh,ql;
unsigned char i;
unsigned long foffset;
u8 csize=(size/8+((size%8)?1:0))*(size);//得到字体一个字符对应点阵集所占的字节数
qh=*code;
ql=*(++code);
if(qh<0x81||ql<0x40||ql==0xff||qh==0xff)//非 常用汉字
{
for(i=0;i<csize;i++)*mat++=0x00;//填充满格
return; //结束访问
}
if(ql<0x7f)ql-=0x40;//注意!
else ql-=0x41;
qh-=0x81;
foffset=((unsigned long)190*qh+ql)*csize; //得到字库中的字节偏移量
switch(size)
{
case 12:
SPI_Flash_Read(mat,foffset+f12addr,24);
break;
case 16:
SPI_Flash_Read(mat,foffset+f16addr,32);
break;
case 24:
SPI_Flash_Read(mat,foffset+f24addr,72);
break;
}
}
字库的地址定义的对吗?为什么显示不了汉字,编译没有错误
174344 是unigbk大小通过右键属性得到
574560 同理是gbk12大小
请赐教
|
|