Fontlab - Variable Axes Parameters ?

Erhan KaplanErhan Kaplan Posts: 2
edited May 2019 in Technique and Theory
I stuck in designing the variable font. Can you share information that is knowledgeable about it?
I have 4 master variable characters, I could not fully analyze the coordinates of the axes.

Weight variable
Width Variable
X height variable


  • John HudsonJohn Hudson Posts: 2,238
    edited May 2019
    Based on their design, it seems you are aiming to have masters only for extremes of the three axes, with the default instance in the lightest, narrowest, and tallest corner of the design space (the Thin master). That's a little unusual, as it means you will be relying solely on cross-axis interpolation for all the design space between the axes, without explicit control of any corner masters. This is possible in the OT variations model — and it may be okay for a fairly geometric design like yours —, but you might not like the additive results of that interpolation.

    However, you have a problem in that your 'UltraCondensed' xh axis master seems to also be a wide design, so you don't have an axis extreme that relates xh to the normal width Thin default. At the moment, your master designs suggest a design space like the one on the right; whereas, you probably want it to be like the one on the right:

    The first thing I would suggest doing is changing the name UltraCondensed to e.g. Short, as what is being adjusted in that master is the xh axis height, not the width (the term UltraCondensed is normally used in type to refer to a very narrow width design). I would then replace that master design with one that applies the height adjustment but to the regular width Thin design.

    I suggest the following values for your four masters:

    Thin wt=100,wd=100,xh=500
    ExtraBlack wt=1000,wd=100,xh=500
    Short wt=100,wd=100,xh=300
    UltraExpanded wt=100,wd=200,xh=500

    As you can see, in this arrangement each master differs from the other masters in exactly one axis, which means you have a master at the extreme of each axis.
  • Thomas PhinneyThomas Phinney Posts: 2,164
    @Erhan Kaplan the design that is labeled "UltraExpanded" is placed at "wt=1000" but probably ought to be at "wt=100" from the look of it.

    @John Hudson  Your design matches the second of your diagrams, and would be a good setup.

    But the design setup Erhan had previously does not match your first diagram. 

    In this setup, the default master (indicated by the blue dot), labeled UltraCondensed, is not one orthogonal move away from any one of the other masters. Having the default master disconnected in this way is Especially Bad. I expect it might break the variations capability of the font. When some other master that is disconnected, it breaks that master’s functionality, but portions of the design space will likely still work.
  • John HudsonJohn Hudson Posts: 2,238
    edited May 2019
    Thanks, Thomas. I didn't note the blue dot as indicating the default instance — I'm still getting familiar with the FLVI UI —, so was presuming that the Thin would be default, based on its relationship to the ExtraBlack and UltraExpanded masters.
  • Thomas PhinneyThomas Phinney Posts: 2,164
    Yeah, I have already updated our docs on that one for the next publication—noticed a couple weeks ago that it wasn’t documented!
  • @John Hudson Thank you for your answers and suggestions.
    I've noticed now that I have made a mistake with the naming.
    But I wanted to tell it was;
    Thin -> Extra Bold
    Thin -> Ultra Expanded
    Ultra Expanded -> X Height

    Need to have 2 masters for each axes?
    In this case the minimum - to be the maximum.
    How many axes does the number of axles increase as the number of axles increases?

    Thomas Phinney Thank you for the answer.
    I will review the document you have updated.
  • John HudsonJohn Hudson Posts: 2,238
    Thin -> Extra Bold
    Thin -> Ultra Expanded
    Ultra Expanded -> X Height

    That's problematic. A variable font contains a single outline set — the default instance —, and the other axis extremes are expressed as deltas to the position of outline points/handles in your design masters, i.e. the masters are not actually written to the variable font file, but only serve as sources in FLVI.

    So in devising the design space for a variable font you first need to decide what the default instance will be, and then design your axes so that every axis originates from or passes through that default instance.

    So, what do you want the default instance of the variable font to look like? Remember that this is how the font will appear, statically, in applications that don't support variable fonts. The default instance could be one of your axis extreme masters — in which case it would sit in a corner of a three dimensional design space, as in the right-hand diagram in my drawing above —, or you can create a default instance somewhere within the space defined by the axis extremes, e.g. a 'Regular' wt design, in which case your design space could look something like this:

    Again, note how all the axes emanate from or pass through the default instance. Of course, you could opt to have the default instance mid-way along two axes, or somewhere in the middle of the design space, mid-way along all three axes. I believe at present FLVI requires that the default instance also be a master (correct me if I'm wrong, Thomas), so what you could do is first make a source with one of the existing masters in a corner, then generate an interpolated instance and make it a new master to be the default instance.
  • Thomas PhinneyThomas Phinney Posts: 2,164
    Yes, FontLab has a notion of the "default master," which is also the default instance. Is it possible (per the spec) to specify a default instance which is not the default master?

    My understanding is that a default master is required. That's the one that the other masters are specified as deltas from. With TT flavor outlines, the fact that the default master is stored just like a normal font (with everything else in additional tables) is what allows a TT-Var font to work in non-savvy apps, and at least in those apps it is the default (and only) instance.
  • John HudsonJohn Hudson Posts: 2,238
    edited May 2019
    Is it possible (per the spec) to specify a default instance which is not the default master?
    We were very careful in the wording of the spec and explanations of the technology to use the term 'master' only in reference to design sources, to avoid possible confusion with the Multiple Master model. An OT variable font contains no masters, and the outline set stored in the font glyf or CFF2 table is a default instance.

    The default instance can be located anywhere within the design space, and I think it shouldn't need to be associated with a master in the design source. I think if I were making a tool I would be inclined to specify the default instance location in the instances panel rather than in the masters panel, as I think that's more in keeping with the intention of the spec. On font export, outlines for that instance would be generated and written to the glyf or CFF2 table. However, practically, the ability in current tools, as in FLVI, to generate an instance and then make it a master make this almost a moot point.
  • Thomas PhinneyThomas Phinney Posts: 2,164
    OK, I have inherited my usage of the words “master” and “instance” from older technologies then.
Sign In or Register to comment.