Devotd Github
新发现开发工具

storytold/wordcraft — ODT 框架中可读图片的选择

storytold/wordcraft 在 2026-11-07 的提交中修改了读取和保存文档内图片的方式,使同时提供多种图片格式的框架能够显示并保留第一张可读图片。

仓库信息storytold/wordcraft ↗

storytold/wordcraft 在 2026-11-07 的提交中修改了读取和保存文档内图片的方式,使同时提供多种图片格式的框架能够显示并保留第一张可读图片。

GitHub 项目说明: An open-source, clean-room reimplementation of Microsoft Word in pure Rust

星标
★ 17.5K
复刻
4.9K
语言
Rust
许可证
Apache-2.0
最新版本
v0.16.0
查看原始来源 ↗在 GitHub 查看 ↗

storytold/wordcraft 是一个用纯 Rust 重新实现 Microsoft Word 的开源项目。2026-11-07 的提交 595cddaaeff115e11ae7f7d524ecc71b3e53abe6 处理了读取和保存文档内图片的方式。当承载图片的框架同时提供多种格式时,现在会选取第一张可读的图片,并在之后保存到文件时保留该图片。

这次修改针对的是在 LibreOffice 保存的 ODT(基于开放文档格式的字处理文档)文件中暴露出来的问题。LibreOffice 会把同一张图片同时以 .svm 元文件和 PNG 的形式写入,而 WordCraft 无论列表的第一项是什么都会抓取。因此,当不可读的格式排在前面时图片就不可见,模型生成的段落写入文件时那张图片也会消失。现在会按照框架标明的偏好顺序选取第一张可读图片。此外,即使不可读的替代图片(replacement)在前面,也会显示并保存后面的可读图片,并且不会在对象出现之前丢弃替代图片,而是将其保留。

改动涉及 7 个文件,包括 ODT 正文解析器(body.rs、body/drawing.rs)、写出器(writer/drawing.rs)、测试(floats.rs、objects.rs)和格式对应文档(docs/file-format-parity.md)等。新增 155 行,删除 10 行。不过这次提交只处理提交信息中称为 'gap 19' 的一个 ODT 图片处理条目。提交说明称问题是在 CodeRabbit 评审中发现的,并表示占位符(placeholder)仍然不会被记录。ROADMAP 文档把当前阶段记为 alpha,把下一目标记为 beta,并给出准备度估算:~15 points(实际工作准备度 60% → 75%)和 ~150–230 h。除 ODT 以外格式的验证结果未包含在这次提交中。