Architecture Decisions (ADRs)
Index and rationale of architecture decision records in lightweight-pdf.
Architecture Decision Records (ADRs) capture the key architectural choices, context, trade-offs, and consequences made throughout the evolution of lightweight-pdf.
Documenting these decisions upfront helps maintain focus on core requirements, prevents regressions, clarifies architectural boundaries for contributors, and answers frequent design questions (such as why a custom subsetter was written, why HTML/CSS parsing is out of scope, or how dependency sizes are controlled).
[!NOTE] The ADR texts are preserved in their original, authentic German formulation as maintained during project planning and development.
Index of Decisions
| ID | Title | Status | Scope |
|---|---|---|---|
| ADR-001 | Lizenz: MIT | Decided | Project license & SIL OFL 1.1 font licensing |
| ADR-002 | Workspace-Layout | Decided | 4 core crates + facade crate separation |
| ADR-003 | Zwei begrenzte Dependency-Ausnahmen | Decided | Dependency boundaries (skrifa, png) |
| ADR-004 | Kein taffy, kein pdf-writer |
Decided | Own PDF writer & flex-like layout engine |
| ADR-005 | Keine Makro-DSL, kein Parser | Decided | Pure Rust builder pattern over custom languages |
| ADR-006 | Default-Fonts: Source Sans 3 + Source Serif 4 | Decided | Bundled OFL fonts |
| ADR-007 | Überlauf-/Überlagerungs-Schutz | Decided | Hard robustness principles against overlapping content |
| ADR-008 | Größenbudget | Decided | Wasm binary size limits & automated tracking |
| ADR-009 | V1-Wasm-Grenze: Rust-first | Superseded | Superseded by ADR-017 |
| ADR-010 | Font-Bridge liegt an der Facade | Decided | Decoupled font metrics bridge |
| ADR-011 | Harte Seitenbereiche statt nachträglichem Seiten-Clip | Decided | Page boundary clipping guarantees |
| ADR-012 | Schrift-Scope und PDF-Textverträglichkeit | Decided | Static TrueType glyf outlines & CID mapping |
| ADR-013 | PNG über geprüften Decoder | Decided | PNG decoding & transparency handling |
| ADR-014 | Phase-0-Größenmessung | Decided | Measurement probes & font coupling |
| ADR-015 | ttf-parser Migration zu skrifa |
Decided | Security audit response (RUSTSEC-2026-0192) |
| ADR-016 | FlateDecode via miniz_oxide |
Decided | Stream compression without native C libraries |
| ADR-017 | wasm-bindgen-Bindings & npm-Paket | Decided | @casoon/lightweight-pdf JS/TS WASM package |
| ADR-018 | ZUGFeRD/Factur-X Einbettung | Decided | Scope: electronic invoice embedding without XML generator |
| ADR-019 | Tagged PDF / PDF-UA-1 | Decided | Accessible PDF/UA structure trees |
👉 Read all full decisions: All Decisions (ADR-001 – ADR-019)