Thank you John, your hack indeed solves the problem when U+0027 apostrophes are
replaced with U+2019 apostrophes (I did not try to make U+0027 active) and when
the margin kering is not activated.
However, replacing U+0027 with U+2019 apostrophes showed that the
margin-kerning bug is not due to the tex-text mapping : even when the
apostrophes are U+2019 in the source file, they are replaced by U+0027
apostrophes in the PDF !! And this only for the font for which margin kerning
is activated.
Any ideas on this last problem ?
Le 31 oct. 2010 à 16:32, John Was a écrit :
> Hello
>
> I can't help with the marginal kering (which I don't use), but here is what I
> do in a font that also had overtight kerning associated with apostrophes:
>
> \catcode"2019=\active
> \def’{\leavevmode \kern 1sp \hbox{'}}
> \catcode"201D=\active
> \def”{\leavevmode \kern 1sp \hbox{''}}
>
> Note that the characters in the \hboxes are the ordinary straight apostrophe
> (since I also use TeX mapping in my font calls.)
>
> As it stands, this would involve you actually using the correct Unicode
> characters 2019 and 201D for closing single and double apostrophes in your
> document, in spite of your tex-mapping - and I guess you could achieve this
> by global search-and-replace in your file. But you may be able to do much
> the same thing by making 0027 active instead (I haven't tried that - I can
> see a potential danger of a loop if you are using 0027 to define itself).
>
> I'm sure there are more elegant solutions - and I use plain TeX so there may
> be LaTeX issues that I don't know about.
>
> (Of course, if my request for custom kerning could be met, we would all be
> able to refine the kerning of any font at will. Unfortunately, someone in
> another thread explained that that is very difficult in XeTeX because of the
> way it looks up font information (LuaTeX can do it because it has another
> method of accessing the font's tables). I was rather hoping that someone
> would see that as an opportunity to show off hrs computing prowess by
> performing the miracle - but this hasn't happened yet.)
>
> John
>
>
>
> ----- Original Message ----- From: "Pierre Morel" <[email protected]>
> To: "Unicode-based TeX for Mac OS X and other platforms" <[email protected]>
> Sent: 31 October 2010 15:02
> Subject: [XeTeX] Several apostrophe-related problems (kerning, mapping)
>
>
> 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
>
>
> --------------------------------------------------
> Subscriptions, Archive, and List information, etc.:
> http://tug.org/mailman/listinfo/xetex
>
>
> --------------------------------------------------
> Subscriptions, Archive, and List information, etc.:
> http://tug.org/mailman/listinfo/xetex
--------------------------------------------------
Subscriptions, Archive, and List information, etc.:
http://tug.org/mailman/listinfo/xetex