3705|4

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

evc下获取汉字内码后取字模 [复制链接]

Hi,各位,请教一下:
1.在evc下是如何获取汉字的内码的?假设汉字为“房”,其内码为623F,在GB2312则为2331,如果知道GB2312下的内码怎样转换成Unicode下的内码?
2.在CE4.2下,系统的字库文件应该是simsum.ac3(如果我没错的话),那么如何根据内码获取汉字的字模信息(显示点阵信息)?
3.用区位码获取汉字的点阵信息

以16×16的点阵汉字库文件为例。一个汉字用了256个点共32个字节表示。汉字共分94区,每个区有94位汉字。机内码用两个字节表示,第一个字节存储区号(qh),为了和ASCII码相区别,范围从十六进制的A1H开始(小于80H地为ASCII码字符),对应区码的第一区;第二个字节是位号(wh),范围也从A1H开始,对应某区中的第一个位码。这样,将汉字机内码减去A0A0H就得到该汉字的区位码。从而可以得到汉字在字库中的具体位置:

位置=(94*(qh-1) + wh-1) * 一个汉字字模占用的字节数

对于16×16的点阵汉字库,汉字在字库中的具体位置的计算公式就是:(94*(qh-1)+wh-1)*32。例如,“房”的机内码为十六进制的B7BF,则其区位码是B7BFH-A0A0H=171FH,转化为十进制就是2331,在汉字库中的位置就是32*[94*(23-1)+(31-1)]=67136字节以后的32个字节为“房”的显示点阵。

对于这种方法,我试过求出了汉字的区位码,但是按照如下方法在模拟器中取点阵信息:
         if(!file.Open(_T("\\windows\\simsun.ttc"),CFile::modeRead,NULL))
         {
                 AfxMessageBox(_T("error"));
                 return ;
         }
         add = 20013;
         file.Seek(add,CFile::begin);//移动指针到地址处
         file.Read(zima,32);//读取32个字节存到zima数组中

得到的点阵信息并不是对。

以上几个问题希望各位指点一下,呵呵

最新回复

原来CE下没有点阵字库,而且取内码要在中文系统中才能取的正确的内码。  详情 回复 发表于 2010-4-13 23:01
点赞 关注

回复
举报

77

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
点阵信息需要点阵字库,而不是ttc等矢量字库
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
不太会,MARK、


帮顶下。、
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 
关注
请LZ去了解点阵字库
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
原来CE下没有点阵字库,而且取内码要在中文系统中才能取的正确的内码。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
直播时间:3月12日(周三)上午10:00
直播奖励:多功能榨汁机、蓝牙音箱、手机支架

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表