【教程】深入解读安卓字体机制,这一篇就够了
2023-08-25 18:02:24发布 浏览672次 信息编号:70763
友情提醒:凡是以各种理由向你收取费用,均有骗子嫌疑,请提高警惕,不要轻易支付。
【教程】深入解读安卓字体机制,这一篇就够了
一篇文章就够了,只要读透,再加上我公众号分享的字体,就能举一反三,在任何一款能root的安卓手机上完美替换字体,实现多粗细调用。
上面的安卓小机器人图和平常的小绿人有点不一样,你觉得是不是这个样子……周冬雨的目光^0^
了解配置文件
4.4及之前的字体配置文件:.xml
5.0-6.0 的配置文件:fonts.xml 和 .xml
7.0以后的配置文件:fonts.xml
这些配置文件都在/etc路径下。 5.0-6.0是过渡阶段,同时有2个配置文件。
在 5.0-6.0的代码注释中写道,旧的文件.xml用于兼容尚未专门适配更高版本的应用程序,而旧的配置文件在 7.0中被丢弃。
换句话说,在 5.0-6.0上,任何新配置文件中无法定义的字体都将显示在旧配置文件中。 为了保险起见,当我们添加、删除、修改 5.0-6.0的配置文件时,都需要修改。 7.0以后就不需要改2.
注意,一些自定义设备也存在于//etc/.xml中,该文件的优先级高于系统默认配置文件,这也是代码注释中提到的规则。 总之,如果有一些字符无论如何替换都无法更改,则可能是自定义的配置文件优先调用了其他字体的字符。 我手里没有这种设备,所以没有深入研究过。 如果遇到,请自行解决。
旧的.xml基本上只有字体家族的调用列表,几乎没有扩展空间;
新版的fonts.xml对字体的粗细很精确,可以更多的使用,也是我们更换字体的重要依赖。
如果您的系统是 4.4或更低版本,只需将您的字体更改为.ttf并在手机中替换即可。 配置文件无需更改。
如果你的安卓系统是 5.0以上,请往下看,将手机的字体显示能力最大化。
解释配置文件
百度[++],这款电脑软件是一款专业的文本阅读工具,尤其是查看字体配置文件,会非常方便,如果直接用普通的txt编辑器修改的话,很容易出问题。
我们先打开.xml,不同手机可能会有差异,原生 6.0是这样的:
-.otf
-.otf
-.otf
-.otf
当您看到代码时不要灰心。 这很简单。 其实从上到下指定了四种字体,分别是简体中文、繁体中文、日文、韩文。 如果前一个文件没有该字符,系统将使用后一个文件。 要填写的字体。
然后你会发现,除了改变字体的文件名之外,似乎没有什么可以改变的。 是的,你说得对……这就是为什么我前面说了,如果你是 4.4及以下,直接替换系统文件就被拉下来了,因为我没法继续玩了。
不过你要知道,像miui主题字体、主题字体、CM主题字体等无法覆盖字体的地方,可以更改配置文件中指向的字体文件,就可以做到。
因为这个配置明确的告诉你,在 5.0-6.0的手机上,旧配置的兼容模式下执行的字体的文件名是什么,这样就有了一个方向,你要不要改中的字体文件名?配置文件,或者更换系统字体,都可以。
让我们再看一下fonts.xml。 这更强大。 毕竟是 5.0之后才出现的。 我们可以通过改变这个来改变字体,这就像一个奇迹。
-.otf
-.otf
-.otf
-.otf
同样是简体中文、繁体中文、日文、韩文字体的调用规则,但是我们可以看到多了2个参数。
一是,一是风格。 是字重,即字体的粗细; style是字体样式,一般来说有正体和斜体两种。
我们完全可以自己定义不同的样式,调用不同的字体文件,从而达到像苹果手机那样粗细分明的效果,甚至更好,甚至可以专门定义斜体。
例如,您可以使用 Yahei 表示粗体,使用 Arial 表示常规字体,使用 Kai 表示斜体。 这样就会耗尽很多书报的排版效果。
修改配置文件
前面提到了fonts.xml强大的扩展能力,那么我们应该如何扩展它呢?
其实给了我们一个很好的例子,就是默认英文字体的配置和书写:
-薄.ttf
-.ttf
-光.ttf
-.ttf
-.ttf
-.ttf
-.ttf
-.ttf
-黑色.ttf
-.ttf
-粗体.ttf
-.ttf
有了前面的基础,这段代码就很容易解读了。 有100、300、400、500、700和900 6种不同的粗细,以及两种样式(普通样式和斜体样式)。
我们完全可以模仿这个。
其中,400对应正常粗细,700对应最常用的粗体字体,300对应最常用的细字体。
一个中文替换字体,如果包含了以上3个粗细,排版效果就已经差强人意了(这句成语的意思是勉强满意,不管如何,就是满意的意思,很多不识字的小说作者都用它来表示不满意,简直就是侮辱)给这位先生)。
例如,这样写:
-Light.otf
-.otf
凯蒂.ttf
-粗体.otf
细字体-Light.otf、常规字体-.otf、斜体Kaiti.ttf、粗体字体-Bold.otf都是指定文件,然后将/fonts下文件名对应的同名字体文件拖入,重启电话就可以了。
然而,一般中文不需要自己定义斜体。 系统会在需要斜体中文的地方呈现斜体。 毕竟基本上没有这样的官方斜体中文字体,所以没有必要自己去换一个。
以我写的粗体配置文件为例:
zh-汉斯">
-Light.otf
-.otf
-.otf
-粗体.otf
zh-汉特">
-Light.otf
-.otf
-.otf
-粗体.otf
共有2大版块,即简体中文和繁体中文。 为了省事,我调用的文件都是一样的。 然后将新黑的4个字体文件拖放到/fonts下,重启手机即可生效。
原文下还有韩文和日文的配置。 我们不需要改动,直接使用系统原来的文件即可。 因此,如果严格按照配置文件更改字体,则不必考虑字体文件中是否有韩文和日文。 。
7.0的配置文件
再看一下 7.0的fonts.xml汉字区的配置,比较高级。
-.ttc
-.ttc
-.ttc
-.ttc
你会发现有index这个东西,其实和 7.0中ttc字体的使用有关。 一个ttc字体由多个ttf文件组成,配置文件的索引告诉系统在不同的语言中调用ttc中的哪个文件。
所以你会在我的字体中找到-.ttc。 其实改不改都没关系,只是有些app比较顽固,比如多读。 默认阅读字体就是使用这个字体文件。 按理说他们应该在中文环境下读取正确的字体,但奇怪的是,如果你改变了中文部分的字体配置,多看阅读就会在日文中调用汉字……
并且-.ttc在日语环境下处理日文汉字有问题。 例如,“福”和“关”只有汉字的一半宽度。
所以在我再次输入的-.ttc中,日语环境和中文环境对应的索引其实是一样的,避免一些顽固应用出现问题。
在 7.0上,我相信黑色字体的中文部分是完全配置的。 这很简单。 只要你懂了,就可以轻松复制到手机上。
zh-汉斯">
-Light.otf
-.otf
-.otf
-粗体.otf
zh-汉特">
-Light.otf
-.otf
-.otf
-粗体.otf
-.ttc
-.ttc
-.ttc
-.ttc
将自定义的汉字调用规则插入到配置中,后期仍保留系统自带的调用规则。
这种情况下,系统会从上到下识别,并适当替换字体,粗细细度都明确。
顺便解压并阅读了HTC 10国际版的 7.0 ROM。 他的公函有黑体粗字两个字,和我修改的一模一样。
同样,小米官方的小米兰馆和锤子官方的冬青黑都是这样改的字体。
本教程到此结束。
只要理解了,全局替换系统字体不是问题;
只要学透,处理手机字体的粗细和细度太容易了;
只要你能举一反三,比如小米、魅族、三星等各种杂牌手机,用我分享的字体修改一分钟就可以适配你的手机了。
你要做的就是把原机的字体配置文件拿出来,按照我的配置复制过来。
为什么我不能用我的替换它?
你见过抄作业,把别人的名字抄到作业本里吗……不同的手机不一样。
我用原生 做到了。
世界上安卓手机那么多,我不可能全部买来给你适配(你可以买给我当礼物,可以考虑),你要自己学会做,而且学会后你可以在一分钟内改变事情。
如果你还不想学,那就想办法自己制作字体apk包。
还要补充一点,使用re 等工具替换系统字体文件时,可能会导致系统界面崩溃并自动重启(系统检测到正在使用的文件被修改,就会乱七八糟) ,并且有些应用程序在打开某些应用程序时会闪烁。 回来需要手动重启手机,以后就完美了。
最后,我想分享一个小技巧。 微信、QQ内置浏览器存在以下问题:
1.字体渲染没有严格按照fonts.xml实现多权重加载,替换多个权重后会自动变成恶心的伪粗体
2、网页加载效率,一些外卖红包领取页面经过微信登录验证,往往第一次会卡,第二次就能正常访问
这些都是QQ浏览器内核的鬼魂。
如果想要解决上述问题,只需要将浏览器内核切换为 5.0+的默认内核即可。
公众号回复“浏览器内核”即可获取解决方案。
提醒:请联系我时一定说明是从星空网上看到的!