android_system_font_weight 0.4.0
android_system_font_weight: ^0.4.0 copied to clipboard
同步采集安卓系统字重原始 Map,提供 OPPO、小米、vivo、荣耀的取值参考函数。 调用方可自定义兼容策略;无法确定字重时返回 null,保留原有字体样式。
Changelog #
0.4.0 #
- Breaking:公开 API 收敛为
getRawData()原始 Map 和无参getWght();getWght()内部采集并按厂商取值,调用方可参照实现自定义无参函数。 移除公开的extractWght、getVendor、vendorOf、normalize和厂商枚举导出。 - 参考策略仅处理 OPPO 系、小米系、vivo 系和荣耀,华为、三星、原生及 其他未知设备返回 null;移除通用扫描、倍率猜测和 AOSP 粗体增量兜底。
- 修复不支持 wght 轴时探针误报 100:校验轴设置、覆盖量变化、单调性、 目标范围及拟合结果,原始 Map 新增 probeStatus,失败时不输出字重。
- OPPO 保留有效探针(含默认 400),不再将滑杆位编码作为实际字重兜底; 小米等未实测字段仅尝试绝对字重,档位与 scale 原值留给调用方适配。
- 新增 Dart 厂商策略回归测试和 Kotlin 探针退化场景测试。
- 原始采集接口由
getAll()更名为getRawData(),Dart 与 JNI 入口保持一致。 - 新增 Android 示例,可查看原始数据、重新读取字重并对比原生与 Flutter 文字。
- 示例中原生 Android TextView 移至第四张卡片;README 精简为两个 API 的英文用法。
0.3.3 #
- Web 编译修复:JNI / dart:io 移入
dart.library.io条件导入分支,web 走 stub(恒返回空 Map / null),宿主(如 el_ui)可正常flutter build web。
0.3.2 #
- README rewritten in English, trimmed to a quick intro + plain Flutter
Text/TextStyleusage example.
0.3.1 #
- compileSdk 34 → 36(package:jni 要求 ≥35,34 会直接编译失败)。
0.3.0 #
- 全同步 API(breaking):跟随 Flutter 3.29+ 平台/UI 线程合并的官方互操作
路径,Dart 经 package:jni 直呼原生静态方法,
getAll/getWght/getVendor均改为同步——消费方(如 ElApp)首帧即可注入,无重排闪动。 MethodChannel 退役;原生拆为SystemFontWeightCollector(@JvmStatic 哑 采集器,返回 U+001E/U+001F 编码字符串)+ 插件类(仅注册期缓存 Context)。 - release 混淆保活:consumer-rules.pro 保留 JNI 按名查找的采集器类。
0.2.0 #
- 架构重分层(breaking):原生只保留唯一 API
getAll(哑采集器,返回全量 原始参数 Map),取值决策全部上移 Dart——getVendor()/vendorOf()厂商 判定独立成 API,extractWght()按厂商挑键 +normalize()值域归一化,getWght()保持一步到位入口不变。移除原生getWght/debugDump方法, Dart 侧debugDump()更名getAll({refresh})(带缓存)。 - 墨水探针返回值取整(wght 轴按整数消费)。
0.1.2 #
- 新增墨水覆盖率探针并设为最高优先级:用系统默认字体绘样张、显式
'wght' N二分对齐覆盖率,直接量出厂商钩子在本进程 Paint 层实际生效 的字重,与键值编码完全解耦。 - ColorOS 关键发现(OPPO PLJ110 真机):settings 低 12 位只是滑杆刻度, framework 应用时另有压缩曲线——存储 800(拉满)实际生效 ≈650。键值 解码降级为探针不可用(探回 ≈400 无法与"钩子未生效"区分)时的兜底。
0.1.1 #
- ColorOS 编码实锤并全链路真机验证(OPPO PLJ110 / Android 16):
Settings.System/font_variation_settings为位打包整数——bit12(0x1000)= 已自定义标志、低 12 位=wght(4896=0x1320→800 拉满、4862=0x12FE→766), Configuration 扩展字段 mFontVariationSettings 同编码(dumpsys 以十六进制 呈现)。>1000 的 variation/wght 键优先位解码,低 12 位出值域退回 ÷10 定点;-1 视为未设置哨兵。 - 新增探测层:反射读 Configuration OEM 扩展字段(mOplusExtraConfiguration 等载体,优先级最高);getprop 系统属性扫描。
- 扫描过滤补上
variation关键词;debugDump 增加 configExtra / 载体字段 清单 / prop 三组输出。
0.1.0 #
- 首版:启动期一次性读取安卓厂商系统全局可变字重(候选键直读 → settings
三表扫描 + 启发式归一化 → AOSP fontWeightAdjustment 兜底),
getWght()返回归一化 wght 或 null;debugDump()输出真机原始键值用于定位厂商私有键。 - Built-in Kotlin:不显式 apply KGP,最低支持 Flutter 3.44 / Dart 3.12。