On this page
A variable font can contain many related styles in one font resource. Its design axes let you choose intermediate weights, widths, or other variations instead of switching only between named static files. That flexibility is valuable, but an available number is not automatically a useful typographic style. Start with the family documentation and the text roles you need.
Inventory the font and the intended roles
List the exact file, its supported axes, and each axis's minimum, default, and maximum. A family called Variable may vary only weight; another may include width, slant, optical size, or custom expressive controls. Never infer support from the family name alone. Axis availability is font-specific.
Use the px-to-rem converter to prepare consistent body and heading sizes for your specimen. Holding size constant lets you compare axis changes without confusing them with scaling. Include paragraphs, labels, numerals, and a long heading at the sizes the product will actually use.
Define the desired roles before exploring hundreds of combinations. For example, you might need regular paragraphs, firm section headings, and compact numeric labels. A small set of useful instances is easier to review than a slider playground with no reading task.
Prefer high-level CSS for registered behavior
Use font-weight for weight rather than reaching immediately for low-level axis settings. Likewise, use the standard style controls for italic or oblique behavior where the font supports them. High-level properties communicate intent and integrate with the cascade more naturally.
@font-face {
font-family: "Atlas Text";
src: url("/fonts/atlas-text-variable.woff2") format("woff2");
font-weight: 100 900;
font-style: normal;
}
.article {
font-family: "Atlas Text", sans-serif;
font-weight: 430;
}
.article h2 {
font-weight: 680;
}The family and path above are illustrative; replace them with a real, appropriately licensed file. Declare only the range that the file actually supports. A false range does not create new designed masters or guarantee that every requested style will render as intended.
The MDN variable fonts guide explains registered axes and their CSS mappings. Check the browser support of the properties you choose, particularly when width control is part of your design. This guide focuses on shaping the typography, not font download or rendering strategy.
Use low-level settings for genuine custom needs
The font-variation-settings property can address axis tags directly. Registered tags such as wght and wdth have established meanings; custom axes use font-defined names and behavior. Read the specimen documentation before assigning values. An arbitrary axis tag does nothing useful if the font does not support it.
.display-title {
font-variation-settings: "GRAD" 30;
}This example applies only to a font with a GRAD axis whose documented range includes 30. Grade commonly adjusts stroke appearance with less effect on advance widths than weight, but the exact result depends on the design. It is not a universal boldness control shared by all variable fonts.
Be careful when combining low-level settings and higher-level properties. Explicit axis settings can override behavior you expected from normal weight or style declarations. The MDN font-variation-settings reference details that interaction. Keep custom settings close to the role that needs them and avoid copying a complete axis list into every selector.
Evaluate axes as typographic decisions
Weight affects more than darkness. It can change counters, spacing, and the apparent density of paragraphs. Compare a long paragraph at 400, 450, and 500 instead of judging one bold word. Intermediate weights need proofing, even if they are technically valid.
Width axes can help fit a specific editorial tone or create a compact numeric style, but should not become an automatic solution for every overflowing label. A very condensed form may save space while reducing character recognition. Test confusable letters and numerals in the actual context.
Optical size is different from simply scaling the same outline. When supported, it can adjust details for the intended text size. Leave its review separate from weight selection so you can tell what each axis contributes. A title instance that looks excellent at 64px may be too delicate for small text.
Use a consistent specimen and log the selected axis values with the size and line height. The design tokens guide is useful for storing approved combinations once you know they work. Avoid exposing every axis as an unrestricted design-system control.
Keep the final instance set restrained
Choose a handful of stable roles, then test them across browsers, languages, and content lengths. Inspect whether letters collide, counters close up, or numerals lose distinction. Test actual font files rather than assuming the online marketing specimen matches your licensed version exactly.
Do not animate axes by default just because interpolation is possible. Continuous weight or width changes can distract from reading and may alter line breaks. A static article heading usually benefits more from a well-chosen instance than an animated demonstration of the font's capabilities.
Check missing glyphs and italic coverage. A variable roman file does not necessarily include a designed italic, and a broad weight range says nothing about language support. The OpenType variation overview provides technical context for how variation data works.
Keep a short decision record in your typography resources. Include the file version, permitted ranges, approved roles, and examples that failed. This makes later changes reproducible. When the family is updated, rerun the specimen rather than trusting the same coordinates to preserve every visual detail.
Verify instances with a small regression specimen
Create a specimen with the exact paragraph, heading, and numeric-label styles intended for release. Include narrow letters, wide capitals, punctuation, and repeated digits. Capture each approved instance at its real size rather than comparing every axis combination in oversized display text.
Change one axis at a time during review. Increasing weight may alter line breaks, while reducing width can preserve a heading's footprint at the cost of a denser reading texture. Check a long title and a multiline paragraph before deciding that an intermediate coordinate is suitable. Do not assume a technically supported extreme was designed for sustained body reading.
Record the approved coordinates together with the font file version. After a family update, rerun the same specimen and compare wrapping, numeral alignment, and emphasis. If the font is unavailable, verify that the fallback still distinguishes headings from paragraphs. This gives the team a repeatable acceptance check instead of relying on memory of a slider position.
Key takeaways
- Inspect actual axes and ranges before writing CSS.
- Prefer high-level properties for standard weight and style behavior.
- Reserve low-level settings for documented axis needs.
- Judge intermediate instances with real paragraphs and labels.
- Publish a small approved set rather than unlimited combinations.
Reach designers & developers at work
Put your product next to the tools people use every day. One sponsor per placement, no tracking pixels.
Become a sponsor