How to Make a Monoline Font

  • by Stella Chupik
  • Tutorial
  • – Modified on

Monoline fonts are fonts that share the same stem thickness vertically and horizontally. It is great for handwritten fonts, or display fonts like this one:

Drawing Paths

The first step to create a font is, of course, to draw paths. Duh. But monoline fonts need open paths. The ends of open paths are displayed as flat nodes instead of round ones, and there is an arrow, showing you the path direction:

Looks good! But those paths are only the ‘skeleton’ of a monoline font. Open paths can’t be exported. So, now we need to put some flesh on its bones. There’s a few ways to do that. Read on.

Offset Curve Filter

The first way is the Filter Offset Curve. Just go to Filter > Offset Curve to invoke it.

Enter the values of your choice and check the Make Stroke option. You should then see an expanded preview of your glyph. The Position setting controls the distribution of the expansion. At 0%, the path will only expand to the right. At 100%, the path will only expand to the left. At 50%, the expansion will be evenly distributed to both sides of the path, which is probably what you want. Right and left sides are determined by the path orientation.

With the Auto Stroke option, the vertical dimensions will be kept intact. In that case, the offset position will be assumed at 50%.

But don’t press the Offset button yet. Instead, click on the gear wheel. Choose Copy Custom Parameter. Because if you do that, this will put the values into our clipboard as a custom parameter, and thus, we will be able to work non-destructively.

Now, press Cancel in the Offset Curve window, then go to File > Font Info (Cmd-I), and choose the Instances tab. Click the plus button in the bottom left corner of the window to add a new instance, and name it something striking. I call mine ‘Offset 20’ because I feel totally creative today. Now click in the white area of the Custom Parameters field to set the focus, and press Cmd-V to paste the previously copied custom parameter.

Now, when you export your font, the custom parameter will set in and you’ll see your offset active. To export the font, go to File > Export (Cmd-E) and choose a file format. Leave Remove Overlap unchecked, though. Because this option would delete our precious open paths. We suggest to test your font in Adobe programs.

For a preview of what your exported font will look like, you can activate View > Show Offset Preview. Glyphs will show a grey preview in Edit view, provided the filter was used once before. If it was, Glyphs saves the value in its preferences and the preview reads its values from there. Tip: Just apply Offset Curve once and undo it straight afterwards with Cmd-Z.

Round Corners

Sometimes, corners and endings can look weird. In this example, the corner looks really ugly and the ending is pretty weird, too. Yuck!

If you want your font to have rounded corners, there’s an easy way to get there. Go to Filter > Round Corners and choose your radius. By checking Visual Corrections, Glyphs adjusts the radius of your corner roundings, so they appear the same size.

Again, copy the custom parameter code by clicking on the gear wheel and choosing Copy Custom Parameter. Go to File > Font Info (Cmd-I) and press Cmd-V to paste the custom parameter after the Offset Curve parameter. Now, export again, and choose the file format.

Noodler Filter

To get the results of Offset Curve and Round Corners in one step, you can use mekkablue’s Noodler filter. To install it, go to Window > Plugin Manager, look for the Noodler filter, and click on its Install button, then restart Glyphs. You can now find it at Filter > Noodler.

Change the value of Thicknesses according to your design. Like before, you can work non-destructively, don’t apply it directly, but click on the gear wheel and choose Copy Custom Parameter. Go to Font Info > Instances > Custom Parameters (Cmd-I) and, like before, paste the code with Cmd-V. Alternatively, you can add a new Instance and paste it there. This way, you’ll have two separate versions of your font for comparison.

But there is a difference between Noodler on the one hand, and Offset Curve plus Round Corners, on the other hand. The Noodler filter adds a round ending to the path, while Round Corners rounds the end of the path:


Problems can occur if you have a path with double bends, i.e. a segment that first bends clockwise, and then counter-clockwise, and vice versa. In this case, you should add a node on the inflection point of the segment to keep your thickness. To do that, hold Shift while clicking on the path. Glyphs will find the nearest extremum or inflection point, and insert a node there. Here is an example of how a double bended path looks like with and without an inflection point when Offset Curve is active:

Or you can use mekkablue’s Insert Inflections filter, also available via Window > Plugin Manager: like above, click on Install, restart the app, and you will find it in the Filter menu. For more info on the filter, including on how to use it as a custom parameter, see its GitHub page. The Noodler and BroadNibber filters automatically insert inflections.

There could also be problems when your curves are too narrow.

To prevent that, well, you should draw wider curves. Sometimes extremum points and infliction nodes can help, too.

If you have acute corners and Round Corner gives you weird results, you can split the path in two. To do so, select the Pen Tool (P) and click onto the node you want to divide.

BroadNibber Filter

If you want to turn your glyphs into broad-nib strokes, you can use mekkablue’s BroadNibber filter. Again, you install it via Window > Plugin Manager, clicking on the Install button, and restarting Glyphs. After the restart, you will have the menu item Filter > Broad Nibber.

The filter simulates a broad-nibbed pen. Experiment with the values in the dialog, then click the gear wheel, choose Copy Custom Parameter from the menu and paste the code in the Custom Parameters field of an instance in Font Info > Instances (Cmd-I).


This one is a rather funny filter. Go to Filter > Roughen.

Your path gets chopped up into little straight path segments and the nodes are randomly scattered. If you have your Offset Curve preview on, you’ll see the end result straight away. Again, copy the custom parameter code by clicking on the gear wheel and choosing Copy Custom Parameter. Go to your Font Info (Cmd-I) and paste the code with Cmd-V, or add a new Instance and paste it there.

Combining the Filters

If you want to combine multiple filters, you need to watch out. The order of the custom parameters is really important. The graininess will change (more or less) significantly, when you rearrange the order:

If you look closely, not only the graininess has changed. There are also differences in the roundness of the corners, as well as the parallelism and thickness of the outlines.

For The Geeks

If you’re into monoline fonts a lot, you should check out mekkablue’s plugin OffsetPreview. Again, you install it via Window > Plugin Manager, clicking on the Install button, and restarting Glyphs. Activate it with View > Show Offset Curve Parameter Preview. It calculates the GlyphsFilterOffsetCurve parameters in active instances for the given glyph and draws those instances behind your paths. It quietly adds extremum and inflection nodes to your preview outlines. But it does not give you a full preview of the final instance, because it does not show the effect of any other parameters. This plugin is focused on helping you spot path offset problems. By default, it draws all active instances on top of each other using a semitransparent color, changing its hue from instance to instance:

All instances are shown live. Again, to install it, double click the glyphsFilter file, confirm the intallation dialog, and restart Glyphs. After installation, it will add the menu item View > Show OffsetCurve Parameter Preview.

Another one for the geeks: You can add multiple values in mekkablue’s Noodler filter (available via Window > Plugin Manager). Check it out:

Have fun experimenting!

SAMPLE FONT: Bussi by Stella Chupik (first example)

Update 2016-09-12: Added Plugin Manager.