



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、展讯平台多国语言项目实现说明(以俄文为例上海展英通信息技术有限公司孙永一、字库显示部分1、获得西语的bdf字库,bdf文件里面有unicode编码对应的字库的bitmap点阵信息。2、获得对应多国语言的unicode区间值,俄文的西里尔字符的unicode区间是0x0400-0x04FF。对俄文来说,取0x0400-0x0481即可。3、根据获得unicode区间值和bdf字库生成所需语言的点阵信息,即展讯平台可以使用的font lib。对俄文来说,因为其字符个数比较少,可以手动直接从bdf文件中copy点阵手动实现,其他语言可能要写小工具实现。Copy完点阵后需要加入展讯font lib的头
2、(参考中文font的头即可,紧接着就是纯粹的点阵信息,生成c文件后用texttobin工具生成所需的font lib。4、用res editor替换对应字库的font lib,我们用的俄文字库是7x14的,所以替换掉SONG_FONT_14.lib即可。完成下面的步骤还不能正确的显示,因为原来的简体中文系统有ucs2和GB的转换,对多国语言来说,对应的函数要做一下修改,主要是修改guifont.c:1、GetFontIndex(此函数用来获得取点阵信息的index,对俄文来说,由于是unicode 值是连续递增的,直接减去0x0400即可,其他语言可能会复杂一些。2、GUI_UCS2GB(此函
3、数简体中文用的,多国语言虽不会转换,但要滤去string中的非多国语言字符(0x00FF以下的,并重新计算滤完后的string长度,对俄文来说,具体见函数Multi_Russian_forAsciiInUCS2(。3、具体的字符显示函数,需要判断是ucs2还是ascii,从而到不同的res中寻找font点阵,简体中文的判断是if ( (*text_ptr & 0x80 ,俄文用的判断是if ( (*text_ptr = 0x04 ,用到此判断的需要修改的函数有GetFontIndex(;GetFontInfo(; GetAutoSpandFontInfo(;LCD_DisplayMul
4、tiStyleString(;GUI_GetFontArray(OK,到这里为止,多国语言应该能正常显示了,不幸的是,你会发现有的地方会异常,主要是以下几种情形:1、手机重启原因是同样的string,多国语言可能比简体中文和英文的长度都要长(这可能是多国语言版本最大的问题,所以原来的string宏定义必须增大,如GUI_MAX_STATIC_TEXT_LEN; DROPDOWNLIST_STRING_MAX_NUM;LISTBOX_STRING_MAX_NUM2、显示乱码由于俄文只有7x14一种大小,所以其他大小的字符无法显示,必须改成SONG_FONT_14类型的。3、其他显示错误,具体到每
5、个APP具体分析解决。二、替换系统字库Res editor可以直接导出excel格式的sring,用翻译好的多国语言string直接替换掉SimpleChinese项的string即可,res editor会默认将其当作unicode码处理,但要注意新string的每个单元格式要和原来一样(选中编辑时前面有个符号“”,否则会出错,使用格式刷用English项刷一下即可。三、输入法部分Cstar的输入法提供了对多国语言的支持,且其engine对app的接口做的比较完善,只要修改对应的映射即可。具体需修改的地方有:1、二维数组cs_gui2core此数组就是app和输入engine的映射2、函数C
6、S_BuildIMList(此函数有对cs_imm_mode的初始化,用来指定当前输入法的类型。3、函数utl_MethodIsUcs2(此函数判断当前输入法是否用ucs2码,对俄文来说,IM_RUSSIAN、IM_ABC_LOWER_RUS、IM_ABC_UPPER_RUS时返回TRUE,其余返回FALSE。4、函数gui_DisplayInputIcon(此函数用来提示当前输入法的图标,对应做修改即可5、替换库文件csk2.a修改完上面的,多国语言输入法就可以用了。我们的项目由于多国语言不支持手写输入,所以对应的界面要做修改:1、输入法位置的宏做一下调整#define CS_IM_WND_
7、LEFT 0#define CS_IM_WND_TOP 141+16#define CS_IM_WND_RIGHT 176#define CS_IM_WND_BOTTOM 172+162、MMIEDITBOX_HandleMsg(中加入判断,if ( EDITBOX_TEXT_E = editbox_ptr->type 则return IM_RESULT_FALSE,不让其响应pen消息的处理3、修改MMIPANEL_Draw(,此函数用来draw im的panel,在里面加入判断,if (mode = PANEL_KEYPAD直接return掉,不去执行draw panel的动作。4、修改MMIPANEL_GetRect(,此函数用来调整editor的rect大小,如果PANEL_MODE_E 为PANEL_KEYPAD时,不要减去原来P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省金堂中学2026届化学高一第一学期期中监测模拟试题含解析
- 医学信息技术在教育中的应用效果研究
- 糖尿病肾病一体化治疗
- 住房政策对城市空间结构的影响分析
- 虚拟桌面技术介绍
- 清洁生产审核汇报
- 十几减四退位减法竖式讲解
- 血管刺激性药物临床应用与管理
- 宁夏回族自治区银川市兴庆区宁一中2026届化学高三上期末经典试题含解析
- 2026届江苏如皋市江安镇中心初中高二化学第一学期期中学业水平测试试题含解析
- 福州市公安局招聘警务辅助人员笔试真题2023
- 激励与奖惩机制
- 2024年考研英语核心词汇
- 天津市和平区2024-2025学年八年级上学期11月期中道德与法治试题
- DB11∕T 1350-2016 文物建筑修缮工程验收规范
- 公路工程监理安全生产管理制度(图表丰富)
- 2024年度宁夏回族自治区安全员之C证(专职安全员)典型题汇编及答案
- 数智工程师专项测试题及答案
- 市政道路及设施零星养护服务技术方案(技术方案)
- GB/T 2424.7-2024环境试验第3部分:支持文件及导则试验A(低温)和B(高温)的温度箱测量(带负载)
- 医疗收费及费用管理制度
评论
0/150
提交评论