jitter 0.1.0

Add natural handwriting-like variation to digital text
jitter-0.1.0 is not a library.

jitter

Add natural handwriting-like variation to digital text.

Why

Digital fonts produce identical glyphs every time the same character appears. Real handwriting never does — each letter has subtle differences in size, angle, position, and weight. jitter brings that organic variation back to digital text.

Modes

render

Takes text and a font file, applies per-character random transformations (rotation, scale, offset), and outputs an SVG.

jitter render "Hello, world!" --font my-font.ttf --output hello.svg
jitter render "手書き風" --font noto-sans-jp.otf --output tegaki.svg --intensity 0.8 --size 64

bake

Takes a font file and generates multiple variant glyphs per character, embedding them as OpenType calt (contextual alternates). The output font automatically cycles through variants, so text rendered with it looks naturally varied without any special tooling.

jitter bake my-font.ttf --alternates 4 --intensity 0.6
jitter bake my-font.ttf --output my-font-jittered.ttf

Installation

cargo install jitter

Usage

jitter render <TEXT> --font <FONT> [--output <FILE>] [--intensity <0.0-1.0>] [--size <PX>]
jitter bake <INPUT> [--output <FILE>] [--alternates <N>] [--intensity <0.0-1.0>]

Options

  • --font, -f: Path to a .ttf or .otf font file
  • --output, -o: Output file path (default: output.svg for render)
  • --intensity, -i: How much variation to apply, from 0.0 (none) to 1.0 (maximum)
  • --size, -s: Font size in pixels (render mode only, default: 48)
  • --alternates, -a: Number of variant glyphs per character (bake mode only, default: 3)

Output formats

  • SVG: Vector output, scalable, editable.

Roadmap

  1. render mode (text + font -> SVG with per-character variation)
  2. bake mode (font -> font with calt alternates)
  3. my-font-craft integration (use jitter as a post-processing step)

License

MIT