[XeTeX] Several apostrophe-related problems (kerning, mapping)

Pierre Morel pier.morel at gmail.com
Sun Oct 31 16:02:01 CET 2010


Hello,

My thesis is finished soon, but I have an annoying apostrophe problem.

In French we have a lot of apostrophes uses like this : L'œil, l'incertitude, etc.
In theory, these apostrophes should be the unicode character U+2019 (right single quotation mark) instead of a straight apostrophe (U+0027). This replacement is automatically made by this command : \defaultfontfeatures{Mapping=tex-text}

First there is a problem with the kerning of this U+2019 character, it is possibly a bug in the font I'm using (Adobe Caslon Pro), but I'd like to solve it anyway.
Here is an example (The word L'œil, on the top right) :
http://dl.dropbox.com/u/1205127/Images/xetex.jpg
The apostrophe is completely kerned above the "œ" (the same problem is present for any small character), which thus touches the "L".
So my first question is: is there a way to override the default kerning of this U+2019 character so that it behaves in a more correct way (with a slight space between the apostrophe and the next letter) ?

Now there is a second problem (which solved the first one but in a bad way).
When activating margin kerning, xetex behaves as if the line \defaultfontfeatures{Mapping=tex-text} was not present : U+0027 apostrophes stay straight (which curiously solves the kerning problem, see the example on the top left of the image), and `` and '' are not converted appropriately (more annoying).
Here is what I use for the margin kerning (when I comment these line, the mapping problem is corrected) :

	\newcount\countA
\ifx\XeTeXprotrudechars\undefined
    \pdfprotrudechars=2
\else
    \let\pdftexversion=\countA
    \pdftexversion = 140
    \XeTeXprotrudechars=2%\fi
\input protcode-native
 \font\f="Adobe Caslon Pro" at 11pt \f
  \setprotcode\f
       \pretolerance=-1
        \tolerance=9999
        \emergencystretch=2em

With the file protcode-native file being

\def\setprotcode#1{
    \rpcode#1 U"0021    55
    \rpcode#1 U"002C    194
    \rpcode#1 U"002D    233
    \rpcode#1 U"002E    194
    \rpcode#1 U"003B    138
    \rpcode#1 U"003A    138
    \rpcode#1 U"003F    94
    \lpcode#1 U"2018    194
    \rpcode#1 U"2019    194
    \rpcode#1 U"0027    194
    \lpcode#1 U"201C    250
    \rpcode#1 U"201D    250
    \rpcode#1 U"2013    150
    \rpcode#1 U"2014    200
}

So, in short, I want to use margin kerning while maintaining the tex-text mapping AND having a correct kerning with the U+2019 apostrophe.

PS: (this last problem also appears on my sans serif font (Myriad pro), an example is visible in the linked image.

Thank you,

Pierre


More information about the XeTeX mailing list