NC Litho · Docs

Litho parity with Adobe InDesign

Last reviewed: 2026-10-10 · Last updated: 2026-10-24 · Change: minor (Convert Variable to Text; list buttons with the default hanging indent; custom anchored objects honour Relative to Spine; PDF/X-4 visible unembedded font detection, #909; autoflow fills the following pages first; File ▸ Open Recent; .indd and .indt open through indd-utils; text threads by hand; image clipping paths from IDML; anchored objects wrap text; Tabs panel listed as present (#343); spring-loaded Zoom navigation; recovery checkpoint retention; cancelable macOS Dock Quit; Based on Parent; object styles carry effects; colour management on craft-cms, Coated FOGRA39 default CMYK; swatches on placed greyscale and bitmap images) · Target: Adobe InDesign 2026 (21.6.0.57, macOS)

The authoritative assessment of how close Litho is to Adobe InDesign. ROADMAP.md summarizes it; gaps.md lists every known shortfall one at a time; the feature-by-feature presence checklist is parity-checklist.md (cargo xtask parity).

Headline

Number Value Kind
Feature breadth (does each InDesign feature exist?) ~80% (range 69–99%) measured lower and upper bounds, estimate between them (below)
Ready for real work (could an InDesign professional switch for real jobs?) ~47% (range 42–52%) estimated, weighted sum (below); 1,150–1,950 h to ~95%
Mainstream practitioner (weekly core of a typical InDesign pro) ~42% 500–850 h to ~95%; estimated, method below
Essentials user (flyers, newsletters: the core only) ~54% 135–250 h to ~95%; estimated, method below
Remaining effort to beta (~75% ready, main format reliable; 28 points away) 420–750 Opus 5.5 agent-hours estimated
Remaining effort to full parity 1,150–1,950 Opus 5.5 agent-hours estimated
Stage pre-alpha (fails the core-workflow gate: Primary Text Frame adds pages users can't delete, #165); ~5–7 h to alpha see roadmap.md

How breadth was measured

Two measurements bracket it, and neither is the answer by itself.

The breadth figure is taken between them, at ~80%, because the checklist overstates (rows were written at a coarse grain and graded by their builders) and the label match understates (label differences, panel-only commands).

How "ready for real work" was estimated

Each dimension below was judged from the code, the tests, the issue tracker (124 issues, 79 open on 2026-10-10, most from people trying the 0.4/0.5 releases on real work) and the InDesign 2026 reference material. Weights reflect what an InDesign professional hits first: opening the files they receive, setting type exactly, and basic editing that never fails.

Dimension Weight Ready Remaining (Opus 5.5 h) Evidence Doc
Features (depth of each area) 25% 55% 250–400 275 catalogue rows exist; many lack options (e.g. Books is 258 lines of engine code, Liquid Layout 329); see the area table this file
Typography and composition fidelity 15% 45% 120–200 Knuth–Plass composer, keeps, grids, CJK, Arabic all exist; no comparison with InDesign's line breaks; optical kerning falls back to metrics (#181); overset rule differs (#180); hyphenation patterns for English, Spanish, Portuguese, Norwegian and Greek only typography-parity.md
File formats 20% 40% 150–250 (+10–30 for an INDD corpus) INDD and INDT open through indd-utils, measured on synthetic bytes only (#21); IDML both ways and verified in InDesign 2026, but real-file bugs open (#193, #338, #339, #340); PDF export strong; PDF/X-4 only file-format-parity.md
UI/UX fidelity 15% 45% 120–180 Measured InDesign 2026 look; but users report object copy/paste (#351, #348, #185, #164), right-click menus (#238, #187, #160), out-port threading (#352, #194, #165) failing ui-parity.md
Stability 10% 45% 60–100 Never-crash rules and last-resort guards; startup failures on some GPUs and machines (#334, #273, #220, #192, #167, #166); no CI runs the tests on pull requests gaps.md
Performance 5% 65% 40–80 300k characters compose in ~38 ms warm; typing repaints in < 1 ms (damage regions); no incremental composition; nothing benchmarked against InDesign; no large real documents gaps.md
Localization 3% 45% 120–180 9 translations beyond English; Japanese 95%, most others 83–85%, pt-BR 61%; Hindi, Indonesian, Korean, Vietnamese none localization-parity.md
Platforms 3% 55% 40–80 macOS is where it's tested; Windows and Linux users hit basic failures; web and FreeBSD builds exist hardware-parity.md
Hardware 2% 45% 20–40 Canvas rasterizes on the CPU (vello_cpu, multithreaded); GPU only presents; printing uses shared CUPS/Windows PDF spoolers (no PostScript; physical output needs validation) hardware-parity.md
Ecosystem (scripting, plug-ins) 2% 15% 150–250 Own command/script/MCP API is strong; no ExtendScript/UXP DOM, so InDesign scripts don't run; no plug-ins gaps.md
AI features 0% (not weighted) 15% 60–120 Agent control through MCP goes beyond InDesign; no generative features (InDesign 2026: Generative Expand, Text to Image, Auto Style) gaps.md
Weighted sum 100% 47.2% → ~47% (range 42–52%) 1,150–1,950

How the number is built: the plain weighted sum of the table above, per the craftrules standard: 25×55 + 15×45 + 20×40 + 15×45 + 10×45 + 5×65 + 3×45 + 3×55 + 2×45 + 2×15 = 47.2% → ~47% (range 42–52%, ±5 points of judgement in the dimension values). An earlier version today applied a further ×0.9 for cross-cutting core-path failures and reported 42%. That multiplicative step was dropped to match the standard (discounts belong only to the mainstream and essentials numbers). Those failures are already in the UI/UX (45%) and Stability (45%) rows, and the Primary Text Frame page fixes (#165) are what hold the stage at pre-alpha through the gate.

Mainstream practitioner and essentials user

Two narrower questions, computed with the craftrules method so every app's numbers compare. The stage still follows the full number (~47%) and the core-workflow gate. All three are estimates.

Audience Ready Opus 5.5 agent-hours to ~95% Parallelizes Work that dominates
Full target (ready for real work) ~47% 1,150–1,950 ~70% (per crate) depth across all 19 areas, InDesign scripting compatibility, localization to full in 12 languages, typography fidelity, INDD/IDML exchange
Mainstream practitioner ~42% 500–850 ~65% INDD import and IDML real-file corpus (80–160), composition fidelity against InDesign (120–200), depth of the weekly areas (150–240), PDF/X-1a, presets and printing (65–110), editing and threading (45–75), stability and CI (25–45), fonts (10–20)
Essentials user ~54% 135–250 ~50% start-up robustness on every GPU (25–45), editing and discoverability bugs: context menus, copy/paste, installer (30–50), threading (15–25), text editing and fonts (20–40), printing on Windows (15–30), depth of the core features (30–60)

Hours are calibrated as in Remaining effort and calibration (1–2 h per feature arc, 2–4 h per behaviour cluster matched against an oracle). Each audience's work is a subset of the one above it: essentials ⊂ mainstream ⊂ full. Human needs: the owner's decision on INDD (#114), InDesign oracle captures on the owner's Mac, native-speaker review (full only).

Mainstream practitioner: ~42%

The typical InDesign professional (magazine, book, brochure, packaging-adjacent layout artist) uses these weekly: the alpha-gate workflows plus their everyday tools. Excluded: plug-ins and scripting compatibility, generative/cloud AI, InCopy and team workflows, specialist hardware, interface languages other than the user's own. Depth here is what the feature does when it works; interaction, stability and exchange problems are the discounts, so they aren't counted twice.

Area Weight Depth Evidence
Document setup: pages, margins, columns, parents, sections 10% 65% features area table
Text frames: type, select, edit, thread, autoflow 15% 45% threading by hand, autoflow; Primary Text Frame adds pages users can't delete (#165)
Typography: composer, H&J, OpenType, tabs, lists, keeps 15% 65% typography-parity.md: 18 ✓ / 16 ~; InDesign-identical breaks counted under exchange
Paragraph, character and object styles 10% 65% dialogs, based-on, nested/GREP, Quick Apply
Frames, shapes, transform, arrange, align 10% 70% full tool set; copy/paste problems counted under interaction
Colour, swatches, stroke 8% 60% hex entry, CMS depth
Images: place, fit, links, wrap 10% 60% EPS preview only, Edit Original missing
Tables 5% 55% anchored objects in cells, Table Options submenus
Layers 3% 75%
Effects and transparency 3% 50% fidelity unmeasured
Output: PDF export, print, package 8% 60% PDF/X-4 strong; no X-1a or presets; physical print validation pending
View, navigation, undo, save 3% 70%
Weighted depth 100% 60.7%

Discounts (multiplicative):

Discount Factor Evidence
Interaction fidelity ×0.88 right-click menus fail for some macOS users (#160, #238) and on Linux (#354); Paste in Place lands on page 1 (#348); formatting at a caret discarded (#289); font search focus (#335, #86)
Stability on real machines ×0.92 start-up failures on Intel Mac Metal (#334) and Windows drivers (#167, #273, #220, #192, #166); no CI on pull requests; macOS on Apple silicon is solid
File exchange with InDesign users ×0.85 .indd opens through indd-utils but is unmeasured on real files (#21); IDML import/export bugs (#193, #338, #339, #340, #211); opened text reflows: optical kerning (#181), overset rule (#180). Harsher than Stylo's ×0.92 because InDesign pros receive and send native files daily

60.7% × 0.88 × 0.92 × 0.85 = 41.8% → ~42%. It is lower than the full number (47%) because the full number spreads weight over dimensions Litho does relatively well (performance, platforms, breadth of the long tail: 99% checklist presence), while the weekly core carries the gaps at full weight: threading, editing bugs and INDD exchange.

Essentials user: ~54%

Someone making a flyer, poster, newsletter or simple booklet: they touch only the core. Excluded: advanced options, pro workflows (preflight, separations, books, long-document features), exchange edge cases, and everything excluded above.

Core feature Weight Depth Evidence
Launch, welcome screen, new document from a preset 10% 80% presets incl. A6 (#248)
Type text in a frame, select and edit it 15% 65% caret formatting (#289), double-click selection in fields (#189)
Font, size, colour, alignment 15% 65% installed fonts not always found (#161, #110, #107)
Place an image and fit it 10% 75% place gun, fitting
Draw shapes and lines, fill and stroke 10% 80%
Move, resize, rotate, align, duplicate 10% 75%
Copy and paste 5% 60% works on macOS; Paste in Place to the wrong page (#348)
Undo / redo 5% 85%
Save and reopen 5% 85% .litho round trip, recovery
Export PDF / PNG 10% 80%
Print 5% 40% PDF to CUPS/Windows via craft-print; physical output validation pending
Weighted depth 100% 72.0%
Discount Factor Evidence
Launch and stability ×0.90 the start-up failures above hit casual users first and they don't know WGPU_BACKEND
Discoverability and UI clarity ×0.88 a faithful, dense InDesign UI; right-click menus don't open for some users; the out port looks clickable but does nothing; Windows installer confusing (#64)
Opening files people send them ×0.95 casual users get Word, images and PDFs, which place well (docx/rtf/xlsx, PDF pages); INDD is rare for them

72.0% × 0.90 × 0.88 × 0.95 = 54.2% → ~54%.

User evidence (GitHub issues and comments, 2026-10-10)

126 issues and 94 comments; no issues were filed by the maintainer (echelon).

So the user evidence matches the numbers: interest and goodwill are high, and real work is stopped by a short list of core-path bugs.

Why the number went down

The 2026-10-04 estimate said "~83% including depth" and 170 h remaining. It was written before anyone outside the project had used the app. New evidence since then:

Features by area

Breadth is the checklist's measured score; Ready is this review's estimate of depth and reliability. Hours overlap with the dimension table (UI and format work sits in both views); the dimension table is the one summed.

Area Breadth (checklist) Ready Hours Main gaps
Application shell & workspace 99% 55% 40–60 context menus not opening on some systems; window controls (#333); System theme (#237); New Window/Arrange; Help menu
Documents, pages, spreads 100% 65% 20–35 Layout ▸ Pages submenu items, Page Attributes / Color Label, layout grid (CJK)
Layers 100% 75% 5–10 IDML layer order fixed 2026-10-09; Layer panel options depth
Frames, shapes & paths 100% 60% 25–40 object copy/paste failures, reference point relocation (#337), Join/Reverse Path/Convert Point menu
Transform 100% 70% 10–20 Rotate 180°; transform panel depth
Fill, stroke, colour 100% 60% 20–35 hex entry (#323); Assign Profiles / Convert to Profile; color-managed proofing depth; Adobe Color Themes OOS
Effects & transparency 100% 50% 20–30 effects fidelity vs InDesign unmeasured; Clear Effects / Clear All Transparency; flattener depth
Placing & links 93% 55% 20–35 EPS is preview-only (no PostScript interpreter); Edit Original; placed PDF layer visibility; INDD page place
Type & text frames 99% 45% 40–60 Primary Text Frame pages users can't delete (alpha blocker, #165); autoflow sets new frames on following pages instead of flowing into their primary text frame; caret formatting discarded (#289); Notes/Track Changes menus; frame grids
Typography 100% 45% (typography dimension) see typography-parity.md
Styles 100% 60% 15–25 Paragraph Styles edit/delete reported failing (#169); style options depth
Tables 100% 55% 25–40 anchored objects in cells not drawn (#163); Table ▸ Table Options submenus, Diagonal Lines, Edit Header/Footer
Long documents 100% 45% 30–50 Books are shallow (sync, book pagination, book PDF/TOC/index); Table of Contents Styles
Interactivity & digital 100% 40% 30–50 HTML export basic (#314); fixed-layout EPUB is page images; no animation, timing, media playback
Output & production 92% 55% 40–70 PDF/X-4 only (no X-1a/X-3), with visible unembedded font detection (below); no PDF/print presets or .joboptions, print via craft-print (CUPS/Windows), no trapping; Output Preview panel
XML & automation 100% 35% (ecosystem dimension) no ExtendScript/UXP; XML structure depth
View & navigation 100% 65% 10–20 Navigator, display badges, Show/Hide extras (content grabber, live corners)
Undo, history, saving 100% 70% 5–10 Undo/Redo name the action
Accessibility 100% 50% 15–25 tagged PDF exists; PDF/UA validation, reading order depth, screen-reader support in the UI

PDF/X-4 export warnings and validate-pdf report unembedded fonts drawing visible text, including inside placed PDF forms, with font names and pages (#909). Invisible text (render mode 3) is exempt from the font-embedding check. Fonts are not embedded or outlined automatically; embedding, substitution or outlining of placed-PDF fonts remains missing (gap 28). A document-wide operation limit and a form-nesting depth limit report incomplete font checks rather than traversing pathological nesting. This is detection, not complete external PDF/X certification.

Remaining effort and calibration

Calibrated against this repo's history. The first commit was 2026-10-01 09:00; by 2026-10-10 origin/main had 470 commits (77 merged pull requests), 126,411 lines of Rust in 276 files and 1,122 #[test] functions. Commit timestamps show ~43 wall-clock hours of activity (gaps under 45 minutes), with one to five agents working in parallel, so roughly 100–150 Opus 5.5 agent-hours built the current app: ~0.25 h per commit, 1–2 h per feature arc (a command, dialog, IDML and PDF support, tests). The community fixes of 2026-10-09/10 (text composition edge cases #282–#298, 40–400 lines each) took about 1–2 h each. Depth work against an oracle (matching InDesign's behaviour exactly) is slower than adding features: 2–4 h per behaviour cluster, more when the oracle has to be built first.

Work Opus 5.5 h Parallelizes? Needs a human
Beta blockers (see roadmap.md) 420–750 ~70% (per crate) InDesign oracle captures on the owner's Mac
Rest of full parity 730–1,200 ~70% native-speaker review for 12 languages; owner decision on ExtendScript compatibility and AI models
Total to full parity 1,150–1,950

With four to five agents in parallel and an integrator, the beta work is ~120–200 wall-clock hours.

Methodology and sources

Appendix: what works today

The inventory below was the "Working today" list of ROADMAP.md (moved here 2026-10-10, unchanged). It is evidence of breadth: each item exists. It is not a claim of InDesign-level depth.

Task notes that headed ROADMAP.md:

Revision history

Date Change Summary
2026-10-19 minor Output assessment records visible unembedded font detection in PDF/X-4 export and validate-pdf, the invisible-text exemption, incomplete-check reporting at the operation and nesting-depth limits, and remaining placed-PDF font repair (#909); readiness and hours unchanged
2026-10-13 minor .indd and .indt open through storytold/indd-utils; INDD remaining work 10–30 h (real-file corpus); readiness unchanged until it is measured
2026-10-12 minor Text threads by hand; stage note and distance to alpha follow the gate (5–7 h, #165); percentages unchanged
2026-10-11 minor Spring-loaded Zoom navigation added to the working feature inventory (DC-1); readiness estimates unchanged
2026-10-10 minor Full number 42% → 47%: method aligned with the standard (plain weighted sum, the ×0.9 discount dropped), no new evidence; readiness table with hours for full, mainstream and essentials; beta distance 33 → 28 points
2026-10-10 minor Added mainstream practitioner (~42%) and essentials user (~54%) numbers with written weights and discounts and a user-evidence count; full number (42%) now written as 47.2% × 0.9, value unchanged
2026-10-10 minor Stage alpha → pre-alpha under the core-workflow gate (manual threading missing); Type & text frames row updated
2026-10-10 major Created from ROADMAP.md's "How far from full parity" (2026-10-04) and "Working today"; full re-measure against InDesign 2026 21.6: menu coverage measured against InDesign 21.6's menu dump (69%) and the documented tree (75%), breadth set at ~80%, ready-for-real-work re-estimated 83% → 42% on user-reported evidence and the INDD gap; hours recalibrated from git history
2026-10-04 major (in ROADMAP.md) breadth 99% weighted over 275 rows, ~83% including depth, ~170 h remaining