OpenType, Variable, and Web Fonts

Choose the outline flavor and packaging for the intended consumers, then verify the resulting layout and rendering. Similar filenames or matching previews do not make two output formats identical.

OpenType PS and TT

OpenType PS, normally .otf, stores cubic outlines in CFF. OpenType TT, normally .ttf, uses TrueType glyf outlines and TrueType hinting. Both can carry Unicode mappings, names, metrics, and OpenType Layout.

Cubic source outlines can reach CFF without cubic-to-quadratic conversion, but other profile operations can still change them: rounding, cleanup, overlap removal, and construction resolution remain relevant.

Ordinary TrueType output from cubic sources requires approximation with quadratic curves. Choose a tolerance appropriate to the design, then inspect curved details and point structure. A larger point count is not automatically a more useful output.

PostScript stem naming affects the dominant and stem-snap values: std.Hstem and std.Vstem distinguish standard-only entries from the ordinary snap set. Keep the hinting data and the chosen output policy coordinated rather than expecting outline flavor alone to select the desired treatment.

The ordinary 16-bit OpenType glyph-count model supports at most 65,535 glyphs, including .notdef. Recall cubic/quadratic geometry in Curves, Direction, and Fill and conversion in Segments and Curve Types. Treat specialized cubic-glyf export as an experimental or extended workflow requiring explicit profile customization and exporter/consumer support, rather than baseline .ttf compatibility. Do not use an extension as though it were the baseline compatibility of every .ttf consumer.

Variable Fonts

A variable font packages a designspace for use at runtime. It does not store the complete native FontLab source: it stores the default design and the variation data needed by the target representation.

Variable TT uses TrueType variation data, including gvar, and is a common delivery route. Variable PS stores variable cubic outlines in CFF2. Choose a flavor supported by the intended applications, then test FontLab’s exported file there; support for ordinary static OpenType does not establish support for both variable flavors.

Before export, check compatible glyph structures, usable master locations, axis identities, the default/main master, and named instances. Then inspect the output's key relationships:

  • fvar describes axes and named locations.
  • avar carries applicable axis-coordinate mapping.
  • STAT provides style-attribute information.
  • Variation metrics and supported MVAR/GPOS data preserve relevant metric and positioning changes.

User coordinates are mapped and normalized for the compiled model. A design-range extension in the source is not, on its own, evidence that the exported font has an anchored and usable extended range.

Visual kerning and varying anchor data need the proper variable-output build path, which rebuilds positioning from master data; recall Kerning, GPOS, and the kern Table. A fixed handwritten snapshot of one master's positions does not become varying GPOS automatically. Check substitutions, marks, and kerning at intermediate locations, not just at named instances.

Component retention, coordinate precision, and hinting depend on the output flavor and profile. TrueType point coordinates commonly require integer representation, while CFF-based paths have different precision and hinting rules. Retain fractional source work and judge the actual conversion instead of preemptively rounding every master without a reason.

Keep a static reference export when it helps compare a named variable instance with the intended design. Check family/style names, including typographic style name ID 17 from Naming Fonts and Families, in the consumer as well as the outline result.

Sigma and bracket layers

For the editing workflows, see The Sigma Tool and Bracket Layers.

Variable TT and Variable PS can export Sigma trajectories. The exporter checks sampled output against the source before publishing the font. The Linear Compatibility TT and Linear Compatibility PS profiles deliberately omit Sigma corrections from the export copy and use ordinary interpolation; choose them only when that is the intended result.

Bracket layers export as alternative glyph designs selected by conditional substitutions. The two layers at a break do not become two font-wide masters at the same location. Check the lower side, the boundary itself, and the first location above it, then test text with kerning, marks, ligatures, and optional features. The compiled boundary uses the variable-font coordinate precision, so also inspect the switch in the intended rendering application.

A font can contain both Sigma glyphs and bracket-layer glyphs. Export currently rejects a glyph that combines bracket switching with Sigma curves, including an affected composite. Do not assume that support for both features in a font means every combination within one glyph is supported. Resolve that combination in an export copy or generate the intended static instance.

On import, FontLab can reconstruct recognized early design switches as ordinary bracket layers and verified Sigma trajectories as editable paths. Sigma recognition supports CFF2 outlines and both quadratic and cubic TrueType outlines. Existing layout references and component references are retained; a separate source glyph may remain when another feature or component still needs it. Switches limited to particular languages, contextual rules, and other unsupported conditional layout retain their ordinary representation instead of becoming global bracket layers.

Reopening a binary is not a substitute for keeping the native project. Reconstruction depends on the compiled structure being recognized and verified. Keep the VFC or VFJ source, and compare outlines and layout after any export–import–export workflow.

Web Fonts

WOFF2 and WOFF package font data for web delivery; they do not replace its shaping or outline model. WOFF2 uses Brotli-based compression and is the usual starting choice for modern web delivery. The exact size reduction depends on the font; it is not a fixed percentage guarantee.

The Web TT and Web PS profile families use the respective outline flavors. Inspect which wrappers are enabled. Legacy EOT targets old workflows and should be included only for a known requirement.

A custom profile can also provide sample HTML/CSS where supported. CSS @font-face identifies the delivered files and their intended style/weight relationships. Correct font files can still behave incorrectly if that surrounding configuration describes them wrongly.

Color can be delivered in suitable WOFF2 output (see Color Fonts), and variable data can also be carried in supported web fonts, but verify both the exported contents and browser behavior. Test the actual served file rather than a locally installed font with a similar name, and keep the web deliverables tied to their source revision and profile.

Inspect compiled tables and output diagnostics as described in Inspecting and Repairing Fonts.