{"repo":"cosmiciron/vmprint","free":true,"listed":false,"github":"https://github.com/cosmiciron/vmprint","clone":"git clone https://github.com/cosmiciron/vmprint.git","description":"This layout engine can solve the hardest layout problems imaginable. Its output is DTP grade and deterministic. It's faster than engines written in C++ because it's not traditional. Backed by game engine tech, it has a microkernel and runs a spatial-temporal simulation instead of a giant complex pagination loop.","language":"JavaScript","stars":657,"topics":["canvas","document","headless-browser","layout-engine","multilingual","pdf","pdf-generation","publishing","puppeteer","text-rendering"],"license":"Apache-2.0","category":"scrapers-browser-automation","readme_excerpt":"VMPrint I built the layout engine so you don't have to. VMPrint is a layout engine. Not a PDF library. Not a renderer. A layout engine: the component that decides where every glyph goes, negotiates page breaks, resolves mutual spatial dependencies between dynamic regions, and produces a flat array of exact X/Y coordinates for every box and text run in the document. What you do with that output is your call: render to PDF, replay on a Canvas, drive a word processor's display layer, feed it to a WebGL pipeline. The engine's job ends when the math is done. The architecture is backed by a pending patent. The core insight: document layout is a deterministic spatiotemporal simulation, not a pipeline. Document elements are autonomous actors inhabiting a persistent world coordinate space. Pages are viewport projections over that world; they are not containers that content gets assigned into. Actors negotiate geometry with their neighbors, publish committed facts when their placement settles, and other actors observe those facts and respond, all within a single forward simulation pass. The output is captured when the world reaches equilibrium. That is not a metaphor. It is the literal execution model. It is why things that require multiple passes in every other system, such as a table of contents that needs accurate page numbers or a dynamic region that depends on sibling geometry, resolve correctly in one pass here. Left: rendered output. Right: the same document with --debug ; every","default_branch":null,"files":null,"tree":[],"storefront":"/r/cosmiciron","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/cosmiciron/vmprint/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}