[XeTeX] performance on Windows (and other?) machines

Jonathan Kew jonathan_kew at sil.org
Tue Oct 3 13:38:06 CEST 2006

On 3 Oct 2006, at 12:18 pm, William Adams wrote:

> On Oct 2, 2006, at 4:13 PM, Jonathan Kew wrote:
>> Yes, I'd expect it to be faster, though as I don't have anything
>> remotely close to that many fonts, I don't know how much difference
>> to expect.
> Why does it have such a negative effect on performance? Does the
> system have to walk through the entire list more than once or  
> something?

(1) When you ask xetex for a font, it first looks to see if it  
already knows this font name; if so, it should be pretty fast (it  
keeps a cache of info on all the fonts it has looked at during the  
job, and access to those should be quick--it's not a linear search).  
Things like optical sizing and style selection happen using that  
cached info.

(2) If it hasn't yet heard of the font, then it asks fontconfig for a  
list of those that match the name you gave, and adds those to its  
cache; then it can choose the appropriate font from its cache, as above.

(3) If fontconfig can't find a match for the name you gave, then as a  
last resort xetex will ask it for the complete font list, cache the  
details of *all* the fonts, and then try again to find what you  
wanted. This covers some messy cases where fontconfig doesn't find  
things by the names you'd expect.

Now, if you have a huge number of fonts, then (3) will clearly become  
slower; at this point, xetex is looking into every font to cache  
names and style information that it needs.

However, my hope is that fonts will normally be found by (2), where  
we ask fontconfig for matches on a name. And then any other font from  
the same family will be found at step (1), already in xetex's cache.  
(Note also that (3) can only happen once per job, as xetex knows when  
it has collected all the available font info, and won't repeat this.)

One thing I don't know is whether/how fontconfig matching performance  
degrades with extremely large font collections. Maybe step (2) above  
can get slow.

Are you able to make some actual measurements with "small" and  
"large" numbers of fonts installed, to give an idea of the effect  
you're seeing? I'm afraid I don't know how to time jobs on Windows,  
but I'm sure there's some way to do this.


More information about the XeTeX mailing list