UE-001 · Generative type system · on Cranny Frame Base

Contact Grid

Brush circle
Text
Contact

Contact Grid draws each letter with a grid of small shapes — circles, squares, hexagons, brush marks — that switch on in sequence, live for one cycle and fade, so the word is always assembling and dissolving.

It began with Cranny, Frontify's variable typeface: a custom version of Azurio, made by Narrow Type. For Frontify Futures, Cranny was stripped back to its skeleton — two reductions, Frame and Hairline — which act as hidden scaffolding and are never shown directly. Contact Grid runs on these bases.

The text is set in Frame on a hidden canvas, a grid is laid over it, and only the cells that make contact with the letterforms are drawn. Timing, easing, wave patterns and motion drivers decide when and how each cell appears. On the Futures website and social channels the typefaces exist only as sets of parameters, generated live by the plugin — so no headline is ever rendered the same way twice.

In use · Frontify Futures

Introducing Futures
Up/Front
Blocks
Visionaries
Paradigm Shifts

Live on frontify.com/futures, every headline set by the plugin

Why Custom Typefaces Are Branding’s Future
Logos of the future will react in real time
AI Archives: the new frontier of brand heritage
Move over, product drops: 2025 is about planet-first partnerships
Why brands are cultivating local echo chambers
Building brand magic beyond product features

The bases

CC
CU+0043

Cranny Frame Base and Cranny Hairline Base are reductions of Cranny, the skeletons Contact Grid builds on. They’re never shown directly: the plugin sets the word in Frame on a hidden canvas and draws only the cells that touch it. Both cover the same 404 characters.

Facts

Drivers
Time, Cursor, Scroll, Audio, Wind Data
Renders with
Canvas 2D
Commissioned
Frontify Futures, 2025

Credits

Identity, type system, Frame & Hairline bases, development
Daniel Powell
Cranny
Frontify's typeface, a custom version of Azurio made by Narrow Type
Frontify Futures concept
James Fooks-BaleTim Noakes

Press

PublicationArticleDate

Behind the scenes

The type generator A node editor for the system: text, bases and drivers wired into the grid animator, flicking through the four presets.
The colour generator Article palettes are generative too, set by the time and wind in St. Gallen, where Frontify is based.

Type generator v2

The final phase: a fully working Futures tool where nodes can be added, wired and removed. It brings in camera and recording, so designers capture photographs and video and work them through the system, and it holds an archive of the original articles. More on danielpow.com ↗

The v2 graph: text, an image input and the bases merged, then bounced, patterned and timed into the grid animator.
1 · Set The word is set in Frame on a hidden canvas, never shown.
2 · Grid A grid is laid over it, one cell per brush mark.
3 · Contact Only the cells that touch the letter are kept.
4 · Perform A timer switches each cell on, the brush draws it, the letter drifts through the grid.

A plugin and a tool

One engine, two front ends

Contact Grid lives on the web twice. The tool is where a look is found: a node editor for wiring text, bases, drivers and brushes together. The plugin is how it ships: a small script that sets each article's own headline live, in the reader's browser.

Both run the same engine, a set of plain functions for timing, drivers, patterns and effects with no page code in them. Whatever works in the editor works on the site. The hero at the top of this page is the plugin.

The tool

futures.danielpow.com

  • Litegraph node editor
  • 46 nodes
  • Presets, recording, font export
  • ≈ 1 MB of JavaScript

Shared engine

engine/

  • timing
  • drivers
  • patterns
  • effects

The plugin

effects.min.js

  • frontify.com/futures
  • Settings per article, from the CMS
  • Live text, nothing pre-rendered
  • 55 KB
<script>
  window.shapeType  = "circle";
  window.cellScale  = 1.4;
  window.gridCount  = 210;
  window.bounceWidth = 1000;
  window.speed      = 100;
</script>
<script src="effects.min.js"></script>
The whole hand-off: an article's settings, then the plugin.

Step 3, up close

The contact test

Each cell counts the letter's pixels underneath it and lights once the count passes a threshold. The threshold grows with the cell, so anti-aliasing alone can't switch a cell on.

As the letter drifts, edge cells hover right on the line and strobe. Hysteresis stops it: a lit cell needs only half the coverage to stay lit. Turn it off to see the edges flicker.

Green: lit. Each number is the cell's pixel count against its threshold.

Step 4, the order

Arrival patterns

The timer doesn't light cells at random; random is one choice. A pattern gives every cell a delay between 0 and 1, and as the timer runs, each cell whose delay has passed is drawn.

The engine has eleven. Contact Grid's presets use random, and the Echo Chambers article header uses vertical wave. The faint field behind each letter is the delay map itself.

What moves it

Drivers

Anything that moves comes from a driver: a small function ticked sixty times a second. Its output can be wired to any number in the system, such as grid count, brush scale or bounce.

These traces are the engine's own driver code, running live. The editor also has audio (bass and treble from the microphone), mouse, scroll, camera, clock, noise and stagger.

From motion to font

Font Export

Any moment of the animation can become a static font. For each character the Font Export node sets the letter, clears the grid, restarts the timer and waits a set number of frames (30 by default). Then it traces the canvas into vector outlines.

After the last character, it bundles the glyphs into an OTF and a WOFF.

  1. Set
  2. Clear
  3. Restart
  4. Wait 30 frames
  5. Trace