Fundamentals

Typography Principles for Designers Font Pairing, Hierarchy & Spacing

A practical audit for fixing type hierarchy, spacing, contrast, font pairing, and responsive behavior without turning every decision into a rule.

Nikki Kipple
Nikki Kipple
14 min readSep 2026

The short read

  1. Fix in this order

    Hierarchy, spacing, contrast, then font personality. Most pages do not need a new typeface first.

  2. Use as a starting point

    Keep the system small, constrain long lines, and test the actual content on real screens.

  3. Accessibility check

    Measure contrast, zoom to 200%, and make sure user-defined text spacing does not break the layout.

Line-height comparison showing cramped, readable, loose, and broken rhythm typography

Start with a five-minute type audit

If a page feels almost right, do not open the font menu yet. The problem is usually more basic: the levels are too similar, the text column is too wide, the spacing is cramped, or the contrast is doing less work than it looked like it would in Figma.

Audit the system in the order a reader experiences it. Structure first. Reading comfort second. Typeface personality last.

  1. 1
    Blur the page
    Can you still see the title, major sections, and next action? If everything becomes the same gray block, the hierarchy is too flat.
  2. 2
    Read one paragraph
    Use the real device and normal viewing distance. If you lose your place, inspect line length and line height before changing the font.
  3. 3
    Count the text styles
    Every distinct size, weight, color, and case treatment should have a job. Near-duplicates usually signal an unfinished system.
  4. 4
    Check contrast and zoom
    Measure the actual colors, then test at 200% zoom. A tasteful gray is not useful if the text disappears or the layout breaks.
  5. 5
    Judge personality last
    Only reconsider the typeface after the structure reads clearly. A new font cannot rescue weak hierarchy or cramped spacing.

The typography principles are a connected system

Typography is the design of written language in context. The typeface matters, but so do the relationships around it: what gets noticed, how a paragraph moves, where one section ends, and whether the system still works when the content changes.

These six principles cover most of the decisions designers mean when they ask whether the typography is working. Use them as lenses, not separate boxes to check.

A practical map of typography

Hierarchy
Make the order of attention unmistakable.
Size, weight, position, color, and spacing should agree about what matters first, second, and third.
Legibility
Choose forms that remain recognizable at the size and medium where they will be read.
A display face can be excellent at 64px and frustrating at 16px. Judge the type in its actual role.
Readability
Shape a comfortable reading experience across sentences and paragraphs.
Typeface, size, line height, measure, contrast, and spacing work together. No single setting can carry the whole job.
Rhythm
Use repeated spacing and alignment to make relationships predictable.
Readers should not have to relearn how headings, captions, labels, and body copy connect on every section.
Contrast
Create differences that clarify roles, then verify the color values.
Typographic contrast can come from scale, weight, width, case, style, or family. Color contrast is one measurable part of it.
Resilience
Let the system survive narrow screens, long content, zoom, translation, and font loading.
A type system is more than a polished desktop frame. It has to keep working when the content or conditions change.

Decoration-first

Choose a font, then force the page around it

The typeface carries too much responsibility. Hierarchy, spacing, and content structure stay unresolved.

System-first

Name the reading job, then choose the type that supports it

The page has a clear order, a comfortable reading texture, and enough flexibility to handle real content.

Choose a typeface by role, not by stereotype

Categories help you describe construction, not predict personality. A serif is not automatically trustworthy, and a sans serif is not automatically modern. Look at the family’s proportions, stroke contrast, spacing, available styles, language coverage, and behavior at the sizes you need.

Begin with the hardest job on the page. If the project contains long articles, choose the reading face first. If it is an interface, test labels, numbers, error messages, and compact controls. If the identity depends on an expressive title, prove that display face with the actual name and the longest likely headline.

Five useful typeface categories

Serif
Useful when the shapes add a deliberate editorial, literary, historical, or institutional voice.
Serif is a construction, not a personality guarantee. Inspect stroke contrast, spacing, italics, and small-size clarity in the family you are considering.
Sans serif
A flexible choice for interfaces, signage, portfolios, and long reading when the family has the range you need.
Geometric, grotesque, neo-grotesque, and humanist sans serifs can feel very different. The category alone does not make a design neutral or modern.
Slab serif
Consider it when you need sturdy display shapes or a serif that holds up in labels and shorter text.
The weight and spacing can become dense quickly. Test the exact size and line length instead of assuming every slab works for body copy.
Monospace
Use it when equal character widths support code, data, technical labels, or a specific voice.
Monospace makes alignment predictable but usually creates a wider, more mechanical reading texture. Use it because that tradeoff helps.
Display or script
Reserve expressive forms for moments where recognition and voice matter more than sustained reading.
Test names, numerals, punctuation, and repeated words. A striking sample can become noisy when it has to carry navigation or paragraphs.

Before you choose a family

  • Set the real project name, longest heading, body paragraph, numerals, and punctuation in the font.
  • Check the weights and italics you need instead of judging one regular sample.
  • Confirm language, currency, symbol, and diacritic support for the actual audience.
  • Read it at body size on a real device, not only enlarged in a specimen.
  • Compare its fallback and loading behavior if it will be used on the web.

Fix hierarchy before you fix fonts

Hierarchy answers a simple question: what should someone notice first, second, and third? If every heading is large, every label is bold, and every card has its own style, the reader has to reconstruct the system for you.

Start with the smallest inventory that explains the page: a display or page title, a section heading, body text, and a small label or caption. Add a level only when the content has a real level to express.

A small system

Make the decision visible

Show the structure before the detail

Body text should feel quiet enough to read and strong enough to hold up on a real screen. The spacing around each level helps explain the relationship.

Supporting label

Check each level

  • Role: What content belongs here?
  • Difference: Is it clearly distinct from the level above and below?
  • Consistency: Does the same role look the same everywhere?
  • Restraint: Could two near-identical styles become one?

Build a type scale from roles, not a magic ratio

A ratio can generate numbers. It cannot decide whether your product needs five text levels or whether a 52-pixel heading fits a German translation. Pick a short set of sizes that creates the distinctions your content needs, then test it with the longest real labels and headlines.

A useful five-role inventory

Display
The page idea or strongest entry point.
Often one per page. It can be fluid, but cap it before long words or translations break the composition.
Section
A clear turn in the content.
It should be easy to find while scrolling and visibly closer to what follows than what came before.
Subheading
A smaller structure within a section.
If it looks almost identical to the section heading or body copy, combine the roles or make the difference clearer.
Body
The default reading voice.
Choose this first. Most of the page is body copy, so its size, spacing, and contrast determine the experience.
Label / caption
Supporting context that still has to be readable.
Small is not the same as faint. Avoid shrinking or muting essential instructions just because they are secondary.

A major third, perfect fourth, or another modular ratio can give you candidate sizes. Keep only the values that produce useful differences in the real layout. Optical size matters more than mathematical purity: a large display face may look smaller than another family at the same CSS value, and a compact mobile screen may need a tighter spread.

A bounded starting scale
:root {
  --text-label: 0.875rem;
  --text-body: 1rem;
  --text-subhead: 1.25rem;
  --text-section: 1.75rem;
  --text-display: clamp(2.25rem, 5vw, 4.5rem);
}

Spacing, line height, and measure do most of the reading work

Type does not become readable because a formula says so. It becomes readable when the specific font, size, line length, contrast, and context work together. Use the numbers below as starting points, then adjust while reading the actual content.

Useful starting points

Body line height
Try 1.45–1.65, then read the real paragraph.
Fonts with a tall x-height may need less. Dense copy, smaller type, or long-form reading may need more.
Text measure
Try a paragraph width around 60–70 characters on larger screens.
This is a practical starting range, not a standard. The typeface, layout, and reading task may point narrower or wider.
Heading rhythm
Use more space above a heading than below it.
The heading should feel attached to the content it introduces, not stranded between two sections.
Letter spacing
Begin with the typeface’s default spacing and adjust by role.
Large display text may benefit from slightly tighter spacing. Small uppercase labels often need more. Avoid applying one tracking value everywhere.

Cramped

Every line competes with the next

Tight line height, weak paragraph breaks, and headings pressed against the previous section make a page feel denser than its word count.

Readable

Spacing explains the structure

A comfortable line height, deliberate paragraph spacing, and headings grouped with their content create a rhythm the reader can follow.

Pair fonts with a job in mind

“These fonts look good together” is not a system. A second family should solve a problem: create a stronger editorial voice, make dense reading quieter, separate data from prose, or give display text a useful contrast.

If one family can create the hierarchy, use one. Consistency is not a lack of creativity. It gives the content a stable structure and leaves more room for color, imagery, and layout to carry personality.

One-family system

Inter Semibold

Inter Regular keeps the structure quiet, direct, and easy to maintain.

Editorial contrast

Newsreader

Source Sans 3 gives longer reading a neutral counterpoint.

Structured contrast

Space Grotesk

IBM Plex Sans keeps the body practical while the headings feel more distinct.

Before you commit to a pair

  • Give each family a specific role.
  • Test real names, prices, dates, and long headings.
  • Check every weight and style you plan to use.
  • Confirm the scripts and symbols your content needs.
  • Compare the pair at actual body and heading sizes.
  • Remove one family and see whether anything is lost.

Need combinations to try? Use the portfolio font-pairing guide, or preview your own words in the font-pairing tool. Treat both as a starting point, then come back to the real page.

Common typography mistakes are usually system mistakes

A weak type system rarely comes down to one “bad font.” More often, several small decisions pull in different directions: a new style appears for every card, supporting text gets lighter and smaller, long lines fill the viewport, or headings grow without creating a clearer content structure.

Look for patterns across the page before polishing an isolated line. The repair should make the next page easier to design too.

Six patterns worth fixing

Too many near-duplicate styles
Merge styles that do the same job, then name the remaining roles.
A system with 15 slightly different text styles is harder to scan and much harder to maintain.
Hierarchy built with size alone
Use spacing, weight, position, and width so every distinction does not require a dramatic jump.
A page full of oversized headings can feel loud without becoming easier to understand.
Body copy stretched too wide
Constrain the reading column while letting the surrounding layout breathe.
The page can use the full viewport without asking each line of text to cross it.
Small text used as decoration
Enlarge, strengthen, or remove supporting copy that cannot do its job comfortably.
A caption, metadata line, or form instruction is still content when someone needs it.
A new font used as the first fix
Repair the levels, measure, spacing, and contrast before replacing the family.
Changing the typeface can disguise the problem while leaving the underlying system untouched.
The fallback state ignored
Load the page slowly and compare the fallback with the final font.
A beautiful web font can still create a poor experience if the text disappears or the layout jumps while it loads.

Responsive and accessible type is type that survives change

The clean desktop frame is only one state. Text gets zoomed, translated, enlarged, replaced by user styles, and read on screens with very different widths and brightness. A type system is finished when it can absorb those changes without losing meaning or function.

Use flexible units with deliberate limits

Use rem units for a manageable scale and clamp() when a heading should grow between sensible minimum and maximum sizes.

h1 {
  font-size: clamp(2.25rem, 6vw, 4.5rem);
  line-height: 1.05;
  max-width: 14ch;
}

Test the states your canvas hides

  • 200% browser zoom on a narrow viewport.
  • The longest likely heading and navigation label.
  • Increased line, word, letter, and paragraph spacing.
  • Bright light, dark mode, and reduced contrast conditions.
  • A real screen reader heading list.

Contrast is measurable, but the threshold is not the finish line

WCAG 2.2 Level AA requires at least 4.5:1 contrast for normal text and 3:1 for large text. Check the actual foreground and background colors. Then test the weight and typeface in context, because two designs at the same ratio can still feel very different to read.

Fails AA · 2.85:1

This light gray does not reach the 4.5:1 minimum for normal text on white.

Passes AA · 4.54:1

This reaches the minimum for normal text. Test the typeface, weight, and surrounding conditions too.

Stronger · 12.63:1

This darker gray creates more contrast on white while staying slightly softer than black.

Use web fonts without turning them into a loading problem

A font file is part of the interface. It can delay text, shift the layout, or fail. Use WOFF2, request only the weights and character sets the page needs, and choose fallbacks that occupy similar space.

Do not preload every font. Preload only a truly critical file, and choose font-display based on the tradeoff you want. swap shows text quickly but can shift when the font arrives. optional avoids a late swap but may keep the fallback on a slow connection.

A small web-font request
@font-face {
  font-family: "Project Sans";
  src: url("/fonts/project-sans-variable.woff2") format("woff2");
  font-display: swap;
  font-style: normal;
  font-weight: 400 700;
}

body {
  font-family: "Project Sans", ui-sans-serif, system-ui, sans-serif;
}

Keep the font request boring

  • Use WOFF2 files for modern-browser projects.
  • Request only the weights and styles that appear on the page.
  • Subset only when the result still covers real content, names, and languages.
  • Choose a measured fallback that reduces layout shift.
  • Preload only a truly critical file unless testing proves more helps.
  • Check the network request instead of assuming the font is cheap.

Before you ship the type system

Do this on the rendered page, not only in the design file. A checklist is useful when it catches something you can fix, not when it produces a perfect score.

  • A first-time reader can identify the page, sections, and next action without reading every word.
  • Body text is comfortable on a real phone and a laptop, not only in the design canvas.
  • Long text blocks have a deliberate maximum width instead of stretching across the screen.
  • Headings have more separation from the previous section than from the text they introduce.
  • Normal text reaches 4.5:1 contrast and meaning never depends on color alone.
  • The layout still works at 200% zoom and with user-defined text spacing.
  • Font files cover every language and symbol the product actually needs.
  • Only the weights, styles, and font files used by the page are requested.
  • Fallback fonts are close enough that loading does not destroy the layout.
  • The type choices support the content instead of becoming the content.

Checklist done. Still not sure what matters most?

Upload the page or paste the URL. Your free First Read gives you a readiness verdict and the first typography move to consider.

Get a First Read

Want to see the criteria before sending anything? Here is what the critique checks.

Standards and implementation sources

The practical ranges in this guide are starting points, not accessibility standards. These are the current primary references behind the requirements and font-loading guidance:

QuestionsAnswers

Questions, answered.

A few practical details before you keep going

Go deeper only where you need it

Choosing type for a portfolio? Open Typography for Portfolios. Need combinations to test? Use the Font Pairings Guide or the live font-pairing tool.

Building the implementation? The CSS Typography Guide covers the code-level details without repeating the design audit.

Share this resource

Nikki Kipple

Written by

Nikki Kipple

Product Designer & Design Instructor

Designer, educator, founder of The Crit. I've spent years teaching interaction design and reviewing hundreds of student portfolios. Good feedback shouldn't require being enrolled in my class — so I built a tool that gives it to everyone. Connect on LinkedIn →

Too close to the page to judge the type?

Send one page or screenshot. Your free First Read gives you a readiness verdict and the first move to consider.

Get a First Read →