I II III IV V VI VII

DearPlotter Font Generator

Licia He , 2026

DearPlotter Generator is a stroke font generating program by Licia He. It creates unique and customized vector fonts suitable for pen plotting, CNC, web, print, and many other creative applications. The generator is open source, and fonts generated by the system are free to use for any purposes.

It is a thank-you letter to the creative community. A celebration edition of the program will be released in collaboration with The Processing Foundation and Tezos on EditArt.

Follow @Licia_He for project updates and collections information.

DearPlotter Generator is a generative font-making algorithm that creates stroke fonts. Created for pen plotter lovers, CNC users, and anyone interested in creative, unique, and sometimes crazy fonts, this generator produces customizable, easily adoptable font designs.

This project is my thank-you letter to my creative friends: the amazing creative coding community that made everything possible; the inspiring artist community that always sparks creative energy; and the super supportive pen plotter/creative fabrication community that celebrates sharing and learning. When I created this program, you were on my mind! Thank you!

The DearPlotter Generator is a playful software meant to be interacted with (currently only optimized for keyboard + mouse interaction). This project page documents the generator and its features. By providing detailed technical specs for this project, I hope the fonts created by this algorithm can be easily adopted and transformed into any format suitable for your creative endeavour. You can also jump to the Quick Guide section if you want to dive in the generator.

Quick Guide

1. Head to the live generator.

2. Have fun! Come back to this guide at any time if you need more info.

Export

[Z] for all formats

[F] for TTF

[X] for TTX

[G] for SVG

[C] for JSON

[I] for PNG

Background

Have you tried using a pen plotter to write text? Pen plotters are often branded as writing machines, wedding-invitation creators, and sometimes homework writing helpers. Nevertheless, "writing" text with a pen plotter (or CNC machines, vinyl cutters, etc.) takes a lot more effort than just typing in a doc and printing it: machines like pen plotter need vector information for each stroke whereas typical typefaces (e.g., Times New Roman and Arial) provide contour information. There are solutions, of course. Vector fonts like Hershey fonts addresses this problem.

Since acquiring my first pen plotter in 2019, I have started sharing my artworks on the web, which has required creating documents, images, and videos that sometimes contain text. Like many other creators, choosing the font for my projects was such a challenge. I ended up making my own minimalist font in Illustrator, and using commercial font design software to package it. I called it "straight_line font" and have been using it for my websites and other media productions ever since (this website still uses it).

I never thought about plotting with my own font until 2021: I was preparing for the -GRAPH exhibition (my first plotter + generative art exhibition). The artists in the exhibition decided to create a teaser image in our own style, which needed to include text describing the show. Tyler Hobbs generously shared his vector font with everyone. Inspired by this exchange (it's very COOL to plot with your own font!), I cleaned up my straight_line font and reformatted it for plotter-friendly use: lists of coordinates instead of a .ttf (TrueType) file. I have been using this vector font ever since. If you ever acquired a plotted piece from me, the certificate of authenticity was likely plotted using this font.

In 2025, I was invited by The Processing Foundation to create a tutorial on Bezier Curves, paired with an art piece that uses P5.js. It was an honor to work with the Processing Foundation because I can't imagine a world without beautiful programming languages and tools like Processing and P5.JS. From the very beginning, I wanted to create something that expresses my gratitude. On top of that, I want to use lots of Bezier curves. So, the idea of a plotter-friendly font generator was born.

Font for plotters

Plotting text is a rabbit hole for several reasons:

1) You need vector (stroke) information, so your font selection is already limited.

2) Depending on the mark-making tool your plotter uses, you need different path-filling strategies.

For example, to draw the character "I" at a 3mm width, you can use a 3mm pen to draw a straight line. But to draw the same character at 30mm width, a single line with a 3mm pen would produce a super slim character that no longer looks like "I" at that scale. You can switch to a 30mm pen (very difficult to find), or offset the vector (e.g., into a rectangle) and produce hatch lines to fill this boundary. Then, you can draw each hatch line with the 3mm pen to get the "I" character.

For these reasons, plotting texts always needs some testing (and coding, if you like). The goal of the DearPlotter Font Generator is to provide font designs that can address some of these plotting needs. For the same base font, you can choose to export the following variations:

There are a lot more variations you might want to play with. But before diving into endless plotting variations, we need a font to work with. So let's talk about how the base font is designed.

Basic Font and Adjustments
Base Font

In the DearPlotter Generator, the base font is made with a combination of straight lines and cubic Bezier curves. Each character in the ASCII list is designed by specifying a list of stroke objects in a grid system. Let's use the character "g" as an example.

For every single ASCII printable character, I manually defined the coordinates, curve information, and transformations. To simplify the design, I introduce as few distance settings as possible. In the end, the whole alphabet relies on 4 distance settings, which are slightly modified at each run to produce unique base fonts.

Transformation

After constructing the base font, we can tweak a few settings to make it more interesting. Besides adjusting the distance settings of curves (done randomly), there are 3 types of adjustment you can make: 1) width ratio, 2) shear degree, and 3) stroke width.

Space Adjustment

Besides adjusting the characters, you can also adjust the space settings of the font. There are two settings to play with: 1) padding between characters, and 2) width of the space character.

Pen Mode

The font we discussed so far provides the core strokes for each character, and they can already be plotted. e.g., the character "g" has 4 strokes; it will be exported as 4 paths for your plotter to draw. I call this "core stroke mode." If you pick a pen with a stroke width similar to the font, you will see similarities between the digital font and the physical drawing.

There are cases where you can use a thinner pen to draw larger texts or more interesting texts. To handle this, I introduce the pen mode, which offers additional vector information of the font beyond its central strokes. The pen mode requires a new parameter called pen thickness, which controls the stroke width of this additional information. Two types of additional information can be generated: 1) an outline of the character, 2) hatch fill within the outline of the character.

There are many decisions to make when it comes to hatch lines: which direction to take? How big is the gap? Dash lines? Same hatch for every character or a unique hatch pattern for every single character? To make it easier, I decided to leave the hatch pattern to randomness. I initiated several default hatch configurations. Each time you adjust the font, the hatch configuration will decide the details of the hatch. The only manually adjustable parameter in pen mode is pen thickness, which determines the line thickness in outline and hatch rendering. It will also set the maximum number of lines you can hatch in a boundary stroke.

Download and Usage
Downloading and Using TrueType (.ttf)

The DearPlotter Font Generator offers s several export formats. For digital projects, a .ttf (True Type) file will be the top choice. Press [F] to download the browser compiled ttf file. Click the ttf file to install the font to your system.

Windows-Specific Issue and Solution (through .TTX)

Compiled ttf files tested fine on browser and on Mac. On Windows, certain exports can have a failed preview and are not recognized by Adobe software. However, they are recognized by Windows font management systems and work properly in Inkscape. Unfortunately, I have not been able to identify the source of this issue at this time, as it may be due to very specific requirements Windows has for font recognition.

Before this bug is patched, here's a solution for using DearPlotter fonts in Adobe on Windows: Press [X] to download the font in ttx format, which is an XML text format that can be compiled by fontTools. Using the fonttools (with Python), you can package a Windows-friendly ttf file by running the following command:

ttx export.ttx

Downloading and Using SVG

For projects that require vector information (e.g., pen plotter and CNC machines), you can download the font in SVG format by pressing [G]. You can embed the font definition into your projects, or use font converting tools like Hershey Text Tool by Evil Mad Scientist

I discovered Hershey Text Tool by Evil Mad Scientist because of my plotters, as this tool is part of the Axidraw Inkscape extension. It's a wonderful tool that converts text into paths based on an input stroke font (in SVG format). To use this tool, you need to install Inkscape. The tool should be automatically included in Inkscape as a default extension (sitting under Extension -> Text -> Hershey Text), but you can also install Axidraw Plugin to get the tool (After installation, access by Extension -> Axidraw Utility -> Hershey Text). Here's a brief tutorial on using the font through this plugin.

Downloading the Raw Data

Some projects require customization beyond what TTF, TTX, and SVG exports can offer. To really go down the rabbit hole and manipulate the font at the coordinate level or through programming, you can download the raw data by pressing [C]. You will obtain a JSON file that stores every single coordinate generated during the process, along with most of the parameters used to create the font.

The raw data packages every step of the font transformation. e.g., it includes the stroke information in different coordinate systems, before and after transformation and offset operations. I will omit the lengthy description of the data for brevity, but you can find a detailed description in the "_info" field within the json downloads.

Other Download Options

To download the image you are seeing on the screen (canvas view that's not occupied by the instruction area), press [I].

If you are not sure what to download, you can choose to download everything by pressing [Z]. Your browser might block multiple-file downloads, so you might need to grant permission to enable the download.

Although the DearPlotter Font Generator is controlled by a seeded, deterministic random generating procedure, it does not store the adjustments you made through interactions. Therefore, once you leave the program, it's likely you won't be able to retrieve the exact same design even if you have the random seed. For this reason, I recommend always downloading all formats just in case.

License

The DearPlotter Font Generator (web-based software) is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).

Fonts created by the DearPlotter Font Generators are licensed under The SIL Open Font License, which lets you use the font for anything you wish.

Future

The DearPlotter Font Generator is a project that I hope to continue to improve in the future. If you have any suggestions, feel free to contact me.

Acknowledgement

The DearPlotter Font program is my thank-you letter to my creative communities: the creative coding community, generative art community, robotic/pen plotter community, and many others that have supported me. In addition to the many thank-yous I want to extend to all of you, I want to express my gratitude to several key groups/individuals who made this project possible.

Thanks to the Processing Foundation for inviting me to the tutorial initiative and for all the amazing things that you have given to the creative coding community. Special thanks to Patt Vira and Xin Xin, who coordinated the entire collaboration and supported me at every step. Also to Tezos and EditArt for supporting the launching.

Thanks to Evil Mad Scientist and Bantam Tools for the wonderful machines and software you've made. I love my plotters and can't imagine living without them.

Thanks to my Ph.D. advisor, Prof. Eytan Adar. While working on this project, I kept recalling the copperplate calligraphy project I worked on but never finished during my Ph.Ding years. Thanks, Eytan, for allowing me to work on projects that seemed to be going nowhere at that time. Without that project, I probably would not have started this one.

And as always, thanks to my dear sister for everything.

Thank you. Happy plotting!

Licia He. 2026, All rights reserved.