修改安卓字体续篇:针对4.0(ICS)修改字体
此文是针对我去年日志《网上的方法都过时了!一个字体搞定安卓英中日韩显示,你懂的!》的追加。原文讲的是2.x时代的字体文件用途,到了4.x(最新的4.1尚未测试,估计变化不大),中英文字体都有较大变动,需要写一篇新的日志说明下。
4.x以后最显著的变化是新增了Roboto家族,有Regular/Bold/Italic/BoldItalic四种变体,相比原来的DroidSans多了两个斜体。原来的DroidSans家族还在,但是已经被指向到Roboto家族,再修改原来的文件是无效的。
由于中文字体至今未出现独立斜体和独立粗斜体,因此我在这里建议大家中英文分开替换,这样可以保证英文有斜体和粗斜体,同时中英文有更多种独立搭配。
为了替换英文字体,我们需要准备四个字体(蛮多字体都有独立斜体的,很容易找)分别替换以下四个文件:
Roboto-Regular.ttf
Roboto-Italic.ttf
Roboto-Bold.ttf
Roboto-BoldItalic.ttf
更换的前期准备和操作要领见文首引用的那篇日志。
针对中文,4.x还是一个DroidSansFallback.ttf完成。有的固件可能是DroidSansFallbackFull.ttf一类名称,总之体积最大的那个是我们需要替换的。个人是对字体要求比较高的,也喜欢针对中日韩文字使用独立粗体,因此我针对独立粗体又进行了探索,收获见下。
用RootExplorer进入/System/etc目录下可以找到fallback_fonts.xml这个文件。这是4.x后对新增语种文字的配置文件,可以用记事本打开进行修改。熟悉Linux的朋友会对这种文件结构了如指掌,之中定义好了字体家族和不同的变体。我们可以发现,这里中日韩还是一行如下的编码:
<family>
<fileset>
<file>DroidSansFallback.ttf</file>
</fileset>
</family>
这就是说,系统没有给我们准备好粗体。不必气馁,我们发现文件开头有定义粗体的语句:
<family>
<fileset>
<file>DroidSansHebrew-Regular.ttf</file>
<file>DroidSansHebrew-Bold.ttf</file>
</fileset>
</family>
这是希伯来文,谷歌为它打造了独立粗体。我们仿照上面的语句,在<file>DroidSansFallback.ttf</file>后面另起一行加入:
<file>DroidSansFallback-Bold.ttf</file>
保存。把这个文件用RootExplorer覆盖掉原来目录中同名文件,设置好权限。
然后把我们需要的中文的常规体和粗体分别命名为DroidSansFallback.ttf和DroidSansFallback-Bold.ttf,覆盖掉原来的字体,并将覆盖后的字体和新加入到的DroidSansFallback-Bold.ttf的权限都如同我上一篇教程那样修改。
这样一番工作完成后可以重启查看效果了,这样保证了英文替换的同时中文新增了粗体,对于字体控们来说赏心悦目。
当然,上面的fallback_fonts.xml理论上可以无限增加字体家族。譬如我刚刚替换的字体只有中日文(蛮多字体没有韩文),我在后面定义新的家族如DroidSansKorean.ttf和DroidSansKorean-Bold.ttf(随便自己取名)然后新增字体理论上也是可以继续fallback的,fallback的顺序就是fallback_fonts.xml中上下顺序决定。
囿于本人的手机可用空间太小就没有尝试验证上面的假说,有兴趣的网友可以自己试试。
效果和上一篇教程基本一致,就没有插图了,希望谅解。
原文链接:http://lethean.me/archives/649
4.x以后最显著的变化是新增了Roboto家族,有Regular/Bold/Italic/BoldItalic四种变体,相比原来的DroidSans多了两个斜体。原来的DroidSans家族还在,但是已经被指向到Roboto家族,再修改原来的文件是无效的。
由于中文字体至今未出现独立斜体和独立粗斜体,因此我在这里建议大家中英文分开替换,这样可以保证英文有斜体和粗斜体,同时中英文有更多种独立搭配。
为了替换英文字体,我们需要准备四个字体(蛮多字体都有独立斜体的,很容易找)分别替换以下四个文件:
Roboto-Regular.ttf
Roboto-Italic.ttf
Roboto-Bold.ttf
Roboto-BoldItalic.ttf
更换的前期准备和操作要领见文首引用的那篇日志。
针对中文,4.x还是一个DroidSansFallback.ttf完成。有的固件可能是DroidSansFallbackFull.ttf一类名称,总之体积最大的那个是我们需要替换的。个人是对字体要求比较高的,也喜欢针对中日韩文字使用独立粗体,因此我针对独立粗体又进行了探索,收获见下。
用RootExplorer进入/System/etc目录下可以找到fallback_fonts.xml这个文件。这是4.x后对新增语种文字的配置文件,可以用记事本打开进行修改。熟悉Linux的朋友会对这种文件结构了如指掌,之中定义好了字体家族和不同的变体。我们可以发现,这里中日韩还是一行如下的编码:
<family>
<fileset>
<file>DroidSansFallback.ttf</file>
</fileset>
</family>
这就是说,系统没有给我们准备好粗体。不必气馁,我们发现文件开头有定义粗体的语句:
<family>
<fileset>
<file>DroidSansHebrew-Regular.ttf</file>
<file>DroidSansHebrew-Bold.ttf</file>
</fileset>
</family>
这是希伯来文,谷歌为它打造了独立粗体。我们仿照上面的语句,在<file>DroidSansFallback.ttf</file>后面另起一行加入:
<file>DroidSansFallback-Bold.ttf</file>
保存。把这个文件用RootExplorer覆盖掉原来目录中同名文件,设置好权限。
然后把我们需要的中文的常规体和粗体分别命名为DroidSansFallback.ttf和DroidSansFallback-Bold.ttf,覆盖掉原来的字体,并将覆盖后的字体和新加入到的DroidSansFallback-Bold.ttf的权限都如同我上一篇教程那样修改。
这样一番工作完成后可以重启查看效果了,这样保证了英文替换的同时中文新增了粗体,对于字体控们来说赏心悦目。
当然,上面的fallback_fonts.xml理论上可以无限增加字体家族。譬如我刚刚替换的字体只有中日文(蛮多字体没有韩文),我在后面定义新的家族如DroidSansKorean.ttf和DroidSansKorean-Bold.ttf(随便自己取名)然后新增字体理论上也是可以继续fallback的,fallback的顺序就是fallback_fonts.xml中上下顺序决定。
囿于本人的手机可用空间太小就没有尝试验证上面的假说,有兴趣的网友可以自己试试。
效果和上一篇教程基本一致,就没有插图了,希望谅解。
原文链接:http://lethean.me/archives/649