Variable fonts (or variations) allow you to create two or more master designs for your font, and get additional styles via interpolation between these masters. These derived additional styles are instances, and represent designs that are intermediates between the masters. The particular instances that you choose to name are primary instances. Primary instances can be used in an output variable font, or output as separate, standalone fonts. Each kind of variation in a variable font is an “axis.”
For example, if you design a Variable font with a weight axis, you could have an Extra Light master and an Extra Bold master. Each master has its own set of glyph outlines. There would be hundreds of possible in-between instances. Some of these you could label some specifically as the Light, Regular, Medium, Semibold and Bold weights.
OpenType Variations is the technology you use to make Variable Fonts. As a type designer, you can enable one or more axes of variation, such as weight, width, optical size, the presence of serifs… the possibilities are nearly unlimited. FontLab allows you to have as many axes as you like, up to the 64K allowed by the OpenType specification.
Technically, OpenType Variations are an extension and updating of the 1990s GX Variations technology invented by Apple, and a functional superset of Adobe’s Multiple Master technology. You can read the details in this introduction from John Hudson, and in the OpenType specification.
The variations workflow mostly does not work with color. Specifically, it supports only fonts where glyphs are made from monochrome PostScript or TrueType contours (and some editing tools only work reasonably with PostScript contours, not TrueType contours). Interpolation between color glyphs (made from editable contours) is also possible to some extent. SVG or bitmap glyphs are not yet supported in variations. These are limitations because of what OpenType supports in the output formats.
A typographic property that changes during interpolation is a design axis. You can create as many axes as you wish (up to 64K), each representing the change of a different typographic property, for example, weight, width, optical size, slant, serif size, contrast, ascender length and so on.
To add, edit and remove design axes, use File > Font Info… > Axes.
In FontLab VI, an axis has a name, a FontLab-internal two-letter code. Optionally, it also has a four-letter OpenType variation axis tag used by the Variable OpenType font format.
An axis can also have a “show/hide in the user interface of end-user apps” toggle that will be written into the Variable OpenType fonts (not yet supported in FontLab).
Each axis has its axis coordinate range that goes from from a minimum to a maximum value and has a default position. The axis coordinate range controls the range of the sliders and map in the Variations panel for the given axis (change it to allow for larger extrapolations).
Finally, an axis can also define axis instances.
Example axes would be:
weight, code wt, tag wght, min 1, max 1000, default 400
width, code wd, tag wdth, min 70, max 130, default 100
FontLab VI allows you to define masters within the weight and width axes without explicitly declaring them in File > Font Info > Axes. Declare them explicitly to control the axis coordinate range and define axis instances.
An instance is a “snapshot” of the interpolation process at a chosen location within the design space. FontLab can generate a “static” (single-master) font from an instance.
A font master is a font that contains glyph designs (elements and contours) for all glyphs in a font, as well as advance widths, kerning and other font data and it is used to define end design. A font master represents a complete font for a given axis location, so an instance derived from the axis location of a font master would be identical to the font master itself.
A glyph master is an additional master that contains the design for one or more particular glyphs, at an axis location where a font master does not exist. Glyph masters can be used to correct interpolation results for particular glyphs, but they do not contain font-wide information such as kerning.
At a minimum you need a total of one font master, plus one font master per axis. Each axis must have font two masters that have different coordinates on that axis.
The axes combine to form the design space, an abstract, multi-dimensional space, in which every master has a location. A location in the design space is defined in terms of numerical axis coordinates, for each and every axis in the design space. The design space is the range of variability in the variable font.
An example of a design space would be:
Two axes, weight (abbreviated wt in FontLab VI) and width (wd)
Thin Narrow, with the location wt=200,wd=75
Thin Wide, with the location wt=200,wd=120
Bold Narrow, with the location wt=700,wd=75
Bold Wide, with the location wt=700,wd=120
With such a design space, you could choose an instance at the location wt=500,wd=100 which would be then interpolated, and would represent a design with Medium weight and Normal width.
FontLab VI currently only supports master at extrema locations of the design space (there, undefined kerning pairs will have the value 0), and simple intermediate masters (undefined kerning pairs will have the interpolated value).
FontLab VI does not yet support master switching or intermediate masters with ranges.