{"course":{"slug":"vector-and-print","title":"Vectors, Logos and Things That Get Printed","url":"https://addaly.com/learn/vector-and-print","level":"beginner","track":"create"},"lesson":{"slug":"variable-fonts-in-print","title":"Variable fonts, and what a press does with one","url":"https://addaly.com/learn/vector-and-print/variable-fonts-in-print","position":26,"of":73,"minutes":8,"answer":"A variable font is instanced, frozen at your axis values and embedded as an ordinary static font, before it reaches a press, so it is safe for print if you verify the export.","keyIdea":"A variable font is instanced, frozen at your axis values and embedded as an ordinary static font, before it reaches a press, so it is safe for print if you verify the export, and its `wdth` axis is the only legitimate way to condense a headline."},"body":{"format":"markdown","text":"## One file, a continuum of weights\n\nA 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.\n\nThe registered axes have four-letter tags:\n\n- `wght`: weight, usually 100 to 900\n- `wdth`: width, as a percentage\n- `opsz`: optical size, which changes stroke contrast and spacing for small versus large setting\n- `ital` and `slnt`: italic and slant\n\nPlus any custom axis the designer invented: grade, serif shape, terminal angle.\n\n`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.\n\n## What happens at the RIP\n\nThis is the part that decides whether you use one.\n\nA 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:\n\n- The press sees a normal font. Nothing exotic reaches the RIP.\n- 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.\n- 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.\n\nPractically: 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.\n\n## Application support\n\n- **InDesign and Illustrator**: support variable fonts with a slider in the Character panel. Reliable.\n- **Affinity**: support added and improved across versions; check yours.\n- **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.\n- **Scribus**: no variable-axis control at the time of writing. Install a static instance instead.\n- **CorelDRAW**: support has been present since 2018 but varies; test.\n\nIf your tool cannot drive the axes, you are not stuck. Generate a static instance yourself with `fonttools`:\n\n```bash\npip install fonttools\nfonttools varLib.instancer Inter.ttf wght=550 wdth=100 -o Inter-550.ttf\n```\n\nThat produces an ordinary static font you can install anywhere. This is also the honest fix when a printer's workflow refuses the variable file.\n\n## When not to use one\n\n- **When the shop will open your source file.** They will not have the axis settings, and a substituted static weight will not match.\n- **When you cannot test the export.** If you cannot run `pdffonts` or open the PDF somewhere clean, use a static cut and remove the variable.\n- **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.\n\n## When they earn their place\n\n- **A long document with many weights.** One file rather than nine, no risk of the wrong cut being installed, and consistent metrics.\n- **Anything with an `opsz` axis**, where the typographic gain is real and visible.\n- **Tight copy-fitting.** A `wdth` axis 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.\n\nThat 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.\n\nOne 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."},"check":{"question":"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?","options":[{"text":"Horizontal scaling is applied at render time and cannot be embedded in a PDF, so the press would receive the unscaled type.","correct":false,"tempting":"Horizontal scaling is baked into the glyph positions and outlines on export; the press receives exactly what you saw. The objection is aesthetic and structural, not technical."},{"text":"A width axis keeps the file as live text while horizontal scaling forces the type to be outlined before export.","correct":false,"tempting":"Both remain live text. Scaled type embeds perfectly well; nothing forces outlining in either case."},{"text":"Scaling thins vertical strokes while leaving horizontals alone; a width axis uses outlines drawn for that width.","correct":true},{"text":"Variable instancing happens at 1000 units per em, so the width axis produces a mathematically exact result where horizontal scaling introduces rounding.","correct":false,"tempting":"Both operate at the same unit precision. Rounding is far below anything visible; the difference is in stroke weight relationships, not accuracy."}]},"prev":{"slug":"figures-dashes-and-missing-glyphs","title":"Figures, dashes and the characters nobody checks","url":"https://addaly.com/learn/vector-and-print/figures-dashes-and-missing-glyphs"},"next":{"slug":"two-ways-of-making-colour","title":"Two different physical processes","url":"https://addaly.com/learn/vector-and-print/two-ways-of-making-colour"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'Variable fonts, and what a press does with one', in Vectors, Logos and Things That Get Printed. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/vector-and-print/variable-fonts-in-print (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"Variable fonts, and what a press does with one","courseTitle":"Vectors, Logos and Things That Get Printed","module":{"index":3,"slug":"type-as-shape","title":"Type, which is also vector"},"answer":null,"keyIdea":"A variable font is instanced, frozen at your axis values and embedded as an ordinary static font, before it reaches a press, so it is safe for print if you verify the export, and its `wdth` axis is the only legitimate way to condense a headline.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"one-file-a-continuum-of-weights","runs":[{"text":"One file, a continuum of weights"}]},{"t":"p","runs":[{"text":"A variable font stores one set of outlines plus "},{"text":"deltas","b":true},{"text":": 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."}]},{"t":"p","runs":[{"text":"The registered axes have four-letter tags:"}]},{"t":"ul","items":[[{"text":"wght","code":true},{"text":": weight, usually 100 to 900"}],[{"text":"wdth","code":true},{"text":": width, as a percentage"}],[{"text":"opsz","code":true},{"text":": optical size, which changes stroke contrast and spacing for small versus large setting"}],[{"text":"ital","code":true},{"text":" and "},{"text":"slnt","code":true},{"text":": italic and slant"}]]},{"t":"p","runs":[{"text":"Plus any custom axis the designer invented: grade, serif shape, terminal angle."}]},{"t":"p","runs":[{"text":"opsz","code":true},{"text":" 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 "},{"text":"opsz","code":true},{"text":" axis you get the correct optical size at every point size, automatically. Inter, Source Serif 4, Literata and several Noto families carry it."}]},{"t":"h2","id":"what-happens-at-the-rip","runs":[{"text":"What happens at the RIP"}]},{"t":"p","runs":[{"text":"This is the part that decides whether you use one."}]},{"t":"p","runs":[{"text":"A PDF cannot contain a live variable font with axes a RIP will resolve. When you export, the application "},{"text":"instances","b":true},{"text":" the font (freezes it at the values you set) and embeds that instance as an ordinary static font, usually CFF. Which means:"}]},{"t":"ul","items":[[{"text":"The press sees a normal font. Nothing exotic reaches the RIP."}],[{"text":"The instance is a "},{"text":"new font","i":true},{"text":", generated by your application. Its name may be something like "},{"text":"Inter-VF_wght437","code":true},{"text":", which a printer’s preflight may flag as unknown."}],[{"text":"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."}]]},{"t":"p","runs":[{"text":"Practically: variable fonts are safe for print, provided you check the exported PDF. "},{"text":"pdffonts job.pdf","code":true},{"text":" will show you exactly what got embedded and whether it is subset."}]},{"t":"h2","id":"application-support","runs":[{"text":"Application support"}]},{"t":"ul","items":[[{"text":"InDesign and Illustrator","b":true},{"text":": support variable fonts with a slider in the Character panel. Reliable."}],[{"text":"Affinity","b":true},{"text":": support added and improved across versions; check yours."}],[{"text":"Inkscape","b":true},{"text":": variable font support landed in 1.x with a "},{"text":"Variations","i":true},{"text":" tab in the Text and Font dialog. It works and it is less polished than the paid tools."}],[{"text":"Scribus","b":true},{"text":": no variable-axis control at the time of writing. Install a static instance instead."}],[{"text":"CorelDRAW","b":true},{"text":": support has been present since 2018 but varies; test."}]]},{"t":"p","runs":[{"text":"If your tool cannot drive the axes, you are not stuck. Generate a static instance yourself with "},{"text":"fonttools","code":true},{"text":":"}]},{"t":"code","lang":"bash","label":"Bash","text":"pip install fonttools\nfonttools varLib.instancer Inter.ttf wght=550 wdth=100 -o Inter-550.ttf"},{"t":"p","runs":[{"text":"That produces an ordinary static font you can install anywhere. This is also the honest fix when a printer’s workflow refuses the variable file."}]},{"t":"h2","id":"when-not-to-use-one","runs":[{"text":"When not to use one"}]},{"t":"ul","items":[[{"text":"When the shop will open your source file.","b":true},{"text":" They will not have the axis settings, and a substituted static weight will not match."}],[{"text":"When you cannot test the export.","b":true},{"text":" If you cannot run "},{"text":"pdffonts","code":true},{"text":" or open the PDF somewhere clean, use a static cut and remove the variable."}],[{"text":"For a logo.","b":true},{"text":" 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."}]]},{"t":"h2","id":"when-they-earn-their-place","runs":[{"text":"When they earn their place"}]},{"t":"ul","items":[[{"text":"A long document with many weights.","b":true},{"text":" One file rather than nine, no risk of the wrong cut being installed, and consistent metrics."}],[{"text":"Anything with an ","b":true},{"text":"opsz","b":true,"code":true},{"text":" axis","b":true},{"text":", where the typographic gain is real and visible."}],[{"text":"Tight copy-fitting.","b":true},{"text":" A "},{"text":"wdth","code":true},{"text":" axis 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."}]]},{"t":"p","runs":[{"text":"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."}]},{"t":"p","runs":[{"text":"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."}]}],"check":{"question":[{"text":"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?"}],"options":[{"text":[{"text":"Horizontal scaling is applied at render time and cannot be embedded in a PDF, so the press would receive the unscaled type."}],"correct":false,"tempting":[{"text":"Horizontal scaling is baked into the glyph positions and outlines on export; the press receives exactly what you saw. The objection is aesthetic and structural, not technical."}]},{"text":[{"text":"A width axis keeps the file as live text while horizontal scaling forces the type to be outlined before export."}],"correct":false,"tempting":[{"text":"Both remain live text. Scaled type embeds perfectly well; nothing forces outlining in either case."}]},{"text":[{"text":"Scaling thins vertical strokes while leaving horizontals alone; a width axis uses outlines drawn for that width."}],"correct":true,"tempting":null},{"text":[{"text":"Variable instancing happens at 1000 units per em, so the width axis produces a mathematically exact result where horizontal scaling introduces rounding."}],"correct":false,"tempting":[{"text":"Both operate at the same unit precision. Rounding is far below anything visible; the difference is in stroke weight relationships, not accuracy."}]}],"order":[0,1,3,2],"why":null},"prev":{"slug":"figures-dashes-and-missing-glyphs","title":"Figures, dashes and the characters nobody checks","minutes":8},"next":{"slug":"two-ways-of-making-colour","title":"Two different physical processes","minutes":8}}}