March 1, 2026

PDF perfect or scriptwrecked?

Show HN: I built a zero-browser, pure-JS typesetting engine for bit-perfect PDFs

New PDF tool drops — hype meets font police and a surprise film-credit check

TLDR: New JavaScript tool promises identical PDFs everywhere without a browser. Comments praise the idea but hammer missing Typst comparison and broken Arabic/Devanagari, turning launch day into a font-cop brawl—with a random ask for the creator’s film credits—reminding everyone that global scripts are the real test.

A solo dev unveiled VMPrint, a tiny JavaScript tool that promises “bit‑perfect” PDFs everywhere—no hidden browser, no drama. Well, about that drama. The launch post had devs cheering the idea of cleaner, faster, identical PDFs, but the comments quickly turned into PDF Wars. Typst fans stormed in first: one user said the “Why Not Just Use” section forgot Typst—“the obvious pick” these days—sparking a compare-or-it’s-not-real showdown. Then the language experts arrived, and the vibe flipped. Multiple readers flagged that Arabic text in the screenshots looked broken—letters not connecting—and Hindi/Devanagari seemed off too. Suddenly, the promise of perfection met the reality of global scripts. One eagle-eyed commenter even asked about strange “dotted circles” in screenshots, wondering if that was… on purpose. Ouch.

Meanwhile, a passerby dropped a humblebrag—“I just built one too”—and linked their own browserless markdown-to-pdf, stoking the “roll your own PDF” mini-trend. And for comic relief, someone veered completely off-road asking the creator to list their film credits—yes, the readme mentions a director, and yes, the thread briefly turned into an IMDb audition. In short: big idea, bold claims, and a community split between the wow and the whoa, fix your fonts.

Key Points

  • VMPrint is a pure-JavaScript, zero-dependency typesetting engine that produces deterministic, bit-perfect PDF output across runtimes.
  • The engine separates layout (producing a JSON Page[] stream) from rendering (painting to PDF now, with potential future targets like canvas or SVG).
  • Layout uses real font metrics, handling hyphenation, line wrapping, tables, orphans/widows, floats, and multilingual shaping (Latin, CJK, RTL).
  • The Page[] JSON stream can be serialized, diffed, and snapshot for regression testing, enabling reproducible and inspectable layouts.
  • The core is described as 88 KiB and capable of rendering complex documents in milliseconds, providing a lightweight alternative to headless browser solutions.

Hottest takes

“Typst is the obvious choice for typesetting nowadays” — flexagoon
“Every single screenshot of Arabic in the README is malformed” — luaybs
“share some names of films you have been part of” — codegladiator
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.