Interpolation distortions in 2.5b (1086)

I installed the new cutting-edge update, and all the off-axis interpolated instances in my big variable font project are horribly distorted. In previous builds, I had some interpolation design issues in the corners of the design space, which I was anticipating needing to address with corner masters, but large areas of the design space were interpolating reasonably well. In the new build, I’m getting major errors everywhere, affecting curves, crotches, and spacing.

Normally, I wouldn’t be able to share images of a confidential project, but in the case the distortion errors are so bad that the illustration below tells you nothing about the actual design. :confused:

This is the corner between the weight (black) and optical size (display) axes. This interpolated pretty nicely in previous versions.

Follow-up to follow-up: succeeded in reverting to build 1084 from trash, source now interpolating correctly again.

Ack! Okay, I’m getting totally different results for the instances as they appear in the Glyphs preview panel, and how they appear when exported as TTFs. They look fine in the preview panel, but are distorted as illustrated above when the fonts are generated.

Okay, so now I’m thinking that what I’m working with is two different interpolation maths, yes? The horrible distortions are actually characteristic of extrapolating between axes using OTvar math, while the much nicer (although not perfect) interpolation in the same space that I see in the preview panel in 1084 is Glyphs’ own extrapolation. It looks like 1086 has moved to using the OTVar extrapolation math for the corner areas, which I suppose has the benefit of showing what the actual results in a variable font will be, but its valuable in a font tool to have a nicer extrapolation that can serve as a step towards creating a corner master design. [What I have done now, is revert to 1084, generated individual instances for extrapolated corners using the nice extrapolation, and then made these corner masters, subject to further outline editing.]

Could you send me a sample file?

The interpolation math should be the same of the preview and the export.

Well, it is now, and that’s the problem.

In 1084 and previous, I’m seeing quite nice extrapolation between axes, even in to some of the corner extremes between three axes. The stroke weight modulation is sometimes a bit out of whack, but I’m expecting that as a result of the influence of what’s happening in the axes. When I export instance fonts — or a variable font —, however, I do not see the nice extrapolation in the 1084 preview: I’m seeing horrible distortions in curves, bits of glyphs turning inside out, and weight and proportion problems. However, if I instead use the generate instance option to create a separate source, I get the nice extrapolation from the preview, and am then able to make this instance into a new corner master, and only have to deal with editing the stroke modulation issues and similar small fixes. In this way, I am able to then generate instance and variable fonts in which these corner masters control the design space between the axes.

In 1086, I’m seeing the ugly extrapolation in the preview as well as in the exported font.

So it seems to me that what would probably be most useful in Glyphs is a way to toggle preview display between the nice exptrapolation — however it is that you were doing that in 1084 and earlier — and the what-you-see-is-what-you’ll-get-in-the-font extrapolation.


The project is very confidential. I’ll have to check with the client to see if I can send you a .glyphs source file next week. Thanks, Georg.

Tim is working on improving the interpolation algorithm and he is making really great progress. All previous known problems where solved, most cases are faster now and it uses less code. I hope that he can solve this new problem, soon.
Until then, open the file in 1084 and run this script in the macro window:

for instance in Font.instances:
	instance.manualInterpolation = True

Then save and open it in the latest version.

(I got a file with a similar problem from another user.)