This is a cross-compiled (i686 to mips) system. fc-cache works (i.e. creates cache files in /usr/local/var/cache/fontconfig) if I delete the /usr/local/etc/fonts/fonts.conf file, however if I leave the file, it does not scan directories - it just says (fc-cache -f -v): fc-cache: succeeded If I call it with the directory (fc-cache -f -v /usr/local/share/fonts/default/Type1), it says: /usr/local/share/fonts/default/Type1/: caching, 32 fonts, 0 dirs /usr/local/share/fonts/default/Type1/: failed to write cache fc-cache: failed Here's the configuration: cd $(FONTCONFIGDIR) && CC=mipsel-linux-gcc NM=mipsel-linux-nm \ AR=mipsel-linux-ar ./configure --host=mipsel-linux \ --prefix=$(TARGROOT) \ CFLAGS_FOR_BUILD="-I$(PREFIX)/include/freetype2 -I$(PREFIX)/include" \ --with-freetype-config=$(PREFIX)/bin/freetype-config \ --enable-libxml2 \ --with-arch=mipsel-linux --without-x \ LIBXML2_CFLAGS=-I$(PREFIX)/include/libxml2 \ LIBXML2_LIBS="-L$(PREFIX)/lib/ -lxml2 -lm -lz TARGROOT=/usr/local PREFIX=/some/path/where/i/build/usr/local Installed on host with: $(MAKE) -C $(FONTCONFIGDIR) install prefix=$(PREFIX) fc_cachedir=$(PREFIX)/var/cache/fontconfig Here's the fonts.conf (and the default fonts.dtd is in the same dir): <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <!-- /etc/fonts/fonts.conf file to configure system font access --> <fontconfig> <!-- DO NOT EDIT THIS FILE. IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED. LOCAL CHANGES BELONG IN 'local.conf'. The intent of this standard configuration file is to be adequate for most environments. If you have a reasonably normal environment and have found problems with this configuration, they are probably things that others will also want fixed. Please submit any problems to the fontconfig bugzilla system located at fontconfig.org Note that the normal 'make install' procedure for fontconfig is to replace any existing fonts.conf file with the new version. Place any local customizations in local.conf which this file references. Keith Packard --> <!-- Font directory list --> <dir>/usr/local/share/fonts/default</dir> <dir>/usr/local/share/fonts/afms</dir> <dir>/usr/local/share/fonts/bitmap-fonts</dir> <dir>/usr/local/share/fonts/bitstream-vera</dir> <!-- Font cache directory list --> <!-- <cachedir>/usr/local/var/cache/fontconfig</cachedir> <cachedir>~/.fontconfig</cachedir> --> <!-- Accept deprecated 'mono' alias, replacing it with 'monospace' --> <match target="pattern"> <test qual="any" name="family"> <string>mono</string> </test> <edit name="family" mode="assign"> <string>monospace</string> </edit> </match> <!-- Accept alternate 'sans serif' spelling, replacing it with 'sans-serif' --> <match target="pattern"> <test qual="any" name="family"> <string>sans serif</string> </test> <edit name="family" mode="assign"> <string>sans-serif</string> </edit> </match> <!-- Accept deprecated 'sans' alias, replacing it with 'sans-serif' --> <match target="pattern"> <test qual="any" name="family"> <string>sans</string> </test> <edit name="family" mode="assign"> <string>sans-serif</string> </edit> </match> <!-- Load local system customization file --> <include ignore_missing="yes">conf.d</include> <config> <!-- These are the default Unicode chars that are expected to be blank in fonts. All other blank chars are assumed to be broken and won't appear in the resulting charsets --> <blank> <int>0x0020</int> <!-- SPACE --> <int>0x00A0</int> <!-- NO-BREAK SPACE --> <int>0x00AD</int> <!-- SOFT HYPHEN --> <int>0x034F</int> <!-- COMBINING GRAPHEME JOINER --> <int>0x0600</int> <!-- ARABIC NUMBER SIGN --> <int>0x0601</int> <!-- ARABIC SIGN SANAH --> <int>0x0602</int> <!-- ARABIC FOOTNOTE MARKER --> <int>0x0603</int> <!-- ARABIC SIGN SAFHA --> <int>0x06DD</int> <!-- ARABIC END OF AYAH --> <int>0x070F</int> <!-- SYRIAC ABBREVIATION MARK --> <int>0x115F</int> <!-- HANGUL CHOSEONG FILLER --> <int>0x1160</int> <!-- HANGUL JUNGSEONG FILLER --> <int>0x1680</int> <!-- OGHAM SPACE MARK --> <int>0x17B4</int> <!-- KHMER VOWEL INHERENT AQ --> <int>0x17B5</int> <!-- KHMER VOWEL INHERENT AA --> <int>0x180E</int> <!-- MONGOLIAN VOWEL SEPARATOR --> <int>0x2000</int> <!-- EN QUAD --> <int>0x2001</int> <!-- EM QUAD --> <int>0x2002</int> <!-- EN SPACE --> <int>0x2003</int> <!-- EM SPACE --> <int>0x2004</int> <!-- THREE-PER-EM SPACE --> <int>0x2005</int> <!-- FOUR-PER-EM SPACE --> <int>0x2006</int> <!-- SIX-PER-EM SPACE --> <int>0x2007</int> <!-- FIGURE SPACE --> <int>0x2008</int> <!-- PUNCTUATION SPACE --> <int>0x2009</int> <!-- THIN SPACE --> <int>0x200A</int> <!-- HAIR SPACE --> <int>0x200B</int> <!-- ZERO WIDTH SPACE --> <int>0x200C</int> <!-- ZERO WIDTH NON-JOINER --> <int>0x200D</int> <!-- ZERO WIDTH JOINER --> <int>0x200E</int> <!-- LEFT-TO-RIGHT MARK --> <int>0x200F</int> <!-- RIGHT-TO-LEFT MARK --> <int>0x2028</int> <!-- LINE SEPARATOR --> <int>0x2029</int> <!-- PARAGRAPH SEPARATOR --> <int>0x202A</int> <!-- LEFT-TO-RIGHT EMBEDDING --> <int>0x202B</int> <!-- RIGHT-TO-LEFT EMBEDDING --> <int>0x202C</int> <!-- POP DIRECTIONAL FORMATTING --> <int>0x202D</int> <!-- LEFT-TO-RIGHT OVERRIDE --> <int>0x202E</int> <!-- RIGHT-TO-LEFT OVERRIDE --> <int>0x202F</int> <!-- NARROW NO-BREAK SPACE --> <int>0x205F</int> <!-- MEDIUM MATHEMATICAL SPACE --> <int>0x2060</int> <!-- WORD JOINER --> <int>0x2061</int> <!-- FUNCTION APPLICATION --> <int>0x2062</int> <!-- INVISIBLE TIMES --> <int>0x2063</int> <!-- INVISIBLE SEPARATOR --> <int>0x206A</int> <!-- INHIBIT SYMMETRIC SWAPPING --> <int>0x206B</int> <!-- ACTIVATE SYMMETRIC SWAPPING --> <int>0x206C</int> <!-- INHIBIT ARABIC FORM SHAPING --> <int>0x206D</int> <!-- ACTIVATE ARABIC FORM SHAPING --> <int>0x206E</int> <!-- NATIONAL DIGIT SHAPES --> <int>0x206F</int> <!-- NOMINAL DIGIT SHAPES --> <int>0x3000</int> <!-- IDEOGRAPHIC SPACE --> <int>0x3164</int> <!-- HANGUL FILLER --> <int>0xFEFF</int> <!-- ZERO WIDTH NO-BREAK SPACE --> <int>0xFFA0</int> <!-- HALFWIDTH HANGUL FILLER --> <int>0xFFF9</int> <!-- INTERLINEAR ANNOTATION ANCHOR --> <int>0xFFFA</int> <!-- INTERLINEAR ANNOTATION SEPARATOR --> <int>0xFFFB</int> <!-- INTERLINEAR ANNOTATION TERMINATOR --> </blank> <!-- Rescan configuration every 30 seconds when FcFontSetList is called --> <rescan> <int>30</int> </rescan> </config> </fontconfig>
Please try 2.5.0 and see if that works; it has new cache validation code that should (I hope) solve the 'failed to write cache' issue.
It sure fixes the font cache problem, but it still fails to scan the directory when the fonts.conf file exists. - it just says succeeded. Also, I it give me this message: Fontconfig warning: adding <cachedir>/usr/local/var/cache/fontconfig</cachedir> when I've taken that very line and added it to the fonts.conf. Using strace -e trace=open reveals that it DOES open the /usr/local/etc/fonts/fonts.conf file just prior to giving that warning. It's like it silently fails reading the config somehow.
Here's the strace output + the appropriate config file lines. (this is all 2.5.0, btw) open("/usr/local/etc/fonts/fonts.conf", O_RDONLY) = 3 Fontconfig warning: no <cachedir> elements found. Check configuration. Fontconfig warning: adding <cachedir>/usr/local/var/cache/fontconfig</cachedir> .. .. <!-- Font directory list --> <cachedir>/usr/local/var/cache/fontconfig</cachedir> <dir>/usr/local/share/fonts/default</dir>
I'm afraid you'll have to debug the library to figure out why it isn't bothering to actually parse the config file. There are a few XML library reasons why no error message would be printed; perhaps there's something amiss there.
Please retest with version 2.5 as that has some significant changes in how cache files are written and verified.
I'll have to assume that this has been fixed.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.