Running node bug


Please, take a look at this video:

A node jumps when I try to move it with alt.

The path segment to the left of the node in question has a zero handle. Not good. Fix it with the Tunnify script and try again.

Opt-moving an off-curve point tries to keep its angle. A zero-handle has no angle. I suppose that this causes the erratic behavior.

Ok thanks. Why this is not good? I used to draw shapes like this.

In short, mathematically, a control point marks approximately a third of the segment. If you retract one control point exactly over the closest on-curve node, you effectively tell the segment that it has reached its third after a length of 0 units, or in other words, after a third of the segment, you have passed 0 units. It is like driving with your handbrake on. Side effect: you cannot reliably determine the tangent (and thus, the angle) of the segment where the zero-handle is, so you cannot reliably say whether it is a corner point or a curve point. The Tunnify script does some informed guessing about the direction, and the results are pretty good for fixing zero-handles.

OK. I understand the mathematical reason, but does it have an impact on compiled fonts?
Or can it disturb interpolated instances?

I have noticed that when I transform/scale glyphs with RMX I usually have to fix those nodes.
But when polishing the curve it is usually much easier to deal with only one handle.

PostScript fonts are quite fine with zero handles. But you get in trouble when converting to TrueType.

I consider a segment with a zero-handle not polished. And I don’t think it is easier because you give up control over the curve. In Glyphs you can take both handles at the same time, and you can adjust the curvature with the Fit Curve panel (ctrl-cmd-1 through 8). To me, that is quicker and easier than setting one handle to zero, and making the other much longer all the time.

Yes, most rasterizers are pretty tolerant, but you’ll be on the safe side if you have clean curves. Plus: later editing is much easier.

Sounds good to me. Thanks.

Where did you get that from? The shape of a Bezier curve can be imagied as a blend of all four points, the mixture varying over the whole length with a so-called blending function.

Except for the end points, each point of the curve is a blend of all four given points. Think of it as an airplane flying from one end point to the other with the pilot slowly changing their mind as they progress.

Having two identical points does not create any poblems, it just means you have two identical ingredients in the mix.

Of course you can reliably determine the tangent. The tangent defined by the end point and the non-retracted BCP. In practice, it would be reasonable to treat all points with a retracted BCP as corners. Designers would not use a retracted BCP on a smooth point.
They should be fine but unfortunately, there are bugs in the iOS rasterizer that can cause flawed rendering in rare cases. For this reason, I would recommend to extract the BCPs for the final fonts. True, but this is not inevitable. Conversion to TrueType curves is a really tricky thing and I admire how well Georg’s implementation works (better than FL and FontForge) but it would be desirable to fix the conversion algorithm to deal with retracted BCPs more elegantly.
This is an argument heard quite often but it does not make sense. Reducing the “control” (i.e. degrees of freedom) is exactly the point of using retracted BCPs.

I assume in your workshops you advise people not to use more nodes than necessary. That is also “giving up control” but it helps create simpler curves. Exactly the same logic as using retracted BCPs.

That practice is not at all comparable to using retracted BCPs. Even if you use the fit curve panel you still set the tangents of both end points, i.e. you put in more information. Using retracted BCPs helps creating a visually simple curve, i.e. avoiding inflections in higher derivatives of the curve.

I appreciate that Glyphs is developed by people who also design fonts using their own application, which helps making it a really helpful tool. However, it seems that you sometimes go too far assuming that you personal way of designing fonts should be the standard for everyone else. Other designers may have other preferences, and they are not always stupid.

I do not think that achieving simple curves has much to do with giving up control. Giving up control, in this case, means that you give up drawing the segment yourself, and hope that somehow, things will happen to line up and look good from a distance.

Yes, I do recommend putting in as many points a necessary, and not more. (1) Retracting a BCP, however, is not reducing the point count. (2) More points does not (necessarily) equal more control.

The point is, you can safely reconstruct pretty much the same segment with the weight distributed amongst the handles. And you have more options to fine-tune with both handles intact. That is why I mentioned Fit Curve before:

Interesting. I think I originally used that method too to guess the tangent along which to extract the BCP. What the Tunnify script does now is calculate a coordinate at t=.15 or t=.85 respectively. I ended up experimenting with a lot of t values, but had best results (no or hardly visible segment changes) at 15%.

My experience is that designers who retract BCPs do not really care about the precision of the curve, much less about the effective direction the path takes in its final, say, 10%, which are microscopically small anyway if there is a zero-handle. But rather, it is the overall look of the curve, and if there is an almost invisible little lump at the end, so be it.

Unfortunately, a very common practice among AI users. And I believe it is only because AI’s tools encourage the production of zero-handles. You can draw retracted BCPs in Glyphs. There is nothing in the software that prevents you from doing that. I am just saying it is bad practice, and I gave my reasoning for it. I am not denouncing anyone as stupid, but I believe I am entitled to an informed opinion. Still, I am eager to hear counterarguments, my opinion is not carved in stone. You know that, Tim, you have convinced Georg and me in the past.

And, by all standards, many features and functions have been added to or modified in based on users’ suggestions. Sometimes, Georg changed the application behaviour itself, sometimes we wrote Python scripts.

what we cannot appreciate enough, thanks for being so open for that!
It is not reducig the point count for Glyphs’ internal treatment but from a design point of view and in terms of information, it is. More points equal more control. As mentioned before, the whole point is to reduce the degrees of freedom so as intentionally not being able to fine-tune. Just like not having more nodes than necessary (which would allow you to fine-tune the curve). Of course, values close to 1 or 0 result in something very similar to the exact tangent. What are “best” results? Matching the previous curve as the BCP is extracted? That is a different issue. Before, we were talking about the tangent, not about the closest match of the curve. The RMX Harmonizer, for matching the curve while extracting BCPs (a feature yet to be made accessible through the UI), uses an iterative process to determine the BCPs. The exact tangent is just the starting point.

This is a great discussion about the ‘best’, ‘smartest’ or ‘simplest’ way to draw curves. I think there’s no real best case scenario, it all depends on what you want the curve to do.
I very often work with retracted BCP’s because I want the curve to be influenced from only one side, and not from both sides. This makes it easier (an imho cleaner), but I agree that it sometimes can make the curve a bit ‘immature’ or not professional enough. :wink:

It’s really difficult to draw good curves by setting your points and handles correctly. I absolutely LOVE the RMX Harmonizer from Tim and use it all the time in FontLab. Now that I’m making the switch to Glyphsapp I’m more than happy to see this is also available there.

Keep up the good work, guys. Glyphsapp is fantastic and gives me back the fun in designing and not manufacturing fonts. The best start for 2014 (for me)!