v0.10.0
What's Changed
- build(deps): bump golang.org/x/net from 0.55.0 to 0.56.0 by @dependabot[bot] in #366
- build(deps): bump golang.org/x/image from 0.41.0 to 0.42.0 by @dependabot[bot] in #364
- html: generate anonymous table-row for bare display:table-cell children (#367) by @carlos7ags in #370
- build(deps): bump golang.org/x/image from 0.42.0 to 0.43.0 by @dependabot[bot] in #369
- layout: float formatting context — multi-column floats, clear, containment (#367) by @carlos7ags in #371
- reader: honor /Colors and /BitsPerComponent in PNG predictor by @carlos7ags in #380
- reader: reject negative or oversized /W widths in xref streams by @carlos7ags in #379
- font: bound cmap range expansion against hostile overlapping ranges by @carlos7ags in #381
- image: enforce dimension limits from header before full decode by @carlos7ags in #385
- font: bound WOFF table decompression before ReadAll by @carlos7ags in #383
- sign: add CMS round-trip verification and tamper tests by @carlos7ags in #384
- layout: draw margin boxes in fixed positional order for deterministic output by @carlos7ags in #382
- export: bound C array arguments with unsafe.Slice and a count cap by @carlos7ags in #386
- font: synchronize sfntFace lazy caches with sync.Once by @carlos7ags in #390
- svg: add malformed-input tests and fuzz targets by @carlos7ags in #389
- layout, font: add text-layout benchmark baseline by @carlos7ags in #388
- reader: parse array-form bfrange destinations in ToUnicode CMaps by @carlos7ags in #387
- html: make asset resolution safe by default (SSRF + arbitrary file read) by @carlos7ags in #391
- html: bucket CSS rules by rightmost simple selector by @carlos7ags in #395
- layout: consolidate measurer resolution into resolveMeasurer by @carlos7ags in #394
- reader: thread MaxXrefSize into xref-stream decompression by @carlos7ags in #393
- export: return a caller-owned copy from folio_last_error (fix UAF window) by @carlos7ags in #392
- font: remove per-call grapheme allocation in MeasureString by @carlos7ags in #396
- font: parse descriptor metrics at face construction by @carlos7ags in #398
- export: add folio_buffer_len64; saturate folio_buffer_len at INT32_MAX by @carlos7ags in #397
- test: escape U+200D as \u200d in emoji test literals (fix red CI on main) by @carlos7ags in #399
- html, layout: add golden characterization corpus for style + paragraph geometry by @carlos7ags in #400
- examples: add CI test coverage for remaining examples (closes #231) by @carlos7ags in #401
- layout: eliminate quadratic prefix re-measure in word chunking by @carlos7ags in #402
- export: add handle-table Go tests and C harness error-path stage by @carlos7ags in #403
- font: fold GSUB/GPOS/GIDToUnicode onto font.Face (breaking) by @carlos7ags in #404
- layout, html: split paragraph.go and converter.go into per-seam files by @carlos7ags in #405
- layout: count runes with utf8.RuneCountInString instead of len([]rune) by @carlos7ags in #406
- internal/csscolor: unify CSS color parsing across html and svg by @carlos7ags in #407
- layout: keep table rowspan groups intact across page breaks (closes #362) by @carlos7ags in #408
- optimize: add lossless rewrite pass for input PDFs (spike) by @carlos7ags in #410
- internal/cssunit: unify CSS length/unit parsing across html and svg by @carlos7ags in #409
- sign: add signature verification API (spike) by @carlos7ags in #411
- zugferd: add Factur-X/ZUGFeRD e-invoice package (spike) by @carlos7ags in #412
- document: add debug MediaBox outline toggle (closes #376) by @carlos7ags in #413
- html: honor font-style/weight/family on @page margin boxes (part of #378) by @carlos7ags in #414
- html: number li::marker content with the implicit list-item counter (part of #378) by @carlos7ags in #415
- reader: read encrypted PDFs via the Standard security handler (spike) by @carlos7ags in #416
- layout: resolve border conflicts under border-collapse per CSS 2.1 §17.6.2 (part of #378) by @carlos7ags in #417
Full Changelog: v0.9.1...v0.10.0