
An open-source, clean-room reimplementation of Microsoft Word in pure Rust
Writing and document design; an open-source, clean-room reimplementation of Microsoft Word, rebuilt in pure Rust.
以下正文同步自 Hacker News,版权归原站所有,已转换为易读排版。
Writing and document design; an open-source, clean-room reimplementation of Microsoft Word, rebuilt in pure Rust.
A fast, open-source word processor with the Word workflow you already know: the ribbon, styles, tables, track changes, references and mail merge. It reads and writes .docx, runs natively on macOS, Windows, Linux and BSD, and in the browser via WebAssembly.
By the ArtCraft team.
WordCraft on getartcraft.com · ArtCraft · All Crafting Apps
The Open Studio Handbook, WordCraft's built-in sample: the ribbon, live Styles gallery, rulers and the Navigation pane.
ArtCraft is a community of artists from all walks of life. Painters, photographers, filmmakers, illustrators, designers, animators, hobbyists, and people who picked up a pencil last week. If you make things, you're one of us. Come say hi on Discord.
A tour · Why WordCraft · What works today · Quick start · For agents · Architecture · Roadmap · Downloads · The Crafting Apps · License and credits
Every screenshot below is WordCraft itself, rendered offscreen by its own UI test harness (cargo run -p wordcraft-ui-egui --example ui_shot).
Review. Track changes, comment balloons in the margin, accept and reject, spelling and grammar as you type.
References. Tables of contents, footnotes, citations in APA, MLA, Chicago or IEEE, index and captions.
Design. Themes, style sets, paragraph spacing, watermarks, page colour and borders.
Dark mode with formatting marks, and the Insert tab: tables, pictures, shapes, links, headers, footers, fields and symbols.
Layout. Drop caps, text wrapping around pictures and shapes, automatic hyphenation, line numbers and page borders.
File. Start from a template, open recent documents, edit properties, export to PDF and other formats.
Familiar. Word's ribbon tabs, groups, shortcuts and behaviour: Enter continues a list, Tab demotes it, Ctrl/⌘+B bolds the word under the caret, the Styles gallery previews styles live, F4 repeats, F7 checks spelling, F8 extends the selection.
Your files. Opens and saves .docx (OOXML), and also .odt, .rtf, .html, .md, .tex (LaTeX), .txt; opens Word 97-2003 .doc; exports PDF with real, selectable text, links and bookmarks.
Fast. Paragraph layout is cached, so typing in a 188-page document re-lays it out in about 1.4 ms; pages render on demand.
Everywhere. One Rust codebase for macOS, Windows, Linux, BSD and the web. No Electron, no Tauri: native egui on the GPU.
Built for agents. Every action is a command with an id. The same 422 commands drive the ribbon, keyboard shortcuts, the command search, a command-line tool, a JSON control channel and an MCP server.
Private. Spelling, grammar and everything else work offline.
Open. MIT OR Apache-2.0. Clean-room: built from public specifications and observation, with every asset original or openly licensed.
What works today
Area Highlights
Writing Fast typing with IME, smart quotes, AutoCorrect, list autoformat (* , 1. ), dashes; word, sentence, paragraph selection; drag-select; clipboard with formatting; undo/redo; find and replace with regex
Formatting Fonts, sizes, bold/italic/underline styles, strike, sub/superscript, caps, highlight, colours, character spacing, Format Painter, Change Case, Clear Formatting
Paragraphs Alignment, indents (draggable on the ruler), spacing, line spacing, tabs with leaders, borders, shading, keep with next, widow/orphan control
Styles Built-in style set, live gallery, Styles pane, create/modify/update styles, style sets, themes
Lists Bullets, numbering, multilevel, restart, set value, custom formats
Tables Insert by grid, merge/split, styles with banded rows, borders, shading, header rows repeated across pages, rows that split across pages, sort, formulas, text ↔ table
Pages Margins, orientation, size, columns, page/column/section breaks, headers and footers (first page, odd/even), page numbers, watermark, page borders, line numbers, vertical alignment, drop caps, automatic hyphenation
Objects Pictures (resize, crop, recolour, brightness/contrast, transparency, background removal, picture styles, rotate), shapes, text boxes, floating position with text wrapping (square, top and bottom, behind or in front of text)
References Table of contents, footnotes and endnotes, citations and bibliography (APA, MLA, Chicago, IEEE), captions, table of figures, cross-references, index, table of authorities
Review Spelling and grammar with suggestions, thesaurus, word count, comments in margin balloons or a pane, track changes, accept/reject, compare documents, restrict editing, accessibility checker, document inspector
Mailings Mail merge from CSV, merge fields, address block, greeting line, rules, preview, finish to a document; envelopes and labels
View Print layout, web layout, draft, read mode, focus, zoom, one/multiple pages, page width, Navigation pane, rulers, gridlines, dark mode; interface in English, 简体中文, 繁體中文, 日本語, Português (Brasil), Español, Українська, Српски / Srpski, Eesti, Türkçe or Русский (follows the system language by default)
Files .docx read/write (opens in Word), Word 97-2003 .doc import, PDF export, .odt, .rtf, .html, .md, .tex, .txt import/export, page images
The honest picture, area by area, is in ROADMAP.md, the parity assessment and the generated feature checklist.
git clone https://github.com/storytold/wordcraft cd wordcraft cargo run --release -p wordcraft -- --sample # the desktop app with the sample document cargo run --release -p wordcraft -- report.docx # open a document
Command line:
wordcraft-cli convert report.docx report.pdf # docx, pdf, odt, rtf, html, md, tex, txt, png
wordcraft-cli text report.docx # plain text
wordcraft-cli inspect report.docx # structure as JSON
wordcraft-cli run --template sample
--cmd 'select.text={"text":"Membership"}' --cmd format.bold --save out.docx
Web: cd apps/wordcraft-web && trunk serve, then open http://127.0.0.1:8771/?sample.
WordCraft was designed to be driven by people and by AI agents.
claude mcp add wordcraft -- wordcraft-cli mcp # headless documents wordcraft --control 7981 & # or drive the running app… claude mcp add wordcraft-app -- wordcraft-cli mcp --connect 127.0.0.1:7981
Tools include list_commands, execute, batch, type_text, select_text, inspect_document, render_page, save_document, and, with a running app, screenshot, click and key. Agents can check their work through inspect_document without screenshots. See docs/mcp.md and the control protocol. Macros record any sequence of commands and play it back (tools.recordMacro, tools.macros).
The desktop app writes its log records to standard error and to logs/wordcraft.log next to its preferences: on Linux $XDG_CONFIG_HOME/wordcraft/logs/ (by default ~/.config/wordcraft/logs/), on macOS ~/Library/Application Support/WordCraft/logs/, on Windows %APPDATA%\WordCraft\logs. A start from a desktop menu or the Dock has no terminal, so this file is what to attach to a bug report: unreadable parts of a .docx, pictures or fonts a PDF export had to leave out and panics the command guard recovered from land there. Each launch moves the previous log to wordcraft.1.log (and that one to wordcraft.2.log), so the log of a run that crashed survives the next start; a log stops growing at 16 MiB. --version writes no file, and runs with WORDCRAFT_NO_PREFS (agents' test runs) log to standard error only. Document text is never logged; a panic message leaves out the text it quotes.
By default WordCraft's own crates log at info and everything else at warn. RUST_LOG replaces that with env_logger-style directives, for example RUST_LOG=debug, RUST_LOG=warn,wordcraft_docx=trace or RUST_LOG=info,wgpu_core=warn; a directive ending in * covers every target starting with it (wordcraft*=debug). The logger is apps/wordcraft/src/logging.rs.
Layer Crate Job
L0 wordcraft-geom units and measurements
L1 wordcraft-doc, wordcraft-fonts, wordcraft-proof document model and editing; fonts and shaping; spelling, grammar, hyphenation
L2 wordcraft-layout, wordcraft-docx, wordcraft-formats line breaking, pagination, tables, notes, hit testing; OOXML; ODT/RTF/HTML/Markdown/TXT
L3 wordcraft-render, wordcraft-pdf rasteriser (vello_cpu); PDF (krilla)
L4 wordcraft-engine session, undo, 422 commands, Word feature catalog
L5 wordcraft-mcp MCP server
L6 wordcraft-ui-egui the Word-style front end (swappable)
apps wordcraft, wordcraft-cli, wordcraft-web desktop, command line, browser
cargo xtask ci runs formatting, clippy, ~800 tests, the asset-attribution check, the layering check and the wasm build. Contributor and agent instructions: AGENTS.md.
WordCraft is in alpha. It covers 88% of Word's ribbon features with commands today; counting depth, file fidelity, stability and the rest, we estimate it is about 60% of the way to replacing all of Word for real work, about 55% for a typical professional's weekly work and about 63% for everyday essentials. Beta needs testing against real-world .docx files, keeping charts and SmartArt through a round trip, pagination closer to Word's, a stability sweep and native printing. Details and estimates: ROADMAP.md and where we fall short.
Download WordCraft from GitHub: the latest release has every build listed below, and all releases has earlier versions and their notes. <ver> in the file names is the version number, and SHA256SUMS.txt lists a checksum for every file.
Build Installer Portable
x64 (64-bit Intel/AMD) wordcraft-<ver>-windows-x64.msi wordcraft-<ver>-windows-x64-portable.zip
arm64 (Snapdragon and other ARM PCs) wordcraft-<ver>-windows-arm64.msi wordcraft-<ver>-windows-arm64-portable.zip
x86 (32-bit) wordcraft-<ver>-windows-x86.msi wordcraft-<ver>-windows-x86-portable.zip
Installers and executables are code-signed.
If the app doesn't open on Windows: the desktop app initializes only DirectX 12 by default. Letting wgpu also create an OpenGL instance can crash some graphics drivers (AMD's atio6axx.dll) before the window appears, so the app would flash in Task Manager and quit. WGPU_BACKEND overrides the default for troubleshooting (for example dx12 or vulkan). In PowerShell, from the folder containing the executable:
$env:WGPU_BACKEND = "vulkan" & .\wordcraft.exe Remove-Item Env:WGPU_BACKEND # restore the default for later launches
An explicit gl override can bring the driver crash back on affected systems. The macOS, Linux and web backend defaults are unchanged.
If the app quits right after its window appears with "Parent device is lost" in the log: WordCraft compiles DirectX 12 shaders with FXC, the compiler built into Windows, so it needs no dxcompiler.dll/dxil.dll and ignores any copy another program put on PATH (#603). WGPU_DX12_COMPILER (fxc, dxc, auto) overrides this; with dxc, a matching dxcompiler.dll and dxil.dll must sit next to wordcraft.exe. WGPU_BACKEND = "vulkan" also avoids DirectX 12 altogether.
If the app is slow on an older Windows PC: when DirectX 12 finds no graphics card with a driver for it (for example Intel 4th-generation graphics on Windows 11), it only offers Microsoft's software renderer, which draws every frame on the processor. In that case WordCraft uses OpenGL instead, without setting anything. The log file records the choice (lines starting with graphics:). WGPU_BACKEND still overrides it, e.g. $env:WGPU_BACKEND = "gl" or "dx12".
Build File Notes
App, universal (Apple silicon + Intel) wordcraft-<ver>-macos-universal.dmg Signed and notarized
Command-line tool, universal wordcraft-cli-<ver>-macos-universal.zip Signed and notarized
Linux
Format x86_64 aarch64 (ARM64) Notes
AppImage wordcraft-<ver>-linux-x86_64.AppImage wordcraft-<ver>-linux-aarch64.AppImage Runs anywhere; updates itself with AppImageUpdate (.zsync files)
Flatpak wordcraft-<ver>-linux-x86_64.flatpak wordcraft-<ver>-linux-aarch64.flatpak Sandboxed; flatpak install --user <file>
Debian/Ubuntu wordcraft-<ver>-linux-x86_64.deb wordcraft-<ver>-linux-aarch64.deb
Fedora/RHEL/openSUSE wordcraft-<ver>-lin
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。