文章为用户上传,仅供非商业浏览。发布者:Lomu,转转请注明出处: https://www.daogebangong.com/articles/detail/an-zhuo-zi-ti-quan-mian-pou-xi-yu-shi-zhan-zi-ti-ti-huan-yu-cu-xi-tiao-zheng-yi-zhan-shi-gong-lve.html
很高兴为您提供深入了解安卓字体机制的教程。 首先,安卓字体机制是基于替换原理的。通常情况下,每个安卓设备上都有一个默认字体,应用程序可以使用该字体来呈现文本。但是,如果您想要更改字体,您可以通过以下两种方式之一来实现: 1. 全局替换字体 通过root权限,您可以全局替换系统默认字体。这意味着您可以将默认字体替换为任何您喜欢的字体,从而实现全局字体更改。 2. 精细调整字体 除了全局替换字体外,还可以通过改变字体的粗细程度来实现更精细的调整。安卓系统支持多种字体粗细程度,通常为“light”、“
一篇就够了,只要你读透了,再加上我公众号分享的字体,就能举一反三,在任意一台能root的安卓手机上完美全替换字体,并且实现多粗细调用。
上面这个安卓小机器人图,和平常的小绿人有点不同哦,大家有没有觉得像这个……周冬雨的凝视^0^
初识配置文件
Android 4.4及之前字体配置文件:fallback_fonts.xml
Android 5.0-6.0的配置文件:fonts.xml 和 fallback_fonts.xml
这些配置文件都在system/etc路径下,安卓5.0-6.0是一个过渡阶段,同时有2个配置文件。安卓5.0-6.0的Google的代码备注里写着,旧文件fallback_fonts.xml是用来兼容没对高版本安卓做特殊适配的app的,到了安卓7.0就才抛弃了旧配置文件。
也就是说,安卓5.0-6.0上,凡是新配置文件中无法定义到的字体,都会用旧的配置文件去显示,保险起见,我们增删改安卓5.0-6.0配置文件时,需要两个一起改。安卓7.0之后就不需要改2个了。
注意,有些定制设备,还存在/vendor/etc/fallback_fonts.xml,这个文件的优先级是高于系统默认的配置文件的,这也是google的代码注释里提及的规则。简而言之,如果你无论怎么替换总会有些字符改不到,那可能是定制的配置文件优先调用了另一个字体里的字符。我手里没这种设备,所以没深入研究,如果你遇到了,请自行变通。
旧配置 fallback_fonts.xml 基本上只有字体家族的调用列表,几乎没啥扩展空间;而新版本 fonts.xml 则精确到了字重,可发挥空间更大,也是我们换字体的重大依仗。
如果你是安卓4.4及以下的系统,直接把得到的字体改成DroidsansFallback.ttf,替换到手机里好了,没啥好改配置文件的了。
如果你是安卓5.0以上的安卓系统,往下看,把你的手机字体显示能力发挥到最大。
解读配置文件
百度一下 Notepad++,这款电脑软件是比较专业的看文本的工具,尤其是看安卓字体配置文件,会很方便,如果你直接用普通的txt编辑器改,是容易出问题的。
我们先打开 fallback_fonts.xml,不同的手机可能会有差异,原生安卓6.0的是这样的:
<family>
<fileset>
<file>NotoSansSC-Regular.otf</file>
</fileset>
</family>
<family>
<fileset>
<file>NotoSansTC-Regular.otf</file>
</fileset>
</family>
<family>
<fileset>
<file>NotoSansJP-Regular.otf</file>
</fileset>
</family>
<family>
<fileset>
<file>NotoSansKR-Regular.otf</file>
</fileset>
</family>
不要看到代码就望而却步,这是很简单的,其实就是从上到下规定了四个字体,分别是简体中文、繁体中文、日文、韩文,如果前面那个文件没有这个字符,系统就用后面那个字体来补上。然后你就会发现,好像除了改改字体的文件名,似乎啥也改不了的啊,对,你说的没错……所以前面我才说,如果你是安卓4.4及以下的,直接替换系统文件就拉倒了,因为玩不下去了啊。但是,你需要知道,类似miui主题字体、substratum主题字体、CM主题字体这些,覆盖不到字体的地方,你改配置文件里指向的字体文件,是可以搞定的。因为这个配置明确告诉了你,在安卓5.0-6.0的手机上,使用旧配置兼容模式执行的字体,文件名叫什么,这样就有了方向,你是要改配置文件里的字体文件名,还是要替换系统字体,都可以做到了。
再来看 fonts.xml,这个就厉害多了,毕竟在安卓5.0之后才出现,我们通过改这个来换字体,简直有如神助啊。
<family>
<fontweight="400"style="normal">NotoSansSC-Regular.otf</font>
</family>
<family>
<fontweight="400"style="normal">NotoSansTC-Regular.otf</font>
</family>
<family>
<fontweight="400"style="normal">NotoSansJP-Regular.otf</font>
</family>
<family>
<
赞 (810)
打赏
支付宝扫一扫
评论列表(196条)
测试