1. 03 Apr, 2019 6 commits
    • Keith Packard's avatar
      Replace UUID file mechanism with per-directory 'map' attribute [v2] · c4324f54
      Keith Packard authored
      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's avatarAkira TAGOH <akira@tagoh.org>
      Signed-off-by: Keith Packard's avatarKeith Packard <keithp@keithp.com>
      c4324f54
    • Keith Packard's avatar
      Remove UUID-related tests · 4cde12bf
      Keith Packard authored
      Remove test-hash
      Remove UUID tests from run-test.sh
      Signed-off-by: Keith Packard's avatarKeith Packard <keithp@keithp.com>
      4cde12bf
    • Keith Packard's avatar
      Add delays to test-bz106632, check UptoDate separately · a8c4fc5e
      Keith Packard authored
      On a file system with one-second time stamps, extra delays are needed
      between cache modification operations to ensure that fontconfig isn't
      fooled.
      
      And, when the timestamps are checked correctly, we need to make sure
      that FcConfigUptoDate returns false whenever we change a font
      directory, so separate that out from the call to reinitialize the core
      config.
      Signed-off-by: Keith Packard's avatarKeith Packard <keithp@keithp.com>
      a8c4fc5e
    • Keith Packard's avatar
      Remove '-u' option from run-test-conf.sh · 2a81aa51
      Keith Packard authored
      This causes a failure when evaluating $OSTYPE on systems which do not
      set that variable (everything but Msys/MinGW)
      Signed-off-by: Keith Packard's avatarKeith Packard <keithp@keithp.com>
      2a81aa51
    • Keith Packard's avatar
      Fetch FONTCONFIG_SYSROOT in FcConfigCreate · 67e9c12c
      Keith Packard authored
      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's avatarKeith Packard <keithp@keithp.com>
      67e9c12c
    • Akira TAGOH's avatar
      Reset errno to do error handling properly · 97fa77d2
      Akira TAGOH authored
      This fixes the weird behavior when running with SOURCE_DATE_EPOCH=0:
      
      Fontconfig: SOURCE_DATE_EPOCH: strtoull: No such file or directory: 0
      97fa77d2
  2. 23 Mar, 2019 5 commits
  3. 22 Mar, 2019 4 commits
  4. 19 Mar, 2019 1 commit
  5. 15 Mar, 2019 1 commit
  6. 27 Feb, 2019 1 commit
  7. 19 Feb, 2019 1 commit
    • Ben Wagner's avatar
      Better document sysroot. · 40e27f5d
      Ben Wagner authored
      All non trivial users of FontConfig must use FcConfigGetSysRoot to
      resolve file properties in patterns. In order to support sysroot the
      filename in the file property must be relative to the sysroot, but the
      value of the file property in a pattern is directly exposed, making it
      impossible for FontConfig to resolve the filename itself transparently.
      40e27f5d
  8. 25 Jan, 2019 1 commit
  9. 23 Jan, 2019 1 commit
  10. 30 Nov, 2018 5 commits
  11. 27 Nov, 2018 2 commits
  12. 26 Nov, 2018 1 commit
  13. 19 Nov, 2018 1 commit
  14. 15 Nov, 2018 1 commit
  15. 13 Nov, 2018 1 commit
  16. 06 Nov, 2018 2 commits
  17. 29 Oct, 2018 1 commit
  18. 25 Oct, 2018 3 commits
  19. 05 Oct, 2018 2 commits