Multiple Masters questions

Ok, now I’m trying to work under the multiple masters paradigm and I have some questions/concerns:

You could but it is not practical. We recommend separate files for uprights and italics. If you still want to try, look into the Remove and Rename Glyphs custom parameters. You are free to keep separate UFOs and interpolate in Superpolator, if you prefer to work that way. If you work with the .glyphs file format, you can interpolate within Glyphs. You have both options with Glyphs. That is the weight interpolation value, not the weight class. We recommend using an important stem weight (e.g., the width of the uppercase I) as weight value for the masters. This way, you can determine the stems of your instances.
To achieve what?

I cannot seem to open the files. Can you send the UFOs to support at this domain?
It is not a good idea to have romans and italics in one file. To many differences in the outlines and sometimes in the charset, too. To keep the font info in sync: The basic set of info is not that much and does not change often. The custom parameters can be copy pasted from one font to the other. You updated a lot info in your script that is usually calculated automatically. So you might not need to set it. Do you mean that the glyphs file should reference the external .ufo files? Why and how should I implement this. It is very confusing and almost certain to break. What happens if the there are more than one feature and font info definitions. What if a glyph is missing from one .ufo ... Two of the images do not work.

How did you merge the fonts? Did you read the section in the manual about it?

The number is the actual value that is written in the font file. You can overwrite the Weight class by using a custom parameter Isn’t that to confusing? And even pressing cmd+opt+ctrl is to slow? This works if you activate Show Background in the View menu.

Thanks guys. I’ll give this more time to get used to the different paradigm. Some follow-ups (whatever I’m not commenting on, I see your point or you answered it)

Mekka:
While I’m free to use Superpolator, I currently have to choose between keeping UFOs separate to use external apps or merging them to use the internal engines, unless I keep converting between UFOs and Glyphs. For example, I prefer Superpolator (which I already own) to interpolate, but I think Glyphs compatibility checker is far superior to Prepolator.

Seeing nodes in the background: When tracing shapes, the nodes snap to the background nodes, but not to the handles so you have to eyeball the curve. Sometimes it’s easier to trace a shape than to copy paste it and forcing it to work (like a corner or an exit stroke, for example).

Georg:
Referencing multiple UFOs: I think I’d be more interested in being able to use the compatibility checker and the interpolation engine with open UFOs over being forced to merge them. I know Glyphs’ model is to do it all internally, but a big selling point of UFOs is that you can run them across different apps. Right now I’d have to convert back and forth if I want to use any external apps in conjunction with internal engines (I’d like to use Superpolator, but would kill Metrics Machine and Prepolator to use Glyphs). Another advantage would be an easier way to keep version control for each individual weight and being able to collaborate more easily with other designers. Since Glyphs runs UFOs natively and you’d have to have different Glyphs files for a family anyway (at least one for roman and one for italic, but some families have obliques or other structures) I see it as needing to have more file types than needed. I don’t know exactly how it would work, but I think that instead of storing all the layers into a single file, each layer would be a UFO (right now Glyphs has the ability to open multiple UFOs at the time), and the Glyphs file would just contain the links and the family info. Additionally, by keeping the UFOs separate, if I modify one of the weights, you only have to load and save that weight instead of the whole family. But again, I’d settle for being able to use the compatibility checker (maybe even the interpolation) without having to merge UFOs into a Glyph file.

Merging files: I realized I started with a blank file as a base rather than the light and it seems like it will only import the glyphs that are on the base weight

I tried that and found it to confusing. Try to select one node and hit cmd+shift+A (Layer > Align Nodes). The node will be aligned with the nearest fitting node in the background. I spoke with Tal and Erik about adding proper support for multiple master to the ufo format. But they did not liked it. I currently do not have the resources to implement it. There are several advantages on using the Glyphs instances/interpolation: - It is much faster. I export my instances every minute to check the kerning in Indesign. You get finished fonts that do not need any post processing in a few seconds. - You can use this: alternating glyph shapes - You can use this: alternating glyph shapes with multiple axes - Some more of this: custom parameters - You can preview the instances in the edit view (select the instance in the popup in the bottom of the preview area.

Give it a shot and you will see.

1 Like

Thanks Georg. I actually have a project lined up where I will stick strictly to masters/layers to make the conceptual shift.

PS: Just for the record, I’m not questioning the app or its capabilities, I think you did/are doing an awesome job. My masters comment is strictly about easy access to UFOs (the others are personal workflow, I hope I didn’t come off wrong suggesting them).

PPS: Tried the mark to mark accent feature and my mind was blown! That and the compatibility checker are my favorite features so far.

Does this still apply? My regular and bold have totally different components in them, and I am so far failing to have the bold working in the exported font.

Why? Can you give an example?

1 Like

Basically the bold have added components. I’m not using the font as normal fonts are used. My font is like a totally different language to normal language basically. It’s for specialist use. So some of what I do probably seems very strange to you guys.

But actually after reading around and experimenting, I got it to export ok! I had only added a master but found I needed to add an instance for that too, and also make the ‘weight’ number different for each master, though hopefully that will not actually do anything to the glyphs - doesn’t seem to have done. But needed that to allow me to export.

Also I haven’t tested this yet but I’m wondering if, where we have a glyph that is different in regular and bold, when we add it as a component to another bold glyph, will only the bold version of the component be added? If so, that’s great! If not, any work around? Because if that component is added to many glyphs and one makes a new master by copying the present one, one only has to edit that master’s version of that component and the change would follow through to all glyphs that use that component in that master, which would be awesome :slight_smile:

Also @mekkablue thank you for answering my question on another thread… I haven’t read it yet as I’m deep in this current task, which is why I didn’t thank you yet. I saw the notification though :slight_smile:

You can export them only as static fonts, and only instances with exactly the same axis coordinates as the masters. And the masters still need different coordinates, of course. If you get an interpolation warning, then I assume that one of the instances has a design space position slightly off (recreate the instances with Masters as Instances, or there is a brace layer somewhere (can be found with a smart filter).

What was it in your case?

1 Like

There is no bold glyph. There is the glyph and it has all (in your case two) master layers for all masters. When you create a glyph with a recipe, it applies to all master layers of course. Two possible ways:

  1. Consider using a recipe with only the parts that are the same in every master. Then add what is different in the individual master layers.
  2. Consider adding them with everything in every layer and removing the components that need to go in the respective layers.
  3. Or make the incompatible layer of the component a single stray point and just don’t care whether it is added or not. It will be removed at export automatically.
  4. Or consider a script solution.

YMMV.

Thanks @mekkablue
I’m guessing this means a like a non-variable font? That’s totally cool - I actually want no extrapolation at all. Just multiple versions of the font, that I can access via bold, italic etc. when exported. Do I need to switch off inperpolation somewhere?

I tried that now on a test copy of my file from before I created any extra masters. I did that in the instance window, and it added a Master that appears only in the Masters window, not in the Instances window. I tried exporting the font after that, and it did export. Cool.

The way I previously did it through trial and error, was like this:

  • Masters window, selected Regular, clicked + and selected ‘Duplicate selected’.
  • Renamed the new ‘Regular’ to ‘Bold’. That worked and I could access both layers on each glyph.
  • If I then edit regular layer, and bold layer, when exported, I can see the changes I made to regular, but when I switch to bold, it’s identical to regular.
  • This is the same even if I make the weight of bold and regular different in the Masters window.

The solution I found to this was to add the bold to also in the Instances window. (Add instance for each master). And I just replicated that process in my test file so I could report it accurately. The result works fine it seems. Was that ok? And I am hoping to continue adding more Masters.

This is the first I’ve heard of recipes. So I found a tutorial on it. Looks potentially very useful, thank you!

I can see in the tutorial how to make new glyphs using recipe. I can’t see how to add components to already existing glyphs. Would it work for example, if I had made ‘a’ glyph and wanted to add ‘nice’ component to it, would I write:
a+nice=a

I can imagine that not working but if it does, cool! Otherwise, how do I do what you’re suggesting?

Also can I apply it to a whole class? Such as, if that above code would work, then could I apply it to a whole class, for example a class named ‘group’ by writing:
@group+nice=@group

Or I guess I can just select all glyphs I want and then click ‘add component’ and hopefully it will add that to all selected components.

But actually the issue here is that if a whole group of glyphs have a component added to them and very carefully positioned and and transformed, if I want to keep all of that but make change to the component for every glyph in that master, then it would be great to be able to edit that component and have the change happen in all that use tha component in that master.

But sounds like you’re saying I can only edit the component from within the bold glyphs individually, right? Decomposing the component each time, so the change to not affect the regular master. Or can I create new components, say nice_2 and then somehow/somewhere make a command we can write something with this meaning:
in bold Master (‘bold layer’ of whole font), replace all ‘nice’ component by ‘nice_2’

That would mean all the positioning and transformations would be preserved and still applied individually to the new (edited) component exactly as they were to the original component, saving a large amount of work.

Consider reading up on the difference between master and instance, take a look at the multiple masters tutorials, or the respective chapter in the handbook. Master is what you draw. Instance is what is being generated. In your case there is a one to one relationship, so make sure you have the same number of instances with the same coordinates as masters.

You do not need to tell the application to not interpolate, you simply do not interpolate or extrapolate. You achieve that by replicating the designspace coordinates of the masters in the instances. Does that make sense? If you have masters at weight=100 and weight=200 and you say give me an instance at weight=100, there is no interpolation. That is just the master drawing going into the instance without any further ado. :woman_shrugging: However if you say, give me an instance at weight=190, then that is between the masters, and then it interpolates. There’s no other way.

The point of a component is that you edit the original glyph and the components take on the change immediately. You can transform the components too, but usually that makes no sense. I do not know enough about your project to give advice on what’s best in your case.

And you cannot add a glyph to itself as component. That is logically not possible (infinite regression).

Glyph > Add Glyphs can overwrite existing glyphs, with it without recipe. A dialog will pop up asking you what to do if a glyph already exists.

1 Like

Yes I read the tutorials on that and it was that exact point that made me think all I needed to do was create multiple masters, with no need to create instances since I did not want instances generated by extrapolation. It was the failure of the bold to work exported that led me to trying to add the bold to the instance window, which seemed to make it work.

and:

This is solved by ‘Add instance for each master’ command right? Seems it does that automatically with this command. Seems all good.

Yeah that’s exactly what I meant. Sorry if I did not explain well.

In my case, for example changing the length of a component for each glyph that uses it. It’s very useful!

Also I have now experienced something - I’ll try to explain in a simple way:

  • I had glyph ‘a’. I had glyph ‘b’, which includes ‘a’ as a component.
  • To the bold layer of glyph ‘a’, I added the component ‘nice’ in bold layer.
  • Glyph ‘b’ now automatically includes component ‘nice’ in the bold layer only.

That’s exactly what I was asking/hoping for in fact! This is what I meant when I wrote:

Seems if I want (in some cases) to use the regular ‘a’ as a component in a bold glyph, I can only do that by decomposing the component so as to not include the ‘nice’ component that is included in the bold layer of ‘a’. I can work around that although it prevents this benefit:

Would be cool if there were a way of decomposing the ‘a’ component into ‘a regular’ and ‘a bold’ (or ‘a’ and the component ‘nice’ that’s added in ‘a bold’) and then delete ‘a bold’ (/‘nice’ component)! But maybe that’s asking for too much.

Thanks for the help! Making good progress now :slight_smile:

Oh I found a solution to that now. For some reason I had thought I was meant to add the components to the Master layer. And then duplicate that as the 2 colour layers and then delete what I don’t need. However, it seems it works far better if I just add components directly to the desired colour layer, not to the master layer. And this way, the component only added to the colour layers isn’t included in that master layer of the glyph when it is used as a component. Perfect!