Releases: TsinbeiLabs/GoogleSansMax
Releases · TsinbeiLabs/GoogleSansMax
Release list
v1.5.8
修复
- 修复安装阶段误删
lib/manifest-*.txt,导致首次热更新重新生成不完整 manifest 并错误下载安装期 lib 文件的问题。 - 热更新 manifest 现在只追踪设备实际保留的文件,并加入
config/*.xml、uninstall.sh与scripts/gen_manifest.sh。 - 修复仅
module.prop变化时热更新误报失败、远程删除文件无法同步、配置更新后 XML 未重新 patch 等问题。 - 下载文件加入 SHA-256 校验,并按脚本/数据文件设置正确权限。
- 新增
uninstall.sh,卸载时重新启用被模块持久禁用的 GMS FontsProvider 与 UpdateSchedulerService。
构建
- 打包前移除
tests/、tmp/和仅 CI 使用的 Python 脚本,减小模块体积。 - 新增热更新 manifest 回归测试,验证不会列入
module.prop、安装期 lib 和 CI-only 脚本。
v1.5.7
修复
- 修复
花ᩚ海等“基字与组合符分属不同真实字体”的组合簇被 LastResort 全码点兜底 cmap 抢占,导致基字显示为空心方框的问题。现会从 LastResort 强制剥离所有已被链中更早字体覆盖的码位,使其仅兜底真正无字形的字符。
测试
- 新增 LastResort 覆盖码位剥离与合字簇捕获回归测试,并以真实 LastResort/NotoUnicode 字体做端到端断言。
- Release 构建在最终 strip 后重新验证 LastResort 不再含已被覆盖的 CJK/Tai Tham 码位,仍能兜底 U+10FFFF 等无字形字符。
v1.5.6
修复
- 修复 iPhone/macOS 私有字符 U+F8FF 在 Android 上被 NotoUnicode 的 DISU 字形抢占,现会继续 fallback 到 KreativeSquare 并显示 Apple 标志。
- 将 LastResort 移到 Unicode fallback 链末尾,避免其全码点占位字形遮蔽 Firefox 的无语言 CJK fallback。
测试
- 新增 Apple 私用字符 fallback、LastResort 终点顺序和复杂 Emoji 序列回归测试。
- Release 构建会在最终 cmap strip 后重新验证实际出包的 NotoUnicode 与 Emoji 字体。
- 使用 Unicode-CBDT 成品验证 Emoji presentation、键帽、ZWJ、国旗、肤色和 Tag 旗帜序列;Emoji 16.0 的 3790 个 RGI/component 序列全部合成为有效单字形。
v1.5.5
修复
- 修复 v1.5.4 国旗 Emoji fallback 处理范围不完整的问题。
- 除
NotoUnicode外,同时从KreativeSquare和LastResort删除 Regional Indicator 映射,避免通用字体在彩色 Emoji 字体前截获国旗序列。 - 修复国旗后部分 ASCII 因错误 fallback run 延续而显示方框的问题。
- 将失效的
NotoEmoji-Regular.ttf引用替换为实际打包的NotoColorEmoji.ttf,并使用und-Zsye显式注册彩色 Emoji family。
测试
- 新增 Emoji family 注册和全部 RI 竞争字体剥离的回归测试。
- 使用 v1.5.4 实际 CBDT 发布包验证:修复后仅
NotoColorEmoji.ttf保留全部 26 个 Regional Indicator,其他通用 fallback 均为 0。 - 现有 ASCII、组合字符簇和 Emoji ligature 测试全部通过。
v1.5.4
修复
- 修复国旗 Emoji 与 ASCII 混排时部分字符显示方框的问题。
- 国旗由两个 Regional Indicator 组成;当
NotoUnicode仅覆盖单个码点但无法完成国旗 GSUB 合成时,改由NotoColorEmoji处理完整序列。 - 仅在 Emoji 字体通过完整 RI 覆盖和国旗 ligature 检查后,从
NotoUnicode剥离 U+1F1E6–U+1F1FF,避免影响 Core 版。 - 保持现有 ASCII 标点和组合字符簇回退行为不变。
测试
- 新增国旗 ligature、Regional Indicator 覆盖和序列定向剥离回归测试。
- 使用 CBDT 与 COLRv1 两种实际 Noto Color Emoji 字体验证。
其他
- 统一仓库文本文件使用 LF 换行。
v1.5.3
v1.5.2
修复
- 修复复杂组合字符回退问题,例如
U+25D4 U+032F U+25D4。 - 将
NotoSansSuper调整到部分覆盖的NotoUnicode之前,确保完整字符簇由同一字体处理。 - 修复 CFF 字形检测:改为绘制实际轮廓,不再读取尚未反编译的惰性
CharString程序。 - 移除不安全的 Unicode 区块批量剥离,保留真实的基础字符和组合附加符号覆盖。
- 保留 v1.4.5 对
! , - . : ; ?的 emoji 后标点修复,不修改主字体或 Emoji 字体。
测试
- 新增组合字符簇、可打印 ASCII、通用回退顺序和 cmap 剥离安全性的回归测试。
v1.5.1
修复
- 移除 fonts_fragment.xml 中 NotoSansMono 的添加(导致 emoji 后 ASCII 变方框)
- 剥离脚本保持区块方案(ASCII / Latin-1 / General Punctuation),仅处理覆盖字体
- TTC / CFF2 兼容
关于 ◔̄◔ (U+25D4 + U+032F)
NotoSansMono 属于 monospace 族,无法被 sans-serif fallback 链使用。将其加入通用回退会导致 emoji+ASCII 混合渲染异常。目前 U+25D4 保留在 NotoSansSuper 中显示为 TOFU,不会触发 LastResort。
v1.5.0
关键修复
- 修复系统字型显示为空白方块(TOFU)问题:重新设计空码位清理策略,改手动逐点清理为 Unicode 区块范围批量清理。
NotoSansSuper.otf等全覆盖字体中 94 个可打印 ASCII 字符、几何图形、箭头、数学符号、杂项符号、方块元素等所有常用符号的空码位将不再阻挡系统字体渲染。
其他修复
- 修复上游同步时
config/fonts_fragment.xml被覆盖导致 Firefox CJK 回退丢失的问题 - 修复上游同步时
Blocks.txt意外从 Unicode 18 回退到 17 的问题 - 修复
action.sh热更新可能下载未清理的覆盖字体从而重新引入 TOFU 的问题
许可证合规
- 所有脚本文件已添加 GPL-3.0 版权头
- 新增
scripts/apply-gpl-header.sh,确保上游同步后自动补回头文件 service.sh中标注Portions Copyright以遵守killgmsfont(GPL-3.0)的再分发要求
文档与 CI
- README 精简,详细技术文档拆分到
docs/目录 - README 新增 GitHub release / downloads / build status / FOSSA 徽章
- CI 流程
release.yml更新为使用新的strip_font_cmap.py
v1.4.5
修复
- 修复 emoji 后紧跟 - : ; ! ? . ,\ 等半角标点时显示空心框的问题
- 根因:
NotoUnicode.otf等 fallback 字体的 cmap 包含这些字符但对应空字形,Minikin 渲染器命中后不再回退到主字体 - 解决:CI 构建时自动从所有 fallback 字体中剥离这 7 个标点的 cmap 条目
- 根因:
- 修复 action.sh 热更新时
manifest.txt不存在直接报错的问题- 改为自动调用
scripts/gen_manifest.sh按本地文件重新生成
- 改为自动调用
改进
scripts/gen_manifest.sh:CI 和 on-device 共用的 manifest 生成脚本,消除重复逻辑- action.sh 热更新完成后改为本地重新生成 manifest,不再依赖远端拷贝
- CI 打包包含
scripts/目录,确保 gen_manifest.sh 随模块分发
其他
- 项目许可证确定为 GPL-3.0