Commit Graph

119 Commits

Author SHA1 Message Date
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
Akira TAGOH 33b372e20f Update requirement for gettext 2019-03-23 06:49:32 +00:00
Akira TAGOH 844d8709a1 Bump version to 2.13.1 2018-08-30 17:20:15 +09:00
Akira TAGOH e62b922318 Bump the libtool revision 2018-08-30 08:18:25 +00:00
Akira TAGOH 0ce32973c8 Update the issue tracker URL 2018-08-28 19:22:11 +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 f665852df9 Add a testrunner for conf 2018-05-11 21:54:24 +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 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 2fc42310cd Bump version to 2.12.93 2018-02-15 22:01:54 +09:00
Akira TAGOH 91f0fd8460 Do not add cflags and libs coming from pkg-config file.
Using Requires is peferable way.

https://bugs.freedesktop.org/show_bug.cgi?id=104622
2018-01-14 19:49:06 +09:00
Akira TAGOH 7ac6af665b clean up 2018-01-09 13:52:28 +09:00
Behdad Esfahbod 94683a1255 Use FT_Done_MM_Var if available 2018-01-08 09:55:41 +00:00
Akira TAGOH 97488fd725 export GETTEXTDATADIR to refer the local .its/.loc file instead of using --its option 2018-01-06 18:55:00 +09:00
Akira TAGOH b2da36e922 Use the native ITS support in gettext
and drop the dependency of itstool.
To get this working, need to patch out to fix a crash:
http://git.savannah.gnu.org/cgit/gettext.git/commit/?id=a0cab23332a254e3500cac2a3a984472d02180e5
2018-01-05 22:12:37 +09:00
Akira TAGOH d7d40b5aa8 Bump version to 2.12.92 2018-01-04 20:42:34 +09:00
Akira TAGOH 5cfd594c71 do not check the existence of itstool on win32 2018-01-02 19:04:45 +09:00
Akira TAGOH e83f8777d5 Disable uuid related code on Win32 2017-12-18 21:45:13 +09:00
Akira TAGOH bad64a7e1f Bump version to 2.12.91 2017-12-14 15:44:20 +09:00
Akira TAGOH 1f84aa196d Bump the libtool revision 2017-12-14 15:42:39 +09:00
Akira TAGOH 7b48fd3dd4 Use uuid-based cache filename if uuid is assigned to dirs 2017-11-20 17:37:22 +05:30
Akira TAGOH 64895e719d Add the check of PCF_CONFIG_OPTION_LONG_FAMILY_NAMES back
This isn't enabled by default in freetype so need to check it for testsuites
2017-11-20 17:29:39 +05:30
Akira TAGOH 676d8699cc Allow autoreconf through autopoint for gettext things 2017-11-16 11:31:02 +09:00
Akira TAGOH 9a0fcb948f Add the ruleset description support
Trying to address what these configuration files really do.
This change allows to see the short description that mention
the purpose of the content in the config file and obtain
them through API.

This change also encourage one who want to make some UI for
the user-specific configuration management. it is the main
purpose of this change for me though.

Aside from that, I've also made programs translatable. so
we see more dependencies on the build time for gettext,
and itstool to generate PO from xml.
2017-11-07 15:24:54 +09:00
Akira TAGOH 14d70d3a8a Bump version to 2.12.6 2017-10-17 16:48:50 +09:00
Akira TAGOH 3f96450be0 Update libtool revision 2017-10-17 16:48:41 +09:00
Behdad Esfahbod f504b2d6a1 Require freetype >= 2.8.1
2.8.0 had a bad bug with loading 'avar' table.  Let's update requirement and cleanup
fifteen years of ifdefs!
2017-09-28 19:49:05 -04:00
Behdad Esfahbod 8f4c4d278d Remove blanks facility from the library
XML parser does not accept it anymore either.
2017-09-12 17:02:27 -04:00
Behdad Esfahbod 3bd4dd27bd Remove fc-glyphname 2017-09-12 17:02:27 -04:00
Akira TAGOH 4d3410bd08 Bump version to 2.12.5 2017-09-09 22:34:36 +09:00
Akira TAGOH 37339b7b2c Update libtool versioning 2017-09-09 22:34:21 +09:00
Akira TAGOH 01085e0785 Bump version to 2.12.4 2017-07-05 17:37:26 +09:00
Akira TAGOH c35e8df46d Update libtool revision 2017-07-05 17:20:00 +09:00
Jan Alexander Steffens (heftig) 7d949ececd Fix testing PCF_CONFIG_OPTION_LONG_FAMILY_NAMES (CFLAGS need to be right) 2017-06-01 11:40:06 +09:00
Akira TAGOH 690f822a1b Bump version to 2.12.3 2017-05-31 20:10:00 +09:00
Akira TAGOH d33be23029 Fix make check fail with freetype-2.7.1 and 2.8 with PCF_CONFIG_OPTION_LONG_FAMILY_NAMES enabled. 2017-05-31 20:08:16 +09:00
Akira TAGOH 3072f14bdd Bump version to 2.12.2 2017-05-31 16:39:44 +09:00
Akira TAGOH 6c4e11a73b Update libtool revision 2017-05-31 16:39:39 +09:00
Akira TAGOH 5ca2b1e6dc Update a bit for the changes in FreeType 2.7.1
Our test case relies on the outcome of the family property from freetype though,
it was changed in 2.7.1:

  - PCF family names are made more `colourful'; they now include the
    foundry  and information  whether they contain  wide characters.
    For example,  you no longer get `Fixed' but  rather `Sony Fixed'
    or `Misc Fixed Wide'.

https://bugs.freedesktop.org/show_bug.cgi?id=47704
2017-03-21 12:27:11 +09:00
Akira TAGOH 9878b306f6 Fix the build issue with gperf 3.1
To support the one of changes in gperf 3.1:
* The 'len' parameter of the hash function and of the lookup function is now
  of type 'size_t' instead of 'unsigned int'. This makes it safe to call these
  functions with strings of length > 4 GB, on 64-bit machines.
2017-02-23 21:39:10 +09:00
Akira TAGOH 6b222c52cd Bump version to 2.12.1 2016-08-05 14:47:02 +09:00
Akira TAGOH 68869149e3 Update libtool revision 2016-08-05 14:45:36 +09:00
Akira TAGOH 0ed1575917 Add --with-default-hinting to configure 2016-06-23 11:18:40 +09:00
Akira TAGOH 505712d1dc Bump version to 2.12.0 2016-06-15 20:10:38 +09:00
Akira TAGOH 13087e38ac Bump version to 2.11.95 2016-04-06 21:05:36 +09:00
Akira TAGOH 0cfa146e6b Update libtool revision 2016-04-06 21:04:42 +09:00
Akira TAGOH c88d9b6242 Fail on make runtime as needed instead of configure if no python installed
python isn't necessarily required to build fontconfig from tarball so that
generated fcblanks.h is available in tarball.

https://bugs.freedesktop.org/show_bug.cgi?id=91663
2015-08-17 16:37:23 +09:00
Akira TAGOH ad9f588050 Fix the broken cache more.
Take a look at the nano second in the mtime to figure out
if the cache needs to be updated if available.
and do the mutex lock between scanning and writing a cache
to avoid the conflict.

Also we don't need to scan directories again after writing
caches. so getting rid of the related code as well.

https://bugs.freedesktop.org/show_bug.cgi?id=69845

and for reference:

https://bugzilla.redhat.com/show_bug.cgi?id=1236034
2015-08-14 17:19:29 +09:00