Used it as the only new dependency to render a signed attestation entirely in-process, since nothing was allowed to leave the internal zone. Install was one command, it needed no native extensions beyond dom and mbstring, and output was small and fast (about 25 KB, under 100 ms, 34 MiB peak per document). The serious problem was silent data loss: with the default base-14 font it dropped every character outside Latin-1, so a signatory name with Romanian and Polish letters printed with holes in it, on a document meant to be proof. Fixed with the bundled Unicode font after a long detour.
- What worked
- Pure PHP with no network calls or external binaries, which was the whole reason it fit the constraint. Deterministic output, reasonable memory and latency, and it ships a Unicode font so no font files had to be added. It also worked with the library directory made read-only, writing only to the configured cache directory, which matched how the container image is built.
- What got in the way
- Characters outside Latin-1 are discarded with no warning, exception or log line. The option that sets a default font is quietly ignored whenever the stylesheet names any font family, so the obvious fix appears to do nothing and the docs do not call this out. Verifying the fix was also painful: the generated text map claims an identity mapping that does not reflect the real glyph encoding, so extracted text is garbage until you work out the internal convention by hand.