[XeTeX] \XeTeXuseglyphmetrics (was Re: Re: [OS X TeX] gtamacfonts ligatures: PDF searchability)

Jonathan Kew jonathan_kew at sil.org
Wed May 17 20:25:56 CEST 2006

On 17 May 2006, at 5:36 pm, Bruno Voisin wrote:

> Having built version 0.991 recently, I was feeling adventurous  
> today and decided to give the newly added glyph metrics setting a  
> try. Searching through earlier messages I found the name  
> \XeTeXuseglyphmetrics in the quoted message, and the syntax  
> \XeTeXuseglyphmetrics=1 in the attachement xetex-sample2e.tex from  
> a more recent message "Rép : [XeTeX] Correct LaTeX-logo – how?"  
> from 7 May.
> Thus I tried putting \XeTeXuseglyphmetrics=1 in a XeLaTeX document,  
> before \begin{document}. Without it, here's what I get for example:
> <Image 2.png>
> <Image 8.png>
> And then with it:
> <Image 5.png>
> <Image 9.png>
> In the first case, the parentheses (entered through \left( and  
> \right)) are given a more appropriate size;


> in the second case, the extra interline spacing added by the  
> presence of a superscript is made very very slightly smaller, but  
> not much.

Yes, very subtle!

> The fonts are a mixture of Hoefler Text for text and Lucida for maths.
> By contrast here's what I'm getting with Lucida only in pdfLaTeX:
> <Image 7.png>
> <Image 10.png>
> In this case, the superscript does not create any extra interline  
> space, and that's what I was hoping to reproduce in XeLaTeX.

There's a very significant difference between the Hoefler Text and  
Lucida that you're using here. In Lucida, the descender of the  
lowercase "p" is short enough that the lines can stay at their  
standard \baselineskip positions even with the superscript present;  
the Hoefler "p" is deeper. So XeTeX is (correctly) seeing that the  
bounding boxes of the lines would touch, and introducing \lineskip  
between them.

If you set \lineskip to 0pt (default is 1.0pt, I believe), then in a  
case where lines "touch", they'll be set with no extra space; to  
allow them to even "overlap" slightly, you'd have to set  
\lineskiplimit slightly negative.

So XeLaTeX is right, here, and your problem is that Hoefler Text  
glyphs are taller/deeper than Lucida, for a given point size;  
therefore, there's less scope for moving them up or down before line  
spacing starts to vary, with default LaTeX settings.

> Hence the question: what's the exact syntax of  
> \XeTeXuseglyphmetrics? Is it boolean, with only two values 0 for  
> false and 1 for true? Or is it like pdfTeX's \protcode, having  
> several values 0, 1 and 2 corresponding to the "intensity" with  
> which the correction is applied?

It is an integer parameter, so you could set it to any integer value  
(like TeX's \pausing, \tracingonline, etc), but there are only two  
states, "off" (if \XeTeXuseglyphmetrics <= 0) and "on" (if  
\XeTeXuseglyphmetrics > 0). So just go with 0 and 1.

> I did not notice any significant performance hit when using  
> \XeTeXuseglyphmetrics, by the way.

Good; I did some caching of metrics per font & glyph, so that the  
impact should be slight in normal use, unless your document uses an  
unusually varied collection of fonts and glyphs. In testing, I can  
measure a slow-down, but it's not much compared to other things (like  
the slowness of xdv2pdf!).

A question: should \XeTeXuseglyphmetrics=1 be set in xetex.fmt and  
xelatex.fmt as a default, do you think? If I add that to the standard  
format files, it will cause layout changes in existing documents  
where people have been (knowingly or unknowningly) setting "solid"  
text based on the old XeTeX font-wide metrics; the change might come  
as a surprise, and not always a welcome one. It could, of course, be  
corrected by adding \XeTeXuseglyphmetrics=0 to such documents, or by  
explicitly setting the line spacing desired rather than relying on  
that implicit in the font.

The alternative, of course, is to leave the feature off by default,  
and tell people to turn it on in their documents when they want it.  
Any thoughts?


More information about the XeTeX mailing list