换字体有风险,请务必先做好原机字体备份,出问题了及时换回去!!!
1.苹果手机换字体
苹果手机需要越狱,iOS9以后访问/System/Library/Fonts文件夹,LanguageSupport下的pingfang.ttc就是中文字体,那几个core文件夹下的就是英文字体,具体可以在网上搜一下,教程多到烂大街,我就不多赘述了。
2.自制安卓字体主题包
如果你是三星等手机,支持apk字体的,可以自己取需要的文件做成相应的主题或者字体包来替换(手机类型太多,具体自己解决),不需要root。
这种方法我是不推荐的,因为每个手机的主题系统和字体包调用系统规则大相径庭,可能会导致正常的字体在你的手机上显示行距字据出现问题、字体上浮或者下沉严重等现象,出现这种问题请不要找我,我也无能为力(各种各样的手机太多了,我不可能全买了给你适配),请自行解决。
3.简单替换安卓字体
首先要明确知道自己手机调用的中文字体文件和英文字体文件具体是哪些,然后取我提供的文件替换即可。
需要root权限,使用re管理器之类工具,就可以替换,就是我下图这个app。
如果你是安卓2.x或者4.x,直接从我分享的文件中找到NotoSansSC-Regular.otf这个文件,然后改成DroidSansFallback.ttf(除非你的手机被厂商改过字体,一般就是这个),替换到system/fonts就好了,英文部分我忘了,反正也是直接改名了换。
如果你是安卓5.x或者安卓6.x,常规的系统都可以用NotoSansSC-Regular.otf(如果不是,自己重命名即可)替换你system/fonts下的同名文件,英文也是全盘照搬替换同名文件(小米等手机连英文的文件名字也是用别的,自己举一反三),需要root。
很多人问,为啥我分享的都是otf后缀,自己手机只能用ttf之类的,不管手机是不是只支持ttf吧,其实你可以用电脑或者手机手动改文件的扩展名【otf】,改为【ttf】一样可以正常用的。
实际上,安卓4.4到7.0都是支持otf的,知道就好了,具体用的话需要自己写配置,直接随便丢进去当然是不管用的。
4.关于改权限和重启
如果你是用re管理器,不改权限也可以,因为丢进去的 比你改权限后的权限要多,重启后就生效了。只有缺权限才会异常 ,
还有一个可能遇到的场景,覆盖系统字体文件时,系统检测到界面正在使用的元素异常改动了,就会自动重启一下系统界面,这时候的重启是不完整的,打开一些软件会闪退,你需要再手动重启一次,以后就都OK了。
至于遇到字距行距之类的问题,因为我是基于安卓7.1自带的思源黑来制作的,理论上不是厂商深度定制过的手机,都是能正常用的。如果真的遇到显示不支持了,恕我能力有限,不可能把所有手机买来专门适配一遍,你只能自己去调整了。
5.终极完美法·自己写配置,支持5.x、6.x、7.x
安卓5.0到6.0,控制系统字体调用的文件有两个,在system/etc下,一个是fonts.xml,还有一个fallback_fonts.xml。前者一直用到安卓7.x,后者是旧版本安卓的过度。
一般来说只改前者就行,有些细节是后者控制的,我这里就不细说了。
安卓7.x只有fonts.xml一个文件了。
以7.0的配置文件示例,6.0的大同小异,原生配置里是这样定义中文字体文件的:
(看不清可以点击看大图)
上面有四段代码,比较简单就能看出分别是指定了简体中文、繁体中文、日文、韩文调用的字体文件(ttc文件里包含多个ttf文件,代码里的index就是指向ttc内部的ttf)。
显而易见,我们要实现换字体,其实只要放进去自己的文件,然后改这里的代码来指向那些文件即可(上图黑色的xxx.otf这种文件名)。
系统是比较智能的,会从上到下匹配,比如我在上面四段上方插入这个:
(看不清可以点击看大图)
分别针对简体、繁体中文,不同weight指定了字体文件。
那么系统在中文环境下会先识别我插入的代码,显示这里的字体,如果有缺的才会往下读到系统原来的文件。
我提供的字体里都有为这个字体配好的fonts.xml文件,原生安卓和一加3/3T手机,只要是安卓5.0以上的系统都可以直接拿去用,甚至我连卡刷包都做好了,用第三方recovery刷进去,把你手动替换的过程都自动化了。
安卓手机差异化比较大,有些厂商会修改字体的结构,导致fonts.xml不完全通用,直接丢我的配置文件到非原生系统手机(比如小米),是会出问题的。
我是拿Google原生的系统(Pixel XL)为蓝本制作的,举个例子,如果HTC改了emoji表情的调用方法,替换到HTC里就可能显示不出emoji,其他的都正常。
遇到这种问题,请使用专业点的文本编辑器,例如notepad++,打开fonts.xml,以你原机的文件参照我上面说的,把我的配置文件里相关的段落复制过去,再替换。如果你找不到,就全文搜索“宁静之雨”,我在代码里写了注释,方便你找到我改的部分。
大家不需要太深入了解,知道原理后,照着我的配置依样画葫芦就行。
想深入了解的看这里:
☛「教程」深入解读安卓字体机制,搞定安卓手机字体替换和粗细分明
想完美效果,一言以蔽之,仿写我的配置文件,把中英文映射改成我提供的字体文件,再把字体文件丢到system/fonts下,完整重启一次手机就好了。