Gallery › Printmaking and etching
Out of Register
A three-plate risograph sunset, misregistered on purpose: every tone is a halftone dot.
How it is made
Every tonal mark is a halftonekit cell, and none is placed by hand. A teal dot plate (sky and water, at 15 degrees), an orange dot plate (the sun's halo and a horizon band, at 75 degrees) and a dark line plate (two ridges shaded by height, at 45 degrees) are each shifted a few units, so the dot lattice moves while the image stays. The flat sun core, the registration crosshairs, the colour bars and the letterpress title are all there too.
Details
- Category
- Printmaking and etching
- Libraries
- halftonekit
- Added
- 2026-09-03
- Built in
- issue #126
- Page size
- 720 × 900 points
Source
View source the whole program in a scrolling window, or read gallery/out_of_register.ps on GitHub. To draw it yourself, from a checkout of the repository:
pscat --page 720x900 gallery/out_of_register.ps
The first 40 of 145 lines of the source
%!PS-Adobe-3.0
%%Title: Out of Register
%%BoundingBox: 0 0 720 900
%%Creator: Muse Code, after the risograph printers
%%EndComments
% Out of Register — a three-plate sunset misregistered on purpose.
% Every tonal mark on this page is a halftone cell, not a hand-placed
% dot: the screening *is* the picture, which is the point the piece
% exists to make about lib/halftonekit.ps (issue #53).
%
% teal plate dot screen, 15 degrees, offset [4 2]: a sky gradient
% and a water gradient, one /Tone field in page space
% orange plate dot screen, 75 degrees, offset [-3 3]: a linear-cone
% sun halo plus a warm horizon band, maxed together
% key plate LINE screen, 45 degrees, offset [2 -2]: two tent
% ridges shaded by height fraction (continuous rules
% at uniform tone read as structure — the reviewer's
% A2, taken)
% solids parchment ground first, then a flat orange sun core
% under the halo, a deliberately shifted key ring
% around it, two teal water rules, key registration
% crosshairs, plate color bars, letterpress title
%
% Misregistration comes purely from per-call /Offset (+/Angle): every
% /Tone field is defined once in page space and stays registered to
% the page while the lattice shifts (the plate-moves-not-image
% contract — no offset compensation inside any /Tone proc). One
% `<path> clip` up front, explicit inflated /Boxes per plate, opaque
% overprint in paint order, light plates first and key last.
%
% Run from the repo root:
% pscat --page 720x900 gallery/out_of_register.ps
(lib/halftonekit.ps) run
% v oorclamp01 -> v clamped into [0,1]: plain arithmetic, total.
/oorclamp01 {
dup 0 lt { pop 0 } if
dup 1 gt { pop 1 } if