# Documentation


- **Introduction**
- [Overview](/docs): What Valo is and which package to use.
- [Getting started](/docs/getting-started): Install Valo and record your first rectangle.
- Reference
  - [Paint](/docs/reference/paint): Colour, stroke, blend, and optional shaders or filters for one draw.
  - [DisplayListBuilder](/docs/reference/display-list-builder): Record drawing commands without touching the GPU.
  - [DisplayList](/docs/reference/display-list): An immutable recording of drawing commands.
  - [Context](/docs/reference/context): Submit a display list to a host-owned GPU device.
  - [Surface](/docs/reference/surface): The host-owned destination Valo draws into.
  - [Path](/docs/reference/path): Lines, curves, and contours you fill, stroke, or clip with.
  - [Image](/docs/reference/image): A GPU texture the host uploaded, then drew into a rectangle.
  - [FontCollection](/docs/reference/font-collection): Registered faces used to shape paragraphs.
  - [Paragraph](/docs/reference/paragraph): Lay out styled text, then record it like any other draw.
- Guides
  - [Rust on native platforms](/docs/guides/embedding-rust): Render with the valo crate from a native Rust application.
  - [Rust in the browser](/docs/guides/rust-browser): Compile the valo crate to WebAssembly and render directly to an HTML canvas.
  - [JavaScript engine API](/docs/guides/raw-api): Use Valo's display lists, paints and rendering resources from JavaScript or TypeScript.
  - [Canvas2D compatibility](/docs/guides/canvas2d): Run Canvas2D-shaped drawing code on Valo and understand the known differences.
  - [One device, many canvases](/docs/guides/shared-device): Share GPU resources across several browser canvases.
  - [Integrations](/docs/guides/integrations): Use Valo from C, translate SVG, or discover native system fonts.