feat: 完成 DOCX 视觉门禁与字体兼容映射
This commit is contained in:
@@ -97,6 +97,15 @@ describe("DOCX 字体包写入", () => {
|
||||
output.entries.get("word/fontTable.xml")
|
||||
);
|
||||
expect(fontTable).toContain('w:name="FandolFang"');
|
||||
expect(fontTable).toContain(
|
||||
'<w:panose1 w:val="00000500000000000000"/>'
|
||||
);
|
||||
expect(fontTable).toContain('<w:charset w:val="86"/>');
|
||||
expect(fontTable).toContain('<w:family w:val="auto"/>');
|
||||
expect(fontTable).toContain('<w:pitch w:val="variable"/>');
|
||||
expect(fontTable).toContain(
|
||||
'<w:sig w:usb0="80000001" w:usb1="00002000" w:usb2="00000002" w:usb3="00000000" w:csb0="00060007" w:csb1="00000000"/>'
|
||||
);
|
||||
expect(fontTable).toContain("<w:embedRegular");
|
||||
expect(fontTable).toContain(
|
||||
`xmlns:r="${relationshipNamespace}"`
|
||||
@@ -124,6 +133,22 @@ describe("DOCX 字体包写入", () => {
|
||||
expect(validateGeneratedDocx(result.content)).toMatchObject({
|
||||
embeddedFontCount: 1
|
||||
});
|
||||
|
||||
const invalidEntries = new Map(output.entries);
|
||||
invalidEntries.set(
|
||||
"word/fontTable.xml",
|
||||
encoder.encode(
|
||||
fontTable.replace(
|
||||
'<w:charset w:val="86"/>',
|
||||
'<w:charset w:val="00"/>'
|
||||
)
|
||||
)
|
||||
);
|
||||
expect(() =>
|
||||
validateGeneratedDocx(
|
||||
writeGeneratedDocxPackage(invalidEntries)
|
||||
)
|
||||
).toThrow("字体元数据与嵌入字形不匹配");
|
||||
});
|
||||
|
||||
it("没有字体时保持原始 DOCX 字节不变", () => {
|
||||
|
||||
Reference in New Issue
Block a user