void Get_HzMat(unsigned char *code,unsigned char *mat,u8 size)
{
FIL fsrc; // 定义文件操作类
FRESULT res; // 定义操作结果变量
UINT br; // 定义读写数量变量
unsigned char qh,ql;
unsigned char i;
unsigned long foffset;
qh=*code;
ql=*(++code);
if(qh<0x81||ql<0x40||ql==0xff||qh==0xff)//非 常用汉字
{
for(i=0;i<(size*2);i++)*mat++=0x00;//填充满格
return; //结束访问
}
if(ql<0x7f)ql-=0x40;//注意!
else ql-=0x41;
qh-=0x81;
foffset=((unsigned long)190*qh+ql)*(size*2);//得到字库中的字节偏移量
if(size==16)
{
res = f_open(&fsrc, "0:/SYSTEM/FONT/GBK16.FON", FA_OPEN_EXISTING | FA_READ); //打开字库文件
if(res != FR_OK)
{
}
res = f_lseek(&fsrc,foffset); //找到首地址
res = f_read(&fsrc, mat, 32, &br);
res = f_close(&fsrc); //关闭字体
}
else
{
res = f_open(&fsrc, "0:/SYSTEM/FONT/GBK12.FON", FA_OPEN_EXISTING | FA_READ); //打开字库文件
if(res != FR_OK)
{
}
res = f_lseek(&fsrc,foffset); //找到首地址
res = f_read(&fsrc, mat, 24, &br);
res = f_close(&fsrc); //关闭字体
}
}
把这个函数改成这样就行,试着读了一下电子书,速度稍微有点慢,还算不错。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
这个怎么没有24*24字体的,这个应该怎么改呢?
res = f_open(&fsrc, "0:/SYSTEM/FONT/GBK24.FON", FA_OPEN_EXISTING | FA_READ); //打开字库文件
if(res != FR_OK)
{
}
res = f_lseek(&fsrc,foffset); //找到首地址
res = f_read(&fsrc, mat, 72, &br);
res = f_close(&fsrc); //关闭字体
我改成这样,读出来乱码了!
一周热门 更多>