汉字处理
现在要解决的问题是,嵌入式系统中经常要使用的并非是完整的汉字库,
往往只是需要提供数量有限的汉字供必要的显示功能。例如,一个微波炉的
上没有必要提供显示电子邮件的功能;一个提供汉字显示功能的空调的
上不需要显示一条短消息,诸如此类。但是一部手机、小灵通则通常需
要包括较完整的汉字库。
如果包括的汉字库较完整,那么,由内码计算出汉字字模在库中的偏移是
十分简单的:汉字库是按照区位的顺序排列的,前一个字节为该汉字的区号,
后一个字节为该字的位号。每一个区记录 个汉字,位号则为该字在该区中
的位置。因此,汉字在汉字库中的具体位置计算公式为:区号位号
。减 是因为数组是以 为开始而区号位号是以 为开始的。只需乘上一个
汉字字模占用的字节数即可,即:区号位号一个汉字字模占用
字节数,以 点阵字库为例,计算公式则为:区号位号
。汉字库中从该位置起的 字节信息记录了该字的字模信息。
对于包含较完整汉字库的系统而言,我们可以以上述规则计算字模的位置。
但是如果仅仅是提供少量汉字呢?譬如几十至几百个?最好的做法是:
定义宏:
!"#$
%&'!"#$!"#$(
)&'!"#$!"#$(
定义结构体:
*+,-.*/$0*12$203-3*4
5
6 !"#$78内码 8
9:"*";<78字模点阵 8
=%2037
&) %>?8汉字数量 8
字模的存储用数组:
%2030@2.;&) %><A
5
5
业
%&'4"
54( 4( 4( 4( 4( 4( 4( 4( 4(
评论0