fix(fonts): FONT_NAME_MAP改为Noto Sans SC适配容器实际字体 #1514
Reference in New Issue
Block a user
Delete Branch "fix/font-name-map-noto-sans-sc"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
容器内
NotoSansCJK-*.ttc已被移除,仅剩NotoSansSC-VF.ttf(注册名Noto Sans SC)。fc-match "Noto Sans CJK SC"返回 DejaVu Sans(西方字体),导致中文渲染异常。修复
packages/domain/ass_subtitle_builder.py
FONT_NAME_MAP中所有Noto Sans CJK SC改为Noto Sans SC:Noto Sans SCNoto Serif CJK SC(容器内该字体仍存在)packages/shared/title_overlay.py
_FONT_CANDIDATES首位插入:确保 Pillow 叠加封面标题时优先使用新字体文件。
测试
同步更新 4 个测试文件中的字体名断言(178 tests passed)。
验证
fc-match "Noto Sans SC"→NotoSansSC-VF.ttf✅fc-match "Noto Serif CJK SC"→NotoSerifCJK-Regular.ttc✅🚀 预览环境已部署
代码审查结果 - PR #1514
⚠️ 问题(1个需要修改)
ass_subtitle_builder.py将字体映射统一改为Noto Sans SC,但在title_overlay.py的字体查找列表中,NotoSansSC-VF.ttf之后仍然保留了NotoSansCJK...(TTC) 文件作为回退。如果部署环境中缺少NotoSansSC-VF.ttf,title_overlay.py会回退使用 TTC 文件(通常注册名为Noto Sans CJK SC),而ass_subtitle_builder.py生成的 ASS 代码中强制指定了Noto Sans SC。由于 TTC 文件通常不注册为Noto Sans SC,这将导致字幕渲染时找不到字体,出现乱码或回退到默认字体,而图片覆盖可能正常显示,造成表现不一致。NotoSansSC-VF.ttf;如果需要兼容旧环境或仅安装了 CJK TTC 包的情况,应将FONT_NAME_MAP中的值改回Noto Sans CJK SC,或者在title_overlay.py中移除 CJK TTC 的回退路径以保持逻辑一致。💡 建议(0个可选)
✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能良好
🤖 由 AI 代码审查机器人自动生成 | 2026-08-26 16:24:02 | 模型:
🗑️ 预览环境已清理
PR #1514 已关闭或合并,对应的预览环境已被清理。