最近几个项目需要添加缅甸语,借助网络资源,同时结合自身实践,成功添加缅甸语,现分享经验如下。

一. 前期工作;

二.修改icu模块

 a.跟踪源码可知,ICS系统已经做了缅甸语的一些支持,现只需处理下external/icu4c/stubdata/icudt46l-default.txt即可。修改如下:
  • 添加行coll/my.res
  • 添加行 coll/my_MM.res
  • 添加行curr/my.res
  • 添加行lang/my.res
  • 添加行region/my.res
  • 添加行zone/my.res
  • 添加行my.res
  • 添加行my_MM.res
 b. 执行脚本文件external/icu4c/stubdata/icu_dat_generator.py ,重新生成icudt46l-default.dat文件。
    如果没有可执行权限,则需给其加上可执行权限,命令如下:
     $cd external/icu4c/stubdata/
     $chmod +x icu_dat_generator.py 
     然后运行脚本文件,命令为: $ ./icu_dat_generator.py ,正常情况下,重新生成icudt46l-default.dat文件,如出现报错信息,可能需要修改该脚本,修改内容如下:
    将
ICU_PREBUILT_DIR = os.path.join(os.environ.get("ANDROID_EABI_TOOLCHAIN"),
"..", "..", "..", "icu-%s.%s" % (icu_version[0], icu_version[1]))
修改成:
ICU_PREBUILT_DIR = os.path.join(os.environ.get("ANDROID_BUILD_TOP"),
"prebuilt", "linux-x86","icu-%s.%s" % (icu_version[0], icu_version[1]))
这里指定icu预编译时使用的icu工具,而icu工具是放在$(ANDROID_ROOT)/prebuilt/linux-x86/目录下。所以需要重新指定其路径。
至此,icu模块修改完毕,就只要修改这么多。

三. 添加缅甸语字库文件到系统

添加文件到系统有多种方法,此处为了方便是否内置缅甸语进行控制,使用如下方法进行修改(参照MTK的做法):

1.添加文件夹,openfont,目录树如下:

frameworks/base/data/fonts/openfont/

├── Android.mk

├── CleanSpec.mk

├── fonts.mk

├── NOTICE

└── padauk-ttf

    ├── COPYRIGHT

    ├── OFL.txt

    └── Padauk.ttf

2 directories, 10 files

其中,Android.mk文件内容如下:

LOCAL_PATH := $(call my-dir)

ifneq ($(SMALLER_FONT_FOOTPRINT),true)

ifneq (,$(filter my_MM,$(PRODUCT_LOCALES)))
include $(CLEAR_VARS)
LOCAL_MODULE := Padauk.ttf
LOCAL_SRC_FILES := padauk-ttf/$(LOCAL_MODULE)
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_OUT)/fonts
include $(BUILD_PREBUILT)
endif endif

fonts.mk内容如下:

PRODUCT_PACKAGES := \
Padauk.ttf

CleanSpea.mk内容如下:

$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/ETC/Mondulkiri.ttf_intermediates)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/fonts/Mondulkiri.ttf )

2. 修改frameworks/base/data/fonts/Android.mk,增加如下行:

# Use the following to include the added fonts.
include $(call all-makefiles-under,$(LOCAL_PATH))

使得可以编译到openfont文件夹。

3.修改frameworks/base/data/fonts/fallback_fonts.xml,增加如下内容:

<family>
<fileset>
<file>Padauk.ttf</file>
</fileset>
</family>

4. 修改build/target/product/common.mk,增加如下内容:

ifneq (,$(filter my_MM,$(MTK_PRODUCT_LOCALES)))
PRODUCT_PACKAGES += Padauk.ttf
endif

5. 修改mediatek/config/ztesz75_cu_ics/ProjectConfig.mk,添加缅甸语的国家码my_MM到MTK_PRODUCT_LOCALES中,如下所示:

MTK_PRODUCT_LOCALES = en_US hi_IN in_ID es_ES ru_RU pt_BR fa_IR fr_FR de_DE tr_TR it_IT ms_MY vi_VN ar_EG  th_TH  pt_PT my_MM nl_NL zh_CN zh_TW mdpi hdpi

另, MTK_PRODUCT_LOCALES的第一个字段是系统的默认语言,也就是出厂语言,如果要把缅甸语设置成默认语言,只需将my_MM放在第一个位置即可。

经过以上五个步骤,重新编译系统时,系统就可以支持缅甸语了。

四. 添加缅甸语字串

将步骤一中下载的缅甸字串解压到packages文件夹下,编译Settings模块,安装到系统,切换语言为缅甸语,Settings模块就可以显示成缅甸语了。如图所示:



从网络上了解到另外一种添加语言的方法,有参考的价值,但是没有验证过,有兴趣的朋友可以参考下,链接如下:http://androidandsandu.blogspot.com/2011/12/how-to-add-indian-languages-to-android.html
可能有些朋友访问不了外网,现贴原文如下:

How to add Indian Languages to Android ICS (4.0.3)

 
Google is officially supporting the Indian languages rendering from 4.0.3 onwards.

The AOSP code supports rendering of three Indian languages in Web-kit. (Devanagari, Tamil, and Bengali).

I just added support for the other Indian languages as well. Tested it on my Nexus-S device

Prerequisites :

Follow these instructions:

1) Download the "Binary" file of the Indian language from 
this link.

         
Ex: lohit-kananda-ttf-2.5.0.tar.gz

2) Untar the downloaded file and Copy the extracted folder into  

    external/lohit-fonts directory

        
Ex: lohit-kannada-ttf-2.5.0

3) Rename the folder name to lohit-kannada-ttf

4) Modify the Android.mk file which is present in external\lohit-fonts directory

ifneq ($(SMALLER_FONT_FOOTPRINT),true)
            extra_lohit_fonts := Lohit-Bengali.ttf Lohit-Tamil.ttf Lohit-Kannada.ttf 
        endif

include $(CLEAR_VARS)


        LOCAL_MODULE := Lohit-Kannada.ttf


        LOCAL_SRC_FILES := lohit-kannada-ttf/$(LOCAL_MODULE)


        LOCAL_MODULE_CLASS := ETC


        LOCAL_MODULE_TAGS := optional


        LOCAL_MODULE_PATH := $(TARGET_OUT)/fonts


        include $(BUILD_PREBUILT)

5) Modify the FontAndroid.cpp file (external/webkit/source/webcore/platform/graphics/android)

a) Add an language entry to CustomScript enum

            
 enum CustomScript {


               Bengali,
               Devanagari,


               Kannada,


               .......


              };

b) Add the ttf file path to the TextRunWalker Paths

const char* TextRunWalker::paths[] = {
              "/system/fonts/Lohit-Bengali.ttf",
             "/system/fonts/Lohit-Devanagari.ttf",


             "/system/fonts/Lohit-Kannada.ttf",


             ........


          };

c) Now setup the Font for Script Run

         
TextRunWalker::setupFontForScriptRun()


          {


            case HB_Script_Kannada:
              complexPlatformData = setupComplexFont(Kannada, platformData);
            break;


          }


 

6) Add the *.ttf file in Fallback_fonts.xml 
(frameworks\base\data\fonts)



MTK Android4.0.3 ICS 添加缅甸语Myanmar的更多相关文章

  1. 关于解决android4.0系统中菜单无法添加Icon的问题

    在Android4.0系统中,创建菜单Menu,然后通过setIcon方法给菜单添加图标是无效的,图标不会显出来,而之前的系统中是可以显示出来的.这个问题的根本原因在于4.0系统中,涉及到菜单的源码类 ...

  2. 解决android4.0系统中菜单(Menu)添加Icon无效问题

    本文转载自: http://blog.csdn.net/stevenhu_223/article/details/9705173 在Android4.0系统中,创建菜单Menu,通过setIcon方法 ...

  3. Android4.0.4-在build.prop中添加属性的方法【转】

    本文转载自:http://blog.csdn.net/imyfriend/article/details/8939964 1.在*.rc文件中用setprop添加,例如在源码android4.0\sy ...

  4. android4.0 4.1 4.2 4.3 4.4新特性

    http://blog.csdn.net/kaiyang45/article/details/7179349 4.0 http://digi.tech.qq.com/a/20120628/000827 ...

  5. [转载]jquery版小型婚礼(可动态添加祝福语)

    原文链接:http://www.cnblogs.com/tattoo/p/3788019.html 前两天在网上不小心看到“js许愿墙”这几个字,我的神经就全部被调动了.然后就开始我 的百度生涯,一直 ...

  6. QT210 android2.3 和android4.0 烧写编译日记

    QT210下载烧录编译android2.3过程 工作环境:ubuntu12.04.5 | QT210开发板光盘 | QT210开发板 android2.3编译环境:gcc version 4.4.7  ...

  7. jquery版小型婚礼(可动态添加祝福语)

    前两天在网上不小心看到“js许愿墙”这几个字,我的神经就全部被调动了.然后就开始我的百度生涯,一直寻觅许愿墙背景图片和便利贴图片,觅了好久……一直没找到满意的……无意间看到祝福语和一些卡通婚礼图片.最 ...

  8. 一个Activity掌握Android4.0新控件 (转)

    原文地址:http://blog.csdn.net/lavor_zl/article/details/51261380 谷歌在推出Android4.0的同时推出了一些新控件,Android4.0中最常 ...

  9. [转]使用ant让Android自动打包的build.xml,自动生成签名的apk文件(支持android4.0以上的版本)

    在android4.0以后的sdk里那个脚本就失效了,主要是因为 apkbuilder这个程序不见了: 人家sdk升级,我们的脚本也要跟上趟,修改一下喽. 上网一查,大家的文章还停留在我去年的脚本程度 ...

随机推荐

  1. Longest Palindromic Substring-----最长回文子串

    首先讲讲什么是回文, 看看Wiki是怎么说的:回文,亦称回环,是正读反读都能读通的句子.亦有将文字排列成圆圈者,是一种修辞方式和文字游戏.回环运用得当.能够表现两种事物或现象相互依靠或排斥的关系, 比 ...

  2. .Net插件编程模型:MEF和MAF[转载]

    .Net插件编程模型:MEF和MAF MEF和MAF都是C#下的插件编程框架,我们通过它们只需简单的配置下源代码就能轻松的实现插件编程概念,设计出可扩展的程序.这真是件美妙的事情! 今天抽了一点时间, ...

  3. centos 6 编译安装httpd-2.4

    centos6 yum安装的apr版本已经不适用httpd-2.4版本了.所以,需要源码编译apr以及apr-util 1. 下载源码: cd /usr/local/src/ wget http:// ...

  4. Intersection of Two Linked Lists(java)

    eg: a1 → a2 ↘ c1 → c2 → c3 或者直接a1 → b1 ↗ b1 → b2 → b3求公共链表c1. 常规的指针分裂法,复制法,偏移法. public class Solutio ...

  5. 3D模型制作

    agisoft: http://www.agisoft.com/downloads/installer/ http://pan.baidu.com/s/1dDwA3tf http://pan.baid ...

  6. win7使用右键导致死机、假死、explorer无法响应的解决方法

    右键引起explorer无法响应,奔溃,主要是由于COMCTL32.DLL和COMCTL21.OCX文件引起的 描述:comctl32.dll是Windows应用程序公用GUI图形用户界面模块.报告提 ...

  7. Android 部分机型GridView四周默认间距

    在测试兼容性时候,部分机型,比如联想和一加等手机,在使用Gridview的时候,会默认四周有默认边距,10dp左右. 这时候需要设置 android:listSelector="@andro ...

  8. plsql基本语法(

    1. 定义常量的语法格式    常量名 constant 类型标识符 [not null]:=值;    常量,包括后面的变量名都必须以字母开头,不能有空格,不能超过30个字符长度,同时不能和保留字同 ...

  9. wampserver 自定义站点

    wampserver配置多站点,安装完wampserver后,我们要做的肯定是很多项目,那么如何配置wampserver多站点呢. 在“httpd.conf”文件中查找:Include conf/ex ...

  10. PHP学习笔记,自己动手写个MVC的框架 -- base所有代码

    <?php /** 名称:基础类 作用:引用参数处理类,加载基础配置, 作者:swordphp@126.com 创建日期:2013-07-31 **/ require_once(ROOT_PAT ...