字库中字节的偏移量计算方法

void	Get_GBK_DZK(uint8_t *code, uint8_t *hzdata, uint16_t size)
{
 	uint8_t GBKH,GBKL;               // GBK码高位与低位					  
 	uint32_t offset; 	         // 点阵偏移量
	
 	GBKH=*code;
 	GBKL=*(code+1);	     // GBKL=*(code+1);
 	if(GBKH>0XFE||GBKH<0X81)return;
 	GBKH-=0x81;
	if(GBKL<0X7F)
		GBKL-=0X40;
	else 	GBKL-=0x41;
 	offset=(uint32_t)((190*GBKH+GBKL)*size); //得到字库中的字节偏移量 
	
	switch(LCD_Currentfonts)
	{
		case 16: get_data_from_file("0:gbk16s.bin",hzdata,offset,size); break;
		case 24: get_data_from_file("0:gbk24s.bin",hzdata,offset,size); break;
	}	  
 	return;
}

GB2312收录简化汉字及符号、字母、日文假名等共7445 个图形字符,其中汉字占6763 个。

当GBKL<0X7F 时:Hp=((GBKH-0x81)×190+GBKL-0X40)×(sizex2);

当GBKL>0X80 时:Hp=((GBKH-0x81)×190+GBKL-0X41)×(sizex2);

其中GBKH、GBKLL 分别代表GBK 的第一个字节和第二个字节(也就是高位和低位),size 代表汉字字体的大小(比如16 字体,24字体等),Hp 则为对应汉字点阵数据在字库的偏移地址。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值