序言
上一篇Android 自定义字体,更换系统默认显示的字体使用自定义字体有讲到怎样指定控件显示指定字体,怎样整个软件显示指定字体,怎样WebView加载指定字体,但是还留下一个怎样修改整个系统的默认字体,由于内容较多,所以单独抽离出来讲,由于要操作系统文件,因此需要Root权限或系统签名,自己在操作前建议先备份下字体配置文件/system/etc/system_fonts.xml和/system/etc/fallback_fonts.xml,否则操作失败有可能开机后无法进入桌面,此时就需要将备份的system_fonts.xml推送到对应目录下并修改为对应的权限。
1、字体加载原理
① Android 系统的字体文件:位于 /system/fonts/ 文件夹下,我们可以到对应的目录下进行查看,可以看出,Android的字体文件都是ttf文件,命令顺序:adb shell ——>cd /system/fonts/ ——>ll,查看结果如下图所示:
image.png
② 在/system/etc/目录下有两个字体配置文件,分别是system_fonts.xml 和 fallback_fonts.xml ,当系统需要加载字体时,会优先从 system_fonts.xml 文件开始查找,如果没有找到再进入 fallback_fonts.xml 查找。
system_fonts.xml示范文件
sans-serif
arial
helvetica
tahoma
verdana
Roboto-Regular.ttf
Roboto-Bold.ttf
Roboto-Italic.ttf
Roboto-BoldItalic.ttf
sans-serif-light
Roboto-Light.ttf
Roboto-LightItalic.ttf
sans-serif-thin
Roboto-Thin.ttf
Roboto-ThinItalic.ttf
sans-serif-condensed
RobotoCondensed-Regular.ttf
RobotoCondensed-Bold.ttf
RobotoCondensed-Italic.ttf
RobotoCondensed-BoldItalic.ttf
serif
times
times new roman
palatino
georgia
baskerville
goudy
fantasy
cursive
ITC Stone Serif
DroidSerif-Regular.ttf
DroidSerif-Bold.ttf
DroidSerif-Italic.ttf
DroidSerif-BoldItalic.ttf
Droid Sans
DroidSans.ttf
DroidSans-Bold.ttf
monospace
courier
courier new
monaco
DroidSansMono.ttf
fallback_fonts.xml 示范文件
DroidNaskh-Regular.ttf
DroidNaskhUI-Regular.ttf
DroidSansEthiopic-Regular.ttf
DroidSansHebrew-Regular.ttf
DroidSansHebrew-Bold.ttf
NotoSansThai-Regular.ttf
NotoSansThai-Bold.ttf
NotoSansThaiUI-Regular.ttf
NotoSansThaiUI-Bold.ttf
DroidSansArmenian.ttf
DroidSansGeorgian.ttf
NotoSansDevanagari-Regular.ttf
NotoSansDevanagari-Bold.ttf
NotoSansDevanagariUI-Regular.ttf
NotoSansDevanagariUI-Bold.ttf
NotoSansTamil-Regular.ttf
NotoSansTamil-Bold.ttf
NotoSansTamilUI-Regular.ttf
NotoSansTamilUI-Bold.ttf
NotoSansMalayalam-Regular.ttf
NotoSansMalayalam-Bold.ttf
NotoSansMalayalamUI-Regular.ttf
NotoSansMalayalamUI-Bold.ttf
NotoSansBengali-Regular.ttf
NotoSansBengali-Bold.ttf
NotoSansBengaliUI-Regular.ttf
NotoSansBengaliUI-Bold.ttf
NotoSansT