I use Italian Garamond to write a document and I'd like to use small caps. The problem is that there is no Italian Garamond small caps to buy. Therefore, how could I get to have at least capital letters on my left and right headers? This is my MWE:

\documentclass[hidelinks,12pt,twoside,openright,a4paper]{book}
\usepackage[french]{babel}
\usepackage{fontspec}
\setmainfont[
SmallCapsFont={ItalianGarmnd BT},
SmallCapsFeatures={Letters=SmallCaps},
]{ItalianGarmnd BT}
\usepackage{lipsum}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\fancyhf{} % sets both header and footer to nothing
\fancyfoot{}
\fancyhead[CE]{\textsc{A book}} % even pages: chapter title
\fancyhead[CO]{\textsc\leftmark} % odd pages: book title

\begin{document}

\chapter{A title}
\lipsum
\lipsum

\end{document}

• I was wondering: can I use EB Garamond or Adobe Garamond Pro as small caps instead of Italian Garamond?
– domi
Jul 7, 2021 at 22:39
• You might try \MakeUppercase and a smaller size, say \small or \footnotesize for the text in the headers if small caps aren't available. Warning -- \MakeUppercase acts on math as well as text, so if math might appear in the headers, something more restrictive is needed. This approach is used in amsbook. Jul 9, 2021 at 20:23
• Thanks. I'd prefer use Adobe Garamond Pro instead. Is it and how possible? Whatever, how do you insert \small in this line: \fancyhead[CO]{\MakeUppercase\leftmark}?
– domi
Jul 9, 2021 at 20:59
• I'd try entering this as \fancyhead[CO]{\small\MakeUppercase{\leftmark}}. Jul 9, 2021 at 21:10
• I and some other people wrote fake small caps code here. You can also substitute a different small caps font with SmallCapsFont=. Jul 11, 2021 at 5:52

The right way, afaik, is by stating it in the \setmainfont command.

\setmainfont[
SmallCapsFont={EB Garamond},
SmallCapsFeatures={Letters=SmallCaps},
]{ItalianGarmnd BT}


I post the following code as an answer, for it does not fit as a comment.

You may define a \lsc command to "fake" lowercase smallcaps, as with an older spanish.ldf.

\makeatletter
\def\lsc{\protect\local@lsc}
\def\local@lsc#1{%
\leavevmode
\hbox{\scshape\selectfont
\expandafter\ifx\csname\f@encoding/\f@family/\f@series
/n/\f@size\expandafter\endcsname
\csname\curr@fontshape/\f@size\endcsname
\csname S@\f@size\endcsname
\fontsize\sf@size\z@\selectfont
\message{Replacing undefined sc font\MessageBreak
shape by faked small caps}%
\MakeUppercase{#1}%
\else
{#1}%
\fi}}
\makeatother
\fancyhead[CE]{\lsc{A book}} % even pages: chapter title
\fancyhead[CO]{\lsc\leftmark} % odd pages: book title


So, if you change your mind and use a font with true smallcaps, the command will become non-operating.

I insist that this trick comes from an older version of spanish.ldf; I don't use the standard Spanish option anymore, but a homebrewed one, so I don't know if this command is still operative in newer versions.

• Thanks for your suggestions. Finally, as I don't want to use fake small caps, I'd like to give SmallCapsFont={EB Garamond} a try, but using Adobe Garamond Pro... but it doesn't work for me. Why?
– domi
Jul 11, 2021 at 8:39
• What do I have to do? The answer jarnosz made does not work for me and does not fit my needs and the answer barbara beeton wrote, even if it's not what I was waiting for, is very close to what I'm looking for. Who must I give the bounty?
– domi
Jul 17, 2021 at 8:31
• you don't provide enough information about the errors reported by your engine—in fact, I don't know even what is your engine; and without engine information (LuaTeX and XeTeX behave differently) or access to this commercial font, we are pretty much in the dark. Jul 24, 2021 at 5:48
• I fear you have just wasted your valuable points: no award was possible. Jul 24, 2021 at 5:50