release: 发布字体直接内置版 v0.6.1

新增能力:14 套主题按纵横方向与五组页边距组成的 140 场景视觉矩阵全部通过,封面执行整页严格门禁,正文执行分页无关的语义块门禁。

问题修复:统一 CSS 到 WordprocessingML 的通用翻译,修复字体嵌入、中文标点字距、精确行距、打印媒体与行内代码连续性,不包含按主题 ID 的特调。

发行变化:Desktop 安装器与免安装 ZIP 直接内置 Serif、Sans、Mono 三套字体包;NSIS 移除字体选择和伴随安装逻辑,不再发布独立字体安装器或字体 ZIP。正式附件收敛为 Desktop 安装器、Desktop ZIP、Docker 离线镜像、Web 部署包和发行说明。

部署兼容:Docker 镜像 md-to-pdf:v0.6.1 使用完整无缓存路径构建,固定 Chromium、Pandoc 3.9.0.2 和三套内置字体包;支持覆盖安装 v0.6.0,Windows 安装器保持未签名的内部发布状态。

验证结果:116 个测试文件、616 项测试、全项目类型检查、生产构建和 git diff --check 全部通过;140/140 视觉矩阵阻断失败和诊断失败均为 0;源码服务、Docker Web API 与实际安装 Desktop 的 DOCX 字体嵌入链路均通过。
This commit is contained in:
SkyJourney
2026-08-04 12:25:02 +08:00
parent f93abf064f
commit 01b06abc2c
11 changed files with 47 additions and 140 deletions
@@ -37,5 +37,5 @@ await new Promise((resolvePromise, reject) => {
});
process.stdout.write(
`已生成内置字体包的主安装器与便携 ZIP${join(desktopRoot, "out", `v${desktopManifest.version}`)}\n`
`已生成字体直接内置的主安装器与便携 ZIP${join(desktopRoot, "out", `v${desktopManifest.version}`)}\n`
);
-29
View File
@@ -186,28 +186,6 @@ export async function stageRelease(options = {}) {
`MorphDoc-${version}-x86_64-Setup.exe`,
`MorphDoc-${version}-x86_64.zip`
];
const fontPackArtifacts = [
{
name: "MorphDoc-FontPack-mdtp-serif-sc-1.0.0-x86_64-Setup.exe",
source: join(
repositoryRoot,
"output",
"font-packs",
"windows",
"MorphDoc-FontPack-mdtp-serif-sc-1.0.0-x86_64-Setup.exe"
)
},
{
name: "MorphDoc-FontPack-mdtp-serif-sc-1.0.0.zip",
source: join(
repositoryRoot,
"output",
"font-packs",
"release",
"MorphDoc-FontPack-mdtp-serif-sc-1.0.0.zip"
)
}
];
const releaseNotesSource = join(
repositoryRoot,
"docs",
@@ -217,9 +195,6 @@ export async function stageRelease(options = {}) {
for (const name of desktopNames) {
await assertReadableFile(join(desktopDirectory, name));
}
for (const artifact of fontPackArtifacts) {
await assertReadableFile(artifact.source);
}
await assertReadableFile(releaseNotesSource);
await mkdir(stageDirectory, { recursive: true });
@@ -227,9 +202,6 @@ export async function stageRelease(options = {}) {
for (const name of desktopNames) {
await copyFile(join(desktopDirectory, name), join(stageDirectory, name));
}
for (const artifact of fontPackArtifacts) {
await copyFile(artifact.source, join(stageDirectory, artifact.name));
}
await copyFile(releaseNotesSource, join(stageDirectory, "RELEASE-NOTES.md"));
const deployName = `MorphDoc-Web-${version}-deploy.zip`;
@@ -249,7 +221,6 @@ export async function stageRelease(options = {}) {
const primaryNames = [
...desktopNames,
...fontPackArtifacts.map((artifact) => artifact.name),
imageName,
deployName,
"RELEASE-NOTES.md"
+3 -10
View File
@@ -61,14 +61,7 @@ test("Web 离线部署 ZIP 包含 Compose 和导入说明", async () => {
}
});
test("正式发布强制归集独立字体安装器和 ZIP", () => {
assert.match(
stageReleaseSource,
/MorphDoc-FontPack-mdtp-serif-sc-1\.0\.0-x86_64-Setup\.exe/u
);
assert.match(
stageReleaseSource,
/MorphDoc-FontPack-mdtp-serif-sc-1\.0\.0\.zip/u
);
assert.match(stageReleaseSource, /fontPackArtifacts\.map/u);
test("正式发布不再拆分独立字体安装器和 ZIP", () => {
assert.doesNotMatch(stageReleaseSource, /MorphDoc-FontPack-/u);
assert.doesNotMatch(stageReleaseSource, /fontPackArtifacts/u);
});