1 确定好语言和国家对照表,波斯与对照如下:
fa_IR
2 根据build\target\product\sdk.mk
$(call inherit-product-if-exists, frameworks/base/data/fonts/fonts.mk)
$(call inherit-product-if-exists, frameworks/base/data/keyboards/keyboards.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk)
# Overrides
PRODUCT_BRAND := generic
PRODUCT_NAME := sdk
PRODUCT_DEVICE := generic
# locale + densities. en_US is both first and in alphabetical order to
# ensure this is the default locale.
PRODUCT_LOCALES = \
en_US \
ldpi \
hdpi \
mdpi \
xhdpi \
ar_EG \
ar_IL \
由$(call inherit-product-if-exists, frameworks/base/data/fonts/fonts.mk) 可以知道添加语言库的位置
在frameworks/base/data/fonts 目录下添加 下载好的 DroidSansArabic.ttf 语言库。
并修改fonts.mk,添加新的拷贝路径
PRODUCT_COPY_FILES := \
frameworks/base/data/fonts/DroidSansArabic.ttf:system/fonts/DroidSansArabic.ttf \
PRODUCT_LOCALES = \
加上对波斯语的 支持
fa_IR
3 ndk采用的编码工具不同于JAVA,ndk采用的编码工具是ICU4C,源码目录为external\icu4c
在external\icu4c\stubdata\Android.mk 里面已经默认添加了对波斯语编码的支持,所以不需要改,2.3系统的则需要自行修改。
# Build configuration:
#
# 'all' includes all ICU's locale data, but is currently missing some Android
# extensions (mostly extra charset converters).
#
# 'default' (icudt46l-default.txt) includes all the most-used locales,
# covering 94% of internet users
# (http://googleblog.blogspot.com/2008/07/hitting-40-languages.html):
# ar, bg, ca, cs, da, de, el, en, es, fa, fi, fil, fr, he, hi, hr, hu, in,
# it, ja, ko, lt, lv, nb, nl, pl, ps, pt, rm, ro, ru, sk, sl, sr, sv, th,
# tr, uk, vi, zh.
config := default
4 在 external\skia\src\ports\SkFontHost_simple.cpp 添加
static const FontInitRec gSystemFonts[] = { { "Arial.ttf", gSansNames }, { "Times.ttf", gSerifNames }, { "samplefont.ttf", gSansNames }, { "DroidSansArabic.ttf", gSansNames },
5 最后在devices 目录下的product.mk 加上对波斯语的支持
PRODUCT_LOCALES := fa_IR en_US zh_CN fr_FR es_ES de_DE ru_RU ko_KR