为什么换字体 / Emoji 后不同 App 显示不一致
原理
安卓的字体和 Emoji 渲染分两种路径:
- 走系统默认(大部分 App):系统字体变了就跟着变
- 自带渲染引擎(部分 App):完全自己画,不受系统设置影响
典型例子
字体
| App 类型 | 走系统还是自己画 |
|---|---|
| 系统设置 / 通知栏 | 走系统 ✅ |
| 微信 / Telegram | 走系统 ✅ |
| 浏览器(Chrome / Edge) | 走系统 ✅ |
| 大部分游戏 | 自己画 ❌ |
| 银行 App(部分) | 自己画 ❌(安全原因) |
| Electron / React Native 跨平台 App | 可能自己画 ⚠️ |
Emoji
| App 类型 | 走系统还是自己画 |
|---|---|
| 系统键盘 emoji 面板 | 走系统 ✅ |
| 短信 App | 走系统 ✅ |
| 浏览器网页 | 走系统 ✅(网页端) |
| Instagram / TikTok / WhatsApp | 自己画 ❌ |
| X(原 Twitter) | 自己画 ❌ |
| Signal / Telegram | 走系统 ✅ |
这是 bug 吗
不是。社交 App 自带 Emoji 集是为了保证跨设备显示一致——不管你用安卓还是 iOS,看到的 emoji 都是同一个样子。银行 App 自己画字体是为了安全——防止恶意 App 通过字体渲染漏洞注入代码。
想让所有 App 都统一怎么办
唯一办法是系统级模块(07-系统级模块 组)——模块挂载到系统分区后,会覆盖所有路径上的字体 / Emoji 文件,包括社交 App 的资源目录。代价是需要 Root 和模块管理器。
不用系统级模块能做什么
- 字体方面:90% 的 App 会遵循系统字体,不用管那 10%
- Emoji 方面:做好心理准备接受社交 App 不变,或者换 Signal / Telegram 这类尊重系统默认的社交 App
字体一半换了一半没换
这个通常不是 App 类型问题,而是字体本身字重映射不完整(只映射了 Regular 没映射 Bold 等),导致粗体还是系统默认。检查 07-系统级模块/03-create-font-module-mapping.md 的映射规则。