Commit Graph

2136 Commits

Author SHA1 Message Date
Tom Anderson d1f48f11d5 Return canonicalized paths from FcConfigRealFilename
FcConfigRealFilename() follows symlinks, but the link may be relative to the
directory containing the link.  For example, on my system, I have this file:

/etc/fonts/conf.d/99-language-selector-zh.conf ->
    ../conf.avail/99-language-selector-zh.conf

Since /etc/fonts/conf.d is probably not in PATH, open()ing the file would fail.
This change makes FcConfigRealFilename() return the canonicalized filename
instead.  So for the example above, it would return:

/etc/fonts/conf.avail/99-language-selector-zh.conf

This was causing bad font rendering in Chromium [1] after the regression I
introduced in 7ad010e80b.

[1] https://bugs.chromium.org/p/chromium/issues/detail?id=857511
2018-07-16 18:00:35 +02:00
Behdad Esfahbod 48e9e5f4f0 Use FT_HAS_COLOR 2018-07-16 17:59:54 +02:00
Matthieu Herrb 5a46d572c0 FcCacheFindByStat(): fix checking of nanoseconds field. 2018-07-10 12:27:16 +09:00
Tom Anderson 6cc99d6a82 Fix heap use-after-free 2018-06-13 17:05:54 +09:00
Akira TAGOH f5dd8512bd Remove .uuid when no font files exists on a directory
https://bugs.freedesktop.org/show_bug.cgi?id=106632
2018-06-11 17:03:46 +09:00
Tom Anderson 096e8019be Fix CFI builds
CFI [1] is a dynamic analysis tool that checks types at runtime.  It reports an
error when using a function with signature eg. (void (*)(char*)) as
(void (*)(void*)).  This change adds some wrapper functions to avoid this issue.
In optimized builds, the functions should get optimized away.

[1] https://clang.llvm.org/docs/ControlFlowIntegrity.html
2018-06-11 16:02:57 +09:00
Akira TAGOH d1771cfbd1 Update CaseFolding.txt to Unicode 11 2018-06-08 21:16:15 +09:00
Akira TAGOH 3fa8381336 Add a test case for bz#106618 2018-05-25 15:24:44 +09:00
Akira TAGOH 14c23a5715 Fix double-free 2018-05-25 15:20:10 +09:00
Alexander Larsson 3ea70f9368 Cache: Remove alias_table
There is really no need for this anymore

https://bugs.freedesktop.org/show_bug.cgi?id=106618
2018-05-25 14:43:06 +09:00
Alexander Larsson c42402d0b8 Cache: Rewrite relocated paths in earlier
This changes the rewriting of the FC_FILE values for relocated caches to an earlier stage
while reading the cache. This is better, because it means all APIs will report the
rewritten paths, not just the once that use the list apis.

We do this by detecting the relocated case and duplicating the FcPattern and FcPatternElm
in an cache allocation (which will die with the cache) and then reusing the FcValueLists
from the cache.

This means that in the rewritten case we will use some more memory, but not the full
size of the cache. In a test here I had 800k of relocated caches, but ~200k of wasted
on duplicating the objects.

This should fix https://bugs.freedesktop.org/show_bug.cgi?id=106618
2018-05-25 14:42:52 +09:00
Alexander Larsson a63b9c622e Add FcCacheAllocate() helper
This lets you allocate a chunk of memory that will be freed when the cache
is freed.

https://bugs.freedesktop.org/show_bug.cgi?id=106618
2018-05-25 14:42:05 +09:00
Akira TAGOH 94080c3d48 Fix -Wstringop-truncation warning 2018-05-25 14:02:58 +09:00
Akira TAGOH 684c3ce685 Fix leaks 2018-05-25 13:51:10 +09:00
Chris Lamb f098adac54 Ensure cache checksums are deterministic
Whilst working on the Reproducible Builds[0] effort, we noticed that
fontconfig generates unreproducible cache files.

This is due to fc-cache uses the modification timestamps of each
directory in the "checksum" and "checksum_nano" members of the _FcCache
struct. This is so that it can identify which cache files are valid
and/or require regeneration.

This patch changes the behaviour of the checksum calculations to prefer
the value of the SOURCE_DATE_EPOCH[1] environment variable over the
directory's own mtime. This variable can then be exported by build
systems to ensure reproducible output.

If SOURCE_DATE_EPOCH is not set or is newer than the mtime of the
directory, the existing behaviour is unchanged.

This work was sponsored by Tails[2].

 [0] https://reproducible-builds.org/
 [1] https://reproducible-builds.org/specs/source-date-epoch/
 [2] https://tails.boum.org/
2018-05-16 16:06:46 +09:00
Akira TAGOH 0b85e77ede Bug 106459 - fc-cache doesn't use -y option for .uuid files
https://bugs.freedesktop.org/show_bug.cgi?id=106459
2018-05-13 16:21:58 +09:00
Akira TAGOH cfb21c7d85 Bug 106497 - better error description when problem reading font configuration
https://bugs.freedesktop.org/show_bug.cgi?id=106497
2018-05-13 14:48:10 +09:00
Akira TAGOH af964f7897 Add a test case for 90-synthetic.conf 2018-05-11 22:15:39 +09:00
Akira TAGOH f665852df9 Add a testrunner for conf 2018-05-11 21:54:24 +09:00
Akira TAGOH 307639cff1 Bug 43367 - RFE: iterator to peek objects in FcPattern
Add various APIs to obtain things in FcPattern through the iterator

https://bugs.freedesktop.org/show_bug.cgi?id=43367
2018-05-11 20:48:30 +09:00
Akira TAGOH 454923709a Change the emboldening logic again
enable emboldening when request was >= bold and font was <= medium

https://bugs.freedesktop.org/show_bug.cgi?id=106460
2018-05-11 12:14:26 +09:00
Tom Anderson 730deada8c Add FONTCONFIG_SYSROOT environment variable 2018-05-05 17:57:21 +09:00
Akira TAGOH c78afa9066 Fix typo in doc
https://bugs.freedesktop.org/show_bug.cgi?id=106128
2018-04-19 11:45:45 +09:00
Tom Anderson 7ad010e80b Use realfilename for FcOpen in _FcConfigParse
realfilename is the file name after sysroot adjustments.  It should be used
instead of filename in the call to FcOpen() which forwards the name directly to
open().

Though I don't explicitly request a sysroot, I was getting error messages saying
"failed reading config file".  This CL fixes the error spam.
2018-04-17 13:49:41 +09:00
Tom Anderson c60ed9ef66 Fix undefined-shift UBSAN errors
The expression "1 << 31" will cause UBSAN to complain with this error message:
runtime error: left shift of 1 by 31 places cannot be represented in type 'int'

The same operation on unsigned types is fine, however.  This CL replaces the
strings "1 <<" with "1U <<".
2018-04-16 15:23:20 +02:00
Behdad Esfahbod a8a6efa805 Share name-mapping across instances
Continuation of previous commit.

Makes scanning Voto Serif GX fast again.
2018-03-31 19:19:36 +02:00
Behdad Esfahbod fa13f8835c Fix name scanning
In 161c738 I switched from linear name scanning to binary searching.
That, however, ignored the fact that there might be more than one
name table entry for each pair we want to query.

To fix that and retain bsearch, I now get all name entries first,
sort them, and use for bsearching.

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

This makes scaning Voto Serif GX twice slower though, since we are
creating and sorting the list for each instance. In the next commit,
I'll share this list across different instances to fix this.
2018-03-31 18:36:20 +02:00
Akira TAGOH 31269e3589 Do not ship fcobjshash.h 2018-03-28 18:54:37 +09:00
Akira TAGOH 2cf2e79cb6 Fix make check fail when srcdir != builddir. 2018-03-28 18:54:11 +09:00
Behdad Esfahbod 58f52853d5 Minor: fix warnings 2018-03-15 07:51:06 -07:00
Akira TAGOH 2938e4d72d call setlocale 2018-03-15 12:54:02 +09:00
Akira TAGOH 98eaef69af Leave the locale setting to applications
https://bugs.freedesktop.org/show_bug.cgi?id=105492
2018-03-15 12:36:46 +09:00
Akira TAGOH fb7be6d605 Add a testcase for FcNameParse 2018-03-14 21:42:11 +09:00
Akira TAGOH 4699406a68 Add the value of the constant name to the implicit object in the pattern
For objects which has been changed the object type to FcTypeRange.

https://bugs.freedesktop.org/show_bug.cgi?id=105415
2018-03-14 18:32:30 +09:00
Akira TAGOH 923b5be626 Do not override locale if already set by app
https://bugs.freedesktop.org/show_bug.cgi?id=105492
2018-03-14 12:35:05 +09:00
Akira TAGOH 198358dd8f Allow the constant names in the range
https://bugs.freedesktop.org/show_bug.cgi?id=105415
2018-03-12 11:49:58 +09:00
Akira TAGOH af687139f2 Add uuid to Requires.private in .pc only when pkgconfig macro found it 2018-03-10 20:47:54 +09:00
Akira TAGOH 07bd14c5c7 Fix the build issue again on MinGW with enabling nls 2018-03-09 11:55:43 +09:00
Akira TAGOH bb50f62b58 Use the builtin uuid for OSX
https://bugs.freedesktop.org/show_bug.cgi?id=105366
2018-03-08 18:19:32 +09:00
Akira TAGOH f075ca1aea Bump version to 2.13.0 2018-03-06 12:31:12 +09:00
Akira TAGOH 24b4a57193 Bump the libtool revision 2018-03-06 12:31:09 +09:00
Akira TAGOH 8c96285d21 Initialize an array explicitly
Patch from Kurt Kartaltepe
2018-03-02 13:30:00 +09:00
Akira TAGOH e300d863f5 Fix a build issue on MinGW with enabling nls 2018-03-02 13:19:38 +09:00
Akira TAGOH 5d32ee914b Add Simplified Chinese translations
https://bugs.freedesktop.org/show_bug.cgi?id=105123
2018-02-19 13:22:20 +09:00
Akira TAGOH 2fc42310cd Bump version to 2.12.93 2018-02-15 22:01:54 +09:00
Akira TAGOH 147b083851 Add missing files to ship 2018-02-15 22:01:45 +09:00
Akira TAGOH 0394cb7829 Ensure the user config dir is available in the list of config dirs on the fallback config 2018-02-05 13:31:00 +09:00
Akira TAGOH 34b5c949d5 Do not mix up font dirs into the list of config dirs 2018-02-05 12:47:01 +09:00
Olivier Crête 5710377301 Fix cross-compilation by passing CPPFLAGS to CPP 2018-02-01 20:11:19 +09:00
Akira TAGOH ef748b39e0 Take effects on dir, cachedir, acceptfont, and rejectfont only when loading
Those elements takes effects immediately during parsing config files so makes them conditional to ignore on scanning.
2018-01-23 22:27:17 +09:00