Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MIUI EU 套用失敗 #41

Open
kimlu235711 opened this issue Jun 3, 2022 · 2 comments
Open

MIUI EU 套用失敗 #41

kimlu235711 opened this issue Jun 3, 2022 · 2 comments

Comments

@kimlu235711
Copy link

kimlu235711 commented Jun 3, 2022

已經把customize.sh的註釋解開了,但是沒有完全移除乾淨Misans在fonts.xml的訊息
以下這段沒有被移除掉,我猜測可能是因此沒有套用成功
***
***Miui-Regular.ttf
***
***
***Miui-Regular.ttf
***
系統原始版.txt
不完全修改版.txt

版本:
MIUI EU 13.0.13穩定版

@WordlessEcho
Copy link
Collaborator

因为有MIUI主题适配原因,字体其实是不方便修改的。

#10 (comment)

@updateing
Copy link

updateing commented Nov 16, 2023

在国内版 MIUI 15(HyperOS)上安装 NotoCJK 后,先在系统内选择小米兰亭 Pro,把粗细向粗的方向拉 15% 左右,然后用 /system/fonts/Roboto-Regular.ttf 替换掉 /data/system/theme/fonts/Roboto-Regular.ttf,看起来的效果就跟原生系统使用此模块非常接近了。


更正:

  1. 以上方法会导致粗体表现得像 Medium 字重,而非 Bold. 这是因为小米兰亭 Pro 是 VF 字体,系统会用 ThemeVFManager 来处理主题字体替换。但它在处理可变字体的粗体时,只是简单地让 weight“比设定值粗一档”,在小米的 weight range 划分里面 400 到 700 远不止一档。更好的方式是使用去主题商店随便找一个免费非 VF 字体来替换,而非使用小米兰亭 Pro,因为这样系统会使用 ThemeFontManager 来管理主题字体替换。它使用的是粗体 weight 是固定的 700,这样显示出来就符合预期了。同时 VF 特性仍然能够使用。
  2. 小米会隔一段时间扫描一下 /data/system/theme/ 里面有没有未授权的文件,有的话会恢复默认字体。上面的替换操作会触发这个机制,必须另外想办法规避。为了在 Android 系统里用上 Android 自带的字体,居然要去对抗 DRM,真是非常离谱。

我尝试过替换默认的 MiSans(系统会使用 MiProFontManager),但是无论怎么用 Roboto 覆盖它,或是修改 fonts.xml,结果都是回落到日文字形,不知道怎么回事。

而最后一种 font manager 是 DefaultFontManager,它不会做任何替换,但要换用它的话需要彻底删除 MiSans,然后 SystemUI 就起不来了。查了下系统里有几处好像是硬编码了 /system/fonts/MiSansVF.ttf,估计比较难解决。

要想 hook 掉这些 font manager 也不可行,因为它们是在每个进程里独立运行的,不可能 hook 到全部的进程。


如果认为以上操作太繁琐,同时不介意系统自带功能缺失的话,可以直接把 MIUI 优化关了,立马就能回归正常字体用法。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants