Chinaunix首页 | 论坛 | 博客
  • 博客访问: 244191
  • 博文数量: 18
  • 博客积分: 445
  • 博客等级: 下士
  • 技术积分: 270
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-28 13:59
文章分类

全部博文(18)

文章存档

2013年(2)

2012年(16)

分类: 嵌入式

2012-08-24 15:12:50

一。背景

尽量写简单一点这次就不废话了。

二。分析

2.1.
文件系统中字体的位置:

/system/fonts/ 其中的ttf文件都是字库 对于源码/frameworks/data/fonts/下的字体文件

DroidSans-Bold.ttf 粗体的无衬线字体(拉丁字母等)

DroidSans.ttf 常规的无衬线字体(拉丁字母等)

DroidSansFallback.ttf 常规的无衬线字体(中文字符等,一般换字库就是替换此文件)

DroidSansMono.ttf 等宽的无衬线字体(拉丁字母等)

DroidSerif-Bold.ttf 粗体的衬线字体(拉丁字母等)

DroidSerif-BoldItalic.ttf 粗体+斜体的衬线字体(拉丁字母等)

DroidSerif-Italic.ttf 斜体的衬线字体(拉丁字母等)

DroidSerif-Regular.ttf 常规的衬线字体(拉丁字母等)

Clockopia.ttf (显示数字时钟时用的字体,非必须)

frameworks/fonts/下有三个xml文件,分别是fallback_fonts.xmlsystem_fonts.xmlvendor_fonts.xml,最终被编进系统的是前面两个。

 

改变字体有不外乎两种方法,一是强制替换掉系统的默认字体,也就是把你想要替换的字体重命名成DroidSansFallback.ttf,替换掉/system/fonts/下原来的那个,另外一种方法就是通过定义vendor fonts xml的方法来设置,对于我们来说,第一种方法太过于暴力,且没有选择的余地。所以第二种方法更为可行

暴力替换法就不说了,现在说说厂商字体法:

2.2. vendor fonts方法:

假设你要添加一个XXXXX.ttf格式的字体文件:

按照android用例vendor_fonts.xml文件中注释介绍的方法,/vendor/etc/目录下创建一个fallback_fonts.xml,例如

   

       

            XXXXX.ttf

       

   

其中family order就表示描述的插入的vendor字体的需要代替的位置,即/system/etc/fallback_fonts.xml中描述的第10family(从0开始),也就是DroidSansFallback.ttf,使用这种方法前也需要将“XXXXX.ttf”拷贝到/system/fonts



三。总结:

这次也不废话了,不过要提醒一下,字库大部分都是有版权的,所以用别人的字库前都要小心,这也是为什么Android不再Settings中添加字体的选择栏的原因,如果你用了别人的字库没有交保护费的话而产品又买了不少钱的话,呵呵,律师函估计已经在抵达的途中。


阅读(10829) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

kangear2014-08-15 17:06:57

4.2.2上成功了,十分感谢分享。这个方法就好多了。可以换7.18号Google发布的Noto Sans字体,免费的,所以不会有律师函。:)

hxsam0072013-03-13 19:30:08

您好,博主,请问添加一种新的语言(比如系统不支持),也是在vendor_fonts.xml添加么?
那么他是如何与values-xx-xx这种方式关联起来呢?
又关联读取new.ttf这个新的字体?

我也是在4.0以上平台上耕作,非常感谢。

博主的博客一如既往的让人受益匪浅,期待。。。。