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

一. 前期工作;

二.修改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. [破解] DRM-内容数据版权加密保护技术学习(中):License预发放实现

    在上一篇文章里实现了对媒体文体的DRM加密,现在一起来实现License的预发放. 所谓预发放就是在播放媒体文件之前先获取到License,License获取成功后,可直接在电脑上进行媒体文件的播放. ...

  2. Mac 删除Openfire

    首先,确保你已经关掉了openfire 打开终端 (在应用程序-->实用工具-->) 输入以下命令 sudo rm -rf /Library/PreferencePanes/Openfir ...

  3. IOS ViewController 生命周期

    加载过程 第一步 -(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 第二步 -(void) ...

  4. Memcached安装,操作,用C#操作

    本文来自:http://li19910722.blog.163.com/blog/static/136856822201406103313163/ 1:安装 下载Memcache:http://cod ...

  5. MVC5 Entity Framework学习之Entity Framework高级功能

    在之前的文章中,你已经学习了怎样实现每一个层次结构一个表继承. 本节中你将学习使用Entity Framework Code First来开发ASP.NET web应用程序时能够利用的高级功能. 在本 ...

  6. poj 2429 Pollard_rho大数分解

    先对lcm/gcd进行分解,问题转变为从因子中选出一些数相乘,剩下的数也相乘,要求和最小. 这里能够直接搜索,注意一个问题,因为同样因子不能分配给两边(会改变gcd)所以能够将同样因子合并,这种话,搜 ...

  7. Java String类具体解释

    Java String类具体解释 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,非常多时候,我们对它既熟悉又陌生. 类结构: public fin ...

  8. 网页 php开发中html空文本节点问题user agent stylesheetbody

    最近开发中遇到一个奇怪的问题,我的一个网站头部,代码固定不变,放在了不同的模板进行展示,一部分出现了问题,总是距离相差8个像素,用firebug查看发现:meta 跑到 body 下面去了,并且发现了 ...

  9. iOS之极光推送

    注册JPush账号 JPush官网 下载SDK 下载地址:https://www.jpush.cn 根据文档进行集成 文档:http://docs.jpush.io/guideline/ios_gui ...

  10. WdatePicker日历控件使用方法(转)

    转自:http://www.cnblogs.com/weixing/archive/2011/08/15/2139431.html WdatePicker日历控件使用方法   1. 跨无限级框架显示 ...