VMPrint — Open Source
A desktop-publishing engine that runs in your browser
No server. No DOM. No HTML. Structured JSON in, pixel-perfect pages out — multi-column layouts, floats, drop caps, tables, and hyphenation, entirely in TypeScript.
All examplesAbout this document
This newspaper was generated by Claude in a single shot, from a markdown skill file describing the VMPrint schema. There were no prior VMPrint documents on the internet to learn from — no examples, no training data specific to this format. Claude decided to make a newspaper and built it from scratch using only the primitives the schema made available.
The JSON on the left is the complete document. Every element you see in the rendered output — the masthead, the zone-map sidebar, the pull quote float, the drop cap, the market table, the running headers — is a node in a structured tree. Edit it live and the engine re-renders in under a second.
Ready.
Boot: -
Layout: -
Render: -
Document JSON
Edit live — re-renders automatically.
Canvas Preview
Rendered on a single <canvas> element.
No pages rendered
What is VMPrint?
VMPrint is a deterministic typesetting engine written in TypeScript. It runs in Node, Deno, or the browser — no DOM, no HTML rendering pipeline, no native dependencies. Documents are pure JSON data structures. You describe what a document contains; the engine handles everything else.
- Multi-column text flow
Stories flow across n columns, split across pages, balance or not. - Floated elements
Images and pull quotes interrupt flow; body text wraps around them. - Drop caps
Configurable dropped initials with per-character style overrides. - Tables
Cell spanning, repeating headers, alternating row styles. - Zone maps
Independent layout regions side-by-side, each with its own flow stack. - Running headers & footers
Per-page bands with live page-number tokens. - Advanced justification
Paragraph-level optimization with configurable strategies. - Hyphenation
Automatic or per-element control, on or off. - Web fonts
TTF/OTF loaded and shaped at runtime via fontkit. - Canvas & PDF output
Same document, multiple render targets. - Pure TypeScript
No native modules, no bundler required at runtime. - Open source
Apache 2.0. github.com/cosmiciron/vmprint