Set eight typefaces at exactly 52 px and their lowercase letters are not even close to the same height. Flip the switch to see what happens when you match the letters instead of the number.
The top line is set in one font at 44 px. Drag the slider until the lowercase letters in the second font look the same size. Five rounds. Then see how a browser's default, "same font-size", would have scored.
The x-height is how tall a lowercase "x" is, divided by the font size. Tap a row to use it in the next block.
When a fallback font or an inline snippet uses a different typeface, text jumps in size mid-line. The property font-size-adjust scales every font in the element to the same x-height ratio. Below, the sentence uses Inter with a second font mixed in.
Every number on this page is measured live in your browser. Each typeface is loaded, then the canvas TextMetrics of a lowercase "x" and a capital "H" at 100 px give the x-height and cap height ratios. Nothing is typed in by hand, so a font that fails to load simply drops out.
Sources: typefaces Inter, Lora, Playfair Display, Space Mono, Oswald, Quicksand, Josefin Sans and Caveat, Latin 400 weight, served by Fontsource packages (version 5.3.0, latest on the npm registry when this was built) through the jsDelivr CDN.