One file, a continuum of weights
A variable font stores one set of outlines plus deltas: instructions for how each point moves as an axis changes. Ask for weight 437 and the renderer interpolates between the designer’s masters and draws a shape that exists in no static file.
The registered axes have four-letter tags:
wght: weight, usually 100 to 900wdth: width, as a percentageopsz: optical size, which changes stroke contrast and spacing for small versus large settingitalandslnt: italic and slant
Plus any custom axis the designer invented: grade, serif shape, terminal angle.
opsz is the one worth caring about in print and the one nobody uses. A face designed at 9 pt wants sturdier strokes, wider spacing and lower contrast than the same face at 60 pt. Before variable fonts this needed separate cuts (Display, Text, Caption) which most families never shipped. With an opsz axis you get the correct optical size at every point size, automatically. Inter, Source Serif 4, Literata and several Noto families carry it.
What happens at the RIP
This is the part that decides whether you use one.
A PDF cannot contain a live variable font with axes a RIP will resolve. When you export, the application instances the font (freezes it at the values you set) and embeds that instance as an ordinary static font, usually CFF. Which means:
- The press sees a normal font. Nothing exotic reaches the RIP.
- The instance is a new font, generated by your application. Its name may be something like
Inter-VF_wght437, which a printer’s preflight may flag as unknown. - Two applications may instance the same font slightly differently, so a headline exported from InDesign and one exported from Illustrator can differ by a hair.
Practically: variable fonts are safe for print, provided you check the exported PDF. pdffonts job.pdf will show you exactly what got embedded and whether it is subset.
Application support
- InDesign and Illustrator: support variable fonts with a slider in the Character panel. Reliable.
- Affinity: support added and improved across versions; check yours.
- Inkscape: variable font support landed in 1.x with a Variations tab in the Text and Font dialog. It works and it is less polished than the paid tools.
- Scribus: no variable-axis control at the time of writing. Install a static instance instead.
- CorelDRAW: support has been present since 2018 but varies; test.
If your tool cannot drive the axes, you are not stuck. Generate a static instance yourself with fonttools:
pip install fonttools
fonttools varLib.instancer Inter.ttf wght=550 wdth=100 -o Inter-550.ttfThat produces an ordinary static font you can install anywhere. This is also the honest fix when a printer’s workflow refuses the variable file.
When not to use one
- When the shop will open your source file. They will not have the axis settings, and a substituted static weight will not match.
- When you cannot test the export. If you cannot run
pdffontsor open the PDF somewhere clean, use a static cut and remove the variable. - For a logo. A wordmark should be outlined anyway, and a mark whose weight depends on an interpolation is a mark that can change when somebody updates a font file.
When they earn their place
- A long document with many weights. One file rather than nine, no risk of the wrong cut being installed, and consistent metrics.
- Anything with an
opszaxis, where the typographic gain is real and visible. - Tight copy-fitting. A
wdthaxis lets you condense a headline by 3% honestly, using outlines the designer drew, rather than by horizontally scaling the type, which is the thing you must never do and which is visibly different.
That last point is the strongest argument. Horizontal scaling to 92% thins the vertical strokes by 8% and leaves the horizontals untouched, so the contrast of the face changes and the round letters go oval. A width axis narrows the letter the way the designer intended it to narrow, redrawing the counters and keeping the stroke weights. It is the same instinct and only one of them is correct.
One caution on naming. Some applications write the instance name into the PDF with the axis values appended, and some write the family name unchanged. If a printer’s preflight reports a font it does not recognise, that is usually all this is, but confirm it rather than assuming, because an unrecognised font name and a missing font look identical in a preflight report.
Every lesson here is open. Your progress is recorded once you pass the Editing an Image exam.
Check your understanding
A designer sets a headline with a variable font’s width axis at 92% rather than horizontally scaling static type to 92%. Both look narrower. Why is only one of them acceptable?
Pick the one you would defend. Your answer stays private.
Stuck on something?Ask Nazia, your AI tutor
