feat: 完成 DOCX R4 元素级视觉门禁

建立 Chromium、Word 与 WPS 的可编辑内容、段落几何、页眉页脚、封面、媒体和逐页视觉比较链路。

支持封面独立分节、正文页码重启、主题页边距与横向纸张,并将自然分页差异降为诊断项。

修正代码块内边距和折叠表格单元格边框映射,14 套主题生产矩阵与六组布局视觉矩阵通过。
This commit is contained in:
SkyJourney
2026-08-02 03:27:11 +08:00
parent f9f5fccfc9
commit 58f87cc19f
100 changed files with 10409 additions and 386 deletions
@@ -26,6 +26,14 @@ const payload: PagedPreviewPayload = {
keywords: [],
language: "zh-CN"
},
semanticDocument: {
schemaVersion: 1,
titlePolicy: {
metadataTitle: "suppress",
firstBodyHeading: "keep"
},
regions: []
},
features: [],
themeCss: "#write { color: #333; }",
exportConfig: defaultExportConfig
@@ -94,6 +102,9 @@ describe("分页预览协议", () => {
);
expect(css).toContain('content: "内网团队"');
expect(css).toContain("border-bottom: 0.2mm solid currentColor");
expect(css).toContain(
"transform: translateY(calc(16mm - 8mm - 3mm))"
);
});
it("支持自定义页码模板和起始页码", () => {
@@ -192,6 +203,40 @@ describe("分页预览协议", () => {
);
});
it("由语义文档强制封面结束后换页", () => {
expect(documentGeometryCss).toContain(
'#write [data-semantic-break-after="next-page"]'
);
expect(documentGeometryCss).toContain(
"break-after: page !important"
);
expect(documentGeometryCss).toContain(
"page-break-after: always !important"
);
expect(documentGeometryCss).toContain(
'[data-semantic-region="cover"]'
);
expect(documentGeometryCss).toContain(
"break-inside: avoid !important"
);
});
it("使用标准 Letter 横向尺寸生成分页规则", () => {
const css = buildPagedMediaCss(
{
...defaultExportConfig,
paper: {
...defaultExportConfig.paper,
format: "Letter",
orientation: "landscape"
}
},
payload
);
expect(css).toContain("size: 279.4mm 215.9mm;");
});
it("避免 Typora 围栏容器重复应用行内代码盒模型", () => {
expect(documentBaseCss).toContain(
"#write pre.md-fences > code"