android L 上切换字库方法

android L 上切换字库方法

[DESCRIPTION]

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

[SOLUTION]

切换字体我司提供两种方法
方法一:无论是在何种语言下都使用客户定制的字库
方法二:在特定的语言下使用客户定制的字库
方法一
1. 把对应的字库文件拷贝到frameworks/base/data/fonts下
2. 修改fallback_fonts.xml (frameworks/base/data/fonts)文件(在文件中加入客
户定制的字库)
例如
<family>
<fileset>
<file>myfont.ttf </file>
</fileset>
</family>
3.framework/base/data/fonts/目录下FONTS.XM文件中加入定义如
<font weight="100" style="normal">Roboto-Thin.ttf</font>
方法二
前面两步和方法一的前两步一致,第三步改为如下
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<Font> fonts = new ArrayList<Font>();
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、付费专栏及课程。

余额充值