已绑定手机
|
在研究嵌入式产品多国语言(点阵字库)文字显示过程中,可能很多朋友遇到过字符显示错乱(显示错误或乱码)的问题。
错乱现象分2种:全部字符 和 部分(或个别)字符。
一、全部字符
全部字符显示错乱,可能原因有:数据问题、编码问题、程序问题。
1、数据问题
a、数据格式
不同的数据格式,解析方式不一,显示结果自然不一。如:检索方式、位深度、扫描方式、字节高低位等。
方法:更换支持的数据格式。
建议:定义文件结构,加个文件头,便于快速了解文件的基本信息,以及后期维护与扩展。
b、字库烧录是否正确
方法:读取字库数据对比原始文件。
2、编码问题
送显字符编码 与 字库编码 是否一致?
常用编码有 内码(如GB2312,GBK,JIS 等),utf8, utf16(分大小端),现在越来越多平台或系统都慢慢选用 Unicode编码字库,若字库编码是utf16,送显字符为内码或 utf8,则需要先转成 utf16,再显示;反之亦然。
方法:统一编码再显示,若需要编码转换,可参考开源库:libiconv。
3、程序问题
显示接口或流程问题。因为很多点阵字库文件格式,为了兼容与扩展,都有数据结构的概念。如:文件头,检索表,点阵数据等信息。
方法:参考文档,增加输出调试信息。
切记别为了赶工,把某些参数弄成常量方式,给后来者“埋雷”。
二、部分(或个别)字符
部分字符显示错乱, 可能原因有:字库缺少字符、字库烧录不完整、其它。
1、字库缺少字符
通常做字库,都是根据其语言生成对应的字符集编码字库,但是在使用过程中可能会遇到一些特殊符号。如:数学符号,音乐符号等。若字库不包含,则会显示不出或乱码。
方法:先确认显示错乱符号的编码,然后配合工具,核实字库是否已包含该符号?若已包含,则是其它原因,否则增加其点阵信息。
如果是 BDF 格式字库,可以用 BdfEditor 工具的查找功能,快速判断字符是否存在? 如下图示:
操作: 菜单 Search - Find 或 Ctrl+ F。
说明: 能找到,表示字符存在,否则表示字符不存在。
2. 字库烧录不完整
如字库大小1M, 有可能只成功烧录了前面 800K ,后 200 K 可能由于越界丢失或被覆盖, 导致后 200K 的字符显示错乱。
只要不是空间问题,找出原因,就很好解决。
更多详细内容请下载附件查看
|
|