lightweight-pdfv0.3.0

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)

Edit this page on GitHub · Docs for v0.3.0