diff --git a/core/export_docx.py b/core/export_docx.py index bafcd5b..92e64a5 100644 --- a/core/export_docx.py +++ b/core/export_docx.py @@ -25,10 +25,13 @@ from core.task import TaskState from docx import Document from docx.enum.text import WD_ALIGN_PARAGRAPH -from docx.oxml import OxmlElement from docx.oxml.ns import qn from docx.shared import Cm, Pt, RGBColor +# 字体 OOXML 助手复用平台渲染层的单一事实源(rendering/ 无 core 依赖,host 进程 +# 反向引它方向合法;本模块读 PG,不能反过来搬进 rendering —— 那层要保持沙箱可用)。 +from rendering.common import set_run_fonts as _set_run_fonts + # ───────────────────────── 配色 ───────────────────────── # 选 Word 浅底高对比度的 GitHub-ish 色板,不刺眼也能区分 @@ -44,17 +47,6 @@ COLOR_META_LABEL = RGBColor(0x57, 0x60, 0x6A) # ───────────────────────── 字体辅助 ───────────────────────── -def _set_run_fonts(run, *, cn_font: str = "宋体", en_font: str = "Times New Roman") -> None: - rPr = run._element.get_or_add_rPr() - rFonts = rPr.find(qn("w:rFonts")) - if rFonts is None: - rFonts = OxmlElement("w:rFonts") - rPr.append(rFonts) - rFonts.set(qn("w:eastAsia"), cn_font) - rFonts.set(qn("w:ascii"), en_font) - rFonts.set(qn("w:hAnsi"), en_font) - - def _preserve_spaces(run) -> None: """让 docx 不压缩连续空格 — 代码块/JSON 缩进必须留住。""" for t in run._element.iter(qn("w:t")):