# fontspec: Load an italic text font so that it has the same x-height as the "main" (roman) text font

Suppose that one likes the "upright" shape of the font Sabon Next LT Pro, but prefers the "italic" shape of the font Garamond Premier Pro over the italic shape of Sabon Next. (Both fonts are Garamond-style fonts, by the way.) Unfortunately, the x-heights of these fonts are quite different, creating some visual unpleasantness when they're typeset side by side.

I know of the option

Scale = MatchLowercase


when loading sans-serif and typewriter fonts via \setsansfont and \setmonofont statements; these options serve to scale the sans-serif and typewriter fonts to the x-height of the main text font in use. Unfortunately, there seems to be no (documented) way to set the x-height of an italics text font in the same easy way. Is this impression incorrect?

In short, how should I go about scaling my italics text font to equate its x-height to that of the main (Roman/upright) text font?

You can set the main font first to set the x-height; then you can reset it.

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Lucida Bright OT}
\setmainfont[Ligatures=TeX,
ItalicFeatures={Scale=MatchLowercase},
ItalicFont={EB Garamond 12 Italic},
]{Lucida Bright OT}

\begin{document}
Abc\emph{def}

%% We check what the normal choice would be
{\fontspec{Lucida Bright OT}Abc}{\fontspec{EB Garamond}\itshape def}

\end{document}


Apologies for the terrible font combination: I chose a font with a large x-height (Lucida Bright) for better comparison.

I learned the trick of setting twice the main font from Silex (see https://tex.stackexchange.com/a/104000/4427)

• Many thanks! The solution turns out to be much easier than I thought it'd be.
– Mico
May 20, 2013 at 20:10