Skip to content
Site volume
Colourway

Print kit

Misregistration and the second ink

Plates printed a hair out of register. On big display type it is the second ink, which lands off register and stays.

  • Beta
  • Expressive layer
  • Server component
  • Since 0.1.0
  • Press check
Import from@maxgrits/overprint-react/print
On this page

Text mode is the second ink: one text shadow in the second ink a couple of pixels off register. It lands three times further out and snaps to rest, then stays (rest), or resolves to one print (motion). One real text node; no duplicate DOM text. Art mode prints one copy of any art per plate in its separation ink, each offset by its own unit vector, the key on top in register. The class .mk-ov is the same second ink for any display head.

Example#

Look of this example

Websites that win customers

Live render of examples/misregistration/basic.tsx

Usage#

Misregistration is the second ink: big display type prints twice, the second plate a hair off register (D-D6). It lands off and stays off at rest by default; one switch makes it motion-only or turns it off. In art mode it prints any shape as four slightly shifted separations.

  • Text mode (string children) is for display type of 2 rem and up only: page titles, poster words, splash lines. It is one real text node with a printed shadow, never duplicated text.
  • Art mode (a render function) draws a shape once per plate, offset by the volume.
  • The switch. data-mk-second-ink on any ancestor: rest (default), motion (it resolves to one print) or off.
  • Never on body text, labels, names or numbers in rows.

Layer and volume#

Text: display type at 2 rem and up only (display, and head-section from Press); off at Quiet, under more contrast and with data-mk-second-ink="off". At Press and Rave the cyan and yellow plates join the entrance and collapse. Art: offsets 0 / 2 / 3 / 5 px and plates 1 / 2 / 4 / 4 from Quiet to Rave.

Anatomy#

Websites that win customers

The parts of examples/misregistration/basic.tsx, numbered:
  1. Display wordOne text node; the second plate is its shadow..mk-ov
  2. Art platesOne copy per separation, offset by the volume..mk-misreg

Volume#

  • Quiet

    Websites that win customers

    Off: one clean print.

  • Studio

    Websites that win customers

    The second ink on the view's display moment; art 2 px apart, two plates.

  • Press

    Websites that win customers

    Plus section heads; art 3 px, four plates.

  • Rave

    Websites that win customers

    Art 5 px, four plates.

Content#

  • Three to six words of display type. The effect needs size to read as print rather than blur.

Do and don't#

Do

Built to be tested

Display type at 2 rem and up.

Don't

A second ink on a paragraph of body text, so every line reads as a blur.

Body text, doubled.

Below about 2 rem the offset reads as blur, not print (D-D6). Body text stays one clean print.

Accessibility#

  • The text stays one text node, square, on its plate; the shadow is the press check's one sanctioned exception to the two layers.
  • Never on body text, labels, names or numerals in rows (lint mk/second-ink-role).
  • Reduced motion: the rest state at once.

Props#

PropTypeDefaultDescription
mode"art" | "text"none
children requiredstring | ((ink: string, sep: Sep) => ReactNode)noneDraws one plate: its ink (`var(--mk-sep-x)`) and separation. The display line (one text node).
stateMisregistrationStaterest`auto` follows the scope's `data-mk-second-ink` (default `rest`, D-D6).
as"div" | "span"none
classNamestringnone
styleStyleVarsnone
idstringnone

Generated from MisregistrationProps in packages/overprint-react/src/print/misregistration.tsx.

Tokens#

System tokens (15)

Its own properties (11)

  • --mk-misreg-k
  • --mk-ov-cy
  • --mk-ov-k
  • --mk-ov-rx
  • --mk-ov-ry
  • --mk-ov-switch
  • --mk-ov-x
  • --mk-ov-y
  • --mk-sep-rank
  • --mk-sep-ux
  • --mk-sep-uy

Scanned from its CSS at build and checked against its registry entry.

Changelog#

Arrived in 0.1.0.

0.9.024 October 2026

  • Patchreactmisregistration: display type (mk-type-display, mk-type-head-section, mk-type-head-card and the second ink's .mk-ov) breaks a word that is wider than its column inside the box instead of overflowing it, so a long word at the display floor no longer pushes a 320 px page sideways (DF-52, WCAG 1.4.10). Lines whose words fit are unchanged.

0.1.024 October 2026

  • MinorreactThe print and comic kits, P0 (21 P2-T11 to P2-T15): the art core (seeded halftone, bursts, balloons, lines, krackle, printer's marks, SFX layers, the texture tiles and gen-print-tiles), the print kit (Halftone, Overprint, PrinterMarks, Sticker, Stamp, Seal, useStampLand, Tape, Grain, Misregistration and the .mk-ov second ink, GiantGlyph, ShapeGlyph), the data Cover (grid and score, coverAlt, CoverLegend), the comic registers and kit (Panel, PanelGrid, Balloon, Caption, CornerBox, EditorsNote, ContinuedIn, SFX, SfxBurst, SpeedLines, FocusLines, ImpactStar, KeyPop).