@web-ppt/fonts 0.4.5 → 0.5.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -2,6 +2,117 @@
2
2
 
3
3
  本文件记录对使用者可见的变化。版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
4
4
 
5
+ ## 未发布
6
+
7
+ ## 0.5.0-beta.2 - 2026-08-30
8
+
9
+ ### 新增
10
+
11
+ - 无原包文档现在可确定性生成完整 PPTX;`.ppt` 编辑后可明确另存为 `.pptx`,官网同时贯通空白新建、
12
+ 真实版式加页、保存下载与本机恢复。
13
+ - 编辑模型与无框架 DOM 层新增组合/解组、九级文本列表升降级、附录 B 快捷键、上下文工具栏、
14
+ 顶点编辑扩展和表格样式应用/写回。
15
+ - 新增可选的 `@web-ppt/collab`:字段级 LWW、分数序与确定性页序重物化把 `Editor` 补丁流接到
16
+ 可插拔 provider,支持离线幂等回放、remove-wins、远端历史 rebase 和 BroadcastChannel 双标签页。
17
+ OOXML 元素身份由 provider 分配的副本 slot 精确分区;协同包不进入单机 `editor` 入口。
18
+
19
+ ### 改进
20
+
21
+ - 官网延后加载编辑引擎,样本在构建期预渲染并内联关键 CSS,同时补齐 WCAG 对比度与稳定 chunk 命名。
22
+ - 浏览器性能契约将功能失败与预算超标分离,并在检测到并行负载时只允许一次全新 Chrome 重测。
23
+
24
+ ## 0.5.0-beta.1 - 2026-08-27
25
+
26
+ ### 新增
27
+
28
+ - `@web-ppt/edit-core`、`@web-ppt/editor` 与框架适配层新增元素动画编辑闭环:稳定
29
+ `SlideId` / `ElementId` 时间线支持来源恢复、显式清空、撤销恢复、删除/复制页联动,以及
30
+ view/edit 共用的无副作用即时预览。首个安全目录覆盖入场/退场的 appear、fade、fly、wipe、zoom、
31
+ dissolve,强调 spin/grow 和 2–256 顶点运动路径;复杂 MCE、build、扩展或条件时间树会标记
32
+ `sourceReadonly`,只有调用方明确整条替换才写回;公开 `MAX_ANIMATION_STEPS=128`,保证允许写入的
33
+ 最重时间线仍能在有界解析预算内完整回读。
34
+ - 元素动画保存按 OOXML 官方 preset/filter 重建规范 `p:tnLst`,保留 timing 根属性、`bldLst`、
35
+ `extLst` 与无关 MCE,并精确回读 trigger、delay、duration、方向和路径。真实 Chrome 实测 60 元素
36
+ 启动、200 页批量提交、单页反馈 p95 为 0.8/3.5/0.4ms;确定性 5 页固件及 LibreOffice 打开验证通过。
37
+
38
+ - `@web-ppt/editor` 新增显式启用的纯浏览器自动保存:完整源字节 SHA-256 把同内容输入绑定到同一日志,
39
+ IndexedDB 以串行批次原子追加恢复帧,并按分块数、总估算字节、记录数和保留期压缩清理。`openEditor`
40
+ 在解析和挂载前完成 restore/discard/cancel 决策,clean 尾帧不提示;adapter 与 React/Vue 共用
41
+ `recovering + onRecovery` seam;原子代际占位拒绝旧页面在 discard 后复活日志。真实 Chrome 中 50MB
42
+ 指纹为 42.2ms,1,000 帧写入/关闭重开恢复为 131.5/14.9ms,压缩后 10 个分块,同步提交增量 0.000ms。
43
+
44
+ - `@web-ppt/edit-core` 新增版本化 `RecoveryFrame`、`Editor.subscribeRecovery()` 与
45
+ `restoreRecoveryFrames()`:事务、撤销/重做、非历史写入、选区、保存点、图片资源和身份水位都能按
46
+ 严格序号写成纯 JSON。会话图片 URL 在 patch 中先变成保留 token,资源闭包缺失会原子拒绝;回放先在
47
+ 写时复制模型上完整验真,并拒绝身份水位倒退,坏尾帧不会污染目标;恢复保留选区与脏状态,
48
+ 但不伪造旧历史。未订阅时普通编辑零日志深拷贝。210 页 / 50MB 基准中,1,000 帧为 316.3KB,
49
+ JSON 往返 1.6ms、回放 269.9ms;`@web-ppt/editor.openEditor()` 可在挂载前透传同一日志。
50
+
51
+ - `renderSlideToSvg` 新增 `RenderOptions.idPrefix`。指定后,同一页与同一前缀会生成
52
+ 逐字节相同的 SVG,供编辑器增量更新和确定性比较使用;省略时仍维持全局唯一 id,
53
+ 主视图与缩略图同时挂载不会发生 defs 冲突。
54
+ - 新增 `renderElementToSvg(element, options) → { markup, defs }`。编辑器可用每元素唯一的
55
+ 稳定 `idPrefix` 只重渲脏元素,并在同一次 DOM 更新中替换它自己的节点与 defs;
56
+ 整页与元素入口复用同一分发和两条文本路径,不存在第二套近似渲染器。
57
+ - 新增无 DOM 的 `renderTextBodyToHtml(text, width, height, options)`。屏幕预览和后续
58
+ contenteditable 覆盖层共用同一份段落、run、CJK 标点、分栏与 autofit 排版;默认输出
59
+ 可反解的编辑标记,并隔离危险链接协议,原生 SVG 文本导出路径保持独立。
60
+ - 新增纯函数 `layoutText(text, width, height, options)`。它与原生 `<text>` 输出共用断行、
61
+ CJK 挤压、分栏、行距及 autofit,并公开段落/run 身份、UTF-16 字符区间与光标停靠点,
62
+ 供 Safari engine 模式命中选区;竖排返回仿射变换,公式保持原子,测量器可注入。
63
+ - `renderTextBodyToHtml` 新增 `{ layout: 'engine' }`:直接把 `layoutText()` 的视觉行与源 UTF-16
64
+ 半开区间序列化为绝对定位、禁止二次断行的可编辑 HTML。`@web-ppt/editor` 的 `textMode: 'svg'`
65
+ 以及 `auto` Safari 降级现在让静态 SVG 与 `contenteditable` 共用这组行盒;硬换行、空 run/段、
66
+ 项目符号、RTL、竖排、分栏、公式和裸 autofit 在进入、输入、提交与退出时保持同一布局。真实
67
+ Chrome 的 2,000 字符完整上屏多轮 p95 为 8.3–17.8ms、行盒最大偏差 0.009px;editor 入口为
68
+ 27.46KB gzip。
69
+ - `parse` 新增完全可选的 `edit` / `keepPackage`:前者保留页与元素的 OOXML 回写锚点、
70
+ 占位符身份,后者通过 `Presentation.package` 保留原始 ZIP 与解压 part。默认解析的
71
+ 对象形状和资源生命周期不变;`dispose()` 会同时释放保留的原包。
72
+ - `.pptx` 与 `.ppt` 的编辑解析会额外保留预设形状的 `preset + adj` 语义(OOXML 含
73
+ 版式/母版继承),并新增纯函数 `resolveGeomPath`;编辑投影改变宽高后可重新求值路径,
74
+ 不再复用解析期烘焙的几何。
75
+ - 新增无 DOM、无框架的 `@web-ppt/edit-core`:把解析结果转换为带稳定身份与分数 z 序的
76
+ 扁平 `EditDoc`,以 `src` / `ovr` 分离源值和用户改动,并通过 `toSlide` 投影回现有
77
+ 渲染 Schema。元素、组祖先和页面缓存按修改路径精确失效;图表、SmartArt、OLE、
78
+ 墨迹与媒体只开放框架级变换,内部派生节点不可误编辑。
79
+ - `@web-ppt/edit-core` 新增无 DOM 的 `Editor`、可 JSON 序列化的 `SetXfrm` 与双向 patch。
80
+ 事务失败整体回滚;撤销/重做恢复选区,同路径改动按 500ms 分组,远端 origin 不进入本地历史,
81
+ 默认保留 200 组 / 8MB。固定种子 200 条命令通过撤销、重做与 JSON 回放全等,500 条非法命令
82
+ 不污染文档;210 页实测 200 组撤销/重做含脏页重渲均约 0.5ms/次,历史约 64KB。
83
+ - 新增按需入口 `@web-ppt/edit-core/xml`:无 DOM 的保留型 XML 树支持 UTF-8 / UTF-16
84
+ 字节回环、限定名与 namespace URI 查询、属性最小改写和 OOXML sequence 有序插入;声明、
85
+ 注释、PI、前缀、属性顺序、自闭合形态及 `AlternateContent` 不被重建。默认编辑模型入口为
86
+ 8.28KB gzip,保存期 XML 入口独立为 7.14KB gzip。
87
+ - 新增按需入口 `@web-ppt/edit-core/opc`:无修改保存复用原始字节;脏 part 定点重压,净条目的
88
+ 本地头、extra field 与压缩流逐字直通。新增/删除 part、重复保存和确定性输出均有契约;zip64、
89
+ 数据描述符、存档注释、加密条目、未知压缩与多磁盘格式会给出原因并整包重压。入口为 4.27KB gzip,
90
+ 210 页 / 50.6MB 修改并序列化 3 页后的实测保存为 84.0ms;保存结果可随文档或独立释放。
91
+ - 新增 M0 自动门禁:29 份固件(含吸附、加密 OOXML、RC4 `.ppt` 与 hardcases)的只读链路和
92
+ 编辑投影分别在独立进程渲染,两条文本路径共 232 对原始 SVG 指纹必须完全一致;
93
+ 210 页基准同时强制检查默认路径零编辑状态、编辑常驻内存增量、文本行盒与提交重渲预算。
94
+ - `@web-ppt/editor` 在编辑模式直接消费浏览器 SVG 命中:组默认选外层,双击 / Escape
95
+ 逐层进退,Alt+点击按 `elementsFromPoint` z 序循环;选择只更新交互层,多视图各自拥有监听器。
96
+ - `@web-ppt/editor` 公开元素本地 / 幻灯片 / 屏幕坐标变换,并为普通、旋转翻转和嵌套组元素绘制
97
+ OBB、8 个缩放柄与旋转柄。手柄尺寸不随 zoom 变化;真实 Chrome 三档缩放的最大矩阵偏差为
98
+ 0.000px,9 个手柄的位置与尺寸最大偏差同为 0.000px,60 元素页完整选择框上屏 p95 为 0.100ms。
99
+ - `@web-ppt/editor` 支持主指针拖动单选与多选:3px 阈值后以 pointer capture 和 rAF 合并幽灵帧,
100
+ 松手只提交一个可撤销 `SetXfrm` 事务;嵌套旋转翻转组按各自父空间换算。取消、丢失捕获、切页、
101
+ view 模式和销毁均不写模型。真实 Chrome 嵌套幽灵偏差 0.000px,60 元素拖动帧 p95 0.100ms。
102
+ - `@web-ppt/editor` 绑定 8 个恒屏幕尺寸缩放柄,支持单选/多选、旋转翻转与嵌套组、Shift 等比、
103
+ Alt 中心缩放及过锚翻面;移动与缩放共用可回收的 pointer capture/rAF 状态机,松手一次提交并可
104
+ 精确保存。真实 Chrome 三档 zoom 的手柄/锚点最大偏差 0.009px,缩放帧 p95 0.100ms;60 个
105
+ 45° 元素的近奇异多选缩放 p95 0.600ms。
106
+ - `@web-ppt/editor` 绑定旋转柄:单选按元素父空间处理自身翻转与多层旋转/翻转组,多选围绕共同 AABB
107
+ 中心同步旋转;角度跨 ±180° 连续累计,Shift 可动态吸附 15°,松手以一个事务精确保存。真实 Chrome
108
+ 三档 zoom 的嵌套/多选幽灵最大偏差为 0.000/0.009px,60 元素旋转帧 p95 0.300ms,可信 pointer
109
+ capture 与撤销门禁通过。
110
+ - `@web-ppt/editor` 的移动手势新增屏幕 6px 吸附:画布中线/边缘、显式页边距、同组兄弟边缘/中线与
111
+ 横纵等距按稳定优先级逐轴裁决;`Ctrl` 可动态关闭,视图也可用 `snapping` / `setSnapping()` 全局切换。
112
+ 对齐线和双向等距箭头只进入 interaction SVG,取消零提交。真实 Chrome 三档 zoom、缩放组和等距线
113
+ 最大偏差均为 0.000px,60 元素吸附帧 p95 0.200ms,可信 pointer capture 与撤销门禁通过;editor
114
+ 发布入口实测为 15.87KB gzip。
115
+
5
116
  ## 0.4.5
6
117
 
7
118
  ### 修复
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@web-ppt/fonts",
3
- "version": "0.4.5",
3
+ "version": "0.5.0-beta.2",
4
4
  "description": "Font substitution and on-demand web-font loading for PowerPoint decks: metric-compatible free substitutes plus a unicode-range slice loader. Zero font bytes in the package.",
5
5
  "keywords": [
6
6
  "pptx",
@@ -48,7 +48,7 @@
48
48
  "prepack": "node ../../tooling/sync-package-docs.mjs"
49
49
  },
50
50
  "peerDependencies": {
51
- "@web-ppt/core": "^0.4.0"
51
+ "@web-ppt/core": "^0.5.0-beta.2"
52
52
  },
53
53
  "publishConfig": {
54
54
  "access": "public"