1.9.0 (2026-05-17)
1.9.0
本版本重整了字体缩放补偿链路、Flutter 补充路径和最小宽度计算流程。减少重复缩放、统一 hook 调度,并提升高 DPI/字体组合的稳定性
感谢用户 @hanlin8429 @hbyswbq @Jioani @Mubai-meng @notlccc 以及酷安各位的反馈,促进了链路的完善
字体缩放
- 统一字体 hook domain 调度:
Resources、TextView、WebView、Flutter settings、HyperOS native Flutter 进入同一调度路径。
- HyperOS native Flutter 字体 hook 改为由 app-process installer 按包配置和运行策略统一安装,不再由
ModuleMain 直接分支安装。
- 拆分 TextView 当前 px fallback 语义,避免在
Resources/scaledDensity 已生效后再次放大 SP 文本。
- generic native Flutter offset patching 继续保持 debug-only,避免不稳定 offset 进入常规路径。
- 新增实验设置入口,集中管理 Flutter settings / native Flutter 补充字体链路。
最小宽度与 density 稳定性
- 视口计算基线修正为优先使用
smallestScreenWidthDp,减少“与系统一致却仍被判定变化”的误判。
- 修复未知
densityDpi 被错误补齐并污染虚拟显示状态的问题。
- 稳定
ResourcesImpl、ResourcesManager、ResourcesRead 三条资源覆盖路径的 density/fontScale 应用行为。
- 移除 modern101 旧
native_init.list 路径,避免 native 初始化入口重复或偏航。
配置与可观测性
- Flutter 补充字体 hook 的配置读取、迁移与开关状态保持一致。
- 系统设置页与关于页入口整理,实验开关独立展示。
- 清理阶段性探针、目标应用特化逻辑和过程性排查文档。
- 补充单测与布局 smoke 测试,覆盖 font domain、Flutter hook 配置、资源覆盖与迁移行为。
UI 术语更新
- 用户界面术语调整:
虚拟宽度 -> 最小宽度
伪装 -> 系统
替换 -> 兼容
- 配置和日志中的
system_emulation / field_rewrite 作为历史内部值保留,确保兼容已有数据与诊断脚本。
已知限制
微信 在极端高 DPI 参数下,部分页面观感仍可能不一致;DPIS 可完成系统/资源侧缩放,但应用自身 UI 仍可能存在硬限制。
123*盘 的 系统模式 已确认不稳定;兼容模式 受壳与动态文本结构影响,暂不作为稳定适配目标。
注意
Legacy 版本以及 HyperOS 链路并没有充裕精力进行实机确切验证,所以 v1.9.0 仅用于尽快提供 API 101 的重构版本。如果对于以上线路发现有明显问题,可前往对应 Issue 内留言!
1.9.0
This release consolidates font-scaling compensation paths, Flutter supplemental routes, and smallest-width calculation flow. The focus is to reduce duplicate scaling, unify hook orchestration, and improve stability under high DPI + font scale combinations.
Thanks to users @hanlin8429 @hbyswbq @Jioani @Mubai-meng @notlccc and everyone on CoolAPK for the feedback
Font Scaling Pipeline
- Unified font hook domain arbitration:
Resources, TextView, WebView, Flutter settings, and HyperOS native Flutter now follow one scheduling path.
- HyperOS native Flutter font hook is now installed by the app-process installer based on package config and runtime policy, instead of direct branching in
ModuleMain.
- Split TextView current-px fallback semantics to avoid double-enlarging SP text after
Resources/scaledDensity has already applied.
- Kept generic native Flutter offset patching as debug-only to prevent unstable offsets from entering the normal path.
- Added an experimental settings entry to centrally manage Flutter settings/native Flutter supplemental font routes.
Smallest-Width and Density Stability
- Viewport derivation baseline now prioritizes
smallestScreenWidthDp, reducing false-positive “changed” detections when values already match system config.
- Fixed an issue where unknown
densityDpi could be incorrectly normalized and pollute virtual display state.
- Stabilized density/fontScale application behavior across
ResourcesImpl, ResourcesManager, and ResourcesRead override paths.
- Removed legacy modern101
native_init.list path to avoid duplicated or misrouted native initialization.
Config and Observability
- Aligned config read/migration/toggle-state behavior for Flutter supplemental font hooks.
- Reorganized system settings/about entry points and separated experimental toggles.
- Removed temporary probes, app-specific investigation branches, and process-only investigation docs.
- Added unit and layout smoke coverage for font domain arbitration, Flutter hook config, resource overrides, and migration behaviors.
UI Terminology Update
- User-facing terminology was updated:
Virtual width -> Smallest width
Emulation -> System
Replacement -> Compat
- Internal persisted/log values
system_emulation and field_rewrite are intentionally retained for backward compatibility.
Known Limitations
- On WeChat, some pages may still look inconsistent under extreme high-DPI settings; DPIS can apply system/resource-side scaling, but app-side UI constraints may still apply.
- For
123*pan, system mode is confirmed unstable; compat mode is still affected by shell behavior and dynamic text structure, so it is not treated as a stable adaptation target yet.