android字库,android L 上切换字库方法

本FAQ介绍的是在 android L上需要实现切换字库的功能。

[SOLUTION]

切换字体我司提供两种方法

方法一:无论是在何种语言下都使用客户定制的字库

方法二:在特定的语言下使用客户定制的字库

方法一

1. 把对应的字库文件拷贝到Frameworks/base/data/fonts下

2. 修改fallback_fonts.xml (frameworks/base/data/fonts)文件(在文件中加入客

户定制的字库)

例如

myfont.ttf

3.framework/base/data/fonts/目录下FONTS.XM文件中加入定义如

Roboto-Thin.ttf

方法二

前面两步和方法一的前两步一致,第三步改为如下

3. 如果是需要在某些语言需要切换字库而其他语言不需要,直接加入如下步骤。

framework\base\graphics\Java\android\graphics\FontListParser.java

中的

private static Family readFamily(XmlPullParser parser)这个函数中在下面对应

位置加入红色代码

throws XmlPullParserException, IOException {

String name = parser.getAttributeValue(null, "name");

String lang = parser.getAttributeValue(null, "lang");

String variant = parser.getAttributeValue(null, "variant");

List fonts = new ArrayList();

while (parser.next() != XmlPullParser.END_TAG) {

if (parser.getEventType() != XmlPullParser.start_TAG) continue;

String tag = parser.getName();

if (tag.equals("font")) {

String weightStr = parser.getAttributeValue(null, "weight");

int weight = weightStr == null ? 400 : Integer.parseInt(weightStr);

boolean isItalic = "italic".equals(parser.getAttributeValue(null,

"style"));

String filename = parser.nextText();

//added

String country_code=systemProperties.get("persist.sys.lang_country",

"GB");

if(country_code.equals("RU") ||country_code.equals("UA")){

if(filename.equals("Roboto-Regular.ttf")){

filename = "RobotoCondenSED-Regular.ttf";

}

}

//end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值