A hypothetical generative tool utilizing nested multiple masters.

So I posted this to a online job forum. I'd like to get some thoughts from the type design community because we fundamentally understand what this is supposed to be. Basically, imagine a illustrator document with multiple nested multiple master fonts, each with their own sliders. 

Taking a fleur-de-lis as an example, one component might represent the top structure, the second the "petals" the third the mid body and the last part the bottom. Each component would be made up of multiple other interpolated .svgs, allowing each fleur di lis to be different by interpolating the four different components separately.


I want to create a tool. This is something I'm thinking of open sourcing since it could be valuable to others. Please let me know if you have any other suggestions or if there is something that I am missing that is currently available.

I'm a font designer, and we work with so-called variable or multiple master fonts. It's something we've been working with for over three decades. In essence, you've got vector designs that are on top of one other. All of the points in the two pictures correspond 1:1, you can swiftly interpolate intermediate instances of these vector drawings.

In addition to only two examples, you could theoretically go up to an endless number of them and interpolate between them for varied outcomes. What I'm looking for is a tool that lets me make separate parts of a larger drawing.

Using a stylized depiction of a cat as an example, you might have a collection of interpolated vectors representing the tail with sliders that also move to intermediate instances, basically giving it different characteristics.

Another may represent the body, while others could represent the legs or the face, as well as different subcomponents of the face.

Each of these components would be connected to the others with anchors “anchors.” These anchors would be interpolated as well.

The main document would include all of the interpretable instances. GUI Sliders would be used to control these interpolated instances, and these sliders would have user-specified attributes.

For the sake of simplicity, let's use a cat as an example. Let's imagine you have a slider that indicates “curly” and it maps to an SVG or vector document with a curlier tail.

So, in essence, I'm looking for a tool that will allow me to join a big number of interpolated sub-documents, which will then be placed on some form of design space. Then, specifying steps, It would be possible to export these intermediate instances.

In addition, it would be a requirement to allow for flipped and rotated instances. For example, mirroring a face or something else symmetrical would only require half of the shape. Placing the shape on the main document, the shape could be replicated and mirrored or rotated.

This appears to be something that might be done with P5js, Processing or, preferably, a Python application. Possibly an inkscape plugin.

This application might be beneficial in the creation of NFTs, in my opinion. This concept occurred to me long before the NFT Revolution, but it has gained fresh relevance as a result of it.

Please see the attached concept explanation and UI mockup.


Any thoughts on next steps? Am I unclear? Most freelancers seem to fundamentally miss what I'm trying to do here, so I'm reluctant to move forward.


  • a few years ago I was looking for a similar tool supporting SVG instances while creating animated SVG icons. Some I made in text editor:

    I didn't find it, and in the meantime, the idea of SVG animated icons turned out to be of no use :s
  • Thomas PhinneyThomas Phinney Posts: 2,318
    It’s certainly possible. Mocking up the UI is helpful. But programming it would be a boatload of work.

    I wonder if it might make sense to leverage font tech in the background to make it work, using existing libraries. After all, variable fonts do have the underlying capabilities of what you want. And although PostScript variable fonts are not terribly widely supported in general, they do work in Illustrator, so you could use the same kind of drawing primitives (cubic Bézier curves).
  • James PuckettJames Puckett Posts: 1,867
    This is an interesting idea. Maybe it could be built on top of MutatorMath, made a free plugin, and monetized with a store that sells stock assets. 
  • John HudsonJohn Hudson Posts: 2,434
    I suspect one could get a long way towards what you describe using smart components in Glyphs. These are nested components with their own variable design space that are used in composites that also have their own variable design space. I don’t use Glyphs often, and generally avoid tool-specific functionality because I regularly move my sources around between different font development tools, so am not sure how deeply nested smart components can be or what limitations might apply,
  • You're correct, I've mocked this up by using Fontlab 7 and manually exporting instances and reassembling manually. Saves time and is useful, but not ideal. The problem is that master sliders control interpolation for the entire glyph, when I want to control it per component. (Unless I'm missing something and/or glyphs has more functionality?)
  • John HudsonJohn Hudson Posts: 2,434
    See the Glyphs article to which I linked. It is possible to define components with their own variations sliders, and then to use those components in composites. So, to use your cat example, you could have a composite cat image in which e.g. the eyes were one smart component and the tail was another smart component, and within that composite you would be able to adjust the variations of the individual smart components, as well as adjusting composite level variations. So, for example, you could have smart component variations to have the eyes open/closed and looking left/right, and smart component variations for the tail to be up/down or waving left/right, and composite level variation to make the cat fat/thin.
  • Thanks, very interesting! 
  • Dave CrosslandDave Crossland Posts: 1,196
    Sounds like metapolator.com :)
Sign In or Register to comment.