
尽管Android从2.3版本开始就支持超过50种语言,但并非所有语言都拥有相应的字体以确保正确显示。当客户要求添加Hindi语言支持时,我决定在网上查找相关资料。我发现大多数教程仅涉及替换默认字体,例如替换./frameworks/base/data/fonts/DroidSansFallback.ttf。然而,这种方法会导致中文无法正常显示。
要实现新语言的显示支持,只需遵循以下步骤:
1. 首先,需要下载一个可以显示Hindi语言的字体文件,如DroidHindi.ttf。
2. 将字体文件拷贝到./frameworks/base/data/fonts/目录。
3. 修改./frameworks/base/data/fonts/Android.mk文件,将DroidHindi.ttf添加到copy_from列表中。
4. Hindi语言代码为hi_IN,需要在./device/qcom/common/common.mk文件中添加该语言代码,以便在设置->语言和键盘->选择语言中看到Hindi语言。
5. 修改./external/skia/src/ports/SkFontHost_android.cpp文件,将DroidHindi.ttf加入其中。很多教程没有提及这一步,如果不进行这一步,添加的语言将无法生效,显示为乱码。
6. 查看./build/target/product/full.mk文件,了解系统选择的语言列表。我的系统选择的是$(call inherit-product, build/target/product/languages_small.mk)。因此,我需要在./build/target/product/languages_small.mk文件中添加hi_IN语言代码。
7. 在external/icu4c/studata目录下的Android.mk文件中,添加$(if $(findingstring hi,$(PRODUCT_LOCALS)),large)。
最后,重新编译并刷入手机或模拟器即可。