Changing curves to straight lines


I’m a beginner with Glyphs and font design in general. I’m working on a project where I’d like to take a typeface I’ve made and eliminate all the round curves. In other words, I’d like to end up with the same font but with entirely straight lines, no curves.

Is there a method/tool I can apply to the font to accomplish this? If not, can anyone recommend a work flow to go about turning curves into straight lines? Any help is appreciate, and apologies if I’ve over-looked something obvious. Really new to everything but very impressed and pleased with Glyphs.

Thank you.

Are you thinking about deleting all bezier handles? If that’s the case your circle will become diamond shape. Is that what you have in mind?

Or are you thinking about much finer approximation of the curve? In this case you would want to run Roughen filter and set horizontal and vertical randomness to zero and then play with segment length to your heart’s content.

If you do want to delete all the bezier handles, I just added Straighten All Curves to my scripts:

Thanks very much to you both. I’ve attached an image to hopefully better explain the end result I’m hoping to achieve, and will try and post a picture of the results from both suggestions (as I can only do one per post).


Straighten All Curves is quite useful as it leaves the already straight bits untouched, and I suppose I can go in and add more points so the corners/straight lines aren’t as drastic. The Roughen filter is also really close to what I hope to accomplish but unfortunately seems to only work on the entire letterform, even modifying 90 degree corners that ideally I wouldn’t have to change. Either being able to tell Straighten All Curves the ‘segment lengths’ as Roughen does, or having Roughen leave the rest of the letterform untouched would be ideal. Any other suggestions are much appreciated.

Thanks again Simon and Tosche (Neue Haas Unica looks great by the way).


It should be easy for a script to find two points on every curved segment. And then, replace the curve segment by three straight lines. Look in my stitcher script for an algorithm of finding x number of positions on a curve.

I don’t know Python unfortunately, but thanks for the suggestion. I think I’ll have to accomplish what I want by hand then, which isn’t the end of the world.

Hi, I’m a student in design school doing an independent study for typeface design, and I’m trying to learn more about python so I can achieve exactly what’s being described here. I’m looking in the code for the stitcher script; is this section the algorithm to find the number of positions on a curve?

I’m going to study python syntax before I try to code anything, but I was just wondering if I was barking up the right tree. thank you!

the bezier method will give you a point on a bezier curve at a given ’time’. (Read about bezier in Wikipedia if needed).

1 Like

oooh! I think I get it, so 0 is the start of the curve, and 1 is the end, and t represents time. A, B, C, and D are the 4 points of the curve, and it’s returning the positions of those 4 points (I think)! this is very interesting, I’ll do some more research and hopefully I can get closer to a solution. thank you!

1 Like

It is only returning the position of one point, the one in the curve at ‘t’. There are similar functions that return all seven new points (actually there are only five new points when you divide a curve).

1 Like