Words drawn as separate calls on one baseline now end up in a single shape, one run per word. gridtext, and through it ggtext, lays out marked-up titles that way, and every word used to become its own box sized by our estimate of its width.
Super- and subscripts stay on the line as shifted runs instead of breaking it into separate shapes.
Glyphs (R >= 4.3) keep the positions the graphics engine gave them and are never merged.
Nothing is drawn outside the canvas any more. Clip rectangles are intersected with the device, which xpd = NA can otherwise exceed, and raster cells are clipped one by one instead of only as a whole image.
Rotated text now rotates the shape rather than the text inside it, so selecting a rotated axis label shows handles that follow the glyphs instead of an upright box. The text lands in the same place either way.
An opaque raster cell no longer bleeds half a cell into a transparent neighbour. The overlap exists so that neighbouring cells paint over each other’s antialiased seams, but nothing is drawn over a transparent cell, so the bleed ate into it.
width and height take a units argument: "in", "cm", "mm" or "px" at 96 per inch.
New bg argument for a background colour. The default is still transparent, so the sheet shows through.
New symbolfamily argument for the typeface asked for on plotmath symbols, for when the main font does not cover them.
New font_match() reports which font was really measured. Writing a drawing on a machine that lacks the font it will be opened with is normal, and systemfonts substitutes without saying so.
easeling 0.3.0
easel_xml() renders plotting code straight to a DrawingML string with no file involved; easel_dev(file=) remains the file-based device.
easel_size() and easel_dev(dims =, wb =) size the device from real workbook cell geometry.
Optional real font metrics through ‘systemfonts’ (metrics =), with a built-in table and user-supplied tables as alternatives.
Text placement calibrated against Excel’s line layout (text_voff), with per-character vertical metrics for correct centring.
Shaped clip paths (R >= 4.1): exact for arbitrary simple regions (Greiner-Hormann polygon intersection); multi-ring and oversized regions fall back to their bounding box with a warning.
Hard-edged alpha and luminance masks render as clips; soft and inverse masks warn and draw unmasked (not representable in DrawingML).
Linear and radial gradient fills, including the radial focus position.
Glyph API support (R >= 4.3, e.g. ‘marquee’ typeset text) via an optional ‘systemfonts’ glyph-to-character mapping.
Exact custDash patterns for all line types; evenodd paths keep their holes; runs on R >= 3.6 with all newer graphics API behind version guards.