Raster images and drawable framebuffers (top-left origin, Y-down). Create a blank image with new, then draw by recording a picture() and replaying it with image:apply — each replay rewrites pixels. For vector shapes that persist as live handles across frames (center-origin, Y-up), use draw.
Create an empty, reusable drawing command list. Record draw operations into it, then replay it onto an image with image:apply(picture). Build it once and apply every frame; call picture:reset() to rebuild dynamic content.
The built-in bitmap font as an Atlas (8x13 cells, 16x6 grid; cell index = ASCII code - 32). Hand it to picture:set_font(atlas), or draw individual glyphs as sprites with atlas:sprite(code - 32).