Commit Graph

1230 Commits

Author SHA1 Message Date
Akira TAGOH 8c44becd45 Fix failing the check of prep table in some fonts 2019-07-30 11:06:19 +00:00
Akira TAGOH 80047ed8e8 Add FC_FONT_HAS_HINT property to see if font has hinting or not.
This may helps to enable autohint only when font doesn't have any hinting
2019-07-29 10:19:26 +00:00
Akira TAGOH e2f9f28aed Fix a memory leak in FcFreeTypeQuery*()
Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/170
2019-07-26 04:59:54 +00:00
Akira TAGOH 1a0391c099 Fix memory leaks 2019-07-23 10:54:36 +00:00
Akira TAGOH 957625bafa Fix the fail on fc-cache
Fallback code to UUID-based cache name was broken.

Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/169
2019-07-23 10:53:16 +00:00
Akira TAGOH 36f46ba720 FcConfigParseAndLoad*() should returns false on config errors
Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/168

Reported by Lawrence D'Oliveiro
2019-07-22 05:35:21 +00:00
Akira TAGOH 2960391699 Add English name first into a cache
In some cases, non-English languages might appears first in current order.
and when having English name with non-English language ID like Google Noto CJK TC,
English name with English language ID will be dropped due to duplicate.

This fixes that issue.
2019-07-09 06:40:29 +00:00
Akira TAGOH a57f22bf6d Fix a typo 2019-07-09 05:54:32 +00:00
Akira TAGOH cb3e6ff4d7 Improve the performance a bit 2019-07-08 13:26:49 +00:00
Akira TAGOH 322131f433 Fix a crash when running with FC_DEBUG=256
Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/167
2019-07-02 04:59:52 +00:00
Akira TAGOH 83840fd1fa Fix obtaining real path from pre-defined names for Win32
Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/166
2019-06-26 15:28:41 +09:00
Egmont Koblinger f2d4291d12 Fix the linear interpolation during weight mapping
Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/164
2019-06-19 11:55:06 +02:00
Akira TAGOH c0dc76268b Fix a typo on masking face id
Most of functionality should be moved to FcFreeTypeQueryAll()
for varfonts now though, if doing the same to FcFreeTypeQuery()
returns Null pattern because of inappropriate masking.

This might be not that big deal for varfonts support. but

Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/162

Reported by Kevin Scott
2019-06-18 05:58:17 +00:00
Akira TAGOH 66b0af41b8 Fix endianness on generating MD5 cache name 2019-06-10 10:57:05 +00:00
Akira TAGOH 76e899700b No need to remap for uuid based 2019-04-04 11:57:13 +00:00
Akira TAGOH 7f61838435 Fallback uuid-based name to read a cache if no MD5-based cache available 2019-04-04 10:59:47 +00:00
Akira TAGOH 13d2a47d79 Fix unexpected cache name by double-slash in path 2019-04-04 06:47:34 +00:00
Akira TAGOH faec0b51db Don't show salt in debugging message if salt is null 2019-04-04 05:04:17 +00:00
Akira TAGOH 91114d18c3 Allow overriding salt with new one coming later 2019-04-03 12:02:09 +00:00
Akira TAGOH d1acc73f23 Oops, Terminate string 2019-04-03 12:02:09 +00:00
Akira TAGOH fc9f706ecb Add some debugging output 2019-04-03 12:02:09 +00:00
Akira TAGOH cb1df8cb28 Don't warn if path can't be converted with prefix 2019-04-03 12:02:09 +00:00
Akira TAGOH ad3f335ccf Fix make check fail on MinGW again 2019-04-03 12:02:09 +00:00
Akira TAGOH 8e2c85fe81 Use alternative function for realpath on Win32 2019-04-03 12:02:09 +00:00
Akira TAGOH b1bcc0cbb2 Fix build issues on MinGW 2019-04-03 12:02:09 +00:00
Akira TAGOH 2e8ce63514 Add salt attribute to dir and remap-dir elements
'salt' attribute affects a cache filename to generate different name from directory name.
This is useful when sharing caches with host on sandbox and/or give a filename differently:

    <dir salt="randomdata">/usr/share/fonts</dir>
    <remap-dir as-path="/usr/share/fonts" salt="salt for /usr/share/fonts on host">/run/host/fonts</remap-dir>

Applications can read caches as-is for fonts on /run/host/fonts where is mounted from host.
and write a cache for their own fonts on /usr/share/fonts with different name.
2019-04-03 12:02:09 +00:00
Akira TAGOH def1d00036 Add reset-dirs element
This element removes all of fonts directories where added by
dir elements. it is useful to override fonts dirs from system
to their own dirs only.
2019-04-03 12:02:09 +00:00
Akira TAGOH acc017e672 Drop unnecessary line to include uuid.h 2019-04-03 12:02:09 +00:00
Akira TAGOH 2e09c62ba1 Trim the last slash
This fixes MD5 wrongly generated.
2019-04-03 12:02:09 +00:00
Akira TAGOH a563a1802e Add new element remap-dir instead of extending dir element 2019-04-03 12:02:09 +00:00
Akira TAGOH 500e77a01d Drop a line to include uuid.h 2019-04-03 12:02:09 +00:00
Keith Packard c4324f54ee Replace UUID file mechanism with per-directory 'map' attribute [v2]
The UUID files would be placed in each font directory to provide the
unique cache name, independent of path, for that directory. The UUID
files are undesireable for a couple of reasons:

 1) They must be placed in the font directories to be useful. This
    requires modifying the font directories themselves, introducing
    potential visible timestamp changes when running multiple
    applications, and makes the cache processing inconsistent between
    applications with permission to write to the font directories and
    applications without such permission.

 2) The UUID contents were generated randomly, which makes the font
    cache not reproducible across multiple runs.

One proposed fix for 2) is to make the UUID dependent on the font
directory path, but once we do that, we can simply use the font
directory path itself as the key as the original MD5-based font cache
naming mechanism did.

The goal of the UUID file mechanism was to fix startup time of
flatpaks; as the font path names inside the flatpak did not match the
font path names in the base system, the font cache would need to be
reconstructed the first time the flatpak was launched.

The new mechanism for doing this is to allow each '<dir>' element in
the configuration include a 'map' attribute. When looking for a cache
file for a particular directory, if the directory name starts with the
contents of the <dir> element, that portion of the name will be
replaced with the value of the 'map' attribute.

Outside of the flatpak, nothing need change -- fontconfig will build
cache files using real directory names.

Inside the flatpak, the custom fonts.conf file will now include
mappings such as this:

	<dir map="/usr/share/fonts">/run/host/fonts</dir>

When scanning the directory /run/host/fonts/ttf, fontconfig will
use the name /usr/share/fonts/ttf as the source for building the cache
file name.

The existing FC_FILE replacement code used for the UUID-based
implementation continues to correctly adapt font path names seen by
applications.

v2:
	Leave FcDirCacheCreateUUID stub around to avoid removing
	public API function.

	Document 'map' attribute of <dir> element in
	fontconfig-user.sgml

	Suggested-by: Akira TAGOH <akira@tagoh.org>

Signed-off-by: Keith Packard <keithp@keithp.com>
2019-04-03 12:02:09 +00:00
Keith Packard 67e9c12c5a Fetch FONTCONFIG_SYSROOT in FcConfigCreate
This saves the value of FONTCONFIG_SYSROOT in the config instead of
having to call getenv every time we need this value.

This also uses 'realpath' to construct a canonical path to sysroot,
eliminating symlinks and relative path names.

Signed-off-by: Keith Packard <keithp@keithp.com>
2019-04-03 12:02:09 +00:00
Akira TAGOH 97fa77d27f Reset errno to do error handling properly
This fixes the weird behavior when running with SOURCE_DATE_EPOCH=0:

Fontconfig: SOURCE_DATE_EPOCH: strtoull: No such file or directory: 0
2019-04-03 11:49:42 +00:00
Akira TAGOH 98099ffc9f Ifdef'ed unnecessary code for Win32
Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/147
2019-03-22 07:47:33 +00:00
Robert Yang 586e35450e src/fccache.c: Fix define for HAVE_POSIX_FADVISE
Otherwise, there would be build errors in the following 2 cases:
* define HAVE_POSIX_FADVISE
Or:
* undef HAVE_POSIX_FADVISE

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
2019-01-25 03:48:26 +00:00
Akira TAGOH 699d6e4d84 Fix a crash with invalid matrix element
Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/140
2019-01-23 05:59:34 +00:00
Akira TAGOH b047e29954 Fix a dereference of a null pointer
When exiting from for loop by not satisfying the condition of `(s = next[i])` at FcCacheRemoveUnlocked()
referring s->alloated will be invalid.
2018-11-30 10:42:26 +00:00
Akira TAGOH a57647e155 covscan fix: get rid of unnecessary condition check 2018-11-30 07:41:16 +00:00
Akira TAGOH 65c7427c01 Warn when constant name is used for unexpected object
This fixes the sort of weird things like `fc-match :size=rgb` done without any errors.
This might be annoyed but the error messages should helps to fix an application bug or
suggest more useful constant names to fontconfig.

Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/137
2018-11-30 07:04:22 +00:00
Akira TAGOH 9d5149ac41 Fix FcFontList doesn't return a font with FC_COLOR=true
"color" property has a value more than 1 because the value of FT_HAS_COLOR
is directly set to it. this seems breaking the behavior of FcFontList with FC_COLOR=true
because it is more than FcDontCare.

So changing comparison that way.
2018-11-27 09:39:15 +00:00
Akira TAGOH 648e0cf3d5 Use FC_PATH_MAX instead of PATH_MAX
Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/131
2018-11-06 16:33:03 +09:00
Behdad Esfahbod f7036d589b Fix name-table language code mapping for Mongolian 2018-10-25 07:31:44 +00:00
Keith Packard 5f12f564f8 Do not remove UUID file when a scanned directory is empty
Because FcDirCacheDeleteUUID does not reset the modification time on
the directory, and because FcDirCacheRead unconditionally creates the
UUID file each time it is run, any empty directory in the cache will
get its timestamp changed each time the cache for that directory is
read.

Instead, just leave the UUID file around as it is harmless.

The alternative would be to only create the UUID file after the cache
has been created and the directory has been discovered to be
non-empty, but that would delay the creation of the UUID file.

Signed-off-by: Keith Packard <keithp@keithp.com>
2018-10-25 16:02:55 +09:00
Akira TAGOH 5f5ec5676c Do not try updating mtime when unlink was failed 2018-10-05 02:32:09 +00:00
Akira TAGOH ff5b49be2b Do not update mtime when removing .uuid file
This avoids a situation triggers updating caches on a directory where .uuid file was removed.

Resolves: https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/107
2018-10-05 02:32:07 +00:00
Akira TAGOH e4788c5a96 add missing the case of prefix="default" as documented 2018-10-04 08:07:09 +00:00
Akira TAGOH 1aa8b700c3 Add more prefix support in <dir> element
Added two prefix modes:
  "relative" that makes the relative path be relative to current file
  "cwd" for relative to current working directory which implies current behavior.

Resolves: https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/15
2018-10-02 10:12:14 +00:00
Akira TAGOH 806fd4c2c5 Fix the issue that '~' wasn't extracted to the proper homedir
'~' in the filename was extracted to the home directory name in FcConfigFilename() though,
this behavior was broken by d1f48f11. this change fixes it back to the correct behavior.

https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/110
2018-09-04 09:55:20 +00:00
Akira TAGOH 8208f99fa1 Fix the build issue with --enable-static
Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/109
2018-09-03 07:24:42 +00:00