Axes and Master Locations

Axes give masters a coordinate system. A name such as Bold identifies a design for you; its location tells FontLab how that design participates in interpolation. Keep those two roles distinct when configuring a family.

Defining Axes

Open Font Info > Axes and use + to add an axis. Choose a predefined type when it describes your design, or create a custom axis. Select an axis and use − to remove it only after considering the master and instance locations that depend on it.

Each axis has three identifiers:

Identifier Purpose Weight example
Name Human-readable label Weight
Code FontLab location strings and expressions wt
Tag Four-character identifier in the exported font wght

The Axes page brings an axis’s name, tags, coordinate ranges, and master information into one entry.

The Axes page brings an axis’s name, tags, coordinate ranges, and master information into one entry.

The registered tags are wght, wdth, opsz, slnt, and ital. They describe weight, width, optical size, slant, and italic respectively. Use the appropriate registered meaning and scale instead of assigning one of these tags to an unrelated effect.

A custom axis can describe another change, such as a decorative treatment. FontLab initially supplies zz and ZZZZ; replace them with deliberate, unique identifiers before developing dependent locations and before export. Custom exported tags begin with an uppercase letter and use uppercase letters or digits. A placeholder is not invalid solely because it spells ZZZZ, but leaving generic or duplicate identifiers makes the design ambiguous and can produce conflicts.

Slant and italic are different ideas. A slant axis controls slope; an italic axis distinguishes upright and italic design states. Naming an axis does not automatically slant the outlines, change italic-angle values, or draw alternate italic forms. Those changes must exist in the masters and their data. Recall the per-master italic angle from Preparing for Italics when setting up slnt variation or ital design states; an axis name does not supply those values automatically.

Detect Axes can infer axes from existing master/layer names and encoded locations. Use it after assembling named designs, then inspect its results. If you change an axis code, review the master, instance, and expression references that used the old code.

An axis can also have named axis instances, such as Light=300, (Regular)=400, Bold=700. These describe positions on one axis. They can later supply combinations for the font's predefined-instance list; they are not separate master drawings.

Design and User Coordinates

Design coordinates are the working values used to place masters and instances inside FontLab. User coordinates are the values exposed by the font to applications. A mapping connects the two scales. The default is linear; where the same scale is used for both, it is the identity mapping and the coordinates coincide.

You might place two weight masters at design values 0 and 100, then map them to user values 300 and 700. A linear mapping puts design 50 at user 500. If you use the same scale for both, the mapping can be an identity: a design value of 400 is also user 400.

“Linear” does not always mean “identical numbers.” It means a constant relationship between the scales. A nonlinear mapping can associate unequal design intervals with equal user intervals when that better describes the intended progression.

Registered user scales have defined meanings. Width uses a percentage convention, for example, rather than a count of font units. Axis coordinates therefore should not be confused with a point's X/Y coordinates in the glyph drawing. A weight location of 700 does not place a node at X=700 or require a 700-unit stem.

Keep three ranges distinct:

  • Master-location range: the positions actually covered by the participating masters.
  • Design range: the working span of the axis, which can extend beyond those masters.
  • User range: the external scale associated with that span through the mapping.

The range displays on the Axes page summarize the configuration. The Axis Graph edits the mapping and its endpoints; see Advanced Axis Management. Extending a displayed range alone does not supply a drawn master at its new limit or guarantee that the exported variable font offers that extension. FontLab derives the exported axis range in fvar and DesignSpace from the actual minimum and maximum master locations, not merely from the user range entered in the Axis Graph. Review source coverage before extending the advertised range.

Variable-font internals also use normalized coordinates around a default location, conventionally expressed on a −1…0…1 scale. Use design coordinates for the FontLab location fields described here; do not substitute normalized values for them.

Placing Masters on Axes

After changing the axis list, click Apply or OK so that the Masters page has the updated axes. Then select each master in Font Info > Masters and set its location.

Use the per-axis numeric controls or a location string such as wt=400,wd=100. The identifiers are the FontLab axis codes. Check every axis, including values that remain at a default; a two-axis location is not fully explained by its weight alone.

For a basic weight-and-width design, four useful corner locations might be:

Design Weight wt Width wd
Light Condensed 300 75
Bold Condensed 700 75
Light Normal 300 100
Bold Normal 700 100

These example values describe a connected arrangement: from Light Normal, a step can change width alone to reach Light Condensed, or weight alone to reach Bold Normal. Bold Condensed completes the combinations. A lone diagonal master without the necessary axis connections is not equivalent to that grid.

Plan usable single-axis connections from the main master through the participating masters. Do not assume that any collection of points automatically fills a rectangular designspace. Check intermediate locations along each axis and in combined directions.

Name inference and Detect Axes can save entry work, but inspect the final numeric values. Two differently named masters can still occupy the same location, and changing a location does not redraw its glyphs.

The AAA control on a master entry governs participation in interpolation; its use is covered in Previewing, Diagnosing, and Fixing Interpolation. Keep the intended source masters participating and treat exclusion as a separate choice from hiding their overlays. Before continuing, check distinct locations, intended axis codes, main-master placement, and the connections between designs.