I have a few artistic fonts that I use in XeLaTeX with the fontspec package. However, they don't support smallcaps out of the box.
Is there a way to tell LaTeX to "fake" smallcaps by capitalizing everything and scaling the lowercase letters down a bit, similar to how Word or OpenOffice do it?
Minimal example, even though it's pretty obvious:
\documentclass{report}
\usepackage{fontspec}
% Really any font that doesn't include small caps definitions
\newfontfamily\titlefont{Old London Alternate}
\begin{document}
\titlefont \scshape Test Text
\end{document}
The Test Text is not rendered in small caps, as it would be if the font supported small caps.
Thanks for pointing me to this answer, which works fine in general, but has the drawback that it fails on UTF-8 encoded files with non-ASCII characters, which I need to use. If you have an idea how to modify that answer to also support non-ascii characters, please let me know.
ltugboat.cls
(on CTAN), and you are welcome to adapt it. This mode does lack the wider sidebearings usually associated with "designed" small caps.\def\fauxschelp
part up to\begin{document}
with the following:\def\fauxschelphelp#1#2\relax{\ifnum`#1=\uccode`#1\relax\scalebox{\Cscale}[1]{#1}\else\scalebox{\Hscale}[\Vscale]{\uppercase{#1}}\fi\ifx\relax#2\relax\else\fauxschelphelp#2\relax\fi}
A-Z
), which makes all non-ASCII characters be treated like uppercase letters (so they are not capitalized, for example). I changed it to use the uppercase code of the character instead.