[Fontconfig] Re: fc-cache sometimes looses fonts
sunmoon1997
sunmoon1997 at gmail.com
Wed Nov 2 21:41:56 EST 2005
hi,
After updating fontconfig, apps which use fontconfig are going to
crash:(, then I found FcPatternGetString(pattern, FC_FILE,... only
returns basename instread of full path name sometimes that make cairo
return NULL font face then app crashes. Then follow to fontconfig,
I think problem is here.
void
FcPatternDestroy (FcPattern *p)
{
int i;
if (FcPatternFindFullFname (p))
FcPatternAddFullFname (p, 0);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
why every call to FcPatternDestroy want to reset font full name, maybe
this object is still hold by others. Removing these two lines,
everything works fine now.:D
Patrick Lam wrote:
> James Cloos wrote:
>
>>>>>>> "Patrick" == Patrick Lam <plam at MIT.EDU> writes:
>>
>>
>>
>> Patrick> So I was suggesting this slightly evil thing. If you call
>> Patrick> FcPatternGetString for an FC_FILE, then fontconfig will
>> Patrick> silently append the path of the cache file to the path of the
>> Patrick> file. ... ... ... The result is that no changes are visible
>> Patrick> from the outside; no version number bumping or recompilation
>> Patrick> required.
>>
>> OK. I get it now. Looks perfect.
>
>
> I've implemented this now. It was kind of messy, I guess, because I had
> to also copy the full pathname whenever I was duplicating an FcPattern
> (and this happens a number of times). It would be nice if I could think
> of a simpler solution, but this seems to work.
>
> So, we have basenames in caches; these basenames are relative to the
> cache file's (conceptual) location. (Even if we stuff them all in /var,
> we know what directory the cache file belongs to.) So you can move your
> directories all around the drive, or mount them in different places, and
> things should continue working.
>
> pat
More information about the Fontconfig
mailing list