Commit Graph

1348 Commits

Author SHA1 Message Date
Akira TAGOH 4a741e9a0a Fix the build fail on Solaris
It's introduced by 0ac6c98294.
Use lstat() and S_ISDIR() to check if it's the directory or not
if there are no d_type in struct dirent.
2012-05-30 18:30:49 +09:00
Mikhail Gusarov 0ac6c98294 Fix cache aging for fonts on FAT filesystem under Linux
Windows does not update mtime of directory on FAT filesystem when
file is added to it or removed from it. Fontconfig uses mtime of
directory to check cache file aging and hence fails to detect
newly added or recently removed files.

This changeset detects FAT filesystem (currently implemented for
Linux) and adds generating checksum of directory entries instead
of using mtime which guarantees proper cache rebuild.

For non-FAT filesystems this patch adds single syscall per directory
which is negligeable overhead.

This fixes bug https://bugs.freedesktop.org/show_bug.cgi?id=25535

Signed-off-by: Mikhail Gusarov <dottedmag@dottedmag.net>
2012-05-28 16:46:04 +09:00
Akira TAGOH dc2da23e69 Move statfs/statvfs wrapper to fcstat.c and add a test for the mtime broken fs
just rework to share the efforts between FcIsFsMmapSafe() and FcIsFsMtimeBroken().
2012-05-28 16:46:01 +09:00
Mikhail Gusarov 6a83c1ad40 Move FcStat to separate compilation unit
FcStat() logic is quite complicated in presence of various semi-broken operating
systems and filesystems, split it out in order to make it a bit easier.

Signed-off-by: Mikhail Gusarov <dottedmag@dottedmag.net>
2012-05-28 16:01:00 +09:00
Akira TAGOH 26160366d7 fcatomic: fallback to create a directory with FcAtomicLock
link(2) might be failed on the filesystem that doesn't support
the hard link. e.g. FcAtomicLock() always fails on FAT filesystem
when link(2) is available.
So that may be a good idea to fallback if link(2) is failed.
2012-05-28 15:59:33 +09:00
Akira TAGOH 2837c63876 Bug 33644 - Fontconfig doesn't match correctly in <test>
Warn if the multiple values is set to <test>, including the case of
in <alias> because the behavior isn't intuitive since so many users
is asking for a help to get things working for their expectation.

Use multiple <match>s or <alias>es for OR operator and
multiple <test>s for AND operator.
2012-05-25 13:11:25 +09:00
Akira TAGOH 794fb0bd6a Correct the example
Enclose the string with <string> in <test>
2012-05-21 13:37:54 +09:00
Akira TAGOH 8c255fb185 Bug 20411 - fontconfig doesn't match FreeDesktop directories specs
Allows reading configuration files, fonts and cache files from
the directories where the XDG Base Directory Specification defines.

the old directories are still in the configuration files for
the backward compatibility.
2012-05-18 11:12:50 +09:00
Akira TAGOH bc4517d8e5 Bug 19128 - Handling whitespace in aliases
Add a new attribute `ignore-blanks' to <test>.
When this is set to "true", any blanks in the string will be ignored
on comparison.  This takes effects for compare="eq" or "not_eq" only.

Also changed the behavior of the comparison on <alias> too.
2012-05-14 12:06:12 +09:00
Akira TAGOH 5ac12c0e94 fcarch.c: get rid of the duplicate definition of FC_MAX
FC_MAX is also available in src/fcint.h
2012-05-10 16:47:09 +09:00
Akira TAGOH cc9d572d3e fonts.conf: keeps same binding for alternatives
Since the binding is affected to the score, the replacement should
have same binding to avoid the unexpected estimation.
2012-05-10 16:36:10 +09:00
Keith Packard d81407611b Deal with architectures where ALIGNOF_DOUBLE < 4
This patch isn't really tested as I don't have such a machine, but I
have a bug report that on m68k machines, double values are aligned on
smaller than 4 byte boundaries. If ALIGNOF_DOUBLE < sizeof(int),
the "expected" sizeof of FcValue is miscomputed. Use the maximum of 4
(sizeof (int)) and ALIGNOF_DOUBLE when computing the expected size of
FcValue.

Signed-off-by: Keith Packard <keithp@keithp.com>
2012-05-02 12:01:38 +09:00
Keith Packard e41474e925 Extra ',' in AC_ARG_WITH(arch causes arch to never be autodetected
Commit 87d7b82a98 reformatted this
part of the configure script, accidentally introducing a spurious
comma.

Signed-off-by: Keith Packard <keithp@keithp.com>
2012-05-02 12:00:53 +09:00
Akira TAGOH d2718257f9 Output more verbose debugging log to show where to insert the element into the value list 2012-05-01 20:22:17 +09:00
Akira TAGOH 7d65f9f514 Bug 39278 - make usage of mmap optional
Stop using mmap() if the cache file is stored on NFS.
also added FONTCONFIG_USE_MMAP environment variable to enforce the use of
or not the use of mmap(2) regardless of what the filesystem the cache files
are stored on.
2012-04-25 16:38:01 +09:00
Akira TAGOH f30a5d7637 Disable iconv support anyway... 2012-04-25 16:21:33 +09:00
Akira TAGOH 7587d1c99d Bug 27765 - FcMatch() returns style in wrong language
Add "namelang" object to obtain the localized name in the font regardless
of the lang object. it's applied to "familylang", "stylelang" and
"fullnamelang" alltogether. this would helps if one wants to enforce
selecting them in the specific language if any.  the default value for
the namelang object is determined from current locale.
2012-04-24 12:44:56 +09:00
Akira TAGOH 526f0da93f Add --enable-iconv option to configure
Disable iconv support by default, which provide a feature to convert
non-Unicode SFNT names to UTF-8.
2012-04-24 11:40:51 +09:00
Akira TAGOH 06d6b7c312 Create CACHEDIR.TAG when fc-cache is run or only when the cache directory is created at the runtime.
Also add FcCacheCreateTagFile() API to do create CACHEDIR.TAG on the cache
directory.
2012-04-23 11:26:32 +09:00
Akira TAGOH 25ccc3f3d2 Bug 47721 - Add ChromeOS fonts to 30-metric-aliases.conf 2012-04-23 11:16:02 +09:00
Akira TAGOH 7069d717e9 C++11 requires a space between literal and identifier
Reported by Buganini
2012-04-22 21:40:44 +09:00
Akira TAGOH 22dc546090 Fix a build issue again when no regex functions available
Reported by Jon TURNEY
2012-04-20 20:12:24 +09:00
Akira TAGOH 9fa7b7c8f2 Rework to avoid adding the unexpected value to ICONV_CFLAGS and ICONV_LIBS 2012-04-20 11:17:41 +09:00
Akira TAGOH dd2a3d3520 Bug 25151 - Move cleanCacheDirectory() from fc-cache.c into
the library

Add FcDirCacheScan() API to clean up the cache files in the directory.
2012-04-18 12:55:23 +09:00
Keith Packard 9e62fcedfe Use posix_fadvise to speed startup
Given that fontconfig will scan all of the cache file data during the
first font search, ask the kernel to start reading the pages right away.

Signed-off-by: Keith Packard <keithp@keithp.com>
2012-04-17 12:20:25 +09:00
Akira TAGOH 94c2cc58a0 doc: Fix a typo of the environment variable name. 2012-04-16 20:25:52 +09:00
Akira TAGOH c5714bcf90 Add --with-expat, --with-expat-includes and --with-expat-lib back. 2012-04-13 11:09:04 +09:00
Akira TAGOH 470e92c9db Bug 27526 - Compatibility fix for old windows sytems
Patch from Gianluigi Tiesi
2012-04-12 14:01:25 +09:00
Akira TAGOH ac6271dbac Bug 48573 - platform without regex do not have also REG_XXX defines
Fix a build issue on the platforms where regex isn't available
2012-04-12 11:01:12 +09:00
Akira TAGOH 9231d79ad1 Bug 28491 - Allow matching on FC_FILE
Allow :file=/path/to/font/file on matching
2012-04-11 16:36:36 +09:00
Akira TAGOH 2589207cfd Bug 26830 - Add search for libiconv non-default directory
Add --with-libiconv, --with-libiconv-includes and --with-libiconv-lib
to specify the directory where libiconv might be installed.
2012-04-10 18:45:31 +09:00
Akira TAGOH ddefa5021f Bug 22862 - <alias> ignores <match> <test>s
Allow to use the test elements in the alias element.
2012-04-06 11:14:42 +09:00
Akira TAGOH e181ab4de5 Bug 29341 - Make some fontconfig paths configurable
Add configure options to set the directory to be installed:
  --with-templatedir for the configuration files a.k.a.
    /etc/fonts/conf.avail
  --with-baseconfigdir for fonts.conf etc a.k.a. /etc/fonts
  --with-configdir for the active configuration files a.k.a.
    /etc/fonts/conf.d
  --with-xmldir for fonts.dtd etc

and the default path for templatedir is changed to
${datadir}/fontconfig/conf.avail
2012-04-05 12:23:49 +09:00
Akira TAGOH bb02899d9f Use pkgconfig to check builddeps 2012-04-02 15:38:27 +09:00
Akira TAGOH 87d7b82a98 Use AC_HELP_STRING instead of formatting manually 2012-04-02 14:32:44 +09:00
Akira TAGOH d3e3f4a46d doc: Add contains and not_contains operators and elements 2012-03-30 18:09:14 +09:00
Akira TAGOH 9279f71a3a Bug 24729 - [ne_NP] Fix ortho file
further update for ne.orth

Patch from Pravin Satpute.
2012-03-30 11:52:25 +09:00
Akira TAGOH 9fe7c986c6 Bug 48020 - Fix for src/makealias on Solaris 10
Use the command substitution `command` instead of $(command) for
Solaris 10.
2012-03-29 15:43:38 +09:00
Akira TAGOH becbdaebe3 Move workaround macros for fat binaries into the separate header file 2012-03-29 12:50:47 +09:00
Akira TAGOH fe6ba5e5c5 Fix the hardcoded cache file suffix 2012-03-28 16:27:46 +09:00
Akira TAGOH 4a060729a1 fcpat: Increase the number of buckets in the shared string hash table
This is a reasonably conservative increase in the number of buckets in the hash
table to 251.  After FcInit(), there are 240 shared strings in use on my system
(from configuration files I assume).  The hash value is stored in each link in
the chains so comparison are actually not very expensive.  This change should
reduce the average length of chains by a factor of 8.  With the reference
counted strings, it should keep the average length of chains to about 2.  The
number of buckets is prime so as not to rely too much on the quality of the
hash function.

https://bugs.freedesktop.org/show_bug.cgi?id=17832#c5

Patch from Karl Tomlinson
2012-03-28 13:42:01 +09:00
Akira TAGOH d8dcff7b96 Bug 17832 - Memory leaks due to FcStrStaticName use for external patterns
Use the reference-counted strings instead of the static strings

Patch from Karl Tomlinson
2012-03-28 13:42:01 +09:00
Akira TAGOH ea1c6ea337 Fix a memory leak in FcDirScanConfig() 2012-03-27 21:06:36 +09:00
Akira TAGOH 1aaf8b773d Bug 17722 - Don't overwrite user's configurations in default config
Use "append" to avoid overwriting the user configuration.
This presumes most clients may takes care of the first value only.
2012-03-26 10:58:18 +09:00
Akira TAGOH 900675d0b0 Bug 47703 - SimSun default family
40-nonlatin.conf: SimSun should be serif but not sans-serif.

http://www.microsoft.com/typography/fonts/family.aspx?FID=37

Patch from Petr Gajdos
2012-03-22 19:57:47 +09:00
Akira TAGOH 92ac054ce5 fcmatch: Set FcResultMatch at the end if the return value is valid.
In the previous code, the result of 'result' in the argument for
FcFontSetSort() and FcFontSetMatch() wasn't predictable and not reliable to
check if the return value is valid or not. this change is to ensure if it's
performed successfully.
2012-03-22 19:15:27 +09:00
Akira TAGOH 1db3e9cdd8 fc-cache: improvement of the fix for Bug#39914.
Use sizeof() instead of strlen() and use stdio.
2012-03-22 12:36:34 +09:00
Akira TAGOH 4f7f3bf9f7 Bug 39914 - Please tag the cache directory with CACHEDIR.TAG
fc-cache: Create CACHEDIR.TAG at the top of the cache directory.

Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2012-03-21 16:06:37 +09:00
Jeremy Huddleston 8cc4498122 fcarch: Check for architecture signature at compile time rather than configure time
https://bugs.freedesktop.org/show_bug.cgi?id=20208

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
2012-03-21 11:59:01 +09:00
Akira TAGOH e1ffb3dcd4 Get rid of the prerequisites from the sufix rules
Thanks to Adam Sampson for pointing this out.
2012-03-16 23:18:23 +09:00