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
+41
View File
@@ -0,0 +1,41 @@
import { readFile } from "node:fs/promises";
import { spawn } from "node:child_process";
import { dirname, join, resolve } from "node:path";
import { fileURLToPath } from "node:url";
const repositoryRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
const desktopRoot = join(repositoryRoot, "apps", "desktop");
const desktopManifest = JSON.parse(
await readFile(join(desktopRoot, "package.json"), "utf8")
);
const npmCli =
process.env.npm_execpath ||
join(dirname(process.execPath), "node_modules", "npm", "bin", "npm-cli.js");
await new Promise((resolvePromise, reject) => {
const child = spawn(
process.execPath,
[npmCli, "run", "make", "-w", "@md-to-pdf/desktop"],
{
cwd: repositoryRoot,
env: process.env,
stdio: "inherit",
windowsHide: true
}
);
child.once("error", reject);
child.once("exit", (code, signal) => {
if (code === 0) {
resolvePromise();
} else {
reject(
new Error(
`桌面安装器构建失败:${signal ? `signal ${signal}` : `exit ${code ?? "unknown"}`}`
)
);
}
});
});
process.stdout.write(
`已生成字体直接内置的主安装器与便携 ZIP:${join(desktopRoot, "out", `v${desktopManifest.version}`)}\n`
);