fix: ASS Fontname 字体名称映射到服务器注册名 #1508

Merged
auto-approve-bot merged 1 commits from fix/ass-font-name-mapping into develop 2026-08-26 16:56:02 +08:00
Owner

前端传中文字体名(思源黑体/苹方/微软雅黑等),服务器上 ffmpeg 通过注册名匹配,导致字体 fallback 到默认。

加 FONT_NAME_MAP 字典:思源黑体→Noto Sans CJK SC、思源宋体→Noto Serif CJK SC 等。build_ass_style 中 actual_font = FONT_NAME_MAP.get(font_name, font_name),未映射原样透传。

新增4个字体映射单测。

前端传中文字体名(思源黑体/苹方/微软雅黑等),服务器上 ffmpeg 通过注册名匹配,导致字体 fallback 到默认。 加 FONT_NAME_MAP 字典:思源黑体→Noto Sans CJK SC、思源宋体→Noto Serif CJK SC 等。build_ass_style 中 actual_font = FONT_NAME_MAP.get(font_name, font_name),未映射原样透传。 新增4个字体映射单测。
xiaoxia added 1 commit 2026-08-26 16:42:06 +08:00
fix: ASS Fontname 字体名称映射到服务器注册名
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 32s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 42s
AI Code Review / AI Code Review (pull_request) Successful in 1m18s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m13s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m58s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m36s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m43s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 5m38s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 7m23s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 4m3s
CI/CD Pipeline / CI Gate (pull_request) Successful in 8s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 37s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m44s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m18s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m3s
14c11a75a0
前端传中文字体名(思源黑体/苹方/微软雅黑等),但服务器上 ffmpeg 通过注册名匹配,
导致字体 fallback。加 FONT_NAME_MAP 字典映射到 Noto Sans CJK SC 等实际注册名。

新增4个字体映射单测,85个测试全部通过。
Collaborator

【阻塞级判定】

  • 是否存在阻塞级问题:否
  • 阻塞级问题数量:0 个

📊 审查概览

  • 整体评价:通过
  • 建议级问题数量:0 个

🔴 阻塞级问题(必须修复)

💡 改进建议(不阻塞合并)

良好实践

  1. [packages/domain/ass_subtitle_builder.py] 字体映射逻辑健壮

    • 使用 dict.get(key, default) 方法优雅地处理了未命中映射的情况,确保未知字体名能原样透传,避免了潜在的 KeyError 或逻辑中断。
  2. [tests/unit/test_ass_subtitle_builder.py] 测试覆盖充分

    • 不仅增加了针对特定字体(如思源、苹方、微软雅黑)的映射测试,还补充了“未知字体原样使用”的边界测试,确保了代码在各种输入下的行为符合预期。
  3. [tests/unit/test_ass_subtitle_builder.py] 及时更新现有测试

    • test_minimal_style 中及时更新了断言,从检查中文字体名改为检查映射后的服务器注册名,保证了测试用例与实现逻辑的一致性。

🤖 由 AI 代码审查机器人自动生成 | 2026-08-26 08:43:26 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议级问题数量:0 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 无 ### ✅ 良好实践 1. **[packages/domain/ass_subtitle_builder.py] 字体映射逻辑健壮** - 使用 `dict.get(key, default)` 方法优雅地处理了未命中映射的情况,确保未知字体名能原样透传,避免了潜在的 KeyError 或逻辑中断。 2. **[tests/unit/test_ass_subtitle_builder.py] 测试覆盖充分** - 不仅增加了针对特定字体(如思源、苹方、微软雅黑)的映射测试,还补充了“未知字体原样使用”的边界测试,确保了代码在各种输入下的行为符合预期。 3. **[tests/unit/test_ass_subtitle_builder.py] 及时更新现有测试** - 在 `test_minimal_style` 中及时更新了断言,从检查中文字体名改为检查映射后的服务器注册名,保证了测试用例与实现逻辑的一致性。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-26 08:43:26 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->

🚀 预览环境已部署

项目 详情
PR号 #1508
预览链接 https://pr-1508.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1508 | | 预览链接 | [https://pr-1508.preview.xiaoxiajianji.com](https://pr-1508.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot approved these changes 2026-08-26 16:50:30 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-08-26 16:50:30 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit 23b6f23bad into develop 2026-08-26 16:56:02 +08:00
auto-approve-bot deleted branch fix/ass-font-name-mapping 2026-08-26 16:56:02 +08:00

🗑️ 预览环境已清理

PR #1508 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #1508 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.