It’s well known that it’s impossible to directly offset a given Bézier curve at a fixed distance; you can only approximate it, usually by chopping the curve into multiple segments. Things are even harder if the distance is not fixed but the curve needs to move smoothly from one distance to another along the course of the offsetting operation.
I’m rubbish at drawing the letter m, so I made a game to help me. Choose a level of difficulty, and you will be presented with a letter m at various levels of perturbation. Your job is to fix it.
As part of my research on using neural networks for spacing and kerning, I wrote a library which extracts metrics from glyphs in formats useful for feeding into numpy-based libraries such as Tensorflow or keras.
Beziers provides a variety of classes for constructing, manipulating and drawing Bezier curves and paths. Principally designed for font design software, it allows you to join, split, offset, and perform many other operations on paths.