Files
designcraft/docs/file-format-parity.md
T
Keyne PEKARandCodex e569381c2e IDML872.1: preserve liquid guides through interchange
Keep GuideType=Liquid on document and parent pages, with literal XML and
mixed-guide regression coverage. Leave object liquid constraints separate.

Co-Authored-By: Codex <codex@openai.com>
2026-10-15 17:13:35 +08:00

8.8 KiB
Raw Blame History

File format parity

Last reviewed: 2026-10-10 · Last updated: 2026-10-15 · Change: minor (IDML liquid guide types, #872) · Target: Adobe InDesign 2026 (21.6)

Every format InDesign 2026 reads or writes, with DesignCraft's support, fidelity and tests. The InDesign list comes from its bundle's Info.plist (CFBundleDocumentTypes, UTExportedTypeDeclarations), its import/export filter folder names and its File menus; ours from the open/place/export filters in apps/designcraft/src/main.rs and the file.* commands. Overall numbers: target-app-parity.md; open problems: gaps.md.

Dimension score: ~40% ready (estimated), 150–250 h + 20–60 h for INDD integration. The single largest gap is that .indd can't be opened.

Read/Write: ✓ supported · ~ partial · ✗ missing · — InDesign doesn't either. Weight: what share of an InDesign professional's file traffic the format carries (used for the score below).

Documents and interchange

Format Ext InDesign DesignCraft read DesignCraft write Fidelity / tests Weight
InDesign document .indd read/write (native) ✗ (#21; converters proposed in #98, #114) ✗ — 30%
InDesign template .indt read/write ✗ ✗ — 2%
InDesign Markup .idml read/write ✓ ✓ Synthetic fixtures in crates/idml/src/tests.rs (49 tests); exported files verified by opening in InDesign 2026 by hand; indd-utils' 98-document run imports 811 spreads / 2,866 stories / 5,812 items. Open: #193, #338, #339, #340, #211. No real-file corpus test 20%
DesignCraft native .designcraft — ✓ ✓ zip + JSON, versioned; round-trip tests. Asset loading and compaction index by content hash, then confirm byte equality; equal-sized distinct files no longer all share one search bucket (#727). Separate links, MIME types and PDF pages retain their identity —
InDesign book .indb read/write ✗ (own .dcbook) ✗ Books are shallow (see gaps.md) 2%
InDesign library .indl, .inlx read/write ✗ (own .dclib) ✗ 1%
Snippet .idms read/write ✗ (own snippets) ✗ 1%
InCopy story / assignment .icml, .icma, .incx, .inca read/write ✗ ✗ InCopy workflow out of scope; ICML story import would still help 1%
InDesign Interchange (legacy) .inx read ✗ — <1%
PageMaker .pmd, .p65, .t65, .pmt read ✗ — <1%
QuarkXPress .qxd, .qxt read (old versions) ✗ (#73) — <1%

IDML preserves stored page liquid rules and distinguishes liquid guides from ordinary ruler guides on document and parent pages. Guide positions, orientation, Fit to Page, lock state and layer survive interchange; literal XML and round-trip tests are in crates/idml/src/tests/liquid_guides.rs. Object liquid pins and resize constraints remain unmapped (#872); this is not full liquid-layout interchange support.

Output

Format Ext InDesign DesignCraft Fidelity / tests Weight
PDF (print) .pdf ✓ all presets, PDF/X-1a/3/4, PDF/A, PDF/UA ✓ krilla: real text with subset fonts, DeviceCMYK/RGB, spot Separations, bleed/slug, marks, spreads, compression options, remembered settings (#196); PDF/X-4 with output intent and a validator (#223, #200); PDF/A-2b; tagged PDF 53 tests in crates/pdf; no PDF/X-1a or X-3 (needs flattening to PDF 1.3/1.4); no presets / .joboptions; no external validator (veraPDF / callas) in CI 18%
PDF (interactive) .pdf ✓ ✓ links, bookmarks, buttons, AcroForm fields, page transitions, object states 2%
JPEG / PNG .jpg, .png ✓ PNG from the UI; JPEG from the CLI only no resolution / colour space options dialog for JPEG 3%
EPUB reflowable .epub ✓ ✓ stories in article order, tables, footnotes and endnotes, CSS from styles, images, nav 2%
EPUB fixed layout .epub ✓ (live HTML/CSS) ~ page images with text kept for search not live text 1%
HTML .html ✓ ~ one self-contained page (#314) 1%
HTML5 ZIP / Publish Online ✓ ✗ (Publish Online out of scope) <1%
SVG export .svg ✓ (via plug-in) ✗ <1%
EPS export .eps ✓ ✗ <1%
Text Only / RTF / Tagged Text .txt, .rtf ✓ ✓ (file.exportText txt, rtf, tagged) 1%
XML .xml ✓ ✓ export and import, DTD validate depth unmeasured 1%
Print / PostScript ✓ printers, PPDs, separations ~ PDF to CUPS/Windows (craft-print; no PostScript) 3%
Package folder ✓ fonts, links, IDML, PDF, report ✓ (#340: IDML inside links to absolute paths) 2%

Placed and imported content

Format Ext InDesign DesignCraft Notes Weight
PDF / AI (PDF-compatible) .pdf, .ai ✓ page boxes, layers, pages ✓ rendered with hayro, embedded as vector in PDF export, crop to page boxes layer visibility depth; editable vectors not offered (#227) 3%
JPEG, PNG, GIF, BMP, WebP ✓ ✓ CMYK JPEG/TIFF keep inks in PDF (#35) 2%
TIFF .tif ✓ incl. CMYK, alpha, indexed colour, paths ✓ incl. CMYK clipping paths from 8BIM resources unverified 1%
PSD .psd ✓ layers, comps, alpha, paths ~ composite + Object Layer Options layer comps partial 1%
EPS .eps ✓ (PostScript) ~ preview only (no interpreter) <1%
SVG .svg ✓ ✓ (usvg) <1%
HEIC .heic ✓ ✗ <1%
Word .docx ✓ styles, footnotes, tables, track changes, options ✓ styles by name, footnotes, tables, tabs, breaks, moved text (#257), bullets and numbering from numbering.xml (#626; parent levels in a label are fixed text), style mapping and conflicts .doc not supported (InDesign reads it) 2%
RTF .rtf ✓ ✓ <1%
Excel .xlsx, .xls ✓ ~ .xlsx first sheet's used range no sheet/range options; .xls ✗ <1%
Plain text, Markdown .txt, .md ✓ (txt) ✓ <1%
InDesign Tagged Text .txt ✓ ✓ import and export <1%
CSV / TSV (Data Merge) ✓ ✓ (+ Excel) <1%
Audio / video .mp4, .mp3, … ✓ placeholders for EPUB/PDF ~ placed as media objects no in-app playback <1%

Resources and settings

Format Ext InDesign DesignCraft
Adobe Swatch Exchange .ase read/write ✓ load and save
Colour books .acb read (17 libraries ship) ✗ (licensed libraries; Pantone etc. out of scope, own libraries possible)
ICC profiles .icc, .icm read ✓
Colour settings .csf read/write ✗
PDF presets .joboptions, .pdfs read/write ✗
Print / flattener / document presets .prst, .flst, .dcst read/write ✗
Preflight profiles .idpp read/write ✗ (own profiles in the document)
Keyboard shortcut sets .indk read/write ✗ (own JSON)
User dictionary .udc read/write ✗ (own, in the document and prefs)
Fonts OTF, TTF, TTC, variable ✓ ✓ (Type 1 retired by both)

Score

Weighted by the Weight column (documents, output and placed tables; resources unweighted), counting ✓ = 1, ~ = 0.5, and IDML at 0.6 until a real-file corpus proves it: ~45% present. Taking fidelity into account (no INDD, IDML unproven, PDF/X-1a and presets missing), ~40% ready for real work (estimated). INDD alone moves this dimension by up to 30 points.

Remaining effort

Work Opus 5.5 h
INDD import via a clean-room converter (owner decision, #114) 20–60
IDML real-file corpus, metric, fixes (#193, #338, #339, #340) 60–100
PDF/X-1a and X-3 (transparency flattener), PDF presets and .joboptions, external validator 40–70
Print fidelity, PostScript level 3 output and print presets 25–45
ICML story import, IDMS snippets, INDT templates (once INDD reads) 15–25
HTML / fixed-layout EPUB with live text 20–35
JPEG export dialog, SVG export, EPS export 10–20
Total 190–355 (150–250 excluding INDD and PostScript output)

Revision history

Date Change Summary
2026-10-15 minor IDML retains liquid versus ruler guide types on document and parent pages, with literal XML and mixed-guide round-trip coverage; object liquid constraints remain unsupported (#872)
2026-10-13 minor Asset loading and compaction use content fingerprints with exact equality checks; tests cover equal-sized distinct buffers, shared copies, independent links and missing data (#727)
2026-10-10 major Created from InDesign 2026's declared document types and filters, plan/indesign/08-file-formats.md and the code