Skip to content

ADR-0007 — Corner radius clamping: local proportional reduction ​

Status: Accepted

Context ​

When the radii requested at both ends of an edge exceed its length, they must be reduced. Product Owner requirements:

  • two corners with the same radius on a too-short edge → each stops at the middle;
  • a single corner pushed to the maximum on a square → the corner becomes an arc covering the whole side, and goes no further;
  • never an "anti-corner": a rounding never eats the other edges;
  • no error message: the value simply goes no further.

Comparison:

Rule2 corners at 100 on a 25 edge1 corner at 1000 on a 100 squareEffect on unrelated corners
Figma (cap at half)12.5 each ✔50 → a flat part remains ✘none
CSS (global factor)12.5 each ✔100 ✔all reduced ✘
Local proportional12.5 each ✔100 ✔none ✔

Decision ​

Local proportional reduction per edge, derived from the CSS principle. Details and proof: DERIV-local-radius-clamp.

Consequences ​

  • Always-constructible result, whatever the requested value.
  • Only the vertices adjacent to a conflicting edge are reduced.
  • Non-maximal rule: a small margin may stay unused in rare cases. Accepted for simplicity.

References ​

REF-CSS-BR, REF-FIGMA-CR, DERIV-local-radius-clamp