android_system_font_weight 0.4.0 copy "android_system_font_weight: ^0.4.0" to clipboard
android_system_font_weight: ^0.4.0 copied to clipboard

PlatformAndroid

同步采集安卓系统字重原始 Map,提供 OPPO、小米、vivo、荣耀的取值参考函数。 调用方可自定义兼容策略;无法确定字重时返回 null,保留原有字体样式。

Changelog #

0.4.0 #

  • Breaking:公开 API 收敛为 getRawData() 原始 Map 和无参 getWght()getWght() 内部采集并按厂商取值,调用方可参照实现自定义无参函数。 移除公开的 extractWghtgetVendorvendorOfnormalize 和厂商枚举导出。
  • 参考策略仅处理 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/TextStyle usage 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。
0
likes
145
points
142
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

同步采集安卓系统字重原始 Map,提供 OPPO、小米、vivo、荣耀的取值参考函数。 调用方可自定义兼容策略;无法确定字重时返回 null,保留原有字体样式。

License

MIT (license)

Dependencies

flutter, jni

More

Packages that depend on android_system_font_weight

Packages that implement android_system_font_weight