entaPub — open any EPUB, safely, all the way through
Broken books, outdated books, hostile books. entaPub opens EPUB files safely, repairs what it can, and hands the book to the reader exactly as it was meant to look.
No more books that refuse to open. EPUB is the e-book format used around the world, yet many books in circulation do not follow the standard, are damaged, or were built with outdated tools. entaPub is an EPUB reading engine written in Rust that opens as many of these books as possible — without putting the reader's device at risk.
Features#
Readable even when broken
Reads strictly by the standard first, then recovers step by step only when needed: XML repair, HTML recovery, and book reconstruction.
Know exactly what was fixed
Every repair is recorded as a diagnostic with a confidence level — not just a page that happens to render.
No network on open
No remote stylesheets or images. The book is assembled only from what is inside it.
Executable content removed
script, iframe, javascript: and similar are stripped, and each removal is recorded.
Nothing outside the book
References that escape the book with ../ or absolute paths are rejected.
Huge books cannot freeze you
Limits on file size, expanded size, nesting depth and element count keep extreme books in check.
Memory-safe
unsafe Rust is forbidden, and the parser is fuzzed with AFL++ against large volumes of broken input.
The book as it was made
Emphasis marks, vertical writing and indentation are part of the text. Only dangerous styling is removed; vertical writing, ruby, fixed layout and spreads are kept.
EPUB 2 and EPUB 3
New books and old-style books open through the same entry point.
Reading and making#
entaPub also includes a Builder that always produces the same EPUB from the same input. KuroEditor uses the Builder to turn manuscripts into EPUB; KuroViewer uses the Reader to open books. Built on the same principles in both directions, Entamy's products can handle e-books from start to finish.
| Formats | EPUB 2 / EPUB 3 (fixed layout, vertical writing, ruby, spreads) |
|---|---|
| Recovery | Strict → XML repair → HTML recovery → book reconstruction (each step recorded as a diagnostic) |
| Safety | No network access, executable content removed, out-of-book references rejected, resource limits |
| Implementation | Rust (unsafe forbidden), fuzzed with AFL++ |
| Used in | KuroViewer (reading) and KuroEditor (making) |
| Availability | Built into Entamy products (open-sourcing not yet decided) |
If entaPub is open-sourced, it will be released under the Kuro License (MIT + attribution).
