[Tex/LaTex] Redefine apostrophes to prevent bad kerning

kerningpunctuationunicode

The apostrophe in Adobe’s Minion Pro font has a kerning that is much too tight for typesetting French, where sequences of letters like l’a or d’e or j'a are common.

One solution I found is to wrap the apostrophe in a box, which prevents kerning with surrounding elements and gives a much nicer result:

enter image description here

(regular kerning is at the top, with my workaround below). I can redefine the “nice apostrophe”, a.k.a. U+2019, a.k.a. right single quotation mark, by the following command:

\DeclareUnicodeCharacter{2019}{\mbox{'}}

However, this doesn't work for the regular ASCII apostrophe, U+0027. So, how do you suggest I change that (in a way that doesn't affect the working of ' as a prime in math mode)? It would be an added bonus if the solution could avoid breaking hyphenation…

Best Answer

The package minionpro has the optional argument loosequotes that may be to your help. See page 4 in the manual where the option is described:

The quote signs of MinionPro are set rather tight. This can lead to undesirable spacing for apostrophes. The loosequotes option slightly increases the side bearings of quotes. This option requires pdfTEX 1.40 and microtype 2.0. Beware that this option prevents hyphenation of words containing apostrophes. Such words will require explicit hyphenation commands \-

Another possible solution is to use the package microtype and the possibility to defined parameters for the \SetExtraKerning-command. Have a look at section 5.4 in the manual, where the author has defined a configuration for extra kerning to be used in French text.

\SetExtraKerning
   [ name     = frenchdefault,
     context  = french,
     unit     = space   ]
   { encoding = {OT1,T1,LY1} }
   {
     :  = {1000,}, % = \fontdimen2
     ;  = {500, }, % ~ \thinspace
     !  = {500, },
     ?  = {500, }
   }

See also page 22 (section 6) for the use of it, and especially at page 23, where the use of the command \DeclareMicrotypeBabelHook is described.

Related Question