Tech Interval
  • Home
  • How To
  • Apps
  • Social App
  • Software
  • Delete Account
  • Apps on PC
No Result
View All Result
Tech Interval
  • Home
  • How To
  • Apps
  • Social App
  • Software
  • Delete Account
  • Apps on PC
No Result
View All Result
Tech Interval
No Result
View All Result
Home Learn

Why 16px Isn’t 16px: We Measured the x-Height of 54 Google Fonts

Ayaan Mizan by Ayaan Mizan
August 18, 2026
in Learn
Reading Time: 7 mins read
0
Share on FacebookShare on TwitterShare on Pinterest

Set two paragraphs at font-size: 16px in two different fonts and one of them will be noticeably harder to read. Not because one font is badly drawn, but because the number in your stylesheet does not describe the size of the letters.

We measured 54 open-source font families to find out how much that matters. The answer is: more than we expected, and enough to break one of the rules in the accessibility guidelines.

Table of Contents

Toggle
    • You might also like
    • Make Money Online – Complete Beginner to Pro Guide (2026)
    • What Is Screen Resolution, and Why Does It Matter?
  • What font-size actually sets
  • How we measured it
  • Finding 1: x-height varies by 74%
  • Finding 2: the size you need to match, in practice
  • Finding 3: WCAG’s large-text rule is granted on the wrong number
  • Finding 4: don’t trust OS/2.xAvgCharWidth
  • Finding 5: seven families have no real bold
  • What to do with this
  • The data

You might also like

Make Money Online – Complete Beginner to Pro Guide

Make Money Online – Complete Beginner to Pro Guide (2026)

March 1, 2026
What Is Screen Resolution, and Why Does It Matter?

What Is Screen Resolution, and Why Does It Matter?

November 30, 2025
Why 16px Isn't 16px We Measured the x-Height of 54 Google Fonts

What font-size actually sets

font-size sets the size of the em box — an invisible container the type designer draws inside. How much of that box the lowercase letters occupy is entirely the designer’s decision, and it varies enormously.

The measurement that matters is x-height: the height of a lowercase “x”, expressed as a fraction of the em. That is what you are actually reading. Capitals and ascenders help, but the bulk of running text is lowercase, and its size is set by x-height rather than by font-size.

How we measured it

Every figure here is read out of the font binaries, not from a vendor’s metadata. x-height and cap height come from the OS/2 table (sxHeight and sCapHeight), normalised by head.unitsPerEm so families with different internal grids are comparable. Weight ranges come from the fvar axis where a variable font provides one. Advance widths are resolved through cmap into hmtx and averaged over a–z.

The full dataset — 54 families, 27 fields each — is published on GitHub under CC0, along with the extraction script. Nothing below has to be taken on trust.

Finding 1: x-height varies by 74%

Across the 47 non-display families, x-height as a fraction of the em runs from 0.332 to 0.578. The median is 0.506.

Largest x-heightratioSmallest x-heightratio
Oswald0.578Dancing Script0.332
Merriweather0.555Josefin Sans0.378
JetBrains Mono0.550Cormorant Garamond0.386
Poppins0.548EB Garamond0.400
Inter0.546Crimson Text0.420

The largest sets lowercase letters 74% bigger than the smallest at identical font-size. That is not a subtle difference. It is the difference between comfortable body text and text your readers quietly give up on.

Finding 2: the size you need to match, in practice

This is the part worth bookmarking. Inter at 16px puts 8.73px of lowercase on the page. Here is what every other popular family needs to be set at to produce the same reading size:

Familyx-heightLowercase at 16pxSize needed to match Inter
Poppins0.5488.77px15.9px
Inter0.5468.73px16.0px
Open Sans0.5358.56px16.3px
Roboto0.5288.45px16.5px
Montserrat0.5178.27px16.9px
Playfair Display0.5148.22px17.0px
Lato0.5068.10px17.2px
Work Sans0.5008.00px17.5px
Nunito0.4847.74px18.0px
Source Serif 40.4757.60px18.4px
EB Garamond0.4006.40px21.8px

If you swap Inter for EB Garamond and leave the size at 16px, you have shrunk your body text by more than a quarter without changing a number that looks like it controls size. To get back to where you were, you need 21.8px.

This is why “we changed the font, and now it feels cramped” is such a common complaint after a rebrand — and why raising font-size by a point or two usually fixes it.

Finding 3: WCAG’s large-text rule is granted on the wrong number

This is where the measurements stop being a curiosity.

WCAG 2.x requires body text to meet a contrast ratio of 4.5:1. It relaxes that to 3:1 — a third less contrast — once text reaches 24px at normal weight, on the reasoning that larger text is easier to read at lower contrast.

The threshold reads the stylesheet. It does not read the font.

  • Inter at 16px puts 8.73px of lowercase on the page, and must meet the full 4.5:1
  • EB Garamond at 24px puts 9.60px of lowercase on the page, and is allowed 3:1

The Garamond letters are 10% larger. For that 10%, they are permitted a third less contrast. A designer can pass an audit by picking a small-x-height font and setting it at 24px, while a more legible combination fails.

This is a known limitation of a formula written in 2008, and it is part of why APCA — the perceptual contrast model drafted for WCAG 3 — accounts for font size and weight rather than applying a flat cutoff. If you are checking contrast seriously, check both: our contrast checker reports WCAG 2 and APCA side by side, because they disagree often enough to matter.

Finding 4: don’t trust OS/2.xAvgCharWidth

Fonts declare an average character width in their OS/2 table. If you are estimating how much text fits on a line, it is the obvious field to read. It is also frequently wrong.

Compared against the mean advance over a–z measured from hmtx:

FamilyDeclaredMeasuredOff by
Poppins0.851 em0.561 em52%
Lobster0.594 em0.443 em34%
Pacifico0.615 em0.459 em34%
Roboto Condensed0.567 em0.441 em28%
Dancing Script0.497 em0.389 em28%

It is also not discriminating. Five groups of families in this set declare an identical value while their real widths differ — Domine and Lobster both declare 594, but their measured widths are 0.113 em apart. Anything sizing text from that field is working from a number that does not describe the font.

Finding 5: seven families have no real bold

Abril Fatface, Anton, Bebas Neue, Lobster, Monoton, Pacifico and Righteous ship no weight at 700 or above. Applying font-weight: bold to any of them produces a synthetic bold — the browser smearing the outline — rather than a drawn one. It looks muddy at small sizes and is a common cause of headings that appear slightly blurred.

Forty of the 54 families are variable fonts, so in most cases the available weights come from an fvar axis rather than from separate files.

What to do with this

  • When you change fonts, re-set the size. Keeping 16px across a font swap is not keeping the design the same.
  • Treat 24px as a floor, not a licence. Hitting the WCAG large-text threshold does not mean your text is comfortable to read.
  • Check bold exists before you rely on it, particularly with display faces.
  • Measure, don’t read the metadata. hmtx is reliable; xAvgCharWidth is not.

The data

All 54 families with every measurement are on the font contrast tool, where you can check any of them against your own foreground and background colours and see the x-height rendered rather than described.

The raw dataset is on GitHub as JSON and CSV under CC0 — no attribution required, though a link back is welcome. The font files themselves are not redistributed; each is OFL and available from Google Fonts.

Related Articles

Make Money Online – Complete Beginner to Pro Guide
Learn

Make Money Online – Complete Beginner to Pro Guide (2026)

March 1, 2026
What Is Screen Resolution, and Why Does It Matter?
Learn

What Is Screen Resolution, and Why Does It Matter?

November 30, 2025
List of Prime Numbers from 1 to 100
Learn

List of Prime Numbers from 1 to 100

November 30, 2025
Hindi Numbers from 1 to 100
How To

Hindi Numbers From 1 to 100 | Hindi Ginti

November 30, 2025
Load More

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Tech Interval

© 2026 Tech Interval - All Rights Reserved.

Know Us

  • About Us
  • Products
  • Contact Us

Follow Us

No Result
View All Result
  • How To
  • Apps
  • Social App
  • Software

© 2026 Tech Interval - All Rights Reserved.