# Small Caps not Working

\documentclass[12pt]{article}
\usepackage[paperwidth=8.5in,paperheight=14in,left=1.5cm,right=1cm,top=1cm,bottom=0cm]{geometry} %margins
\usepackage{amsmath,mathptmx,fixltx2e,graphicx,polyglossia,fontspec}
\setmainlanguage{english}
\setotherlanguage[numerals=western]{urdu}
\setmainfont{Times New Roman}
\newfontfamily\urdufont[Script=Arabic,Scale=1.2]{Jameel Noori Nastaleeq}
\begin{document}
\textsc{This is written in small caps}
\end{document}


This problem with this code is that the text is not written in small caps. Along with this how can i use "Times" font in polyglossia?

• Sorry for my ignorance, but does have alphabets/fonts used for urdu language small caps at all in general? – user31729 Jul 1 '14 at 5:51
• Urdu language does not have small caps and the text i want in small caps is in English not in Urdu – Shaheryar Jul 1 '14 at 5:56
• Unfortunately I can't test your example directly, since Times New Roman is not installed on my computer and I am also no expert in XeLaTeX at all, so I can only guess... the font you specified does not provide for small caps at all or the syntax for XeLaTeX is different, i.e. not \textsc or \scshape – user31729 Jul 1 '14 at 6:56
• Is the urdu part relevant to the question? I commented that out and surprisingly i have a TMR. But: LaTeX Font Warning: Font shape EU1/TimesNewRoman(0)/m/sc' undefined (Font) using EU1/TimesNewRoman(0)/m/n' instead on input line 8. – Johannes_B Jul 1 '14 at 7:02

A problem with XeLaTeX is that it will use the font that your operating system recognizes as “Times New Roman” and there are several variants thereof around. In my experience, the feature most of these variants share is the lack of small caps letters.

A clone of Times that has small caps and is available on TeX Live and MiKTeX is TeX Gyre Termes; its coverage of small caps letters is limited to the Latin Alphabet.

\documentclass{article}
\usepackage{fontspec}

\setmainfont[
Ligatures=TeX,
SmallCapsFont={TeX Gyre Termes},
SmallCapsFeatures={Letters=SmallCaps},
]{Times New Roman}

\begin{document}
Abc \textsc{Small Caps}
\end{document}


With the most recent version of fontspec, the syntax of the command has become

\setmainfont{Times New Roman}[
SmallCapsFont={TeX Gyre Termes},
SmallCapsFeatures={Letters=SmallCaps},
]


(I'm not sure I like this form of input.)

• "(I'm not sure I like this form of input.)" I don't like it either! Inverting the order of required and optional arguments of \setmainfont is going to break a lot of programs. I wonder what made the authors of fontspec implement this change. – Mico Jul 1 '14 at 8:52
• @Mico The old syntax is still understood. – egreg Jul 1 '14 at 9:01
• Thanks. That's good news. (The latest fontspec manual doesn't mention the old syntax, so I had assumed it was no longer valid.) – Mico Jul 1 '14 at 9:45
• @Mico Making the old syntax invalid would break thousands of existing documents! – egreg Jul 1 '14 at 9:50
• @egreg I don't know much about the old syntax or the new syntax but if there is a better way to do all this then do tell me – Shaheryar Jul 2 '14 at 3:11