diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index c78b047..4d0587a 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -230,6 +230,24 @@ ec48bce chore: 初始化项目骨架 - CSS 像素与 PDF 点数换算只使用 core 中的共享常量;删除已经不参与协议 或逻辑的 `contentHeight` 字段。 +### 3.8 Windows 显示缩放与快速预览分页差异 + +- 此前 65 页长文档在快速预览中生成 64 页、在精确预览和最终 PDF 中 + 生成 65 页;该差异并非由 Chromium 版本不同导致。 +- 出现差异时,笔记本内屏使用 Windows 150% 系统显示缩放。切换到使用 + 100% 显示缩放的外接显示器后,快速预览与精确预览的分页结果基本一致。 +- 当前定位是:Windows 显示缩放改变浏览器的 `devicePixelRatio`,并可能 + 影响字体栅格化和 CSS 布局中的子像素取整;单处差异很小,但会在长文档 + 分页过程中累计,最终造成页数差异。 +- 精确预览直接展示服务端 Chromium 生成的 PDF,最终下载也复用同一结果, + 因此精确预览和最终 PDF 继续作为权威分页结果;快速预览定位为编辑期间的 + 客户端近似分页,不承诺在所有显示缩放环境下与 PDF 页数完全一致。 +- 后续优化快速预览时,应重点检查 `devicePixelRatio`、浏览器页面缩放、 + 字体度量和逐页高度取整;分页测量不得依赖物理像素,视觉缩放不得参与 + 文档排版和分页计算,并避免逐页取整造成累计误差。 +- 后续分页回归应覆盖 Windows 100%、125% 和 150% 系统显示缩放,分别 + 记录快速预览、精确预览和最终 PDF 的页数及分页边界。 + ## 4. 已执行验证 2026-07-27 在当前完整工作区成功执行: @@ -262,8 +280,11 @@ git diff --check - 包含 ELK、Base 主题、Hand-drawn 外观、自定义字体、 `themeVariables`、`style` 和 `classDef` 的 Mermaid 样例在快速预览 与精确预览中均成功渲染; -- 65 页附件的快速预览生成 64 页,67 个 Mermaid 全部使用静态 SVG; +- 在 Windows 150% 系统显示缩放的笔记本内屏上,65 页附件的快速预览 + 生成 64 页,67 个 Mermaid 全部使用静态 SVG; - 同一附件的精确预览和最终 PDF 均为 65 页; +- 切换到 Windows 100% 系统显示缩放的外接显示器后,快速预览与精确预览 + 的分页结果基本一致,进一步排除了 Chromium 版本差异这一判断方向; - 精确预览快速跳转至第 46、47、65 页,无黑色 Canvas、空白页或渲染错误; - PDF.js 同时只保留视口邻近页面的 Canvas,远端页面资源可以释放; - Mermaid A/B PDF 页数、逐页文字和抽样视觉结果一致; @@ -323,6 +344,8 @@ git diff --check - `.local/themes/typora-*` 是用户本机副本,已被 Git 忽略,不得提交。 - `.local/theme-backups` 中保留 GitHub、Pixyll 和 Whitey 的可恢复备份;Newsprint 和 Night 的当前副本及备份已按用户要求删除。 - Typora 官方资源是 All Rights Reserved,仅限当前用户本机使用,不进入 Git、容器或发布包。 +- 快速预览会受到客户端 Windows 显示缩放、浏览器缩放和设备像素比影响; + 对页数和分页边界有严格要求时,以精确预览和最终 PDF 为准。 - 资源目录上传、本地相对图片、临时目录和路径安全尚未实现。 - AIO 容器已经通过 Docker Desktop 构建、端到端和浏览器验证。