[Fontconfig] commit: drastic fontconfig speedups

Matthias Clasen mclasen at redhat.com
Mon Nov 28 22:20:10 PST 2005

On Tue, 2005-11-29 at 01:13 -0500, Patrick Lam wrote:
> Matthias Clasen wrote:
> > On Tue, 2005-11-29 at 00:19 -0500, Patrick Lam wrote:
> > 
> >>Matthias Clasen wrote:
> >>
> >>>The globs change clearly has a big effect. The results of 
> >>>fc-list | wc -l on my system are as follows:
> >>>
> >>>cvs20051119: 143
> >>>before globs change: 148
> >>>current cvs: 0
> >>
> >>Hmm, there shouldn't be a difference between before globs change and 
> >>cvs20051119.  However, 0 is a number I'm not reproducing.  Can you check 
> >>your config and try rebuilding your caches?
> > 
> > I just rebuilt my caches with fc-cache from current cvs, and fc-cat
> > lists the contents of the cache files as expected. Still, fc-list comes
> > up empty.
> For no good reason I had at one point 0 fonts as well.  However, I've 
> updated current CVS with a couple of changes, using a more stable API to 
> get the font filenames.  Unfortunately, this is going to hurt the perf 
> of FcInit.  Anyway, I think that the code is now actually correct, and 
> seems to work fine for me at least.  Rebuilding caches doesn't seem to 
> help, but recompiling everything might help.
> Globs now check both the full filename and the pathname to see whether 
> or not they belong to a rejection glob.  This can actually be greatly 
> sped up, come to think of it.  The per-directory rejection glob only 
> needs to be done once per cache directory.  Unfortunately, the full 
> filename still has to be checked; I don't really see a clean way around 
> that.  I'll do the per-directory optimization momentarily; consider it 
> done.
> Please tell me about how fc-list behaves for you after this change.  (I 
> also compiled with -O0 -g, but that *shouldn't* make a difference. 
> Perhaps the make clean did.)

Seems to work fine now, thanks. I'll push a cvs snapshot into rawhide
tomorrow, for some wider testing.


More information about the Fontconfig mailing list