How to Make Hatching Fills for Pen Plotter Art
Pens can't fill shapes — they hatch them. Learn how to make hatching fills for pen plotting, from Inkscape plugins to vpype, and how to control tone and texture.
A pen plotter can’t fill a shape with solid ink — it can only draw lines. So how do plotted illustrations get areas of tone and shadow? Hatching: filling a region with many closely spaced lines that the eye blends into tone. Mastering hatching fills is what separates flat outline plots from rich, illustrative ones.
How hatching creates tone
Up close, hatching is just parallel lines. At viewing distance, densely packed lines read as a solid or shaded area. The closer the spacing and the wider the pen, the darker it reads. Add a second set of lines at a different angle — crosshatching — and the tone deepens further. This is the same technique pen-and-ink illustrators have used for centuries, now automated.
Method 1: Inkscape hatching extensions
The most accessible route. Inkscape includes (or supports) fill-with-lines extensions — the Eggbot/hatch fill tools convert a filled shape into line hatching:
- Select your filled shape
- Run the hatch fill extension
- Set line spacing (controls darkness) and angle
- The shape becomes plottable hatch lines
Run it twice at different angles for crosshatching.
Method 2: vpype and plugins
vpype and its ecosystem can generate and process hatching programmatically. Tools like hatched convert images into hatch-based line art, and vpype then merges and reorders the result for efficient plotting:
vpype read hatched.svg linemerge reorder write plot.svg
This is ideal when you’re turning a grayscale image into a tonal line drawing.
Method 3: Generate it in code
If you make generative art in p5.js or Processing, you can write hatching directly — fill regions with loops of parallel lines, vary spacing by a tone value, and you have full control. This is the most flexible approach and produces the most intentional results.
Controlling tone and texture
The variables that matter:
- Spacing — tighter = darker, looser = lighter. The single biggest control.
- Pen width — a wider nib fills more per line, reading darker at the same spacing.
- Angle — single-direction hatching has a directional feel; crosshatching reads more neutral and dense.
- Layering — two or three angles build deep, rich shadow; one angle keeps a sketchy, illustrative look.
Practical tips
- Don’t over-hatch. Lines spaced so tightly they merge waste enormous plot time for no visible gain. Find the loosest spacing that still reads as tone at your viewing distance.
- Mind plot time. Hatching is line-length-heavy and slow. Always run it through vpype, and consider whether you need the density you’ve specified.
- Vary it for life. Slight variation in spacing or angle across an area looks more hand-drawn and less mechanical than perfectly uniform fills.
Hatching is where plotted art gets its depth. Start with Inkscape’s hatch fill to see how spacing and angle change the feel, then graduate to vpype or code when you want precise tonal control.
Frequently asked questions
How do pen plotters fill areas if they only draw lines?
They hatch — filling a shape with many closely spaced parallel lines that read as solid tone from a distance. Crosshatching (lines in two or more directions) builds darker, denser tone. There's no true 'fill' on a plotter; everything is strokes.
What's the easiest way to add hatching?
Inkscape's Hatch/Eggbot fill extensions or the 'hatched' and vpype hatching tools convert filled shapes into line hatching automatically. Adjust spacing and angle to control darkness and texture.
How do I control how dark a hatched area looks?
Line spacing and pen width. Tighter spacing and wider pens read darker; looser spacing and finer pens read lighter. Crosshatching in multiple directions darkens further.
Gear mentioned in this post
Antoine Beyeler vpype (Free)
4.9 (480)The command-line Swiss-army knife for pen plotter SVGs — optimizes, reorders, merges, crops and prepares vector files for cleaner, faster plots.
Best for: Everyone — mandatory step between generative art and plotting