Skip to content

v0.4.0

Choose a tag to compare

@tannevaled tannevaled released this 19 Oct 19:31
c273b15
go install github.com/go-slides/slides/cmd/slides@v0.4.0
  • Vector PDF (#15): --pdf (or -o deck.pdf) now draws each slide into the PDF instead of embedding a picture of it. Text is real text in embedded subset fonts, so it can be selected, searched and copied. Shapes and gradients are vectors, each image is embedded once, and links are kept. Layout comes from the same go-webengine layout tree as the PNG output, so the two match. Only effects with no vector form (opacity below 1, filters, masks, rotation, blurred shadows) are drawn as a picture of that element, with the element's text kept selectable on top. --pdf-raster keeps the old one-picture-per-slide PDF. On a 100-slide deck on an M4 Max:

    go-slides v0.4.0 go-slides v0.3.0 marp-cli 4.5.1
    Time 306 ms 1.15 s 1.84 s
    Size 758 KiB 10.0 MiB 837 KiB
    Memory 158 MiB 243 MiB 1.5 GiB

    On each test deck, between 0 % and 1.7 % of pixels differ from the PNG render, all of them on glyph edges (internal/cmd/pdfcheck measures this). The engine work is in go-webengine v0.9.0 (paint.PaintVector, pdfcanvas) and go-pdfkit v0.15.0.

  • Emoji (#14): emoji shortcodes (:smile:) and Unicode emoji become Twemoji images, written as Marp Core writes them but embedded in the deck instead of loaded from a CDN, so no network is needed. They appear in every output: HTML, PDF, PNG, PPTX and ODP. --no-emoji turns this off. The images come from the new go-icons/twemoji module (Twemoji 17.0.3, CC-BY 4.0). It adds 2.3 MB to the binary, and a deck without emoji pays nothing at run time.