MTK的语言问题

1MMI_featuresPLUTO.h (plutommi/customer/custresource/pluto_mmi)

      #define __MMI_LANG_SM_CHINESE__ //定义宏开关

2FontRes.c (plutommi/customer/lcdresource/mainlcd240x320)

      <1>

      #ifdef __MMI_16X16_CHINESE_FONT__

      #include "L_Pluto_16x16_ch.h"                  //引入字库头文件

      #else

     <2>

      const RangeData XXX_RangeData[a]={。。。}

      <3>

      const U16 mtk_gMaxDeployedLangs = 1;

      <4>

       #if defined(__MMI_LANG_SM_CHINESE__)

      sFontFamily pluto_ch_standardFamily = {6,{&Pluto_ch, &Pluto_ch, &Pluto_ch, &Pluto_ch, &Pluto_ch,&gVirtualKeyboardFont}};

      #endif

       <5>

      #if defined(__MMI_LANG_SM_CHINESE__)

      {

      {(char)0x80,(char)0x7B,(char)0x53,(char)0x4F,(char)0x2D,(char)0x4E,(char)0x87,(char)0x65,(char)0x00,(char)0x00},//Language Name

        "*#0086#",//SSC string name

        0,

        { &pluto_ch_standardFamily },

        "zh"

      },

      #endif

附注:<2> 中对应字体的长,宽,高,偏离值等,

      <3> 对应添加的语言的种类数,

      <4> 定义了界面中具体模块的字体,如gVirtualKeyboardFont对应与虚拟键盘中字体的显示问题

       <5> mtk_gLanguageArray)中对应要添加的语言以及其在手机语言列表中的显示顺序(注意各种语言的顺序)

   我们通常遇到的问题是在真机中有些地方的字体显示有问题(如虚拟键盘,日历等,还未探索清楚),每个语言都有相对应的语系(如pluto_en_standardFamily pluto_ch_standardFamily),当(虚拟键盘)有问题时,首先定位到有问题的语言(),寻找其中利用的语系中的相应模块(virtual_keyboard_latin),对其进行修改(可参考其他显示正确的相近工程中的相应模块拷贝修改(virtual_keyboard_latin),缺少相应字库时添加字库并在fontres.c中添加)

MTK多国语言相关经验总结

一、        移植多国语言

移植多国语言主要牵涉到对mmi_features.h(整个工程的宏控定义文件)fontres.c(字体资源文件)的修改,并添加相应的字库文件。

1        语言宏控的修改

mmi_features.h文件中,用于控制各种语言的开关是类似于__MMI_LANG_ENGLISH__的宏,打开该宏,那么工程就支持该种语言。有时侯,需要同时打开与该语言相关的一些宏,比如阿拉伯语的编码模式、汉语的编码模式。(当然这个编码模式一般都是设置好了的,但也有些许例外,自己看着办)

2        字库文件的添加

mtk中,字库主要是两个文件,一个是*.h文件,还有一个是对应的fontres.c文件。

①字库的获取

有两个方式:1)直接去网上找对应语言的字库文件。2)自己利用mtk公司所提供的MCT 6.0工具来制作字库。不过mct6.0制作字库需要.bdf的点阵字库源文件,而网上能找的基本上都是.ttf的矢量字库文件,这就存在一个需要将ttf文件转换成bdf文件的第三方软件,并且转换的好坏将直接影响到最终用mct6.0生成的字库文件(目前我们用的是otf2bdf3,免费的,因此效果不是很好)。

        ②字库的使用。首先我们查看下mtk版本中自带的英文字库L_1_Pluto_Large.h是存放在什么位置的,然后将我们的*.h也放入相同的文件夹下;接下来我们需要将我们的fontres.c文件与mtk中原有的fontres.c文件合并为一个fontres.c文件:合并的方法就参考原有的fontres.c文件中英文字库的代码分布方式,将我们的fontres.c文件里面的代码利用语言宏控拷入mtk原有的fontres.c文件中。

        3、修改默认显示语言

        这个只需要修改C/NEOTEL26_06B_W07.20.MP.V21_MMI/custom/app/NEOTEL26_

06B_BB这个目录下面的nvram_cust_pack.c文件(不同的版本,该文件所处位置不一样,这里是6225的版本)。在该文件里面有如下一处:

    0x00,         /* NVRAM_SETTING_LANG,//17 */

这个0x00值指的就是设置语言界面某种语言所处的位置。如果我们想修改默认显示语言为简体中文,而设置语言界面中文在第6的位置,那么我们将0x00这个值改为0x05即可。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭