Am Montag, 28. November 2005 05:04 schrieb Keith Packard: > > I think most applications should use FcFontSetList instead so that they > receive the set of fonts necessary to render arbitrary characters, > instead of a single font with limited Unicode coverage. I know that > Pango and Mozilla both use the listing function exclusively; I'm not > sure how to improve the performance of this function though. Unfortunately this is not true, firefox spends roughly 49% of the time it takes to call "firefox-bin http://www.fontconfig.org" in 9 FcFontSort calls (if you have enough fonts installed). The FcFontSetList function you name is called by Qt though and is also horribly expensive as it rebuilds the full list of FcPatterns according to the FcObjectSet given using hashes to group the list. For the Qt case it's enough if FcFontList had a way to get _all_ fonts. We toyed around with providing a 0 pointer to FcFontList and this kind of works, but as the API will be backwards compatible, but crash when the old library is called from new applications, it would be better if the APIs were different there. Any suggestions? I see different ways like a FcCreateAnyObjectSet() or the suggested 0 pointer - or changing the semantic of the empty ObjectSet (which had the advantage of being able to write fontconfig version agnostic application code: "if FcFontSetList(FcCreateObjectSet())->nfonts == 0: FcFontSetList(theRealOS)" But yes, FcFontSort needs some major optimizing - and you will only gain small parts if you adopt techniques we used for optimizing FcFontMatch. But then again: I think if you throw away fonts early as they share scripts already provided by the merged set, you could gain some more. But this indeed needs more thinking. But I learned my lesson: I'll deinstall most of the fonts I installed for testing, 1.3 Billion instructions in firefox's FcFontSortfirefox teached me :) Greetings, Stephan