Skip to content

Releases: TsinbeiLabs/GoogleSansMax

v1.5.8

Choose a tag to compare

@HsukqiLee HsukqiLee released this 14 Aug 13:22

修复

  • 修复安装阶段误删 lib/manifest-*.txt,导致首次热更新重新生成不完整 manifest 并错误下载安装期 lib 文件的问题。
  • 热更新 manifest 现在只追踪设备实际保留的文件,并加入 config/*.xmluninstall.shscripts/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

Choose a tag to compare

@HsukqiLee HsukqiLee released this 13 Aug 21:14

修复

  • 修复 花ᩚ海 等“基字与组合符分属不同真实字体”的组合簇被 LastResort 全码点兜底 cmap 抢占,导致基字显示为空心方框的问题。现会从 LastResort 强制剥离所有已被链中更早字体覆盖的码位,使其仅兜底真正无字形的字符。

测试

  • 新增 LastResort 覆盖码位剥离与合字簇捕获回归测试,并以真实 LastResort/NotoUnicode 字体做端到端断言。
  • Release 构建在最终 strip 后重新验证 LastResort 不再含已被覆盖的 CJK/Tai Tham 码位,仍能兜底 U+10FFFF 等无字形字符。

v1.5.6

Choose a tag to compare

@HsukqiLee HsukqiLee released this 07 Aug 07:51

修复

  • 修复 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

Choose a tag to compare

@HsukqiLee HsukqiLee released this 05 Aug 11:44

修复

  • 修复 v1.5.4 国旗 Emoji fallback 处理范围不完整的问题。
  • NotoUnicode 外,同时从 KreativeSquareLastResort 删除 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

Choose a tag to compare

@HsukqiLee HsukqiLee released this 05 Aug 05:32

修复

  • 修复国旗 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

Choose a tag to compare

@HsukqiLee HsukqiLee released this 01 Aug 05:32

修复

  • 新增带锚点的符号组合回退字体,修复常用符号与组合附加符号的定位和尺寸异常。
  • 为 Common script 符号与 Inherited combining mark 建立真实的 GPOS MarkToBase 锚点。

改进

  • Core 版继续保持精简,仅在 Unicode 版本中启用符号组合兼容覆盖。
  • 生成最终的分版本 manifest,并加强仅随 Release 分发字体的热更新处理。

测试

  • 新增离线 fallback 审计、组合锚点验证和 XML 回归测试。

v1.5.2

Choose a tag to compare

@HsukqiLee HsukqiLee released this 31 Jul 16:15

修复

  • 修复复杂组合字符回退问题,例如 U+25D4 U+032F U+25D4
  • NotoSansSuper 调整到部分覆盖的 NotoUnicode 之前,确保完整字符簇由同一字体处理。
  • 修复 CFF 字形检测:改为绘制实际轮廓,不再读取尚未反编译的惰性 CharString 程序。
  • 移除不安全的 Unicode 区块批量剥离,保留真实的基础字符和组合附加符号覆盖。
  • 保留 v1.4.5 对 ! , - . : ; ? 的 emoji 后标点修复,不修改主字体或 Emoji 字体。

测试

  • 新增组合字符簇、可打印 ASCII、通用回退顺序和 cmap 剥离安全性的回归测试。

v1.5.1

Choose a tag to compare

@HsukqiLee HsukqiLee released this 02 Jul 14:38

修复

  • 移除 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

Choose a tag to compare

@HsukqiLee HsukqiLee released this 02 Jul 06:40

关键修复

  • 修复系统字型显示为空白方块(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

Choose a tag to compare

@HsukqiLee HsukqiLee released this 17 Jun 08:34

修复

  • 修复 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