打印

字库芯片汉字内码计算

[复制链接]
1062|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
guyan1987|  楼主 | 2015-7-12 12:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新手使用字库芯片(如GT23L32S4W),表示对数据手册中汉字地址计算有疑惑,计算公式如:
函数:unsigned long gt(unsigned char c1, unsigned char c2, unsigned char c3, unsigned char c4)
功能:计算汉字点阵在芯片中的地址
参数: c1,c2,c3,c4: 4 字节汉字内码通过参数 c1,c2,c3,c4 传入,双字节内码通过参数 c1,c2 传入, c3=0,c4=0
返回:汉字点阵的字节地址(byte  address)。如果用户是按  word  mode  读取点阵数据,则其地址(word
address)为字节地址除以 2,即:word address = byte address / 2 .
例如:BaseAdd:  说明汉字点阵数据在字库芯片中的起始地址,即 BaseAdd=0x0000;
“啊”字的内码为 0xb0a1,则 byte address = gt(0xb0,0xa1,0x00,0x00) *24+BaseAdd
word address = byte address / 2
“   ”字的内码为 0x8139ee39,则 byte address = gt(0x81,0x39,0xee,0x39) *24+ BaseAdd
word address = byte address / 2
****************************************************************************************************/
static uint32_t gt(uint8_t c1, uint8_t c2, uint8_t c3, uint8_t c4)
{
uint32_t h=0;
if(c2==0x7f)
{
  return (h);
}
            
if(c1>=0xA1 && c1 <= 0Xa9 && c2>=0xa1)       //Section 1
{
  h= (c1 - 0xA1) * 94 + (c2 - 0xA1);
}
else if(c1>=0xa8 && c1 <= 0xa9 && c2<0xa1)     //Section 5
{
  if(c2>0x7f)
  c2--;                              
  h=(c1-0xa8)*96 + (c2-0x40)+846;  
}
if(c1>=0xb0 && c1 <= 0xf7 && c2>=0xa1)       //Section 2
{
  h= (c1 - 0xB0) * 94 + (c2 - 0xA1)+1038;
}
else if(c1<0xa1 && c1>=0x81 && c2>=0x40 )     //Section 3
{
  if(c2>0x7f)
  c2--;
  h=(c1-0x81)*190 + (c2-0x40) + 1038 +6768;
}
else if(c1>=0xaa && c2<0xa1)                 //Section 4
{
  if(c2>0x7f)
  c2--;                              
  h=(c1-0xaa)*96 + (c2-0x40) + 1038 +12848;
}
else if(c1==0x81 && c2>=0x39) //四字节区 1
{
  h =1038 + 21008+(c3-0xEE)*10+c4-0x39;
}
else if(c1==0x82)//四字节区 2
{
  h =1038 + 21008+161+(c2-0x30)*1260+(c3-0x81)*10+c4-0x30;
}
return(h);
}
对于这个汉字内码,如何获取,甚是不解?望大神不吝赐教! (总不会用取内码软件,去的汉字内码,然后封装在一个数组里,需要显示就去调用数组?)

相关帖子

沙发
guyan1987|  楼主 | 2015-7-12 12:49 | 只看该作者
希望有做过的前辈,指点下迷途中的晚生!最好来段取取DEMO的例程!;P

使用特权

评论回复
板凳
guyan1987|  楼主 | 2015-7-13 16:18 | 只看该作者
没人给回复...

使用特权

评论回复
地板
cuya| | 2015-7-13 22:01 | 只看该作者
如果是字库芯片, 你最好去问厂商。
我想大多数嵌入式应用都是直接生成字库, 这样更灵活方便些。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

133

帖子

2

粉丝