6

I am writing a document that is supposed to be typeset in Time New Roman or equivalent. The problem I have is that 12pt in font A is not the same as 12pt in font B. So is there a conversion table of some sort? Or can I calculate the ratio myself?? Specifically I would like to know the ratios for Adobe Caslon Pro and Warnock Pro.

PS: I am using XeLaTeX with fontspec.

  • 1
    x-heights and line weights. – morbusg Mar 23 '13 at 20:53
  • 1
    what morbusg said. The problem is that, even though it's clear what's 12pt, it is not (and never will be) clear what's a »12pt font«. That's the problem you've noticed yourself already: two fonts set at the same nominal size may look like they were set at different sizes, because »size« means different things to different people. You'd have to be more specific about what it means to you. Caslon and TNR at same x-height may result in the Caslon document taking up more pages, etc. Then there's cap height, descender, ascender height, and so on, all of which vary tremendously among typefaces. – Nils L Mar 23 '13 at 21:16
  • if you don't care whether font A and B appear equally tall, but want to make sure that your text takes up the same space, then what you're trying to do is called »copy fitting«, a very common task for typographers and typesetters, and well-documented, too. – Nils L Mar 23 '13 at 21:28
  • I do care that they appear equally tall, I don't care about the length of the document. I just want it to appear the same size as a Times New Roman 12pt. – Hesam Mar 23 '13 at 22:39
7

Fontspec can do this for you. The Scale option allows you to match the new font to the lower- or uppercase of the default font. It also allows you to scale manually. Here is an example using Times New Roman and Latin Modern.

\documentclass[12pt,a4paper]{article}
\usepackage{fontspec,lipsum}
\usepackage[margin=1cm]{geometry}

\defaultfontfeatures{Ligatures = TeX}
\setmainfont{Times New Roman}
\newfontfamily\notscaled{Latin Modern Roman}
\newfontfamily\scaledup[Scale = MatchUppercase]{Latin Modern Roman}
\newfontfamily\scaledlow[Scale = MatchLowercase]{Latin Modern Roman}
\newfontfamily\scaledman[Scale = .935]{Latin Modern Roman}

\newcommand*\comp[1]{#1 & \notscaled#1 & \scaledlow#1 & \scaledup#1 & \scaledman#1\\}
\setlength{\tabcolsep}{0pt}
\pagestyle{empty}
\begin{document}
\begin{tabular}{c c c c c}
    \comp{A}
    \comp{Q}
    \comp{a}
    \comp{y}
\end{tabular}\\
\begin{minipage}[t]{.2\textwidth}
    \raggedright\lipsum[1]
\end{minipage}%
\begin{minipage}[t]{.2\textwidth}
    \raggedright\notscaled\lipsum[1]
\end{minipage}%
\begin{minipage}[t]{.2\textwidth}
    \raggedright\scaledlow\lipsum[1]
\end{minipage}%
\begin{minipage}[t]{.2\textwidth}
    \raggedright\scaledup\lipsum[1]
\end{minipage}
\begin{minipage}[t]{.2\textwidth}
    \raggedright\scaledman\lipsum[1]
\end{minipage}
\end{document}

Preview

To scale your main font, you can set it twice: (once for the font to be matched and once to actually set your font)

\setmainfont{Times New Roman}
\setmainfont[Scale = MatchUppercase]{Latin Modern Roman}
  • Alright but then how can I set Latin Modern Roman as my default font for the entire document?? – Hesam Mar 23 '13 at 23:14
  • @Hesam Look in the .log file for fontspec info: "set-scale" – egreg Mar 23 '13 at 23:20
  • @Hesam: you can set the main font twice :) (I've added it to my answer) – Silke Mar 23 '13 at 23:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.