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" <pier.mo...@gmail.com> > To: "Unicode-based TeX for Mac OS X and other platforms" <xetex@tug.org> > 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