fix: 统一前后端标题渲染参数,修复描边/阴影样式丢失 #1393
Reference in New Issue
Block a user
Delete Branch "fix/title-render-consistency"
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?
问题
预览标题(前端Canvas)与生成视频标题(后端ASS)渲染效果不一致。
根因
修复
改动文件
根因: 1. 前端 TitleSettings 发送 stroke/shadow 为 boolean (true/false), 后端 build_ass_content 期望 stroke={enabled,color,width} dict 格式 → 类型不匹配导致描边/阴影样式被丢弃 2. 前端字号上限 Math.min(size,36),后端默认48 → 字号不一致 3. 前端描边宽度2px,后端默认1px 修复: - ass_subtitle_builder.py: boolean stroke/shadow 自动转换为标准dict stroke=true → {enabled:true, color:#000, width:2} shadow=true → {enabled:true, color:#000, blur:4, offset:2} - 字号上限从48改为36(与前端一致) - 描边宽度默认从1改为2(与前端一致) - 11个新测试验证前后端样式一致性【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
title_config字典进行了修改(如title_config["stroke"] = ...)。虽然在当前上下文中可能不会导致问题,但直接修改函数传入的可变参数(字典)会产生副作用,如果调用方在函数调用后继续使用该配置对象,可能会遇到意外的数据结构变化。建议在函数开始时使用copy.deepcopy(title_config)创建副本,或者在修改前明确知晓此副作用并添加注释说明。✅ 良好实践
test_title_render_consistency.py很好地覆盖了新旧格式兼容、边界值(如字号上限)以及默认值逻辑,确保了前后端行为的一致性。True(填充默认值)和False(仅保留 enabled 键)两种情况。🤖 由 AI 代码审查机器人自动生成 | 2026-08-16 10:45:37 | 模型:
🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #1393 已关闭或合并,对应的预览环境已被清理。