MTK环境中如何新增语言

来源:互联网 发布:python求最大公约数 编辑:程序博客网 时间:2024/05/20 05:47

vendor/font/MTK/official/project/plutommi/content/src/MainLcd240X320/FontRes.c //以lcd为 240X320 为例.
plutommi/Customer/CustResource/PLUTO_MMI/MMI_features_switchPLUTO.h
plutommi/mmi/Inc/MMI_features.h

以下以简体中文为例
1. 编译开关 :
     __MMI_LANG_SM_CHINESE__ 在 plutommi/mmi/Inc/MMI_features.h 中定义.(07A以前的版本plutommi/mmi/Inc/MMI_features_switch.h中自己定义,)
    CFG_MMI_LANG_SM_CHINESE 在 plutommi/Customer/CustResource/PLUTO_MMI/MMI_features_switchPLUTO.h 中定义.(07A以前的版本没有该文件)
    #define CFG_MMI_LANG_SM_CHINESE (__ON__)  //有简体中文
    #define CFG_MMI_LANG_SM_CHINESE (__OFF__)  //没有简体中文
 注:
     有些语言不带有zi输入法,在将其编译开关改成 (__ON__) 时, 要将相应的zi输入法关掉
 简体中文zi输入法为 #define CFG_MMI_ZI_SM_CHINESE (__AUTO__) //开 (__ON__), 关(__OFF__), 自动(__AUTO__)


2. 添加字库文件包含
  #if defined(__MMI_LANG_SM_CHINESE__) //要将系统本身 __MMI_LANG_SM_CHINESE__ 的使用处删掉.
   #include "L_Chinese_Font_16.h"
   #include "L_Chinese_Font_20.h"
   #include "L_Chinese_Font_24.h"
  #endif
 注:要将字模文件放在 plutommi/Customer/CustResource 下.


3. 系统语言总数的增加
  const U16 mtk_gMaxDeployedLangs //是当前系统的语言总数
  如果添加系统本身支持的语言,mtk_gMaxDeployedLangs 本身不需要任何改动,
  如果增加新的语言,需要将该值 + 1 .

4. 定义每种字体信息
  #if defined(__MMI_LANG_SM_CHINESE__)

  const RangeData GBK_CH_RangeData[3641]={ // 编码段信息数组
  {63,63},         // 第一个编码段
  {164,164},         // 第二个编码段
   .
   .
   .
  {65507,65507},
  {65509,65509},
  };

  const RangeDetails GBK_CH_RangeInfo={ // 总体编码段信息
  3641,         // 编码段个数
  GBK_CH_RangeData      // 编码段信息数组地址
  };

  sCustFontData Chinese_Font_Small = { // 某种字体信息
  16, 16, 14,2,1, 32, 500,    // 字体高、字体宽、不明,不明,是否等宽、每个字模字节数、最大字符数
  (U8*)NULL, (U32*)NULL, (U8*)GBK_16_Data, (U32*)GBK_16_RangeOffset, // 每个字符宽度表、数据地址、字模数据、每个字模在数据中的偏移(本行内容通常在字模数据.h即L_Chinese_Font_16.h中定义)
  {
  {FONTATTRIB_NORMAL|FONTATTRIB_BOLD|FONTATTRIB_ITALIC|FONTATTRIB_OBLIQUE|FONTATTRIB_UNDERLINE|FONTATTRIB_STRIKETHROUGH,FONTATTRIB_NORMAL|FONTATTRIB_BOLD|FONTATTRIB_ITALIC|FONTATTRIB_OBLIQUE|FONTATTRIB_UNDERLINE|FONTATTRIB_STRIKETHROUGH},
  {0, 0},
  {0, 0},
  {FONTATTRIB_NORMAL|FONTATTRIB_BOLD|FONTATTRIB_ITALIC|FONTATTRIB_OBLIQUE|FONTATTRIB_UNDERLINE|FONTATTRIB_STRIKETHROUGH,FONTATTRIB_NORMAL|FONTATTRIB_BOLD|FONTATTRIB_ITALIC|FONTATTRIB_OBLIQUE|FONTATTRIB_UNDERLINE|FONTATTRIB_STRIKETHROUGH},
  {0, 0},
  {0, 0}
  },          // 当被设置成某个字体时,支持艺术字的类型
  &GBK_CH_RangeInfo};      // 总体编码段信息

  注: (1) sCustFontData 在07以前,以后和6235的版本中都有所改变,具体内容根据自己环境设定.
   (2) Chinese_Font_Small.pFontType 所支持的字体类型数与 pluto_ch_standardFamily.nTotalFonts 相等.

  #endif

5. 定义所有字体信息
  #if defined(__MMI_LANG_SM_CHINESE__)
  sFontFamily pluto_ch_standardFamily = {6,{&Chinese_Font_Small,&Chinese_Font_Medium,&Chinese_Font_Medium, &Chinese_Font_Small,&Chinese_Font_Medium,&Chinese_Font_Medium}};
  //字体个数、每种字体信息地址
  #endif


6. 添加语言信息
  在 const sLanguageDetails mtk_gLanguageArray[MAX_LANGUAGES] 中添加

  #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},// 本语言名称
   "*#0086#", // 用来切换语言的方法
    0,
   { &pluto_ch_standardFamily },// 本语言所有字体信息
   "zh-CN"
  },
  #endif