I’ve got a monoline (outline) font prepared for an educational client. I’m using Noodler to make different weights and rounded endings.
It looks like this:
With the Noodler filter it looks like this:
I’m also need to make a version like this as well:
Ideally I’d like to do this all on one master font and export separate fonts. That way I could keep all the font metrics the same, and don’t have separate font families that need unnecessary tweaking.
Probably easiest with scripting of some kind. I suggest you do not bend your dashes, to save on complexity. Then you could divide the paths into little straight lines like with the Roughen filter, then throw every other segment away, and expand the rest.
My approach to this would be to do a dashed stroke in Illustrator to get better consistency of segment and gap, rasterize the dashed stroke, then convert it to outlines and copy it into Glyphs. Immediately after copying it into Glyphs, use mekkablue’s Retract BCPs script otherwise it will be a very slow process.
@George_Thomas this would be my last resort. I’ve done something like this for another font in the past, but it’s a lot of work. Besides that it feels to me like the oldskool way of doing it.
If the Noodler or Offset Curve filter could convert the monoline to dashes, this could even be “non-destructive”.
This snippet, which you can paste into and run from the Macro window, should get you started:
# create a virtual layer for collecting small paths:
virtualLayer = GSLayer()
# go through all paths of current layer:
for thisPath in Layer.paths:
# step through every other node:
for thisNode in thisPath.nodes[::2]:
# ignore if it is the last node on the path:
if thisNode.nextNode:
# create two nodes with the same coordinates:
n1, n2 = GSNode(), GSNode()
n1.position = thisNode.position
n2.position = thisNode.nextNode.position
# create a two-point path with the nodes:
virtualPath = GSPath()
virtualPath.nodes.append(n1)
virtualPath.nodes.append(n2)
# add the path to the virtual layer:
virtualLayer.paths.append(virtualPath)
# empty out the layer:
Layer.clear()
# swap the paths from the virtual layer into the actual current layer:
Layer.paths=virtualLayer.paths
It creates short single-line paths from all paths in the current layer.
I think you are underestimating how much skill you need to actually pull this off. It’s more complicated and subtle than roughening. A few hours of learning Python from scratch won’t solve his problem at hand.
I’m just making a similarly dashed font. I did it in illustrator, with some final tweaking. Probably quicker to copy/paste than learn enough python to do a decent job
Hi Kemie. That’s how I would do this 5 years ago. But in times like this where a non-destructive workflow is preferred and doable, doing it like that for me would feel like the oldskool way. Exporting the existing outlines to Illustrator, filter them there and import all 1,700 reworked glyphs back into Glyphs.
But it’s really a preference of how you’d like to work! Both is viable for me, but I personally prefer a filter option or any other modern method, because it’s easier for future changes and font expansions.