# Veneer & Laminate

*Laminate faces, book match, and slip match veneer*

**Names:** `veneer` `match`

## When to use

A show face covered in a thin leaf of another species (veneer) or a sheet good (a laminate),
bonded to a solid substrate. The host keeps its declared dimensions; each leaf is its own
generated part with its own cut-list row. Not for solid banding or stringing inlays: another
file in `INDEX.md` may cover those, and it extends this one.

## Syntax

```text
veneer face=<face> material=<Name> [thickness=<mm>] [grain_angle=<deg>] [leaves=<n>] [match=book|slip|sunburst]
```

| Property | Meaning | Default |
| --- | --- | --- |
| `face=` | Part-local face word (`pos_x neg_x pos_y neg_y pos_z neg_z`) the leaves bond to. | `pos_z` |
| `material=` | The leaf's species, or a `type=sheet` material for a **laminate**. A bare word, never a CEL expression; must be declared in `materials`. | required |
| `thickness=` | Finished leaf thickness, mm. Real veneer is about 0.6 (paper-backed) to 3 (hand-sawn). | 0.6 |
| `grain_angle=` | Degrees off the host's length axis; recorded on the cut list. A book-matched mirrored half reads at the opposite angle. | 0.0 |
| `leaves=` | Leaves laid side by side, edge to edge, no gap. | 1, or 2 once `match=` is given |
| `match=` | `book` (alternate leaves mirror about each seam; exact mirror, ADR-0019) or `slip` (repeat, unmirrored), or `sunburst` (leaves laid as a fan, RFC-0141; see [`banding-and-stringing`](banding-and-stringing.md)). | none (single leaf), `slip` when `leaves` > 1 |

- **A laminate is the same node**: give `material=` a `type=sheet` material. There is no
  separate `laminate` node.
- `veneer` cuts nothing on the host. Each leaf is a generated part (never written back to the
  source), bonded not joined: no `join` names it and it is expected to touch the host, so it
  never reports a clash or gap.
- **A leaf follows its host's finished outline** (RFC-0123): a `cut_path ... keep="inside"`
  outline or a pierced `cut_path` cut-out written on a face parallel to the veneered one, and a
  `trim` or scribed tenon shoulder written square to it, shape the leaf as they shape the host,
  on every leaf of a book, slip or sunburst match. Not followed: a leaning (`tilt=`) cut on a
  parallel face, an outline written on a face square to the veneered one, and blind cuts; the
  leaf keeps the blank rectangle there. A trim that removes a whole leaf leaves that leaf
  `not built: the features remove the entire stock`.
- The cut list shows each leaf as its own row (species, thickness, grain angle, match), a
  book-match's mirrored half as a distinct handed row, and the host row **twice**: the
  declared substrate size unchanged plus a finished-thickness figure (substrate plus leaves).

## Example

```kdl
project name="Veneered Lid" units=mm schema_version=1 {
    materials {
        material Pine type=softwood
        material Walnut type=hardwood
    }
    component Lid role=lid {
        stock Pine 280.0 180.0 18.0
        // two leaves, opened like a book: the figure mirrors about the centre seam
        veneer face=pos_z material=Walnut thickness=3.0 grain_angle=0.0 match=book leaves=2
    }
    assembly Box {
        part Lid instance=Lid { by top_sw; pos x=0.0 y=0.0 z=0.0 }
    }
}
```

## Pitfalls and diagnostics

- Veneer cross-grain to a solid substrate cracks as the substrate moves; align
  `grain_angle=0.0` with the host's grain unless the piece is a stable sheet substrate.
  `examples/biedermeier_box.kdl` explains why it veneers the show faces and balances the
  back.
- A one-sided veneer on a wide panel cups; veneer the balancing face too (a second `veneer`).
- `material=` is a name, not an expression: `material=Walnut`, not `material="Walnut"`.
- `veneer` is read by name; it is **not** an edge feature, so it takes no `edges` child.

## See also

- `docs/KDL_AUTHORING.md` §7 ("Veneer and laminate"); `docs/rfc/0123-veneer-and-laminate.md`;
  ADR-0019 (the mirror used by book match).
- `examples/biedermeier_box.kdl`; `docs/styles/biedermeier.md`.
- `materials-and-hardware.md` (declaring the species), `edge-and-face-cuts.md`.

## Names

Every name this page declares, how the example library uses it, and the shortest real use.

### `veneer`

feature; node in 15 of 116 examples (30 uses).

Shortest real use, from `empire_columned_chest.kdl`:

```kdl
veneer face=neg_x material=Mahogany thickness=veneer_th
```

### `match`

word-valued property; property in 15 of 116 examples (26 uses).

Shortest real use, from `adirondack_pole_side_table.kdl`:

```kdl
veneer face=pos_z material=Willow thickness=0.6 match=sunburst leaves=8
```

## Related terms

- [Book-matched veneer](/almanac/techniques#book-matched-veneer)
- [Burl veneer](/almanac/techniques#burl-veneer)
- [Oyster veneer](/almanac/techniques#oyster-veneer)
- [Veneer](/almanac/techniques#veneer)
