9

Normal apostrophes are too big for small caps and this is making my running headers look weird.

I'm getting around this by shrinking each apostrophe to \footnotesize and lowering it by -0.55ex.

Is there a more elegant way to do this?

(Notes. 1: Presumably this applies to other punctuation, but apostrophes are my only immediate concern. 2: I'd rather not scale the font, as suggested here, as this leads to kerning issues. 3: In a related vein, at very large font size, apostrophes and quotes look too fat, I find, so I tend, as here, to use a smaller font size and adjust the height using a \raisebox.)

\documentclass{article}

\begin{document}

WOULDN'T'VE --- full caps

{\sc wouldn't've} --- dislike

{\sc wouldn\raisebox{-.055ex}{\footnotesize'}t\raisebox{-.055ex}{\footnotesize'}ve} --- like

\end{document}

MWE

3
  • 1
    Looks like a good solution to me. Perhaps defining a \newcommand{\Apost}[1][-0.055ex]{\raisebox{#1}{\footnotesize'}} would be a good idea. The optional first paramter in case you ever want to tweak it a bit. You could use also use a \scalebox to shrink it a bit. Nov 14, 2012 at 8:50
  • I didn't know about \scaleboxes. Thanks. I'll indeed define a short command name, if I end up sticking with the above solution. Nov 14, 2012 at 10:07
  • 2
    How about \newcommand{\Apost}[1][0.5ex]{\scalebox{0.6}{\raisebox{#1}{'}}}? Nov 14, 2012 at 10:12

2 Answers 2

5

Too long for a comment: You are comparing lowercase small caps letter with uppercase letters, but you should also take the other variants into account:

\documentclass{article}
\usepackage[T1]{fontenc}
%\usepackage{lmodern}
\begin{document}
wouldn't've WOULDN'T'VE  

{\scshape wouldn't've WOULDN'T'VE} 

{\scshape wouldn\raisebox{-.055ex}{\footnotesize'}t\raisebox{-.055ex}{\footnotesize'}ve
WOULDN\raisebox{-.055ex}{\footnotesize'}T\raisebox{-.055ex}{\footnotesize'}VE} 

\end{document}

enter image description here

6
  • Point taken, but my current purpose is very narrow: I want punctuation size to match character height in running headers, which are in small caps (no lowercase or full caps). Nov 14, 2012 at 10:05
  • 2
    Then is it not easier to change the running headers to smaller-size full caps? There are lots of packages to change headers. Automatically changing quotes to a special command only in headers (but, I presume, not in TOC or any other places) will be difficult and clunky at best. Nov 14, 2012 at 10:09
  • @DanielHarbour -- I have to agree with Jean-Christophe Dubacq: redefining your apostrophes for your small caps headers will need careful attention for things like tables of contents (if you have them, I guess). Lowering the apostrophe (or re-sizing it) will make it look rather absurd if the entries in the table of contents are not also in small caps (and one would hope they are not!).
    – jon
    Nov 14, 2012 at 10:36
  • I'm producing a series of pamphlets, so no table of contents. I tend to avoid small uppercase as a substitute for small caps, because the characters come up a bit thin (though I notice plenty of journals do this). Nonetheless, I might try the suggestion out if the pamphlets end up as a single book at some point. Thanks for the suggestions and comments. Nov 14, 2012 at 11:12
  • 1
    @DanielHarbour: I don't think that you did get my point: Even small caps shape you can have upper and lower case letters. What about names like O'Leary or d'Arcy? Nov 14, 2012 at 11:14
3

Another approach is to make the apostrophe an active character and define it to use \raisebox only when small caps are in effect. I have small cap chapter headings and running headings but the table of contents is not small caps. This works for me:

\let\horn@scshape\scshape
\def\scshape{\addfontfeature{Letters=UppercaseSmallCaps,Letters=SmallCaps,LetterSpace=2,WordSpace=1.2}\let\horn@apos\horn@@apos}

\def\horn@apos{'}
\def\horn@@apos{\raisebox{-0.4ex}{\kern0.06em'}}

% make ' (apostophe) active for the argument to chapter so we can lower it for small caps
\let\horn@chapter\chapter
\def\chapter{
\begingroup
    \catcode`\'=\active\begingroup\lccode`\~=`\'\lowercase{\endgroup\def~{\protect\horn@apos}}
    \horn@@chapter
}

\def\horn@@chapter#1{%
\horn@chapter{#1}
\endgroup
}

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .