From 16209d7cfc325a5deb1fd45c8c852985e8ee546b Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Mon, 20 Jan 2020 13:12:24 +0900 Subject: [PATCH 01/73] Drop font(:lang=...) from %{=pkgkit} format. Reference: rhbz#1792463 --- fontconfig-drop-lang-from-pkgkit-format.patch | 12 ++++++++++++ fontconfig.spec | 7 ++++++- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 fontconfig-drop-lang-from-pkgkit-format.patch diff --git a/fontconfig-drop-lang-from-pkgkit-format.patch b/fontconfig-drop-lang-from-pkgkit-format.patch new file mode 100644 index 0000000..8b77308 --- /dev/null +++ b/fontconfig-drop-lang-from-pkgkit-format.patch @@ -0,0 +1,12 @@ +diff -pruN fontconfig-2.13.92.orig/src/fcformat.c fontconfig-2.13.92/src/fcformat.c +--- fontconfig-2.13.92.orig/src/fcformat.c 2018-07-19 12:14:39.000000000 +0900 ++++ fontconfig-2.13.92/src/fcformat.c 2020-01-20 13:05:33.626227767 +0900 +@@ -78,7 +78,7 @@ + #define FCCAT_FORMAT "\"%{file|basename|cescape}\" %{index} \"%{-file{%{=unparse|cescape}}}\"" + #define FCMATCH_FORMAT "%{file:-|basename}: \"%{family[0]:-}\" \"%{style[0]:-}\"" + #define FCLIST_FORMAT "%{?file{%{file}: }}%{-file{%{=unparse}}}" +-#define PKGKIT_FORMAT "%{[]family{font(%{family|downcase|delete( )})\n}}%{[]lang{font(:lang=%{lang|downcase|translate(_,-)})\n}}" ++#define PKGKIT_FORMAT "%{[]family{font(%{family|downcase|delete( )})\n}}" + + + static void diff --git a/fontconfig.spec b/fontconfig.spec index 6ba81f5..99805dc 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.13.92 -Release: 3%{?dist} +Release: 4%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code # fc-case/CaseFolding.txt is in the UCD @@ -21,6 +21,7 @@ Patch0: %{name}-sleep-less.patch Patch1: %{name}-required-freetype-version.patch Patch2: %{name}-score-hint-on-match.patch Patch3: %{name}-fix-1744377.patch +Patch4: %{name}-drop-lang-from-pkgkit-format.patch BuildRequires: expat-devel BuildRequires: freetype-devel >= %{freetype_version} @@ -162,6 +163,10 @@ HOME=/root /usr/bin/fc-cache -s %doc fontconfig-devel.txt fontconfig-devel %changelog +* Mon Jan 20 2020 Akira TAGOH - 2.13.92-4 +- Drop font(:lang=...) from %%{=pkgkit} format. + Reference: rhbz#1792463 + * Wed Aug 28 2019 Akira TAGOH - 2.13.92-3 - Do not return false on FcConfigParseAndLoad*() if complain is set to false. Resolves: rhbz#1744377 From 87b690f6f7ed9c3c88d31a475643860be86b19fe Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Mon, 20 Jan 2020 13:17:02 +0900 Subject: [PATCH 02/73] Get rid of the unnecessary builddep --- fontconfig.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/fontconfig.spec b/fontconfig.spec index 99805dc..2271b25 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -26,7 +26,6 @@ Patch4: %{name}-drop-lang-from-pkgkit-format.patch BuildRequires: expat-devel BuildRequires: freetype-devel >= %{freetype_version} BuildRequires: fontpackages-devel -BuildRequires: libuuid-devel BuildRequires: autoconf automake libtool gettext BuildRequires: gperf From dee5c096c285ea3f71ebe51b212fec584cdf25f6 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Tue, 28 Jan 2020 18:48:00 +0000 Subject: [PATCH 03/73] - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- fontconfig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontconfig.spec b/fontconfig.spec index 2271b25..a6fd7eb 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.13.92 -Release: 4%{?dist} +Release: 5%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code # fc-case/CaseFolding.txt is in the UCD @@ -162,6 +162,9 @@ HOME=/root /usr/bin/fc-cache -s %doc fontconfig-devel.txt fontconfig-devel %changelog +* Tue Jan 28 2020 Fedora Release Engineering - 2.13.92-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + * Mon Jan 20 2020 Akira TAGOH - 2.13.92-4 - Drop font(:lang=...) from %%{=pkgkit} format. Reference: rhbz#1792463 From 0455f7a71daa5231026d9051518a920b3dd5f2e0 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Thu, 30 Jan 2020 18:53:45 +0900 Subject: [PATCH 04/73] Fix reading the outdated caches. Apply a patch to make it MT-safe more. --- fontconfig-mt.patch | 1439 ++++++++++++++++++++++++++++ fontconfig-read-latest-cache.patch | 228 +++++ fontconfig.spec | 8 +- 3 files changed, 1674 insertions(+), 1 deletion(-) create mode 100644 fontconfig-mt.patch create mode 100644 fontconfig-read-latest-cache.patch diff --git a/fontconfig-mt.patch b/fontconfig-mt.patch new file mode 100644 index 0000000..31a3748 --- /dev/null +++ b/fontconfig-mt.patch @@ -0,0 +1,1439 @@ +From b5bcf61fe789e66df2de609ec246cb7e4d326180 Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Fri, 1 Nov 2019 14:43:42 +0900 +Subject: [PATCH 3/9] Use FcConfigReference/Destroy appropriately instead of + FcConfigGetCurrent + +This may improves to be MT-safe. + +Reported at https://bugs.chromium.org/p/chromium/issues/detail?id=1004254 +--- + doc/fcconfig.fncs | 20 ++++ + fontconfig/fontconfig.h | 4 +- + src/fccache.c | 73 +++++++++--- + src/fccfg.c | 237 ++++++++++++++++++++++++--------------- + src/fcdir.c | 31 ++++- + src/fcinit.c | 15 ++- + src/fclist.c | 25 +++-- + src/fcmatch.c | 48 ++++---- + test/Makefile.am | 5 + + test/run-test.sh | 15 +++ + test/test-crbug1004254.c | 116 +++++++++++++++++++ + 11 files changed, 436 insertions(+), 153 deletions(-) + create mode 100644 test/test-crbug1004254.c + +diff --git a/doc/fcconfig.fncs b/doc/fcconfig.fncs +index 82769d5..e709b54 100644 +--- a/doc/fcconfig.fncs ++++ b/doc/fcconfig.fncs +@@ -174,6 +174,10 @@ Returns one of the two sets of fonts from the configuration as specified + by set. This font set is owned by the library and must + not be modified or freed. + If config is NULL, the current configuration is used. ++ ++This function isn't MT-safe. FcConfigReference must be called ++before using this and then FcConfigDestroy when ++the return value is no longer referenced. + @@ + + @RET@ FcBlanks * +@@ -407,6 +411,10 @@ parse error, semantic error or allocation failure. Otherwise returns FcTrue. + Obtains the system root directory in 'config' if available. All files + (including file properties in patterns) obtained from this 'config' are + relative to this system root directory. ++ ++This function isn't MT-safe. FcConfigReference must be called ++before using this and then FcConfigDestroy when ++the return value is no longer referenced. + @SINCE@ 2.10.92 + @@ + +@@ -433,6 +441,10 @@ When setting this on the current config this causes changing current config + @PURPOSE@ Initialize the iterator + @DESC@ + Initialize 'iter' with the first iterator in the config file information list. ++ ++This function isn't MT-safe. FcConfigReference must be called ++before using this and then FcConfigDestroy when the relevant ++values are no longer referenced. + @SINCE@ 2.12.91 + @@ + +@@ -444,6 +456,10 @@ Initialize 'iter' with the first iterator in the config file information list. + @DESC@ + Set 'iter' to point to the next node in the config file information list. + If there is no next node, FcFalse is returned. ++ ++This function isn't MT-safe. FcConfigReference must be called ++before using FcConfigFileInfoIterInit and then ++FcConfigDestroy when the relevant values are no longer referenced. + @SINCE@ 2.12.91 + @@ + +@@ -459,5 +475,9 @@ If there is no next node, FcFalse is returned. + Obtain the filename, the description and the flag whether it is enabled or not + for 'iter' where points to current configuration file information. + If the iterator is invalid, FcFalse is returned. ++ ++This function isn't MT-safe. FcConfigReference must be called ++before using FcConfigFileInfoIterInit and then ++FcConfigDestroy when the relevant values are no longer referenced. + @SINCE@ 2.12.91 + @@ +diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h +index 2f0e8cf..c795245 100644 +--- a/fontconfig/fontconfig.h ++++ b/fontconfig/fontconfig.h +@@ -375,7 +375,7 @@ FcPublic FcBool + FcDirCacheClean (const FcChar8 *cache_dir, FcBool verbose); + + FcPublic void +-FcCacheCreateTagFile (const FcConfig *config); ++FcCacheCreateTagFile (FcConfig *config); + + FcPublic FcBool + FcDirCacheCreateUUID (FcChar8 *dir, +@@ -437,7 +437,7 @@ FcPublic FcBlanks * + FcConfigGetBlanks (FcConfig *config); + + FcPublic FcStrList * +-FcConfigGetCacheDirs (const FcConfig *config); ++FcConfigGetCacheDirs (FcConfig *config); + + FcPublic int + FcConfigGetRescanInterval (FcConfig *config); +diff --git a/src/fccache.c b/src/fccache.c +index c565560..d8f1dab 100644 +--- a/src/fccache.c ++++ b/src/fccache.c +@@ -58,11 +58,15 @@ FcDirCacheDeleteUUID (const FcChar8 *dir, + { + FcBool ret = FcTrue; + #ifndef _WIN32 +- const FcChar8 *sysroot = FcConfigGetSysRoot (config); ++ const FcChar8 *sysroot; + FcChar8 *target, *d; + struct stat statb; + struct timeval times[2]; + ++ config = FcConfigReference (config); ++ if (!config) ++ return FcFalse; ++ sysroot = FcConfigGetSysRoot (config); + if (sysroot) + d = FcStrBuildFilename (sysroot, dir, NULL); + else +@@ -94,6 +98,7 @@ FcDirCacheDeleteUUID (const FcChar8 *dir, + bail: + FcStrFree (d); + #endif ++ FcConfigDestroy (config); + + return ret; + } +@@ -265,7 +270,13 @@ FcDirCacheUnlink (const FcChar8 *dir, FcConfig *config) + #endif + FcStrList *list; + FcChar8 *cache_dir; +- const FcChar8 *sysroot = FcConfigGetSysRoot (config); ++ const FcChar8 *sysroot; ++ FcBool ret = FcTrue; ++ ++ config = FcConfigReference (config); ++ if (!config) ++ return FcFalse; ++ sysroot = FcConfigGetSysRoot (config); + + FcDirCacheBasenameMD5 (config, dir, cache_base); + #ifndef _WIN32 +@@ -274,7 +285,10 @@ FcDirCacheUnlink (const FcChar8 *dir, FcConfig *config) + + list = FcStrListCreate (config->cacheDirs); + if (!list) +- return FcFalse; ++ { ++ ret = FcFalse; ++ goto bail; ++ } + + while ((cache_dir = FcStrListNext (list))) + { +@@ -304,8 +318,11 @@ FcDirCacheUnlink (const FcChar8 *dir, FcConfig *config) + FcDirCacheDeleteUUID (dir, config); + /* return FcFalse if something went wrong */ + if (cache_dir) +- return FcFalse; +- return FcTrue; ++ ret = FcFalse; ++bail: ++ FcConfigDestroy (config); ++ ++ return ret; + } + + static int +@@ -1041,10 +1058,15 @@ FcDirCacheLoad (const FcChar8 *dir, FcConfig *config, FcChar8 **cache_file) + { + FcCache *cache = NULL; + ++ config = FcConfigReference (config); ++ if (!config) ++ return NULL; + if (!FcDirCacheProcess (config, dir, + FcDirCacheMapHelper, + &cache, cache_file)) +- return NULL; ++ cache = NULL; ++ ++ FcConfigDestroy (config); + + return cache; + } +@@ -1055,13 +1077,16 @@ FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat) + int fd; + FcCache *cache; + struct stat my_file_stat; ++ FcConfig *config; + + if (!file_stat) + file_stat = &my_file_stat; + fd = FcDirCacheOpenFile (cache_file, file_stat); + if (fd < 0) + return NULL; +- cache = FcDirCacheMapFd (FcConfigGetCurrent (), fd, file_stat, NULL); ++ config = FcConfigReference (NULL); ++ cache = FcDirCacheMapFd (config, fd, file_stat, NULL); ++ FcConfigDestroy (config); + close (fd); + return cache; + } +@@ -1155,12 +1180,16 @@ FcBool + FcDirCacheValid (const FcChar8 *dir) + { + FcConfig *config; ++ FcBool ret; + +- config = FcConfigGetCurrent (); ++ config = FcConfigReference (NULL); + if (!config) + return FcFalse; + +- return FcDirCacheValidConfig (dir, config); ++ ret = FcDirCacheValidConfig (dir, config); ++ FcConfigDestroy (config); ++ ++ return ret; + } + + /* +@@ -1438,9 +1467,13 @@ FcDirCacheClean (const FcChar8 *cache_dir, FcBool verbose) + FcCache *cache; + struct stat target_stat; + const FcChar8 *sysroot; ++ FcConfig *config; + ++ config = FcConfigReference (NULL); ++ if (!config) ++ return FcFalse; + /* FIXME: this API needs to support non-current FcConfig */ +- sysroot = FcConfigGetSysRoot (NULL); ++ sysroot = FcConfigGetSysRoot (config); + if (sysroot) + dir = FcStrBuildFilename (sysroot, cache_dir, NULL); + else +@@ -1448,7 +1481,8 @@ FcDirCacheClean (const FcChar8 *cache_dir, FcBool verbose) + if (!dir) + { + fprintf (stderr, "Fontconfig error: %s: out of memory\n", cache_dir); +- return FcFalse; ++ ret = FcFalse; ++ goto bail; + } + if (access ((char *) dir, W_OK) != 0) + { +@@ -1525,8 +1559,10 @@ FcDirCacheClean (const FcChar8 *cache_dir, FcBool verbose) + } + + closedir (d); +- bail0: ++bail0: + FcStrFree (dir); ++bail: ++ FcConfigDestroy (config); + + return ret; + } +@@ -1968,15 +2004,20 @@ FcDirCacheCreateTagFile (const FcChar8 *cache_dir) + } + + void +-FcCacheCreateTagFile (const FcConfig *config) ++FcCacheCreateTagFile (FcConfig *config) + { + FcChar8 *cache_dir = NULL, *d = NULL; + FcStrList *list; +- const FcChar8 *sysroot = FcConfigGetSysRoot (config); ++ const FcChar8 *sysroot; ++ ++ config = FcConfigReference (config); ++ if (!config) ++ return; ++ sysroot = FcConfigGetSysRoot (config); + + list = FcConfigGetCacheDirs (config); + if (!list) +- return; ++ goto bail; + + while ((cache_dir = FcStrListNext (list))) + { +@@ -1992,6 +2033,8 @@ FcCacheCreateTagFile (const FcConfig *config) + if (d) + FcStrFree (d); + FcStrListDone (list); ++bail: ++ FcConfigDestroy (config); + } + + #define __fccache__ +diff --git a/src/fccfg.c b/src/fccfg.c +index 21ccd25..11dc876 100644 +--- a/src/fccfg.c ++++ b/src/fccfg.c +@@ -237,12 +237,12 @@ FcConfigUptoDate (FcConfig *config) + { + FcFileTime config_time, config_dir_time, font_time; + time_t now = time(0); ++ FcBool ret = FcTrue; ++ ++ config = FcConfigReference (config); + if (!config) +- { +- config = FcConfigGetCurrent (); +- if (!config) +- return FcFalse; +- } ++ return FcFalse; ++ + config_time = FcConfigNewestFile (config->configFiles); + config_dir_time = FcConfigNewestFile (config->configDirs); + font_time = FcConfigNewestFile (config->fontDirs); +@@ -258,13 +258,19 @@ FcConfigUptoDate (FcConfig *config) + fprintf (stderr, + "Fontconfig warning: Directory/file mtime in the future. New fonts may not be detected.\n"); + config->rescanTime = now; +- return FcTrue; ++ goto bail; + } + else +- return FcFalse; ++ { ++ ret = FcFalse; ++ goto bail; ++ } + } + config->rescanTime = now; +- return FcTrue; ++bail: ++ FcConfigDestroy (config); ++ ++ return ret; + } + + FcExpr * +@@ -291,11 +297,26 @@ FcConfigReference (FcConfig *config) + { + if (!config) + { +- config = FcConfigGetCurrent (); ++ /* Do not use FcConfigGetCurrent () for the purpose of obtaining current FcConfig here. ++ * because the reference counter must be increased before setting it to _fcConfig. ++ */ ++ retry: ++ config = fc_atomic_ptr_get (&_fcConfig); + if (!config) +- return 0; +- } ++ { ++ config = FcConfigCreate (); ++ FcRefInc (&config->ref); + ++ config = FcInitLoadOwnConfigAndFonts (config); ++ if (!fc_atomic_ptr_cmpexch (&_fcConfig, NULL, config)) ++ { ++ FcConfigDestroy (config); /* To decrease the refcount for the above one. */ ++ FcConfigDestroy (config); /* To destroy it actualy */ ++ goto retry; ++ } ++ return config; ++ } ++ } + FcRefInc (&config->ref); + + return config; +@@ -475,25 +496,32 @@ FcBool + FcConfigBuildFonts (FcConfig *config) + { + FcFontSet *fonts; ++ FcBool ret = FcTrue; + ++ config = FcConfigReference (config); + if (!config) +- { +- config = FcConfigGetCurrent (); +- if (!config) +- return FcFalse; +- } ++ return FcFalse; + + fonts = FcFontSetCreate (); + if (!fonts) +- return FcFalse; ++ { ++ ret = FcFalse; ++ goto bail; ++ } + + FcConfigSetFonts (config, fonts, FcSetSystem); + + if (!FcConfigAddDirList (config, FcSetSystem, config->fontDirs)) +- return FcFalse; ++ { ++ ret = FcFalse; ++ goto bail; ++ } + if (FcDebug () & FC_DBG_FONTSET) + FcFontSetPrint (fonts); +- return FcTrue; ++bail: ++ FcConfigDestroy (config); ++ ++ return ret; + } + + FcBool +@@ -537,13 +565,15 @@ FcConfigAddConfigDir (FcConfig *config, + FcStrList * + FcConfigGetConfigDirs (FcConfig *config) + { ++ FcStrList *ret; ++ ++ config = FcConfigReference (config); + if (!config) +- { +- config = FcConfigGetCurrent (); +- if (!config) +- return 0; +- } +- return FcStrListCreate (config->configDirs); ++ return NULL; ++ ret = FcStrListCreate (config->configDirs); ++ FcConfigDestroy (config); ++ ++ return ret; + } + + FcBool +@@ -579,13 +609,15 @@ FcConfigResetFontDirs (FcConfig *config) + FcStrList * + FcConfigGetFontDirs (FcConfig *config) + { ++ FcStrList *ret; ++ ++ config = FcConfigReference (config); + if (!config) +- { +- config = FcConfigGetCurrent (); +- if (!config) +- return 0; +- } +- return FcStrListCreate (config->fontDirs); ++ return NULL; ++ ret = FcStrListCreate (config->fontDirs); ++ FcConfigDestroy (config); ++ ++ return ret; + } + + static FcBool +@@ -670,15 +702,17 @@ FcConfigAddCacheDir (FcConfig *config, + } + + FcStrList * +-FcConfigGetCacheDirs (const FcConfig *config) ++FcConfigGetCacheDirs (FcConfig *config) + { ++ FcStrList *ret; ++ ++ config = FcConfigReference (config); + if (!config) +- { +- config = FcConfigGetCurrent (); +- if (!config) +- return 0; +- } +- return FcStrListCreate (config->cacheDirs); ++ return NULL; ++ ret = FcStrListCreate (config->cacheDirs); ++ FcConfigDestroy (config); ++ ++ return ret; + } + + FcBool +@@ -699,13 +733,15 @@ FcConfigAddConfigFile (FcConfig *config, + FcStrList * + FcConfigGetConfigFiles (FcConfig *config) + { ++ FcStrList *ret; ++ ++ config = FcConfigReference (config); + if (!config) +- { +- config = FcConfigGetCurrent (); +- if (!config) +- return 0; +- } +- return FcStrListCreate (config->configFiles); ++ return NULL; ++ ret = FcStrListCreate (config->configFiles); ++ FcConfigDestroy (config); ++ ++ return ret; + } + + FcChar8 * +@@ -784,25 +820,26 @@ FcConfigAddBlank (FcConfig *config FC_UNUSED, + int + FcConfigGetRescanInterval (FcConfig *config) + { ++ int ret; ++ ++ config = FcConfigReference (config); + if (!config) +- { +- config = FcConfigGetCurrent (); +- if (!config) +- return 0; +- } +- return config->rescanInterval; ++ return 0; ++ ret = config->rescanInterval; ++ FcConfigDestroy (config); ++ ++ return ret; + } + + FcBool + FcConfigSetRescanInterval (FcConfig *config, int rescanInterval) + { ++ config = FcConfigReference (config); + if (!config) +- { +- config = FcConfigGetCurrent (); +- if (!config) +- return FcFalse; +- } ++ return FcFalse; + config->rescanInterval = rescanInterval; ++ FcConfigDestroy (config); ++ + return FcTrue; + } + +@@ -1670,15 +1707,13 @@ FcConfigSubstituteWithPat (FcConfig *config, + FcBool retval = FcTrue; + FcTest **tst = NULL; + +- if (!config) +- { +- config = FcConfigGetCurrent (); +- if (!config) +- return FcFalse; +- } +- + if (kind < FcMatchKindBegin || kind >= FcMatchKindEnd) + return FcFalse; ++ ++ config = FcConfigReference (config); ++ if (!config) ++ return FcFalse; ++ + s = config->subst[kind]; + if (kind == FcMatchPattern) + { +@@ -1973,6 +2008,7 @@ bail1: + free (value); + if (tst) + free (tst); ++ FcConfigDestroy (config); + + return retval; + } +@@ -2290,12 +2326,9 @@ FcConfigGetFilename (FcConfig *config, + FcChar8 *file, *dir, **path, **p; + const FcChar8 *sysroot; + ++ config = FcConfigReference (config); + if (!config) +- { +- config = FcConfigGetCurrent (); +- if (!config) +- return NULL; +- } ++ return NULL; + sysroot = FcConfigGetSysRoot (config); + if (!url || !*url) + { +@@ -2306,7 +2339,10 @@ FcConfigGetFilename (FcConfig *config, + file = 0; + + if (FcStrIsAbsoluteFilename(url)) +- return FcConfigFileExists (sysroot, url); ++ { ++ file = FcConfigFileExists (sysroot, url); ++ goto bail; ++ } + + if (*url == '~') + { +@@ -2330,7 +2366,10 @@ FcConfigGetFilename (FcConfig *config, + { + path = FcConfigGetPath (); + if (!path) +- return NULL; ++ { ++ file = NULL; ++ goto bail; ++ } + for (p = path; *p; p++) + { + FcChar8 *s; +@@ -2347,6 +2386,9 @@ FcConfigGetFilename (FcConfig *config, + } + FcConfigFreePath (path); + } ++bail: ++ FcConfigDestroy (config); ++ + return file; + } + +@@ -2409,17 +2451,18 @@ FcConfigAppFontAddFile (FcConfig *config, + FcStrSet *subdirs; + FcStrList *sublist; + FcChar8 *subdir; ++ FcBool ret = FcTrue; + ++ config = FcConfigReference (config); + if (!config) +- { +- config = FcConfigGetCurrent (); +- if (!config) +- return FcFalse; +- } ++ return FcFalse; + + subdirs = FcStrSetCreateEx (FCSS_GROW_BY_64); + if (!subdirs) +- return FcFalse; ++ { ++ ret = FcFalse; ++ goto bail; ++ } + + set = FcConfigGetFonts (config, FcSetApplication); + if (!set) +@@ -2428,7 +2471,8 @@ FcConfigAppFontAddFile (FcConfig *config, + if (!set) + { + FcStrSetDestroy (subdirs); +- return FcFalse; ++ ret = FcFalse; ++ goto bail; + } + FcConfigSetFonts (config, set, FcSetApplication); + } +@@ -2436,7 +2480,8 @@ FcConfigAppFontAddFile (FcConfig *config, + if (!FcFileScanConfig (set, subdirs, file, config)) + { + FcStrSetDestroy (subdirs); +- return FcFalse; ++ ret = FcFalse; ++ goto bail; + } + if ((sublist = FcStrListCreate (subdirs))) + { +@@ -2447,7 +2492,10 @@ FcConfigAppFontAddFile (FcConfig *config, + FcStrListDone (sublist); + } + FcStrSetDestroy (subdirs); +- return FcTrue; ++bail: ++ FcConfigDestroy (config); ++ ++ return ret; + } + + FcBool +@@ -2456,17 +2504,18 @@ FcConfigAppFontAddDir (FcConfig *config, + { + FcFontSet *set; + FcStrSet *dirs; ++ FcBool ret = FcTrue; + ++ config = FcConfigReference (config); + if (!config) +- { +- config = FcConfigGetCurrent (); +- if (!config) +- return FcFalse; +- } ++ return FcFalse; + + dirs = FcStrSetCreateEx (FCSS_GROW_BY_64); + if (!dirs) +- return FcFalse; ++ { ++ ret = FcFalse; ++ goto bail; ++ } + + set = FcConfigGetFonts (config, FcSetApplication); + if (!set) +@@ -2475,7 +2524,8 @@ FcConfigAppFontAddDir (FcConfig *config, + if (!set) + { + FcStrSetDestroy (dirs); +- return FcFalse; ++ ret = FcFalse; ++ goto bail; + } + FcConfigSetFonts (config, set, FcSetApplication); + } +@@ -2485,23 +2535,26 @@ FcConfigAppFontAddDir (FcConfig *config, + if (!FcConfigAddDirList (config, FcSetApplication, dirs)) + { + FcStrSetDestroy (dirs); +- return FcFalse; ++ ret = FcFalse; ++ goto bail; + } + FcStrSetDestroy (dirs); +- return FcTrue; ++bail: ++ FcConfigDestroy (config); ++ ++ return ret; + } + + void + FcConfigAppFontClear (FcConfig *config) + { ++ config = FcConfigReference (config); + if (!config) +- { +- config = FcConfigGetCurrent (); +- if (!config) +- return; +- } ++ return; + + FcConfigSetFonts (config, 0, FcSetApplication); ++ ++ FcConfigDestroy (config); + } + + /* +diff --git a/src/fcdir.c b/src/fcdir.c +index 7d7b23c..693c845 100644 +--- a/src/fcdir.c ++++ b/src/fcdir.c +@@ -167,7 +167,16 @@ FcFileScan (FcFontSet *set, + const FcChar8 *file, + FcBool force FC_UNUSED) + { +- return FcFileScanConfig (set, dirs, file, FcConfigGetCurrent ()); ++ FcConfig *config; ++ FcBool ret; ++ ++ config = FcConfigReference (NULL); ++ if (!config) ++ return FcFalse; ++ ret = FcFileScanConfig (set, dirs, file, config); ++ FcConfigDestroy (config); ++ ++ return ret; + } + + /* +@@ -271,10 +280,19 @@ FcDirScan (FcFontSet *set, + const FcChar8 *dir, + FcBool force FC_UNUSED) + { ++ FcConfig *config; ++ FcBool ret; ++ + if (cache || !force) + return FcFalse; + +- return FcDirScanConfig (set, dirs, dir, force, FcConfigGetCurrent ()); ++ config = FcConfigReference (NULL); ++ if (!config) ++ return FcFalse; ++ ret = FcDirScanConfig (set, dirs, dir, force, config); ++ FcConfigDestroy (config); ++ ++ return ret; + } + + /* +@@ -353,12 +371,16 @@ FcDirCacheRescan (const FcChar8 *dir, FcConfig *config) + FcCache *new = NULL; + struct stat dir_stat; + FcStrSet *dirs; +- const FcChar8 *sysroot = FcConfigGetSysRoot (config); ++ const FcChar8 *sysroot; + FcChar8 *d = NULL; + #ifndef _WIN32 + int fd = -1; + #endif + ++ config = FcConfigReference (config); ++ if (!config) ++ return NULL; ++ sysroot = FcConfigGetSysRoot (config); + cache = FcDirCacheLoad (dir, config, NULL); + if (!cache) + goto bail; +@@ -401,6 +423,7 @@ bail1: + bail: + if (d) + FcStrFree (d); ++ FcConfigDestroy (config); + + return new; + } +@@ -413,6 +436,7 @@ FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config) + { + FcCache *cache = NULL; + ++ config = FcConfigReference (config); + /* Try to use existing cache file */ + if (!force) + cache = FcDirCacheLoad (dir, config, NULL); +@@ -420,6 +444,7 @@ FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config) + /* Not using existing cache file, construct new cache */ + if (!cache) + cache = FcDirCacheScan (dir, config); ++ FcConfigDestroy (config); + + return cache; + } +diff --git a/src/fcinit.c b/src/fcinit.c +index 5831a19..6f82ebd 100644 +--- a/src/fcinit.c ++++ b/src/fcinit.c +@@ -229,7 +229,8 @@ FcInitReinitialize (void) + FcBool + FcInitBringUptoDate (void) + { +- FcConfig *config = FcConfigGetCurrent (); ++ FcConfig *config = FcConfigReference (NULL); ++ FcBool ret = FcTrue; + time_t now; + + if (!config) +@@ -238,19 +239,23 @@ FcInitBringUptoDate (void) + * rescanInterval == 0 disables automatic up to date + */ + if (config->rescanInterval == 0) +- return FcTrue; ++ goto bail; + /* + * Check no more often than rescanInterval seconds + */ + now = time (0); + if (config->rescanTime + config->rescanInterval - now > 0) +- return FcTrue; ++ goto bail; + /* + * If up to date, don't reload configuration + */ + if (FcConfigUptoDate (0)) +- return FcTrue; +- return FcInitReinitialize (); ++ goto bail; ++ ret = FcInitReinitialize (); ++bail: ++ FcConfigDestroy (config); ++ ++ return ret; + } + + #define __fcinit__ +diff --git a/src/fclist.c b/src/fclist.c +index 494bdea..053803b 100644 +--- a/src/fclist.c ++++ b/src/fclist.c +@@ -491,11 +491,10 @@ FcFontSetList (FcConfig *config, + { + if (!FcInitBringUptoDate ()) + goto bail0; +- +- config = FcConfigGetCurrent (); +- if (!config) +- goto bail0; + } ++ config = FcConfigReference (config); ++ if (!config) ++ goto bail0; + FcListHashTableInit (&table); + + if (!os) +@@ -558,7 +557,7 @@ FcFontSetList (FcConfig *config, + */ + ret = FcFontSetCreate (); + if (!ret) +- goto bail0; ++ goto bail1; + for (i = 0; i < FC_LIST_HASH_SIZE; i++) + while ((bucket = table.buckets[i])) + { +@@ -570,6 +569,7 @@ FcFontSetList (FcConfig *config, + + if (destroy_os) + FcObjectSetDestroy (os); ++ FcConfigDestroy (config); + + return ret; + +@@ -577,6 +577,7 @@ bail2: + FcFontSetDestroy (ret); + bail1: + FcListHashTableCleanup (&table); ++ FcConfigDestroy (config); + bail0: + if (destroy_os) + FcObjectSetDestroy (os); +@@ -588,24 +589,26 @@ FcFontList (FcConfig *config, + FcPattern *p, + FcObjectSet *os) + { +- FcFontSet *sets[2]; ++ FcFontSet *sets[2], *ret; + int nsets; + + if (!config) + { + if (!FcInitBringUptoDate ()) + return 0; +- +- config = FcConfigGetCurrent (); +- if (!config) +- return 0; + } ++ config = FcConfigReference (config); ++ if (!config) ++ return NULL; + nsets = 0; + if (config->fonts[FcSetSystem]) + sets[nsets++] = config->fonts[FcSetSystem]; + if (config->fonts[FcSetApplication]) + sets[nsets++] = config->fonts[FcSetApplication]; +- return FcFontSetList (config, sets, nsets, p, os); ++ ret = FcFontSetList (config, sets, nsets, p, os); ++ FcConfigDestroy (config); ++ ++ return ret; + } + #define __fclist__ + #include "fcaliastail.h" +diff --git a/src/fcmatch.c b/src/fcmatch.c +index 78bcf7b..3bc352b 100644 +--- a/src/fcmatch.c ++++ b/src/fcmatch.c +@@ -845,7 +845,7 @@ FcFontSetMatch (FcConfig *config, + FcPattern *p, + FcResult *result) + { +- FcPattern *best; ++ FcPattern *best, *ret = NULL; + + assert (sets != NULL); + assert (p != NULL); +@@ -853,17 +853,16 @@ FcFontSetMatch (FcConfig *config, + + *result = FcResultNoMatch; + ++ config = FcConfigReference (config); + if (!config) +- { +- config = FcConfigGetCurrent (); +- if (!config) +- return 0; +- } ++ return NULL; + best = FcFontSetMatchInternal (sets, nsets, p, result); + if (best) +- return FcFontRenderPrepare (config, p, best); +- else +- return NULL; ++ ret = FcFontRenderPrepare (config, p, best); ++ ++ FcConfigDestroy (config); ++ ++ return ret; + } + + FcPattern * +@@ -873,19 +872,16 @@ FcFontMatch (FcConfig *config, + { + FcFontSet *sets[2]; + int nsets; +- FcPattern *best; ++ FcPattern *best, *ret = NULL; + + assert (p != NULL); + assert (result != NULL); + + *result = FcResultNoMatch; + ++ config = FcConfigReference (config); + if (!config) +- { +- config = FcConfigGetCurrent (); +- if (!config) +- return 0; +- } ++ return NULL; + nsets = 0; + if (config->fonts[FcSetSystem]) + sets[nsets++] = config->fonts[FcSetSystem]; +@@ -894,9 +890,11 @@ FcFontMatch (FcConfig *config, + + best = FcFontSetMatchInternal (sets, nsets, p, result); + if (best) +- return FcFontRenderPrepare (config, p, best); +- else +- return NULL; ++ ret = FcFontRenderPrepare (config, p, best); ++ ++ FcConfigDestroy (config); ++ ++ return ret; + } + + typedef struct _FcSortNode { +@@ -1183,7 +1181,7 @@ FcFontSort (FcConfig *config, + FcCharSet **csp, + FcResult *result) + { +- FcFontSet *sets[2]; ++ FcFontSet *sets[2], *ret; + int nsets; + + assert (p != NULL); +@@ -1191,18 +1189,18 @@ FcFontSort (FcConfig *config, + + *result = FcResultNoMatch; + ++ config = FcConfigReference (config); + if (!config) +- { +- config = FcConfigGetCurrent (); +- if (!config) +- return 0; +- } ++ return NULL; + nsets = 0; + if (config->fonts[FcSetSystem]) + sets[nsets++] = config->fonts[FcSetSystem]; + if (config->fonts[FcSetApplication]) + sets[nsets++] = config->fonts[FcSetApplication]; +- return FcFontSetSort (config, sets, nsets, p, trim, csp, result); ++ ret = FcFontSetSort (config, sets, nsets, p, trim, csp, result); ++ FcConfigDestroy (config); ++ ++ return ret; + } + #define __fcmatch__ + #include "fcaliastail.h" +diff --git a/test/Makefile.am b/test/Makefile.am +index e44aa0b..aae45cb 100644 +--- a/test/Makefile.am ++++ b/test/Makefile.am +@@ -42,6 +42,11 @@ test_pthread_LDADD = $(top_builddir)/src/libfontconfig.la + # We don't enable this test by default because it will require config and fonts + # to meaningfully test anything, and we are not installed yet. + #TESTS += test-pthread ++ ++check_PROGRAMS += test-crbug1004254 ++test_crbug1004254_LDADD = $(top_builddir)/src/libfontconfig.la ++# Disabling this for the same reason as above but trying to run in run-test.sh. ++#TESTS += test-crbug1004254 + endif + check_PROGRAMS += test-bz89617 + test_bz89617_CFLAGS = \ +diff --git a/test/run-test.sh b/test/run-test.sh +index 8ad09e3..e1ee6d0 100644 +--- a/test/run-test.sh ++++ b/test/run-test.sh +@@ -20,6 +20,8 @@ + # DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + # PERFORMANCE OF THIS SOFTWARE. ++set -e ++ + case "$OSTYPE" in + msys ) MyPWD=`pwd -W` ;; # On Msys/MinGW, returns a MS Windows style path. + * ) MyPWD=`pwd` ;; # On any other platforms, returns a Unix style path. +@@ -408,4 +410,17 @@ rm -rf $MYCACHEBASEDIR $MYCONFIG my-fonts.conf my-out my-out.expected + + fi # if [ "x$EXEEXT" = "x" ] + ++if [ -x $BUILDTESTDIR/test-crbug1004254 ]; then ++ dotest "MT-safe global config" ++ prep ++ curl -s -o $FONTDIR/noto.zip https://noto-website-2.storage.googleapis.com/pkgs/NotoSans-hinted.zip ++ (cd $FONTDIR; unzip noto.zip) ++ if [ -n ${SOURCE_DATE_EPOCH:-} ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then ++ touch -m -t "`date -d \"@${SOURCE_DATE_EPOCH}\" +%y%m%d%H%M.%S`" $FONTDIR ++ fi ++ $BUILDTESTDIR/test-crbug1004254 ++else ++ echo "No test-crbug1004254: skipped" ++fi ++ + rm -rf $FONTDIR $CACHEFILE $CACHEDIR $BASEDIR $FONTCONFIG_FILE out +diff --git a/test/test-crbug1004254.c b/test/test-crbug1004254.c +new file mode 100644 +index 0000000..1cc6fc7 +--- /dev/null ++++ b/test/test-crbug1004254.c +@@ -0,0 +1,116 @@ ++/* ++ * fontconfig/test/test-pthread.c ++ * ++ * Copyright © 2000 Keith Packard ++ * Copyright © 2013 Raimund Steger ++ * ++ * Permission to use, copy, modify, distribute, and sell this software and its ++ * documentation for any purpose is hereby granted without fee, provided that ++ * the above copyright notice appear in all copies and that both that ++ * copyright notice and this permission notice appear in supporting ++ * documentation, and that the name of the author(s) not be used in ++ * advertising or publicity pertaining to distribution of the software without ++ * specific, written prior permission. The authors make no ++ * representations about the suitability of this software for any purpose. It ++ * is provided "as is" without express or implied warranty. ++ * ++ * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, ++ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO ++ * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR ++ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, ++ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER ++ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR ++ * PERFORMANCE OF THIS SOFTWARE. ++ */ ++#include ++#include ++#include ++#include ++#include ++ ++struct thr_arg_s ++{ ++ int thr_num; ++}; ++ ++static void ++run_query (void) ++{ ++ FcPattern *pat = FcPatternCreate (), *match; ++ FcResult result; ++ ++ FcPatternAddString (pat, FC_FAMILY, "sans-serif"); ++ FcPatternAddBool (pat, FC_SCALABLE, FcTrue); ++ FcConfigSubstitute (NULL, pat, FcMatchPattern); ++ FcDefaultSubstitute (pat); ++ match = FcFontMatch (NULL, pat, &result); ++ if (result != FcResultMatch || !match) ++ { ++ fprintf (stderr, "ERROR: No matches found\n"); ++ } ++ if (match) ++ FcPatternDestroy (match); ++ FcPatternDestroy (pat); ++} ++ ++static void ++run_reinit (void) ++{ ++ if (!FcInitReinitialize ()) ++ { ++ fprintf (stderr, "ERROR: Reinitializing failed\n"); ++ } ++} ++ ++#define NTEST 3000 ++ ++static void * ++run_test_in_thread (void *arg) ++{ ++ struct thr_arg_s *thr_arg = (struct thr_arg_s *) arg; ++ int thread_num = thr_arg->thr_num; ++ ++ fprintf (stderr, "Worker %d: started (round %d)\n", thread_num % 2, thread_num / 2); ++ if ((thread_num % 2) == 0) ++ { ++ run_query (); ++ } ++ else ++ { ++ run_reinit (); ++ } ++ fprintf (stderr, "Worker %d: done (round %d)\n", thread_num % 2, thread_num / 2); ++ ++ return NULL; ++} ++ ++int ++main (int argc, char **argv) ++{ ++ pthread_t threads[NTEST]; ++ struct thr_arg_s thr_arg[NTEST]; ++ int i, j; ++ ++ for (i = 0; i < NTEST; i++) ++ { ++ int result; ++ ++ fprintf (stderr, "Thread %d (worker %d round %d): creating\n", i, i % 2, i / 2); ++ thr_arg[i].thr_num = i; ++ result = pthread_create (&threads[i], NULL, run_test_in_thread, ++ (void *) &thr_arg[i]); ++ if (result != 0) ++ { ++ fprintf (stderr, "Cannot create thread %d\n", i); ++ break; ++ } ++ } ++ for (j = 0; j < i; j++) ++ { ++ pthread_join(threads[j], NULL); ++ fprintf (stderr, "Joined thread %d\n", j); ++ } ++ FcFini (); ++ ++ return 0; ++} +-- +2.24.1 + +From aa8c8cfa9fb2563482336249e3f56459099fcf6e Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Sat, 2 Nov 2019 00:14:48 +0900 +Subject: [PATCH 4/9] Fix potential race condition in FcConfigSetCurrent and + FcConfigReference + +--- + src/fccache.c | 2 + + src/fccfg.c | 105 ++++++++++++++++++++++++++++++++++++++++++-------- + 2 files changed, 90 insertions(+), 17 deletions(-) + +diff --git a/src/fccache.c b/src/fccache.c +index d8f1dab..4744a84 100644 +--- a/src/fccache.c ++++ b/src/fccache.c +@@ -1085,6 +1085,8 @@ FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat) + if (fd < 0) + return NULL; + config = FcConfigReference (NULL); ++ if (!config) ++ return NULL; + cache = FcDirCacheMapFd (config, fd, file_stat, NULL); + FcConfigDestroy (config); + close (fd); +diff --git a/src/fccfg.c b/src/fccfg.c +index 11dc876..30f37af 100644 +--- a/src/fccfg.c ++++ b/src/fccfg.c +@@ -33,6 +33,49 @@ + #endif + + static FcConfig *_fcConfig; /* MT-safe */ ++static FcMutex *_lock; ++ ++static void ++lock_config (void) ++{ ++ FcMutex *lock; ++retry: ++ lock = fc_atomic_ptr_get (&_lock); ++ if (!lock) ++ { ++ lock = (FcMutex *) malloc (sizeof (FcMutex)); ++ FcMutexInit (lock); ++ if (!fc_atomic_ptr_cmpexch (&_lock, NULL, lock)) ++ { ++ FcMutexFinish (lock); ++ goto retry; ++ } ++ FcMutexLock (lock); ++ /* Initialize random state */ ++ FcRandom (); ++ return; ++ } ++ FcMutexLock (lock); ++} ++ ++static void ++unlock_config (void) ++{ ++ FcMutexUnlock (_lock); ++} ++ ++static void ++free_lock (void) ++{ ++ FcMutex *lock; ++ ++ lock = fc_atomic_ptr_get (&_lock); ++ if (lock && fc_atomic_ptr_cmpexch (&_lock, lock, NULL)) ++ { ++ FcMutexFinish (lock); ++ free (lock); ++ } ++} + + static FcConfig * + FcConfigEnsure (void) +@@ -44,8 +87,9 @@ retry: + { + config = FcInitLoadConfigAndFonts (); + +- if (!fc_atomic_ptr_cmpexch (&_fcConfig, NULL, config)) { +- FcConfigDestroy (config); ++ if (!config || !fc_atomic_ptr_cmpexch (&_fcConfig, NULL, config)) { ++ if (config) ++ FcConfigDestroy (config); + goto retry; + } + } +@@ -76,6 +120,7 @@ FcConfigFini (void) + FcConfig *cfg = fc_atomic_ptr_get (&_fcConfig); + if (cfg && fc_atomic_ptr_cmpexch (&_fcConfig, cfg, NULL)) + FcConfigDestroy (cfg); ++ free_lock (); + } + + static FcChar8 * +@@ -297,27 +342,31 @@ FcConfigReference (FcConfig *config) + { + if (!config) + { +- /* Do not use FcConfigGetCurrent () for the purpose of obtaining current FcConfig here. +- * because the reference counter must be increased before setting it to _fcConfig. ++ /* lock during obtaining the value from _fcConfig and count up refcount there, ++ * there are the race between them. + */ ++ lock_config (); + retry: + config = fc_atomic_ptr_get (&_fcConfig); + if (!config) + { +- config = FcConfigCreate (); +- FcRefInc (&config->ref); ++ unlock_config (); + +- config = FcInitLoadOwnConfigAndFonts (config); ++ config = FcInitLoadConfigAndFonts (); ++ if (!config) ++ goto retry; ++ lock_config (); + if (!fc_atomic_ptr_cmpexch (&_fcConfig, NULL, config)) + { +- FcConfigDestroy (config); /* To decrease the refcount for the above one. */ +- FcConfigDestroy (config); /* To destroy it actualy */ ++ FcConfigDestroy (config); + goto retry; + } +- return config; + } ++ FcRefInc (&config->ref); ++ unlock_config (); + } +- FcRefInc (&config->ref); ++ else ++ FcRefInc (&config->ref); + + return config; + } +@@ -529,20 +578,29 @@ FcConfigSetCurrent (FcConfig *config) + { + FcConfig *cfg; + ++ if (config) ++ { ++ if (!config->fonts[FcSetSystem]) ++ if (!FcConfigBuildFonts (config)) ++ return FcFalse; ++ FcRefInc (&config->ref); ++ } ++ ++ lock_config (); + retry: + cfg = fc_atomic_ptr_get (&_fcConfig); + + if (config == cfg) ++ { ++ unlock_config (); ++ if (config) ++ FcConfigDestroy (config); + return FcTrue; +- +- if (config && !config->fonts[FcSetSystem]) +- if (!FcConfigBuildFonts (config)) +- return FcFalse; ++ } + + if (!fc_atomic_ptr_cmpexch (&_fcConfig, cfg, config)) + goto retry; +- +- FcConfigReference (config); ++ unlock_config (); + if (cfg) + FcConfigDestroy (cfg); + +@@ -2649,7 +2707,9 @@ FcConfigSetSysRoot (FcConfig *config, + { + FcChar8 *s = NULL; + FcBool init = FcFalse; ++ int nretry = 3; + ++retry: + if (!config) + { + /* We can't use FcConfigGetCurrent() here to ensure +@@ -2681,6 +2741,17 @@ FcConfigSetSysRoot (FcConfig *config, + if (init) + { + config = FcInitLoadOwnConfigAndFonts (config); ++ if (!config) ++ { ++ /* Something failed. this is usually unlikely. so retrying */ ++ init = FcFalse; ++ if (--nretry == 0) ++ { ++ fprintf (stderr, "Fontconfig warning: Unable to initialize config and retry limit exceeded. sysroot functionality may not work as expected.\n"); ++ return; ++ } ++ goto retry; ++ } + FcConfigSetCurrent (config); + /* FcConfigSetCurrent() increases the refcount. + * decrease it here to avoid the memory leak. +-- +2.24.1 + diff --git a/fontconfig-read-latest-cache.patch b/fontconfig-read-latest-cache.patch new file mode 100644 index 0000000..8b70dc0 --- /dev/null +++ b/fontconfig-read-latest-cache.patch @@ -0,0 +1,228 @@ +From c9862b6ea7c3234b29f6500c7d07359847e55ed7 Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Mon, 28 Oct 2019 17:11:38 +0900 +Subject: [PATCH 1/9] Read latest cache in paths + +Right now fontconfig uses a cache found first in a path and +cachedirs are the order of the system-wide path and then the user path. +this is due to avoid writing caches into the user path when running as root. + +However, changing caches by certain config only, e.g. using +may not take effect by this behavior, because it may be stored into the user path. + +Thus, needing to find the latest cache out from paths. + +Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/182 +--- + src/fccache.c | 36 +++++++++++++++++++++----- + test/run-test.sh | 66 ++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 96 insertions(+), 6 deletions(-) + +diff --git a/src/fccache.c b/src/fccache.c +index 0976201..4acde22 100644 +--- a/src/fccache.c ++++ b/src/fccache.c +@@ -338,7 +338,7 @@ FcDirCacheOpenFile (const FcChar8 *cache_file, struct stat *file_stat) + static FcBool + FcDirCacheProcess (FcConfig *config, const FcChar8 *dir, + FcBool (*callback) (FcConfig *config, int fd, struct stat *fd_stat, +- struct stat *dir_stat, void *closure), ++ struct stat *dir_stat, struct timeval *cache_mtime, void *closure), + void *closure, FcChar8 **cache_file_ret) + { + int fd = -1; +@@ -348,6 +348,7 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir, + struct stat file_stat, dir_stat; + FcBool ret = FcFalse; + const FcChar8 *sysroot = FcConfigGetSysRoot (config); ++ struct timeval latest_mtime = (struct timeval){ 0 }; + + if (sysroot) + d = FcStrBuildFilename (sysroot, dir, NULL); +@@ -383,15 +384,18 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir, + #endif + fd = FcDirCacheOpenFile (cache_hashed, &file_stat); + if (fd >= 0) { +- ret = (*callback) (config, fd, &file_stat, &dir_stat, closure); ++ ret = (*callback) (config, fd, &file_stat, &dir_stat, &latest_mtime, closure); + close (fd); + if (ret) + { + if (cache_file_ret) ++ { ++ if (*cache_file_ret) ++ FcStrFree (*cache_file_ret); + *cache_file_ret = cache_hashed; ++ } + else + FcStrFree (cache_hashed); +- break; + } + } + #ifndef _WIN32 +@@ -414,7 +418,8 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir, + } + } + #endif +- FcStrFree (cache_hashed); ++ else ++ FcStrFree (cache_hashed); + } + FcStrListDone (list); + +@@ -998,12 +1003,31 @@ FcDirCacheUnload (FcCache *cache) + } + + static FcBool +-FcDirCacheMapHelper (FcConfig *config, int fd, struct stat *fd_stat, struct stat *dir_stat, void *closure) ++FcDirCacheMapHelper (FcConfig *config, int fd, struct stat *fd_stat, struct stat *dir_stat, struct timeval *latest_cache_mtime, void *closure) + { + FcCache *cache = FcDirCacheMapFd (config, fd, fd_stat, dir_stat); ++ struct timeval cache_mtime; + + if (!cache) + return FcFalse; ++ cache_mtime.tv_sec = fd_stat->st_mtime; ++#ifdef HAVE_STRUCT_STAT_ST_MTIM ++ cache_mtime.tv_usec = fd_stat->st_mtim.tv_nsec / 1000; ++#else ++ cache_mtime.tv_usec = 0; ++#endif ++ if (timercmp (latest_cache_mtime, &cache_mtime, <)) ++ { ++ if (*((FcCache **) closure)) ++ FcDirCacheUnload (*((FcCache **) closure)); ++ } ++ else ++ { ++ FcDirCacheUnload (cache); ++ return FcFalse; ++ } ++ latest_cache_mtime->tv_sec = cache_mtime.tv_sec; ++ latest_cache_mtime->tv_usec = cache_mtime.tv_usec; + *((FcCache **) closure) = cache; + return FcTrue; + } +@@ -1093,7 +1117,7 @@ FcDirChecksumNano (struct stat *statb) + * the magic number and the size field + */ + static FcBool +-FcDirCacheValidateHelper (FcConfig *config, int fd, struct stat *fd_stat, struct stat *dir_stat, void *closure FC_UNUSED) ++FcDirCacheValidateHelper (FcConfig *config, int fd, struct stat *fd_stat, struct stat *dir_stat, struct timeval *latest_cache_mtime, void *closure FC_UNUSED) + { + FcBool ret = FcTrue; + FcCache c; +diff --git a/test/run-test.sh b/test/run-test.sh +index 4e5968b..8ad09e3 100644 +--- a/test/run-test.sh ++++ b/test/run-test.sh +@@ -340,6 +340,72 @@ fi + + rm -rf $MyPWD/sysroot + ++dotest "read newer caches when multiple places are allowed to store" ++prep ++cp $FONT1 $FONT2 $FONTDIR ++if [ -n ${SOURCE_DATE_EPOCH:-} ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then ++ touch -m -t "`date -d \"@${SOURCE_DATE_EPOCH}\" +%y%m%d%H%M.%S`" $FONTDIR ++fi ++MYCACHEBASEDIR=`mktemp -d /tmp/fontconfig.XXXXXXXX` ++MYCACHEDIR=$MYCACHEBASEDIR/cache.dir ++MYOWNCACHEDIR=$MYCACHEBASEDIR/owncache.dir ++MYCONFIG=`mktemp /tmp/fontconfig.XXXXXXXX` ++ ++mkdir -p $MYCACHEDIR ++mkdir -p $MYOWNCACHEDIR ++ ++sed "s!@FONTDIR@!$FONTDIR! ++s!@REMAPDIR@!! ++s!@CACHEDIR@!$MYCACHEDIR!" < $TESTDIR/fonts.conf.in > my-fonts.conf ++ ++FONTCONFIG_FILE=$MyPWD/my-fonts.conf $FCCACHE $FONTDIR ++ ++sleep 1 ++cat<$MYCONFIG ++ ++ ++ $FONTDIR/4x6.pcf ++ 8 ++ ++ ++EOF ++sed "s!@FONTDIR@!$FONTDIR! ++s!@REMAPDIR@!$MYCONFIG! ++s!@CACHEDIR@!$MYOWNCACHEDIR!" < $TESTDIR/fonts.conf.in > my-fonts.conf ++ ++if [ -n ${SOURCE_DATE_EPOCH:-} ]; then ++ old_epoch=${SOURCE_DATE_EPOCH} ++ SOURCE_DATE_EPOCH=`expr $SOURCE_DATE_EPOCH + 1` ++fi ++FONTCONFIG_FILE=$MyPWD/my-fonts.conf $FCCACHE -f $FONTDIR ++if [ -n ${SOURCE_DATE_EPOCH:-} ]; then ++ SOURCE_DATE_EPOCH=${old_epoch} ++fi ++ ++sed "s!@FONTDIR@!$FONTDIR! ++s!@REMAPDIR@!$MYCONFIG! ++s!@CACHEDIR@!$MYCACHEDIR$MYOWNCACHEDIR!" < $TESTDIR/fonts.conf.in > my-fonts.conf ++ ++FONTCONFIG_FILE=$MyPWD/my-fonts.conf $FCLIST - family pixelsize | sort > my-out ++echo "=" >> my-out ++FONTCONFIG_FILE=$MyPWD/my-fonts.conf $FCLIST - family pixelsize | sort >> my-out ++echo "=" >> my-out ++FONTCONFIG_FILE=$MyPWD/my-fonts.conf $FCLIST - family pixelsize | sort >> my-out ++tr -d '\015' my-out.tmp; mv my-out.tmp my-out ++sed -e 's/pixelsize=6/pixelsize=8/g' $BUILDTESTDIR/$EXPECTED > my-out.expected ++ ++if cmp my-out my-out.expected > /dev/null ; then : ; else ++ echo "*** Test failed: $TEST" ++ echo "*** output is in 'my-out', expected output in 'my-out.expected'" ++ echo "Actual Result" ++ cat my-out ++ echo "Expected Result" ++ cat my-out.expected ++ exit 1 ++fi ++ ++rm -rf $MYCACHEBASEDIR $MYCONFIG my-fonts.conf my-out my-out.expected ++ + fi # if [ "x$EXEEXT" = "x" ] + + rm -rf $FONTDIR $CACHEFILE $CACHEDIR $BASEDIR $FONTCONFIG_FILE out +-- +2.24.1 + +From a45fc8a33256d9d3ea0ea7947f33c8e5e3cc7238 Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Thu, 31 Oct 2019 16:15:25 +0900 +Subject: [PATCH 2/9] Fix a memory leak caused by the previous commit + +--- + src/fccache.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/fccache.c b/src/fccache.c +index 4acde22..c565560 100644 +--- a/src/fccache.c ++++ b/src/fccache.c +@@ -397,6 +397,8 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir, + else + FcStrFree (cache_hashed); + } ++ else ++ FcStrFree (cache_hashed); + } + #ifndef _WIN32 + else if (!retried) +@@ -416,6 +418,8 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir, + break; + goto retry; + } ++ else ++ FcStrFree (cache_hashed); + } + #endif + else +-- +2.24.1 + diff --git a/fontconfig.spec b/fontconfig.spec index a6fd7eb..40fdaf9 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.13.92 -Release: 5%{?dist} +Release: 6%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code # fc-case/CaseFolding.txt is in the UCD @@ -22,6 +22,8 @@ Patch1: %{name}-required-freetype-version.patch Patch2: %{name}-score-hint-on-match.patch Patch3: %{name}-fix-1744377.patch Patch4: %{name}-drop-lang-from-pkgkit-format.patch +Patch5: %{name}-read-latest-cache.patch +Patch6: %{name}-mt.patch BuildRequires: expat-devel BuildRequires: freetype-devel >= %{freetype_version} @@ -162,6 +164,10 @@ HOME=/root /usr/bin/fc-cache -s %doc fontconfig-devel.txt fontconfig-devel %changelog +* Thu Jan 30 2020 Akira TAGOH - 2.13.92-6 +- Fix reading the outdated caches. +- Apply a patch to make it MT-safe more. + * Tue Jan 28 2020 Fedora Release Engineering - 2.13.92-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild From 3422a4a3579402aabc0a2ecd846e0d76d6b58bd5 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Thu, 30 Jan 2020 19:06:49 +0900 Subject: [PATCH 05/73] Fix some wrong behavior with sysroot option. Fix reading the outdated caches. Apply a patch to make it MT-safe more. --- fontconfig-sysroot.patch | 285 +++++++++++++++++++++++++++++++++++++++ fontconfig.spec | 6 +- 2 files changed, 289 insertions(+), 2 deletions(-) create mode 100644 fontconfig-sysroot.patch diff --git a/fontconfig-sysroot.patch b/fontconfig-sysroot.patch new file mode 100644 index 0000000..9505f97 --- /dev/null +++ b/fontconfig-sysroot.patch @@ -0,0 +1,285 @@ +From cd51cb241aad7b362b793200ca7d42595c14f52b Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Mon, 21 Oct 2019 16:17:42 +0900 +Subject: [PATCH] Take effect sysroot functionality to the default config file + +When loading the default config file with FONTCONFIG_SYSROOT, +it fails if no /etc/fonts/fonts.conf is available, even if it is +there where is based on sysroot. + +To address this, FcConfig is required to determine the sysroot. +therefore, this change makes FcConfigFilename() deprecated, +use FcConfigGetFilename() instead. + +Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/181 +--- + doc/fcconfig.fncs | 11 +++++++ + fontconfig/fontconfig.h | 4 +++ + src/fccfg.c | 67 ++++++++++++++++++++++++++++------------- + src/fcxml.c | 24 ++++++++++++--- + 4 files changed, 81 insertions(+), 25 deletions(-) + +diff --git a/doc/fcconfig.fncs b/doc/fcconfig.fncs +index 5f1ef43..82769d5 100644 +--- a/doc/fcconfig.fncs ++++ b/doc/fcconfig.fncs +@@ -344,6 +344,15 @@ to be up to date, and used. + @TYPE1@ const FcChar8 * @ARG1@ name + @PURPOSE@ Find a config file + @DESC@ ++This function is deprecated and is replaced by FcConfigGetFilename. ++@@ ++ ++@RET@ FcChar8 * ++@FUNC@ FcConfigGetFilename ++@TYPE1@ FcConfig * @ARG1@ config ++@TYPE2@ const FcChar8 * @ARG2@ name ++@PURPOSE@ Find a config file ++@DESC@ + Given the specified external entity name, return the associated filename. + This provides applications a way to convert various configuration file + references into filename form. +@@ -355,6 +364,8 @@ refers to a file in the current users home directory. Otherwise if the name + doesn't start with '/', it refers to a file in the default configuration + directory; the built-in default directory can be overridden with the + FONTCONFIG_PATH environment variable. ++ ++The result of this function is affected by the FONTCONFIG_SYSROOT environment variable or equivalent functionality. + @@ + + @RET@ FcBool +diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h +index 9586616..2f0e8cf 100644 +--- a/fontconfig/fontconfig.h ++++ b/fontconfig/fontconfig.h +@@ -393,6 +393,10 @@ FcConfigHome (void); + FcPublic FcBool + FcConfigEnableHome (FcBool enable); + ++FcPublic FcChar8 * ++FcConfigGetFilename (FcConfig *config, ++ const FcChar8 *url); ++ + FcPublic FcChar8 * + FcConfigFilename (const FcChar8 *url); + +diff --git a/src/fccfg.c b/src/fccfg.c +index e81eeba..21ccd25 100644 +--- a/src/fccfg.c ++++ b/src/fccfg.c +@@ -686,7 +686,7 @@ FcConfigAddConfigFile (FcConfig *config, + const FcChar8 *f) + { + FcBool ret; +- FcChar8 *file = FcConfigFilename (f); ++ FcChar8 *file = FcConfigGetFilename (config, f); + + if (!file) + return FcFalse; +@@ -2284,10 +2284,19 @@ FcConfigEnableHome (FcBool enable) + } + + FcChar8 * +-FcConfigFilename (const FcChar8 *url) ++FcConfigGetFilename (FcConfig *config, ++ const FcChar8 *url) + { + FcChar8 *file, *dir, **path, **p; ++ const FcChar8 *sysroot; + ++ if (!config) ++ { ++ config = FcConfigGetCurrent (); ++ if (!config) ++ return NULL; ++ } ++ sysroot = FcConfigGetSysRoot (config); + if (!url || !*url) + { + url = (FcChar8 *) getenv ("FONTCONFIG_FILE"); +@@ -2297,13 +2306,23 @@ FcConfigFilename (const FcChar8 *url) + file = 0; + + if (FcStrIsAbsoluteFilename(url)) +- return FcConfigFileExists (0, url); ++ return FcConfigFileExists (sysroot, url); + + if (*url == '~') + { + dir = FcConfigHome (); + if (dir) +- file = FcConfigFileExists (dir, url + 1); ++ { ++ FcChar8 *s; ++ ++ if (sysroot) ++ s = FcStrBuildFilename (sysroot, dir, NULL); ++ else ++ s = dir; ++ file = FcConfigFileExists (s, url + 1); ++ if (sysroot) ++ FcStrFree (s); ++ } + else + file = 0; + } +@@ -2314,7 +2333,15 @@ FcConfigFilename (const FcChar8 *url) + return NULL; + for (p = path; *p; p++) + { +- file = FcConfigFileExists (*p, url); ++ FcChar8 *s; ++ ++ if (sysroot) ++ s = FcStrBuildFilename (sysroot, *p, NULL); ++ else ++ s = *p; ++ file = FcConfigFileExists (s, url); ++ if (sysroot) ++ FcStrFree (s); + if (file) + break; + } +@@ -2323,33 +2350,31 @@ FcConfigFilename (const FcChar8 *url) + return file; + } + ++FcChar8 * ++FcConfigFilename (const FcChar8 *url) ++{ ++ return FcConfigGetFilename (NULL, url); ++} ++ + FcChar8 * + FcConfigRealFilename (FcConfig *config, + const FcChar8 *url) + { +- const FcChar8 *sysroot = FcConfigGetSysRoot (config); +- FcChar8 *n = FcConfigFilename (url); +- FcChar8 *nn = NULL; ++ FcChar8 *n = FcConfigGetFilename (config, url); + + if (n) + { + FcChar8 buf[FC_PATH_MAX]; + ssize_t len; + +- if (sysroot) +- nn = FcStrBuildFilename (sysroot, n, NULL); +- else +- nn = FcStrdup (n); +- FcStrFree (n); +- +- if ((len = FcReadLink (nn, buf, sizeof (buf) - 1)) != -1) ++ if ((len = FcReadLink (n, buf, sizeof (buf) - 1)) != -1) + { + buf[len] = 0; + + if (!FcStrIsAbsoluteFilename (buf)) + { +- FcChar8 *dirname = FcStrDirname (nn); +- FcStrFree (nn); ++ FcChar8 *dirname = FcStrDirname (n); ++ FcStrFree (n); + if (!dirname) + return NULL; + +@@ -2358,18 +2383,18 @@ FcConfigRealFilename (FcConfig *config, + if (!path) + return NULL; + +- nn = FcStrCanonFilename (path); ++ n = FcStrCanonFilename (path); + FcStrFree (path); + } + else + { +- FcStrFree (nn); +- nn = FcStrdup (buf); ++ FcStrFree (n); ++ n = FcStrdup (buf); + } + } + } + +- return nn; ++ return n; + } + + /* +diff --git a/src/fcxml.c b/src/fcxml.c +index d9a67f6..a366644 100644 +--- a/src/fcxml.c ++++ b/src/fcxml.c +@@ -2541,7 +2541,7 @@ FcParseInclude (FcConfigParse *parse) + FcChar8 *filename; + static FcBool warn_conf = FcFalse, warn_confd = FcFalse; + +- filename = FcConfigFilename(s); ++ filename = FcConfigGetFilename(parse->config, s); + if (deprecated == FcTrue && + filename != NULL && + userdir != NULL && +@@ -3532,7 +3532,9 @@ _FcConfigParse (FcConfig *config, + FcStrBuf sbuf; + char buf[BUFSIZ]; + FcBool ret = FcFalse, complain_again = complain; ++ FcStrBuf reason; + ++ FcStrBufInit (&reason, NULL, 0); + #ifdef _WIN32 + if (!pGetSystemWindowsDirectory) + { +@@ -3549,12 +3551,20 @@ _FcConfigParse (FcConfig *config, + } + #endif + +- filename = FcConfigFilename (name); ++ filename = FcConfigGetFilename (config, name); + if (!filename) ++ { ++ FcStrBufString (&reason, (FcChar8 *)"No such file: "); ++ FcStrBufString (&reason, name ? name : (FcChar8 *)"(null)"); + goto bail0; ++ } + realfilename = FcConfigRealFilename (config, name); + if (!realfilename) ++ { ++ FcStrBufString (&reason, (FcChar8 *)"No such realfile: "); ++ FcStrBufString (&reason, name ? name : (FcChar8 *)"(null)"); + goto bail0; ++ } + if (FcStrSetMember (config->availConfigFiles, realfilename)) + { + FcStrFree (filename); +@@ -3582,7 +3592,11 @@ _FcConfigParse (FcConfig *config, + + fd = FcOpen ((char *) realfilename, O_RDONLY); + if (fd == -1) ++ { ++ FcStrBufString (&reason, (FcChar8 *)"Unable to open "); ++ FcStrBufString (&reason, realfilename); + goto bail1; ++ } + + do { + len = read (fd, buf, BUFSIZ); +@@ -3623,11 +3637,13 @@ bail0: + if (!ret && complain_again) + { + if (name) +- FcConfigMessage (0, FcSevereError, "Cannot %s config file \"%s\"", load ? "load" : "scan", name); ++ FcConfigMessage (0, FcSevereError, "Cannot %s config file \"%s\": %s", load ? "load" : "scan", name, FcStrBufDoneStatic (&reason)); + else +- FcConfigMessage (0, FcSevereError, "Cannot %s default config file", load ? "load" : "scan"); ++ FcConfigMessage (0, FcSevereError, "Cannot %s default config file: %s", load ? "load" : "scan", FcStrBufDoneStatic (&reason)); ++ FcStrBufDestroy (&reason); + return FcFalse; + } ++ FcStrBufDestroy (&reason); + return ret; + } + +-- +2.24.1 + diff --git a/fontconfig.spec b/fontconfig.spec index 40fdaf9..498e1d7 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -22,8 +22,9 @@ Patch1: %{name}-required-freetype-version.patch Patch2: %{name}-score-hint-on-match.patch Patch3: %{name}-fix-1744377.patch Patch4: %{name}-drop-lang-from-pkgkit-format.patch -Patch5: %{name}-read-latest-cache.patch -Patch6: %{name}-mt.patch +Patch5: %{name}-sysroot.patch +Patch6: %{name}-read-latest-cache.patch +Patch7: %{name}-mt.patch BuildRequires: expat-devel BuildRequires: freetype-devel >= %{freetype_version} @@ -165,6 +166,7 @@ HOME=/root /usr/bin/fc-cache -s %changelog * Thu Jan 30 2020 Akira TAGOH - 2.13.92-6 +- Fix some wrong behavior with sysroot option. - Fix reading the outdated caches. - Apply a patch to make it MT-safe more. From 95493a2f701298659a7f589b6518986669e9b62e Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Thu, 30 Jan 2020 20:03:59 +0900 Subject: [PATCH 06/73] Fix some wrong behavior with sysroot option. Fix reading the outdated caches. Apply a patch to make it MT-safe more. --- FcConfigGetFilename.3 | 25 +++++++++++++++++++++++++ fontconfig.spec | 2 ++ 2 files changed, 27 insertions(+) create mode 100644 FcConfigGetFilename.3 diff --git a/FcConfigGetFilename.3 b/FcConfigGetFilename.3 new file mode 100644 index 0000000..9450199 --- /dev/null +++ b/FcConfigGetFilename.3 @@ -0,0 +1,25 @@ +.\" auto-generated by docbook2man-spec from docbook-utils package +.TH "FcConfigGetFilename" "3" "27 1月 2020" "Fontconfig 2.13.91" "" +.SH NAME +FcConfigGetFilename \- Find a config file +.SH SYNOPSIS +.nf +\fB#include +.sp +FcChar8 * FcConfigGetFilename (FcConfig *\fIconfig\fB, const FcChar8 *\fIname\fB); +.fi\fR +.SH "DESCRIPTION" +.PP +Given the specified external entity name, return the associated filename. +This provides applications a way to convert various configuration file +references into filename form. +.PP +A null or empty \fIname\fR indicates that the default configuration file should +be used; which file this references can be overridden with the +FONTCONFIG_FILE environment variable. Next, if the name starts with \fI~\fR, it +refers to a file in the current users home directory. Otherwise if the name +doesn't start with '/', it refers to a file in the default configuration +directory; the built-in default directory can be overridden with the +FONTCONFIG_PATH environment variable. +.PP +The result of this function is affected by the FONTCONFIG_SYSROOT environment variable or equivalent functionality. diff --git a/fontconfig.spec b/fontconfig.spec index 498e1d7..c4435f7 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -15,6 +15,7 @@ Source: http://fontconfig.org/release/%{name}-%{version}.tar.xz URL: http://fontconfig.org Source1: 25-no-bitmap-fedora.conf Source2: fc-cache +Source3: FcConfigGetFilename.3 # https://bugzilla.redhat.com/show_bug.cgi?id=140335 Patch0: %{name}-sleep-less.patch @@ -68,6 +69,7 @@ which is useful for developing applications that uses fontconfig. %prep %autosetup -p1 +cp %{SOURCE3} $RPM_BUILD_DIR/%{name}-%{version}/doc %build # We don't want to rebuild the docs, but we want to install the included ones. From 8c0db7dc0ef9b3bddb2cb0b3b534ae595939e4b5 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Thu, 30 Jan 2020 20:12:32 +0900 Subject: [PATCH 07/73] Fix some wrong behavior with sysroot option. Fix reading the outdated caches. Apply a patch to make it MT-safe more. --- fontconfig-fix-test-without-bwrap.patch | 29 +++++++++++++++++++++++++ fontconfig.spec | 1 + 2 files changed, 30 insertions(+) create mode 100644 fontconfig-fix-test-without-bwrap.patch diff --git a/fontconfig-fix-test-without-bwrap.patch b/fontconfig-fix-test-without-bwrap.patch new file mode 100644 index 0000000..53c6bb1 --- /dev/null +++ b/fontconfig-fix-test-without-bwrap.patch @@ -0,0 +1,29 @@ +From 8bddcb113779178e5b5ed711db08d9bfbff924cc Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Thu, 5 Dec 2019 19:55:06 +0900 +Subject: [PATCH] Fix a test fail when no bwrap was available + +Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/201 +--- + test/run-test.sh | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/test/run-test.sh b/test/run-test.sh +index e1ee6d00..9b2e54bb 100644 +--- a/test/run-test.sh ++++ b/test/run-test.sh +@@ -40,9 +40,8 @@ ECHO=true + FCLIST="$LOG_COMPILER ../fc-list/fc-list$EXEEXT" + FCCACHE="$LOG_COMPILER ../fc-cache/fc-cache$EXEEXT" + +-which bwrap > /dev/null 2>&1 +-if [ $? -eq 0 ]; then +- BWRAP=`which bwrap` ++if [ -x "$(command -v bwrap)" ]; then ++ BWRAP="$(command -v bwrap)" + fi + + FONT1=$TESTDIR/4x6.pcf +-- +2.25.0 + diff --git a/fontconfig.spec b/fontconfig.spec index c4435f7..d13fe7a 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -26,6 +26,7 @@ Patch4: %{name}-drop-lang-from-pkgkit-format.patch Patch5: %{name}-sysroot.patch Patch6: %{name}-read-latest-cache.patch Patch7: %{name}-mt.patch +Patch8: %{name}-fix-test-without-bwrap.patch BuildRequires: expat-devel BuildRequires: freetype-devel >= %{freetype_version} From 9b91cf401dd8ef4e71d9fc3fa57227b4cc9e9429 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Thu, 30 Jan 2020 20:27:49 +0900 Subject: [PATCH 08/73] Fix some wrong behavior with sysroot option. Fix reading the outdated caches. Apply a patch to make it MT-safe more. --- fontconfig-fix-test-without-bwrap.patch | 29 ------------------------- fontconfig-fix-test.patch | 12 ++++++++++ fontconfig.spec | 2 +- 3 files changed, 13 insertions(+), 30 deletions(-) delete mode 100644 fontconfig-fix-test-without-bwrap.patch create mode 100644 fontconfig-fix-test.patch diff --git a/fontconfig-fix-test-without-bwrap.patch b/fontconfig-fix-test-without-bwrap.patch deleted file mode 100644 index 53c6bb1..0000000 --- a/fontconfig-fix-test-without-bwrap.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 8bddcb113779178e5b5ed711db08d9bfbff924cc Mon Sep 17 00:00:00 2001 -From: Akira TAGOH -Date: Thu, 5 Dec 2019 19:55:06 +0900 -Subject: [PATCH] Fix a test fail when no bwrap was available - -Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/201 ---- - test/run-test.sh | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) - -diff --git a/test/run-test.sh b/test/run-test.sh -index e1ee6d00..9b2e54bb 100644 ---- a/test/run-test.sh -+++ b/test/run-test.sh -@@ -40,9 +40,8 @@ ECHO=true - FCLIST="$LOG_COMPILER ../fc-list/fc-list$EXEEXT" - FCCACHE="$LOG_COMPILER ../fc-cache/fc-cache$EXEEXT" - --which bwrap > /dev/null 2>&1 --if [ $? -eq 0 ]; then -- BWRAP=`which bwrap` -+if [ -x "$(command -v bwrap)" ]; then -+ BWRAP="$(command -v bwrap)" - fi - - FONT1=$TESTDIR/4x6.pcf --- -2.25.0 - diff --git a/fontconfig-fix-test.patch b/fontconfig-fix-test.patch new file mode 100644 index 0000000..9def0e3 --- /dev/null +++ b/fontconfig-fix-test.patch @@ -0,0 +1,12 @@ +diff -pruN fontconfig-2.13.92.orig/test/run-test.sh fontconfig-2.13.92/test/run-test.sh +--- fontconfig-2.13.92.orig/test/run-test.sh 2020-01-30 20:19:55.148680493 +0900 ++++ fontconfig-2.13.92/test/run-test.sh 2020-01-30 20:25:48.604550017 +0900 +@@ -409,7 +409,7 @@ rm -rf $MYCACHEBASEDIR $MYCONFIG my-font + + fi # if [ "x$EXEEXT" = "x" ] + +-if [ -x $BUILDTESTDIR/test-crbug1004254 ]; then ++if [ -x $BUILDTESTDIR/test-crbug1004254 -a -x /usr/bin/curl ]; then + dotest "MT-safe global config" + prep + curl -s -o $FONTDIR/noto.zip https://noto-website-2.storage.googleapis.com/pkgs/NotoSans-hinted.zip diff --git a/fontconfig.spec b/fontconfig.spec index d13fe7a..d047042 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -26,7 +26,7 @@ Patch4: %{name}-drop-lang-from-pkgkit-format.patch Patch5: %{name}-sysroot.patch Patch6: %{name}-read-latest-cache.patch Patch7: %{name}-mt.patch -Patch8: %{name}-fix-test-without-bwrap.patch +Patch8: %{name}-fix-test.patch BuildRequires: expat-devel BuildRequires: freetype-devel >= %{freetype_version} From 35da5274e91682f2714c9b4cbf1074d74478958f Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Thu, 30 Jan 2020 21:38:54 +0900 Subject: [PATCH 09/73] Fix some wrong behavior with sysroot option. Fix reading the outdated caches. Apply a patch to make it MT-safe more. --- fontconfig-fix-test.patch | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/fontconfig-fix-test.patch b/fontconfig-fix-test.patch index 9def0e3..01d2735 100644 --- a/fontconfig-fix-test.patch +++ b/fontconfig-fix-test.patch @@ -10,3 +10,32 @@ diff -pruN fontconfig-2.13.92.orig/test/run-test.sh fontconfig-2.13.92/test/run- dotest "MT-safe global config" prep curl -s -o $FONTDIR/noto.zip https://noto-website-2.storage.googleapis.com/pkgs/NotoSans-hinted.zip +From 8bddcb113779178e5b5ed711db08d9bfbff924cc Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Thu, 5 Dec 2019 19:55:06 +0900 +Subject: [PATCH] Fix a test fail when no bwrap was available + +Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/201 +--- + test/run-test.sh | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/test/run-test.sh b/test/run-test.sh +index e1ee6d0..9b2e54b 100644 +--- a/test/run-test.sh ++++ b/test/run-test.sh +@@ -40,9 +40,8 @@ ECHO=true + FCLIST="$LOG_COMPILER ../fc-list/fc-list$EXEEXT" + FCCACHE="$LOG_COMPILER ../fc-cache/fc-cache$EXEEXT" + +-which bwrap > /dev/null 2>&1 +-if [ $? -eq 0 ]; then +- BWRAP=`which bwrap` ++if [ -x "$(command -v bwrap)" ]; then ++ BWRAP="$(command -v bwrap)" + fi + + FONT1=$TESTDIR/4x6.pcf +-- +2.24.1 + From 1bacf0fb4436ce5fea7e5db2de0ebb823c1f2471 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Fri, 31 Jan 2020 13:57:33 +0900 Subject: [PATCH 10/73] Fix some wrong behavior with sysroot option. Fix reading the outdated caches. Apply a patch to make it MT-safe more. --- fontconfig-fix-test.patch | 2 +- fontconfig.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fontconfig-fix-test.patch b/fontconfig-fix-test.patch index 01d2735..5ccaaba 100644 --- a/fontconfig-fix-test.patch +++ b/fontconfig-fix-test.patch @@ -6,7 +6,7 @@ diff -pruN fontconfig-2.13.92.orig/test/run-test.sh fontconfig-2.13.92/test/run- fi # if [ "x$EXEEXT" = "x" ] -if [ -x $BUILDTESTDIR/test-crbug1004254 ]; then -+if [ -x $BUILDTESTDIR/test-crbug1004254 -a -x /usr/bin/curl ]; then ++if [ -x $BUILDTESTDIR/test-crbug1004254 ] && [ 0 -eq 1 ]; then dotest "MT-safe global config" prep curl -s -o $FONTDIR/noto.zip https://noto-website-2.storage.googleapis.com/pkgs/NotoSans-hinted.zip diff --git a/fontconfig.spec b/fontconfig.spec index d047042..e42c49b 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -108,7 +108,7 @@ install -p -m 0755 %{SOURCE2} $RPM_BUILD_ROOT%{_bindir}/fc-cache cat %{name}-conf.lang >> %{name}.lang %check -make check +VERBOSE=1 make check %post umask 0022 From 5258a48f40fb8c25f358c6e1cf5c274931319fac Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Wed, 26 Feb 2020 15:53:45 +0900 Subject: [PATCH 11/73] Fix assertion in FcCacheFini(). --- fontconfig-fix-assertion.patch | 72 ++++++++++++++++++++++++++++++++++ fontconfig.spec | 6 ++- 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 fontconfig-fix-assertion.patch diff --git a/fontconfig-fix-assertion.patch b/fontconfig-fix-assertion.patch new file mode 100644 index 0000000..6bdb379 --- /dev/null +++ b/fontconfig-fix-assertion.patch @@ -0,0 +1,72 @@ +From fbc05949ef52c8a8d69233eed77f6636dffec280 Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Wed, 26 Feb 2020 15:42:21 +0900 +Subject: [PATCH] Fix assertion in FcFini() + +Due to the unproper initialization of `latest_mtime', the duplicate caches +was still in fcCacheChains with no references. which means no one frees +them. thus, the memory leak was happened. + +Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/227 +--- + src/fccache.c | 9 +++++---- + src/fcinit.c | 4 ++-- + 2 files changed, 7 insertions(+), 6 deletions(-) + +diff --git a/src/fccache.c b/src/fccache.c +index 4744a84..035458e 100644 +--- a/src/fccache.c ++++ b/src/fccache.c +@@ -365,7 +365,6 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir, + struct stat file_stat, dir_stat; + FcBool ret = FcFalse; + const FcChar8 *sysroot = FcConfigGetSysRoot (config); +- struct timeval latest_mtime = (struct timeval){ 0 }; + + if (sysroot) + d = FcStrBuildFilename (sysroot, dir, NULL); +@@ -390,6 +389,8 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir, + #ifndef _WIN32 + FcBool retried = FcFalse; + #endif ++ struct timeval latest_mtime = (struct timeval){ 0 }; ++ + if (sysroot) + cache_hashed = FcStrBuildFilename (sysroot, cache_dir, cache_base, NULL); + else +@@ -1081,12 +1082,12 @@ FcDirCacheLoadFile (const FcChar8 *cache_file, struct stat *file_stat) + + if (!file_stat) + file_stat = &my_file_stat; +- fd = FcDirCacheOpenFile (cache_file, file_stat); +- if (fd < 0) +- return NULL; + config = FcConfigReference (NULL); + if (!config) + return NULL; ++ fd = FcDirCacheOpenFile (cache_file, file_stat); ++ if (fd < 0) ++ return NULL; + cache = FcDirCacheMapFd (config, fd, file_stat, NULL); + FcConfigDestroy (config); + close (fd); +diff --git a/src/fcinit.c b/src/fcinit.c +index 6f82ebd..0e1421e 100644 +--- a/src/fcinit.c ++++ b/src/fcinit.c +@@ -199,10 +199,10 @@ void + FcFini (void) + { + FcConfigFini (); +- FcCacheFini (); ++ FcConfigPathFini (); + FcDefaultFini (); + FcObjectFini (); +- FcConfigPathFini (); ++ FcCacheFini (); + } + + /* +-- +2.24.1 + diff --git a/fontconfig.spec b/fontconfig.spec index e42c49b..ea61268 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.13.92 -Release: 6%{?dist} +Release: 7%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code # fc-case/CaseFolding.txt is in the UCD @@ -27,6 +27,7 @@ Patch5: %{name}-sysroot.patch Patch6: %{name}-read-latest-cache.patch Patch7: %{name}-mt.patch Patch8: %{name}-fix-test.patch +Patch9: %{name}-fix-assertion.patch BuildRequires: expat-devel BuildRequires: freetype-devel >= %{freetype_version} @@ -168,6 +169,9 @@ HOME=/root /usr/bin/fc-cache -s %doc fontconfig-devel.txt fontconfig-devel %changelog +* Wed Feb 26 2020 Akira TAGOH - 2.13.92-7 +- Fix assertion in FcCacheFini(). + * Thu Jan 30 2020 Akira TAGOH - 2.13.92-6 - Fix some wrong behavior with sysroot option. - Fix reading the outdated caches. From 728bab0a1e8010ec5055ac3bdf3dc5a9f4736ae0 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Mon, 23 Mar 2020 14:23:41 +0900 Subject: [PATCH 12/73] Fix assertion in FcCacheFini() again. Resolves: rhbz#1815684 --- fontconfig-fix-assertion.patch | 72 ++++++++++++++++++++++++++++++++++ fontconfig.spec | 6 ++- 2 files changed, 77 insertions(+), 1 deletion(-) diff --git a/fontconfig-fix-assertion.patch b/fontconfig-fix-assertion.patch index 6bdb379..2e33736 100644 --- a/fontconfig-fix-assertion.patch +++ b/fontconfig-fix-assertion.patch @@ -70,3 +70,75 @@ index 6f82ebd..0e1421e 100644 -- 2.24.1 +From 6f6b39780215714386606ca1c5457a7106639ff4 Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Mon, 23 Mar 2020 14:03:47 +0900 +Subject: [PATCH] Fix assertion in FcCacheFini() again + +The previous fix in fbc05949ef52c8a8d69233eed77f6636dffec280 was wrong. reverting. + +When reading older caches, FcDirCacheMapHelper() returns FcFalse and +it became the return value from FcDirCacheProcess() too, which is wrong. +Actually one of calls for FcDirCacheMapHelper() should be successfully +finished and closure should have a valid pointer for cache. + +Due to this, the proper finalization process wasn't running against +cache in closure. + +Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/227 +--- + src/fccache.c | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +diff --git a/src/fccache.c b/src/fccache.c +index 035458e..2d398c7 100644 +--- a/src/fccache.c ++++ b/src/fccache.c +@@ -365,6 +365,7 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir, + struct stat file_stat, dir_stat; + FcBool ret = FcFalse; + const FcChar8 *sysroot = FcConfigGetSysRoot (config); ++ struct timeval latest_mtime = (struct timeval){ 0 }; + + if (sysroot) + d = FcStrBuildFilename (sysroot, dir, NULL); +@@ -389,7 +390,6 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir, + #ifndef _WIN32 + FcBool retried = FcFalse; + #endif +- struct timeval latest_mtime = (struct timeval){ 0 }; + + if (sysroot) + cache_hashed = FcStrBuildFilename (sysroot, cache_dir, cache_base, NULL); +@@ -445,6 +445,8 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir, + } + FcStrListDone (list); + ++ if (closure) ++ return !!(*((FcCache **)closure) != NULL); + return ret; + } + +@@ -792,7 +794,18 @@ FcCacheFini (void) + int i; + + for (i = 0; i < FC_CACHE_MAX_LEVEL; i++) +- assert (fcCacheChains[i] == NULL); ++ { ++ if (FcDebug() & FC_DBG_CACHE) ++ { ++ if (fcCacheChains[i] != NULL) ++ { ++ FcCacheSkip *s = fcCacheChains[i]; ++ printf("Fontconfig error: not freed %p (dir: %s, refcount %d)\n", s->cache, FcCacheDir(s->cache), s->ref.count); ++ } ++ } ++ else ++ assert (fcCacheChains[i] == NULL); ++ } + assert (fcCacheMaxLevel == 0); + + free_lock (); +-- +2.24.1 + diff --git a/fontconfig.spec b/fontconfig.spec index ea61268..3dfc0af 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.13.92 -Release: 7%{?dist} +Release: 8%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code # fc-case/CaseFolding.txt is in the UCD @@ -169,6 +169,10 @@ HOME=/root /usr/bin/fc-cache -s %doc fontconfig-devel.txt fontconfig-devel %changelog +* Mon Mar 23 2020 Akira TAGOH - 2.13.92-8 +- Fix assertion in FcCacheFini() again. + Resolves: rhbz#1815684 + * Wed Feb 26 2020 Akira TAGOH - 2.13.92-7 - Fix assertion in FcCacheFini(). From 212a960242c2818a9320f824125af003ce71e64a Mon Sep 17 00:00:00 2001 From: Nicolas Mailhot Date: Sat, 28 Mar 2020 22:50:40 +0100 Subject: [PATCH 13/73] fix DTD ID & registration to make xmllint --loaddtd --valid --nonet work by default --- fontconfig-fix-dtd-id.patch | 490 ++++++++++++++++++++++++++++++++++++ fontconfig-fix-dtd.patch | 26 ++ fontconfig.spec | 27 +- 3 files changed, 541 insertions(+), 2 deletions(-) create mode 100644 fontconfig-fix-dtd-id.patch create mode 100644 fontconfig-fix-dtd.patch diff --git a/fontconfig-fix-dtd-id.patch b/fontconfig-fix-dtd-id.patch new file mode 100644 index 0000000..9045fc0 --- /dev/null +++ b/fontconfig-fix-dtd-id.patch @@ -0,0 +1,490 @@ +diff -uNr fontconfig-2.13.92.orig/conf.d/05-reset-dirs-sample.conf fontconfig-2.13.92/conf.d/05-reset-dirs-sample.conf +--- fontconfig-2.13.92.orig/conf.d/05-reset-dirs-sample.conf 2019-05-08 10:22:25.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/05-reset-dirs-sample.conf 2020-03-28 15:53:41.792757065 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + Re-define fonts dirs sample + +diff -uNr fontconfig-2.13.92.orig/conf.d/09-autohint-if-no-hinting.conf fontconfig-2.13.92/conf.d/09-autohint-if-no-hinting.conf +--- fontconfig-2.13.92.orig/conf.d/09-autohint-if-no-hinting.conf 2019-07-30 13:03:27.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/09-autohint-if-no-hinting.conf 2020-03-28 15:53:41.764757635 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/10-autohint.conf fontconfig-2.13.92/conf.d/10-autohint.conf +--- fontconfig-2.13.92.orig/conf.d/10-autohint.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/10-autohint.conf 2020-03-28 15:53:41.829756312 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/10-hinting-full.conf fontconfig-2.13.92/conf.d/10-hinting-full.conf +--- fontconfig-2.13.92.orig/conf.d/10-hinting-full.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/10-hinting-full.conf 2020-03-28 15:53:41.714758653 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/10-hinting-medium.conf fontconfig-2.13.92/conf.d/10-hinting-medium.conf +--- fontconfig-2.13.92.orig/conf.d/10-hinting-medium.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/10-hinting-medium.conf 2020-03-28 15:53:41.809756719 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/10-hinting-none.conf fontconfig-2.13.92/conf.d/10-hinting-none.conf +--- fontconfig-2.13.92.orig/conf.d/10-hinting-none.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/10-hinting-none.conf 2020-03-28 15:53:41.796756984 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/10-hinting-slight.conf fontconfig-2.13.92/conf.d/10-hinting-slight.conf +--- fontconfig-2.13.92.orig/conf.d/10-hinting-slight.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/10-hinting-slight.conf 2020-03-28 15:53:41.760757717 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/10-no-sub-pixel.conf fontconfig-2.13.92/conf.d/10-no-sub-pixel.conf +--- fontconfig-2.13.92.orig/conf.d/10-no-sub-pixel.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/10-no-sub-pixel.conf 2020-03-28 15:53:41.743758063 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/10-scale-bitmap-fonts.conf fontconfig-2.13.92/conf.d/10-scale-bitmap-fonts.conf +--- fontconfig-2.13.92.orig/conf.d/10-scale-bitmap-fonts.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/10-scale-bitmap-fonts.conf 2020-03-28 15:53:41.727758389 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/10-sub-pixel-bgr.conf fontconfig-2.13.92/conf.d/10-sub-pixel-bgr.conf +--- fontconfig-2.13.92.orig/conf.d/10-sub-pixel-bgr.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/10-sub-pixel-bgr.conf 2020-03-28 15:53:41.841756068 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/10-sub-pixel-rgb.conf fontconfig-2.13.92/conf.d/10-sub-pixel-rgb.conf +--- fontconfig-2.13.92.orig/conf.d/10-sub-pixel-rgb.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/10-sub-pixel-rgb.conf 2020-03-28 15:53:41.723758470 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/10-sub-pixel-vbgr.conf fontconfig-2.13.92/conf.d/10-sub-pixel-vbgr.conf +--- fontconfig-2.13.92.orig/conf.d/10-sub-pixel-vbgr.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/10-sub-pixel-vbgr.conf 2020-03-28 15:53:41.772757472 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/10-sub-pixel-vrgb.conf fontconfig-2.13.92/conf.d/10-sub-pixel-vrgb.conf +--- fontconfig-2.13.92.orig/conf.d/10-sub-pixel-vrgb.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/10-sub-pixel-vrgb.conf 2020-03-28 15:53:41.706758816 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/10-unhinted.conf fontconfig-2.13.92/conf.d/10-unhinted.conf +--- fontconfig-2.13.92.orig/conf.d/10-unhinted.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/10-unhinted.conf 2020-03-28 15:53:41.739758145 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/11-lcdfilter-default.conf fontconfig-2.13.92/conf.d/11-lcdfilter-default.conf +--- fontconfig-2.13.92.orig/conf.d/11-lcdfilter-default.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/11-lcdfilter-default.conf 2020-03-28 15:53:41.731758307 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/11-lcdfilter-legacy.conf fontconfig-2.13.92/conf.d/11-lcdfilter-legacy.conf +--- fontconfig-2.13.92.orig/conf.d/11-lcdfilter-legacy.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/11-lcdfilter-legacy.conf 2020-03-28 15:53:41.837756149 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/11-lcdfilter-light.conf fontconfig-2.13.92/conf.d/11-lcdfilter-light.conf +--- fontconfig-2.13.92.orig/conf.d/11-lcdfilter-light.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/11-lcdfilter-light.conf 2020-03-28 15:53:41.768757554 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/20-unhint-small-vera.conf fontconfig-2.13.92/conf.d/20-unhint-small-vera.conf +--- fontconfig-2.13.92.orig/conf.d/20-unhint-small-vera.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/20-unhint-small-vera.conf 2020-03-28 15:53:41.784757228 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/25-unhint-nonlatin.conf fontconfig-2.13.92/conf.d/25-unhint-nonlatin.conf +--- fontconfig-2.13.92.orig/conf.d/25-unhint-nonlatin.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/25-unhint-nonlatin.conf 2020-03-28 15:53:41.817756556 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/30-metric-aliases.conf fontconfig-2.13.92/conf.d/30-metric-aliases.conf +--- fontconfig-2.13.92.orig/conf.d/30-metric-aliases.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/30-metric-aliases.conf 2020-03-28 15:53:41.718758572 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/40-nonlatin.conf fontconfig-2.13.92/conf.d/40-nonlatin.conf +--- fontconfig-2.13.92.orig/conf.d/40-nonlatin.conf 2019-05-08 10:22:25.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/40-nonlatin.conf 2020-03-28 15:53:41.735758226 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/45-generic.conf fontconfig-2.13.92/conf.d/45-generic.conf +--- fontconfig-2.13.92.orig/conf.d/45-generic.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/45-generic.conf 2020-03-28 15:53:41.833756231 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/45-latin.conf fontconfig-2.13.92/conf.d/45-latin.conf +--- fontconfig-2.13.92.orig/conf.d/45-latin.conf 2019-05-08 10:22:25.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/45-latin.conf 2020-03-28 15:53:41.756757798 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/49-sansserif.conf fontconfig-2.13.92/conf.d/49-sansserif.conf +--- fontconfig-2.13.92.orig/conf.d/49-sansserif.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/49-sansserif.conf 2020-03-28 15:53:41.845755987 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/50-user.conf fontconfig-2.13.92/conf.d/50-user.conf +--- fontconfig-2.13.92.orig/conf.d/50-user.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/50-user.conf 2020-03-28 15:53:41.710758735 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/51-local.conf fontconfig-2.13.92/conf.d/51-local.conf +--- fontconfig-2.13.92.orig/conf.d/51-local.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/51-local.conf 2020-03-28 15:53:41.805756801 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/60-generic.conf fontconfig-2.13.92/conf.d/60-generic.conf +--- fontconfig-2.13.92.orig/conf.d/60-generic.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/60-generic.conf 2020-03-28 15:53:41.702758898 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/60-latin.conf fontconfig-2.13.92/conf.d/60-latin.conf +--- fontconfig-2.13.92.orig/conf.d/60-latin.conf 2019-05-08 10:22:25.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/60-latin.conf 2020-03-28 15:53:41.752757880 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + +diff -uNr fontconfig-2.13.92.orig/conf.d/65-fonts-persian.conf fontconfig-2.13.92/conf.d/65-fonts-persian.conf +--- fontconfig-2.13.92.orig/conf.d/65-fonts-persian.conf 2018-06-05 12:36:38.000000000 +0200 ++++ fontconfig-2.13.92/conf.d/65-fonts-persian.conf 2020-03-28 15:53:41.748757961 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + + + +diff -uNr fontconfig-2.13.92.orig/doc/fonts-conf.5 fontconfig-2.13.92/doc/fonts-conf.5 +--- fontconfig-2.13.92.orig/doc/fonts-conf.5 2019-08-09 13:12:20.000000000 +0200 ++++ fontconfig-2.13.92/doc/fonts-conf.5 2020-03-28 15:53:41.685759244 +0100 +@@ -264,7 +264,7 @@ + .sp + .nf + +- ++ + + \&... + +@@ -554,7 +554,7 @@ + .sp + .nf + +- ++ + + + + + +diff -uNr fontconfig-2.13.92.orig/fonts.conf.in fontconfig-2.13.92/fonts.conf.in +--- fontconfig-2.13.92.orig/fonts.conf.in 2019-05-08 10:22:25.000000000 +0200 ++++ fontconfig-2.13.92/fonts.conf.in 2020-03-28 15:53:41.698758979 +0100 +@@ -1,5 +1,5 @@ + +- ++ + + + diff --git a/fontconfig-fix-dtd.patch b/fontconfig-fix-dtd.patch new file mode 100644 index 0000000..5165589 --- /dev/null +++ b/fontconfig-fix-dtd.patch @@ -0,0 +1,26 @@ +From a4aa66a858f1ecd375c5efe5916398281f73f794 Mon Sep 17 00:00:00 2001 +From: Jan Tojnar +Date: Wed, 20 Nov 2019 02:13:58 +0000 +Subject: [PATCH] Correct reset-dirs in DTD + +Empty elements need to be declared as such in well-formed DTDs. +--- + fonts.dtd | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/fonts.dtd b/fonts.dtd +index f8c9f2c..40ecb4e 100644 +--- a/fonts.dtd ++++ b/fonts.dtd +@@ -124,7 +124,7 @@ + +- ++ + + - - - - -diff -uNr fontconfig-2.13.92.orig/doc/fonts-conf.5 fontconfig-2.13.92/doc/fonts-conf.5 ---- fontconfig-2.13.92.orig/doc/fonts-conf.5 2019-08-09 13:12:20.000000000 +0200 -+++ fontconfig-2.13.92/doc/fonts-conf.5 2020-03-28 15:53:41.685759244 +0100 -@@ -264,7 +264,7 @@ - .sp - .nf - -- -+ - - \&... - -@@ -554,7 +554,7 @@ - .sp - .nf - -- -+ - - - - - -diff -uNr fontconfig-2.13.92.orig/fonts.conf.in fontconfig-2.13.92/fonts.conf.in ---- fontconfig-2.13.92.orig/fonts.conf.in 2019-05-08 10:22:25.000000000 +0200 -+++ fontconfig-2.13.92/fonts.conf.in 2020-03-28 15:53:41.698758979 +0100 -@@ -1,5 +1,5 @@ - -- -+ - - - diff --git a/fontconfig-fix-dtd.patch b/fontconfig-fix-dtd.patch deleted file mode 100644 index 5165589..0000000 --- a/fontconfig-fix-dtd.patch +++ /dev/null @@ -1,26 +0,0 @@ -From a4aa66a858f1ecd375c5efe5916398281f73f794 Mon Sep 17 00:00:00 2001 -From: Jan Tojnar -Date: Wed, 20 Nov 2019 02:13:58 +0000 -Subject: [PATCH] Correct reset-dirs in DTD - -Empty elements need to be declared as such in well-formed DTDs. ---- - fonts.dtd | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/fonts.dtd b/fonts.dtd -index f8c9f2c..40ecb4e 100644 ---- a/fonts.dtd -+++ b/fonts.dtd -@@ -124,7 +124,7 @@ - -- -+ - - + + + + KDE + + rgb + + From 3d26dfea36a1436d57de7fa613ea6b6c0974498e Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 19 Jan 2023 03:43:11 +0000 Subject: [PATCH 41/73] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- fontconfig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontconfig.spec b/fontconfig.spec index 008bd62..b15dee1 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.14.1 -Release: 2%{?dist} +Release: 3%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code # fc-case/CaseFolding.txt is in the UCD @@ -193,6 +193,9 @@ fi %doc fontconfig-devel.txt fontconfig-devel %changelog +* Thu Jan 19 2023 Fedora Release Engineering - 2.14.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Sat Nov 26 2022 Akira TAGOH - 2.14.1-2 - Enable RGB stripes layout for sub-pixel rendering on KDE only. Resolves: rhbz#2137825 From 03bbd6991df3f8b6c0dabd2e79c6d2b33b517df9 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Fri, 27 Jan 2023 18:01:51 +0900 Subject: [PATCH 42/73] New upstream release. --- .gitignore | 1 + fontconfig-desktop-property.patch | 337 ------------------------------ fontconfig.spec | 8 +- sources | 2 +- 4 files changed, 7 insertions(+), 341 deletions(-) delete mode 100644 fontconfig-desktop-property.patch diff --git a/.gitignore b/.gitignore index bc18404..95fbd70 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,4 @@ fontconfig-2.8.0.tar.gz /fontconfig-2.13.96.tar.xz /fontconfig-2.14.0.tar.xz /fontconfig-2.14.1.tar.xz +/fontconfig-2.14.2.tar.xz diff --git a/fontconfig-desktop-property.patch b/fontconfig-desktop-property.patch deleted file mode 100644 index c7a81a3..0000000 --- a/fontconfig-desktop-property.patch +++ /dev/null @@ -1,337 +0,0 @@ -From 6715a14f138df01c11110488b7edbf514e4076b4 Mon Sep 17 00:00:00 2001 -From: Akira TAGOH -Date: Fri, 25 Nov 2022 21:15:32 +0900 -Subject: [PATCH] Add FC_DESKTOP_NAME property - -To allow users to have desktop-specific matching rule. ---- - fontconfig/fontconfig.h | 27 ++++++++++--------- - src/fcdefault.c | 58 ++++++++++++++++++++++++++++++++++++++--- - src/fcint.h | 7 +++-- - src/fcobjs.h | 1 + - src/fcxml.c | 14 +++++----- - 5 files changed, 82 insertions(+), 25 deletions(-) - -diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h -index 09292a3..ac5a0b0 100644 ---- a/fontconfig/fontconfig.h -+++ b/fontconfig/fontconfig.h -@@ -128,6 +128,7 @@ typedef int FcBool; - #define FC_POSTSCRIPT_NAME "postscriptname" /* String */ - #define FC_FONT_HAS_HINT "fonthashint" /* Bool - true if font has hinting */ - #define FC_ORDER "order" /* Integer */ -+#define FC_DESKTOP_NAME "desktop" /* String */ - - #define FC_CACHE_SUFFIX ".cache-" FC_CACHE_VERSION - #define FC_DIR_CACHE_FILE "fonts.cache-" FC_CACHE_VERSION -@@ -285,7 +286,7 @@ typedef struct _FcObjectSet { - int sobject; - const char **objects; - } FcObjectSet; -- -+ - typedef enum _FcMatchKind { - FcMatchPattern, FcMatchFont, FcMatchScan, - FcMatchKindEnd, -@@ -400,7 +401,7 @@ FcConfigGetFilename (FcConfig *config, - - FcPublic FcChar8 * - FcConfigFilename (const FcChar8 *url); -- -+ - FcPublic FcConfig * - FcConfigCreate (void); - -@@ -418,7 +419,7 @@ FcConfigGetCurrent (void); - - FcPublic FcBool - FcConfigUptoDate (FcConfig *config); -- -+ - FcPublic FcBool - FcConfigBuildFonts (FcConfig *config); - -@@ -548,12 +549,12 @@ FcCharSetIsSubset (const FcCharSet *a, const FcCharSet *b); - #define FC_CHARSET_DONE ((FcChar32) -1) - - FcPublic FcChar32 --FcCharSetFirstPage (const FcCharSet *a, -+FcCharSetFirstPage (const FcCharSet *a, - FcChar32 map[FC_CHARSET_MAP_SIZE], - FcChar32 *next); - - FcPublic FcChar32 --FcCharSetNextPage (const FcCharSet *a, -+FcCharSetNextPage (const FcCharSet *a, - FcChar32 map[FC_CHARSET_MAP_SIZE], - FcChar32 *next); - -@@ -609,7 +610,7 @@ FcDirCacheLoad (const FcChar8 *dir, FcConfig *config, FcChar8 **cache_file); - - FcPublic FcCache * - FcDirCacheRescan (const FcChar8 *dir, FcConfig *config); -- -+ - FcPublic FcCache * - FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config); - -@@ -772,7 +773,7 @@ FcFontSetMatch (FcConfig *config, - - FcPublic FcPattern * - FcFontMatch (FcConfig *config, -- FcPattern *p, -+ FcPattern *p, - FcResult *result); - - FcPublic FcPattern * -@@ -890,10 +891,10 @@ FcPatternHash (const FcPattern *p); - - FcPublic FcBool - FcPatternAdd (FcPattern *p, const char *object, FcValue value, FcBool append); -- -+ - FcPublic FcBool - FcPatternAddWeak (FcPattern *p, const char *object, FcValue value, FcBool append); -- -+ - FcPublic FcResult - FcPatternGet (const FcPattern *p, const char *object, int id, FcValue *v); - -@@ -956,7 +957,7 @@ FcPatternGetRange (const FcPattern *p, const char *object, int id, FcRange **r); - - FcPublic FcPattern * - FcPatternVaBuild (FcPattern *p, va_list va); -- -+ - FcPublic FcPattern * - FcPatternBuild (FcPattern *p, ...) FC_ATTRIBUTE_SENTINEL(0); - -@@ -1025,10 +1026,10 @@ FcStrCopy (const FcChar8 *s); - - FcPublic FcChar8 * - FcStrCopyFilename (const FcChar8 *s); -- -+ - FcPublic FcChar8 * - FcStrPlus (const FcChar8 *s1, const FcChar8 *s2); -- -+ - FcPublic void - FcStrFree (FcChar8 *s); - -@@ -1145,7 +1146,7 @@ _FCFUNCPROTOEND - * Deprecated functions are placed here to help users fix their code without - * digging through documentation - */ -- -+ - #define FcConfigGetRescanInverval FcConfigGetRescanInverval_REPLACE_BY_FcConfigGetRescanInterval - #define FcConfigSetRescanInverval FcConfigSetRescanInverval_REPLACE_BY_FcConfigSetRescanInterval - -diff --git a/src/fcdefault.c b/src/fcdefault.c -index a9a3b72..6995216 100644 ---- a/src/fcdefault.c -+++ b/src/fcdefault.c -@@ -211,28 +211,73 @@ retry: - return prgname; - } - -+static FcChar8 *default_desktop_name; -+ -+FcChar8 * -+FcGetDesktopName (void) -+{ -+ FcChar8 *desktop_name; -+retry: -+ desktop_name = fc_atomic_ptr_get (&default_desktop_name); -+ if (!desktop_name) -+ { -+ char *s = getenv ("XDG_CURRENT_DESKTOP"); -+ -+ if (!s) -+ desktop_name = FcStrdup (""); -+ else -+ desktop_name = FcStrdup (s); -+ if (!desktop_name) -+ { -+ fprintf (stderr, "Fontconfig error: out of memory in %s\n", -+ __FUNCTION__); -+ return NULL; -+ } -+ -+ if (!fc_atomic_ptr_cmpexch(&default_desktop_name, NULL, desktop_name)) -+ { -+ free (desktop_name); -+ goto retry; -+ } -+ } -+ if (desktop_name && !desktop_name[0]) -+ return NULL; -+ -+ return desktop_name; -+} -+ - void - FcDefaultFini (void) - { - FcChar8 *lang; - FcStrSet *langs; - FcChar8 *prgname; -+ FcChar8 *desktop; - - lang = fc_atomic_ptr_get (&default_lang); -- if (lang && fc_atomic_ptr_cmpexch (&default_lang, lang, NULL)) { -+ if (lang && fc_atomic_ptr_cmpexch (&default_lang, lang, NULL)) -+ { - free (lang); - } - - langs = fc_atomic_ptr_get (&default_langs); -- if (langs && fc_atomic_ptr_cmpexch (&default_langs, langs, NULL)) { -+ if (langs && fc_atomic_ptr_cmpexch (&default_langs, langs, NULL)) -+ { - FcRefInit (&langs->ref, 1); - FcStrSetDestroy (langs); - } - - prgname = fc_atomic_ptr_get (&default_prgname); -- if (prgname && fc_atomic_ptr_cmpexch (&default_prgname, prgname, NULL)) { -+ if (prgname && fc_atomic_ptr_cmpexch (&default_prgname, prgname, NULL)) -+ { - free (prgname); - } -+ -+ desktop = fc_atomic_ptr_get (&default_desktop_name); -+ if (desktop && fc_atomic_ptr_cmpexch(&default_desktop_name, desktop, NULL)) -+ { -+ free (desktop); -+ } - } - - void -@@ -336,6 +381,13 @@ FcDefaultSubstitute (FcPattern *pattern) - FcPatternObjectAddString (pattern, FC_PRGNAME_OBJECT, prgname); - } - -+ if (FcPatternObjectGet (pattern, FC_DESKTOP_NAME_OBJECT, 0, &v) == FcResultNoMatch) -+ { -+ FcChar8 *desktop = FcGetDesktopName (); -+ if (desktop) -+ FcPatternObjectAddString (pattern, FC_DESKTOP_NAME_OBJECT, desktop); -+ } -+ - if (!FcPatternFindObjectIter (pattern, &iter, FC_ORDER_OBJECT)) - FcPatternObjectAddInteger (pattern, FC_ORDER_OBJECT, 0); - } -diff --git a/src/fcint.h b/src/fcint.h -index c615b66..78cee54 100644 ---- a/src/fcint.h -+++ b/src/fcint.h -@@ -199,7 +199,7 @@ typedef struct _FcValueList { - } FcValueList; - - #define FcValueListNext(vl) FcPointerMember(vl,next,FcValueList) -- -+ - typedef int FcObject; - - /* The 1024 is to leave some room for future added internal objects, such -@@ -238,7 +238,7 @@ struct _FcPattern { - FcFontSetFonts(fs)[i], \ - FcPattern) : \ - fs->fonts[i]) -- -+ - typedef enum _FcOp { - FcOpInteger, FcOpDouble, FcOpString, FcOpMatrix, FcOpRange, FcOpBool, FcOpCharSet, FcOpLangSet, - FcOpNil, -@@ -909,6 +909,9 @@ FcGetDefaultLang (void); - FcPrivate FcChar8 * - FcGetPrgname (void); - -+FcPrivate FcChar8 * -+FcGetDesktopName (void); -+ - FcPrivate void - FcDefaultFini (void); - -diff --git a/src/fcobjs.h b/src/fcobjs.h -index acc0471..1cd8ed3 100644 ---- a/src/fcobjs.h -+++ b/src/fcobjs.h -@@ -74,4 +74,5 @@ FC_OBJECT (FONT_VARIATIONS, FcTypeString, NULL) - FC_OBJECT (VARIABLE, FcTypeBool, FcCompareBool) - FC_OBJECT (FONT_HAS_HINT, FcTypeBool, FcCompareBool) - FC_OBJECT (ORDER, FcTypeInteger, FcCompareNumber) -+FC_OBJECT (DESKTOP_NAME, FcTypeString, NULL) - /* ^-------------- Add new objects here. */ -diff --git a/src/fcxml.c b/src/fcxml.c -index 82a46f2..74c892d 100644 ---- a/src/fcxml.c -+++ b/src/fcxml.c -@@ -367,7 +367,7 @@ typedef enum _FcElement { - FcElementDescription, - FcElementRemapDir, - FcElementResetDirs, -- -+ - FcElementRescan, - - FcElementPrefer, -@@ -731,7 +731,7 @@ FcTypecheckExpr (FcConfigParse *parse, FcExpr *expr, FcType type) - if (o) - FcTypecheckValue (parse, o->type, type); - } -- else -+ else - FcConfigMessage (parse, FcSevereWarning, - "invalid constant used : %s", - expr->u.constant); -@@ -794,7 +794,7 @@ FcTestCreate (FcConfigParse *parse, - if (test) - { - const FcObjectType *o; -- -+ - test->kind = kind; - test->qual = qual; - test->object = FcObjectFromName ((const char *) field); -@@ -1533,7 +1533,7 @@ FcStrtod (char *s, char **end) - { - char buf[128]; - int slen = strlen (s); -- -+ - if (slen + dlen > (int) sizeof (buf)) - { - if (end) -@@ -3101,7 +3101,7 @@ FcParsePattern (FcConfigParse *parse) - FcConfigMessage (parse, FcSevereError, "out of memory"); - return; - } -- -+ - while ((vstack = FcVStackPeek (parse))) - { - switch ((int) vstack->tag) { -@@ -3176,7 +3176,7 @@ FcEndElement(void *userData, const XML_Char *name FC_UNUSED) - case FcElementRescan: - FcParseRescan (parse); - break; -- -+ - case FcElementPrefer: - FcParseFamilies (parse, FcVStackPrefer); - break; -@@ -3512,7 +3512,7 @@ FcConfigParseAndLoadFromMemoryInternal (FcConfig *config, - XML_SetDoctypeDeclHandler (p, FcStartDoctypeDecl, FcEndDoctypeDecl); - XML_SetElementHandler (p, FcStartElement, FcEndElement); - XML_SetCharacterDataHandler (p, FcCharacterData); -- -+ - #endif /* ENABLE_LIBXML2 */ - - #ifndef ENABLE_LIBXML2 --- -2.38.1 - diff --git a/fontconfig.spec b/fontconfig.spec index b15dee1..28999b7 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -4,8 +4,8 @@ Summary: Font configuration and customization library Name: fontconfig -Version: 2.14.1 -Release: 3%{?dist} +Version: 2.14.2 +Release: 1%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code # fc-case/CaseFolding.txt is in the UCD @@ -21,7 +21,6 @@ Source3: 10-sub-pixel-rgb-for-kde.conf Patch0: %{name}-sleep-less.patch Patch4: %{name}-drop-lang-from-pkgkit-format.patch Patch5: %{name}-disable-network-required-test.patch -Patch6: %{name}-desktop-property.patch BuildRequires: libxml2-devel BuildRequires: freetype-devel >= %{freetype_version} @@ -193,6 +192,9 @@ fi %doc fontconfig-devel.txt fontconfig-devel %changelog +* Fri Jan 27 2023 Akira TAGOH - 2.14.2-1 +- New upstream release. + * Thu Jan 19 2023 Fedora Release Engineering - 2.14.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild diff --git a/sources b/sources index 51a9e53..9884c80 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (fontconfig-2.14.1.tar.xz) = ba42e6f90ec92914895d2157c872c373adfc17be791b92253bcc40e85674a84e43c08ab2b37c3ae85b53b2e7bd2a7847abb479043f303b732c08eeac3ee733db +SHA512 (fontconfig-2.14.2.tar.xz) = 23483e0ae6aa7589fd37f9949a4cf951c5bff981739dbb446881e4cea86a208c0ab31e2358666eac724af1dc6a689a42733a7ce91cd3e76d8d91eacedb318085 From a71d8d0d33254c437ab10b88110a57fb8a78346b Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Tue, 4 Apr 2023 14:54:59 +0900 Subject: [PATCH 43/73] Migrated license tag to SPDX. --- fontconfig.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/fontconfig.spec b/fontconfig.spec index 28999b7..537ac60 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,12 +5,13 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.14.2 -Release: 1%{?dist} +Release: 2%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code +## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 # fc-case/CaseFolding.txt is in the UCD # otherwise MIT -License: MIT and Public Domain and UCD +License: HPND AND LicenseRef-Fedora-Public-Domain AND Unicode-DFS-2016 Source: http://fontconfig.org/release/%{name}-%{version}.tar.xz URL: http://fontconfig.org Source1: 25-no-bitmap-fedora.conf @@ -192,6 +193,9 @@ fi %doc fontconfig-devel.txt fontconfig-devel %changelog +* Tue Apr 4 2023 Akira TAGOH - 2.14.2-2 +- Migrated license tag to SPDX. + * Fri Jan 27 2023 Akira TAGOH - 2.14.2-1 - New upstream release. From b1ee7ffdbdf3d8ab16b9259507d8218be4ad94ca Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Fri, 16 Jun 2023 18:14:18 +0900 Subject: [PATCH 44/73] Drop 10-sub-pixel-rgb-for-kde.conf Resolves: rhbz#2212512 --- fontconfig.spec | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/fontconfig.spec b/fontconfig.spec index 537ac60..3dc1f61 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.14.2 -Release: 2%{?dist} +Release: 3%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 @@ -16,7 +16,6 @@ Source: http://fontconfig.org/release/%{name}-%{version}.tar.xz URL: http://fontconfig.org Source1: 25-no-bitmap-fedora.conf Source2: fc-cache -Source3: 10-sub-pixel-rgb-for-kde.conf # https://bugzilla.redhat.com/show_bug.cgi?id=140335 Patch0: %{name}-sleep-less.patch @@ -94,9 +93,8 @@ find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';' install -p -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d ln -s %{_fontconfig_templatedir}/25-unhint-nonlatin.conf $RPM_BUILD_ROOT%{_fontconfig_confdir}/ -# Use conditional conf instead +# Use implied value to allow the use of conditional conf rm $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d/10-sub-pixel-*.conf -install -p -m 0644 %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d # move installed doc files back to build directory to package them # in the right place @@ -193,6 +191,10 @@ fi %doc fontconfig-devel.txt fontconfig-devel %changelog +* Fri Jun 16 2023 Akira TAGOH - 2.14.2-3 +- Drop 10-sub-pixel-rgb-for-kde.conf + Resolves: rhbz#2212512 + * Tue Apr 4 2023 Akira TAGOH - 2.14.2-2 - Migrated license tag to SPDX. From 7450f4c8e92c46a74eeff0ef876d106ae4443a44 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 19 Jul 2023 20:01:44 +0000 Subject: [PATCH 45/73] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- fontconfig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontconfig.spec b/fontconfig.spec index 3dc1f61..f5d7668 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.14.2 -Release: 3%{?dist} +Release: 4%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 @@ -191,6 +191,9 @@ fi %doc fontconfig-devel.txt fontconfig-devel %changelog +* Wed Jul 19 2023 Fedora Release Engineering - 2.14.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Fri Jun 16 2023 Akira TAGOH - 2.14.2-3 - Drop 10-sub-pixel-rgb-for-kde.conf Resolves: rhbz#2212512 From 353020918ca14302545b32dc36d76bf21a6b2960 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Thu, 17 Aug 2023 17:25:57 +0900 Subject: [PATCH 46/73] Update 65-nonlatin.conf to 69-nonlatin.conf This basically provides substitutes for certain languages and is helpful to determine default behavior though, we have per-package config for similar purpose. Since 65 is mostly used for default fonts and this config prevents some behavior for packages named something coming later than "nonlatin" in the alphabetical order. So moving this to the safer priority. This would fixes an issue, particularly Lohit Marathi vs Lohit Devanagari after updating their priorities from 65 to 66. --- fontconfig-lower-nonlatin-conf.patch | 485 +++++++++++++++++++++++++++ fontconfig.spec | 11 + 2 files changed, 496 insertions(+) create mode 100644 fontconfig-lower-nonlatin-conf.patch diff --git a/fontconfig-lower-nonlatin-conf.patch b/fontconfig-lower-nonlatin-conf.patch new file mode 100644 index 0000000..6139992 --- /dev/null +++ b/fontconfig-lower-nonlatin-conf.patch @@ -0,0 +1,485 @@ +diff -pruN fontconfig-2.14.2.orig/conf.d/65-nonlatin.conf fontconfig-2.14.2/conf.d/65-nonlatin.conf +--- fontconfig-2.14.2.orig/conf.d/65-nonlatin.conf 2020-12-03 20:45:00.000000000 +0900 ++++ fontconfig-2.14.2/conf.d/65-nonlatin.conf 1970-01-01 09:00:00.000000000 +0900 +@@ -1,228 +0,0 @@ +- +- +- +- Set preferable fonts for non-Latin +- +- serif +- +- Artsounk +- BPG UTF8 M +- Kinnari +- Norasi +- Frank Ruehl +- Dror +- JG LaoTimes +- Saysettha Unicode +- Pigiarniq +- B Davat +- B Compset +- Kacst-Qr +- Urdu Nastaliq Unicode +- Raghindi +- Mukti Narrow +- malayalam +- Sampige +- padmaa +- Hapax Berbère +- MS Mincho +- SimSun +- PMingLiu +- WenQuanYi Zen Hei +- WenQuanYi Bitmap Song +- AR PL ShanHeiSun Uni +- AR PL New Sung +- ZYSong18030 +- HanyiSong +- MgOpen Canonica +- Sazanami Mincho +- IPAMonaMincho +- IPAMincho +- Kochi Mincho +- AR PL SungtiL GB +- AR PL Mingti2L Big5 +- AR PL Zenkai Uni +- MS 明朝 +- ZYSong18030 +- NanumMyeongjo +- UnBatang +- Baekmuk Batang +- KacstQura +- Frank Ruehl CLM +- Lohit Bengali +- Lohit Gujarati +- Lohit Hindi +- Lohit Marathi +- Lohit Maithili +- Lohit Kashmiri +- Lohit Konkani +- Lohit Nepali +- Lohit Sindhi +- Lohit Punjabi +- Lohit Tamil +- Rachana +- Lohit Malayalam +- Lohit Kannada +- Lohit Telugu +- Lohit Oriya +- LKLUG +- +- +- +- sans-serif +- +- Nachlieli +- Lucida Sans Unicode +- Yudit Unicode +- Kerkis +- ArmNet Helvetica +- Artsounk +- BPG UTF8 M +- Waree +- Loma +- Garuda +- Umpush +- Saysettha Unicode +- JG Lao Old Arial +- GF Zemen Unicode +- Pigiarniq +- B Davat +- B Compset +- Kacst-Qr +- Urdu Nastaliq Unicode +- Raghindi +- Mukti Narrow +- malayalam +- Sampige +- padmaa +- Hapax Berbère +- MS Gothic +- UmePlus P Gothic +- Microsoft YaHei +- Microsoft JhengHei +- WenQuanYi Zen Hei +- WenQuanYi Bitmap Song +- AR PL ShanHeiSun Uni +- AR PL New Sung +- MgOpen Modata +- VL Gothic +- IPAMonaGothic +- IPAGothic +- Sazanami Gothic +- Kochi Gothic +- AR PL KaitiM GB +- AR PL KaitiM Big5 +- AR PL ShanHeiSun Uni +- AR PL SungtiL GB +- AR PL Mingti2L Big5 +- MS ゴシック +- ZYSong18030 +- TSCu_Paranar +- NanumGothic +- UnDotum +- Baekmuk Dotum +- Baekmuk Gulim +- KacstQura +- Lohit Bengali +- Lohit Gujarati +- Lohit Hindi +- Lohit Marathi +- Lohit Maithili +- Lohit Kashmiri +- Lohit Konkani +- Lohit Nepali +- Lohit Sindhi +- Lohit Punjabi +- Lohit Tamil +- Meera +- Lohit Malayalam +- Lohit Kannada +- Lohit Telugu +- Lohit Oriya +- LKLUG +- +- +- +- monospace +- +- Miriam Mono +- VL Gothic +- IPAMonaGothic +- IPAGothic +- Sazanami Gothic +- Kochi Gothic +- AR PL KaitiM GB +- MS Gothic +- UmePlus Gothic +- NSimSun +- MingLiu +- AR PL ShanHeiSun Uni +- AR PL New Sung Mono +- HanyiSong +- AR PL SungtiL GB +- AR PL Mingti2L Big5 +- ZYSong18030 +- NanumGothicCoding +- NanumGothic +- UnDotum +- Baekmuk Dotum +- Baekmuk Gulim +- TlwgTypo +- TlwgTypist +- TlwgTypewriter +- TlwgMono +- Hasida +- GF Zemen Unicode +- Hapax Berbère +- Lohit Bengali +- Lohit Gujarati +- Lohit Hindi +- Lohit Marathi +- Lohit Maithili +- Lohit Kashmiri +- Lohit Konkani +- Lohit Nepali +- Lohit Sindhi +- Lohit Punjabi +- Lohit Tamil +- Meera +- Lohit Malayalam +- Lohit Kannada +- Lohit Telugu +- Lohit Oriya +- LKLUG +- +- +- +- +- system-ui +- +- Noto Sans Arabic UI +- Noto Sans Bengali UI +- Noto Sans Devanagari UI +- Noto Sans Gujarati UI +- Noto Sans Gurmukhi UI +- Noto Sans Kannada UI +- Noto Sans Khmer UI +- Noto Sans Lao UI +- Noto Sans Malayalam UI +- Noto Sans Myanmar UI +- Noto Sans Oriya UI +- Noto Sans Sinhala UI +- Noto Sans Tamil UI +- Noto Sans Telugu UI +- Noto Sans Thai UI +- Leelawadee UI +- Nirmala UI +- Yu Gothic UI +- Meiryo UI +- MS UI Gothic +- Khmer UI +- Lao UI +- Microsoft YaHei UI +- Microsoft JhengHei UI +- +- +- +- +diff -pruN fontconfig-2.14.2.orig/conf.d/69-nonlatin.conf fontconfig-2.14.2/conf.d/69-nonlatin.conf +--- fontconfig-2.14.2.orig/conf.d/69-nonlatin.conf 1970-01-01 09:00:00.000000000 +0900 ++++ fontconfig-2.14.2/conf.d/69-nonlatin.conf 2020-12-03 20:45:00.000000000 +0900 +@@ -0,0 +1,228 @@ ++ ++ ++ ++ Set preferable fonts for non-Latin ++ ++ serif ++ ++ Artsounk ++ BPG UTF8 M ++ Kinnari ++ Norasi ++ Frank Ruehl ++ Dror ++ JG LaoTimes ++ Saysettha Unicode ++ Pigiarniq ++ B Davat ++ B Compset ++ Kacst-Qr ++ Urdu Nastaliq Unicode ++ Raghindi ++ Mukti Narrow ++ malayalam ++ Sampige ++ padmaa ++ Hapax Berbère ++ MS Mincho ++ SimSun ++ PMingLiu ++ WenQuanYi Zen Hei ++ WenQuanYi Bitmap Song ++ AR PL ShanHeiSun Uni ++ AR PL New Sung ++ ZYSong18030 ++ HanyiSong ++ MgOpen Canonica ++ Sazanami Mincho ++ IPAMonaMincho ++ IPAMincho ++ Kochi Mincho ++ AR PL SungtiL GB ++ AR PL Mingti2L Big5 ++ AR PL Zenkai Uni ++ MS 明朝 ++ ZYSong18030 ++ NanumMyeongjo ++ UnBatang ++ Baekmuk Batang ++ KacstQura ++ Frank Ruehl CLM ++ Lohit Bengali ++ Lohit Gujarati ++ Lohit Hindi ++ Lohit Marathi ++ Lohit Maithili ++ Lohit Kashmiri ++ Lohit Konkani ++ Lohit Nepali ++ Lohit Sindhi ++ Lohit Punjabi ++ Lohit Tamil ++ Rachana ++ Lohit Malayalam ++ Lohit Kannada ++ Lohit Telugu ++ Lohit Oriya ++ LKLUG ++ ++ ++ ++ sans-serif ++ ++ Nachlieli ++ Lucida Sans Unicode ++ Yudit Unicode ++ Kerkis ++ ArmNet Helvetica ++ Artsounk ++ BPG UTF8 M ++ Waree ++ Loma ++ Garuda ++ Umpush ++ Saysettha Unicode ++ JG Lao Old Arial ++ GF Zemen Unicode ++ Pigiarniq ++ B Davat ++ B Compset ++ Kacst-Qr ++ Urdu Nastaliq Unicode ++ Raghindi ++ Mukti Narrow ++ malayalam ++ Sampige ++ padmaa ++ Hapax Berbère ++ MS Gothic ++ UmePlus P Gothic ++ Microsoft YaHei ++ Microsoft JhengHei ++ WenQuanYi Zen Hei ++ WenQuanYi Bitmap Song ++ AR PL ShanHeiSun Uni ++ AR PL New Sung ++ MgOpen Modata ++ VL Gothic ++ IPAMonaGothic ++ IPAGothic ++ Sazanami Gothic ++ Kochi Gothic ++ AR PL KaitiM GB ++ AR PL KaitiM Big5 ++ AR PL ShanHeiSun Uni ++ AR PL SungtiL GB ++ AR PL Mingti2L Big5 ++ MS ゴシック ++ ZYSong18030 ++ TSCu_Paranar ++ NanumGothic ++ UnDotum ++ Baekmuk Dotum ++ Baekmuk Gulim ++ KacstQura ++ Lohit Bengali ++ Lohit Gujarati ++ Lohit Hindi ++ Lohit Marathi ++ Lohit Maithili ++ Lohit Kashmiri ++ Lohit Konkani ++ Lohit Nepali ++ Lohit Sindhi ++ Lohit Punjabi ++ Lohit Tamil ++ Meera ++ Lohit Malayalam ++ Lohit Kannada ++ Lohit Telugu ++ Lohit Oriya ++ LKLUG ++ ++ ++ ++ monospace ++ ++ Miriam Mono ++ VL Gothic ++ IPAMonaGothic ++ IPAGothic ++ Sazanami Gothic ++ Kochi Gothic ++ AR PL KaitiM GB ++ MS Gothic ++ UmePlus Gothic ++ NSimSun ++ MingLiu ++ AR PL ShanHeiSun Uni ++ AR PL New Sung Mono ++ HanyiSong ++ AR PL SungtiL GB ++ AR PL Mingti2L Big5 ++ ZYSong18030 ++ NanumGothicCoding ++ NanumGothic ++ UnDotum ++ Baekmuk Dotum ++ Baekmuk Gulim ++ TlwgTypo ++ TlwgTypist ++ TlwgTypewriter ++ TlwgMono ++ Hasida ++ GF Zemen Unicode ++ Hapax Berbère ++ Lohit Bengali ++ Lohit Gujarati ++ Lohit Hindi ++ Lohit Marathi ++ Lohit Maithili ++ Lohit Kashmiri ++ Lohit Konkani ++ Lohit Nepali ++ Lohit Sindhi ++ Lohit Punjabi ++ Lohit Tamil ++ Meera ++ Lohit Malayalam ++ Lohit Kannada ++ Lohit Telugu ++ Lohit Oriya ++ LKLUG ++ ++ ++ ++ ++ system-ui ++ ++ Noto Sans Arabic UI ++ Noto Sans Bengali UI ++ Noto Sans Devanagari UI ++ Noto Sans Gujarati UI ++ Noto Sans Gurmukhi UI ++ Noto Sans Kannada UI ++ Noto Sans Khmer UI ++ Noto Sans Lao UI ++ Noto Sans Malayalam UI ++ Noto Sans Myanmar UI ++ Noto Sans Oriya UI ++ Noto Sans Sinhala UI ++ Noto Sans Tamil UI ++ Noto Sans Telugu UI ++ Noto Sans Thai UI ++ Leelawadee UI ++ Nirmala UI ++ Yu Gothic UI ++ Meiryo UI ++ MS UI Gothic ++ Khmer UI ++ Lao UI ++ Microsoft YaHei UI ++ Microsoft JhengHei UI ++ ++ ++ ++ +diff -pruN fontconfig-2.14.2.orig/conf.d/Makefile.am fontconfig-2.14.2/conf.d/Makefile.am +--- fontconfig-2.14.2.orig/conf.d/Makefile.am 2022-11-28 18:17:51.000000000 +0900 ++++ fontconfig-2.14.2/conf.d/Makefile.am 2023-08-17 16:56:24.358848001 +0900 +@@ -47,7 +47,7 @@ CONF_LINKS = \ + 60-generic.conf \ + 60-latin.conf \ + 65-fonts-persian.conf \ +- 65-nonlatin.conf \ ++ 69-nonlatin.conf \ + 69-unifont.conf \ + 80-delicious.conf \ + 90-synthetic.conf +@@ -94,7 +94,7 @@ template_DATA = \ + 60-latin.conf \ + 65-fonts-persian.conf \ + 65-khmer.conf \ +- 65-nonlatin.conf \ ++ 69-nonlatin.conf \ + 69-unifont.conf \ + 70-no-bitmaps.conf \ + 70-yes-bitmaps.conf \ diff --git a/fontconfig.spec b/fontconfig.spec index f5d7668..4ae40d6 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -21,6 +21,7 @@ Source2: fc-cache Patch0: %{name}-sleep-less.patch Patch4: %{name}-drop-lang-from-pkgkit-format.patch Patch5: %{name}-disable-network-required-test.patch +Patch6: %{name}-lower-nonlatin-conf.patch BuildRequires: libxml2-devel BuildRequires: freetype-devel >= %{freetype_version} @@ -191,6 +192,16 @@ fi %doc fontconfig-devel.txt fontconfig-devel %changelog +* Thu Aug 17 2023 Akira TAGOH - 2.14.2-5 +- Update 65-nonlatin.conf to 69-nonlatin.conf + This basically provides substitutes for certain languages and is helpful + to determine default behavior though, we have per-package config for similar purpose. + Since 65 is mostly used for default fonts and this config prevents some behavior for + packages named something coming later than "nonlatin" in the alphabetical order. + So moving this to the safer priority. + This would fixes an issue, particularly Lohit Marathi vs Lohit Devanagari after + updating their priorities from 65 to 66. + * Wed Jul 19 2023 Fedora Release Engineering - 2.14.2-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From 1b1dff013739b4acf986e080ffb2ed5157bcf896 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Thu, 17 Aug 2023 17:43:37 +0900 Subject: [PATCH 47/73] Bump a release --- fontconfig.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fontconfig.spec b/fontconfig.spec index 4ae40d6..d52502d 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.14.2 -Release: 4%{?dist} +Release: 5%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 From d72678cc75d7591c03a69a97a55f6452eb32fcfb Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Fri, 22 Dec 2023 23:12:42 +0900 Subject: [PATCH 48/73] New upstream release. Resolves: rhbz#2255623 --- .gitignore | 1 + fontconfig-lower-nonlatin-conf.patch | 48 +++++++++++++++++++++------- fontconfig.spec | 10 ++++-- sources | 1 + 4 files changed, 45 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index 95fbd70..fab771d 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ fontconfig-2.8.0.tar.gz /fontconfig-2.14.0.tar.xz /fontconfig-2.14.1.tar.xz /fontconfig-2.14.2.tar.xz +/fontconfig-2.15.0.tar.xz diff --git a/fontconfig-lower-nonlatin-conf.patch b/fontconfig-lower-nonlatin-conf.patch index 6139992..2be984f 100644 --- a/fontconfig-lower-nonlatin-conf.patch +++ b/fontconfig-lower-nonlatin-conf.patch @@ -1,7 +1,7 @@ -diff -pruN fontconfig-2.14.2.orig/conf.d/65-nonlatin.conf fontconfig-2.14.2/conf.d/65-nonlatin.conf ---- fontconfig-2.14.2.orig/conf.d/65-nonlatin.conf 2020-12-03 20:45:00.000000000 +0900 -+++ fontconfig-2.14.2/conf.d/65-nonlatin.conf 1970-01-01 09:00:00.000000000 +0900 -@@ -1,228 +0,0 @@ +diff -pruN fontconfig-2.15.0.orig/conf.d/65-nonlatin.conf fontconfig-2.15.0/conf.d/65-nonlatin.conf +--- fontconfig-2.15.0.orig/conf.d/65-nonlatin.conf 2023-03-22 20:36:46.000000000 +0900 ++++ fontconfig-2.15.0/conf.d/65-nonlatin.conf 1970-01-01 09:00:00.000000000 +0900 +@@ -1,240 +0,0 @@ - - - @@ -37,6 +37,10 @@ diff -pruN fontconfig-2.14.2.orig/conf.d/65-nonlatin.conf fontconfig-2.14.2/conf - AR PL New Sung - ZYSong18030 - HanyiSong +- Hiragino Mincho ProN +- Songti SC +- Songti TC +- SimSong - MgOpen Canonica - Sazanami Mincho - IPAMonaMincho @@ -50,6 +54,7 @@ diff -pruN fontconfig-2.14.2.orig/conf.d/65-nonlatin.conf fontconfig-2.14.2/conf - NanumMyeongjo - UnBatang - Baekmuk Batang +- AppleMyungjo - KacstQura - Frank Ruehl CLM - Lohit Bengali @@ -107,6 +112,12 @@ diff -pruN fontconfig-2.14.2.orig/conf.d/65-nonlatin.conf fontconfig-2.14.2/conf - WenQuanYi Bitmap Song - AR PL ShanHeiSun Uni - AR PL New Sung +- Hiragino Sans +- PingFang SC +- PingFang TC +- PingFang HK +- Hiragino Sans CNS +- Hiragino Sans GB - MgOpen Modata - VL Gothic - IPAMonaGothic @@ -125,6 +136,7 @@ diff -pruN fontconfig-2.14.2.orig/conf.d/65-nonlatin.conf fontconfig-2.14.2/conf - UnDotum - Baekmuk Dotum - Baekmuk Gulim +- Apple SD Gothic Neo - KacstQura - Lohit Bengali - Lohit Gujarati @@ -230,10 +242,10 @@ diff -pruN fontconfig-2.14.2.orig/conf.d/65-nonlatin.conf fontconfig-2.14.2/conf - - - -diff -pruN fontconfig-2.14.2.orig/conf.d/69-nonlatin.conf fontconfig-2.14.2/conf.d/69-nonlatin.conf ---- fontconfig-2.14.2.orig/conf.d/69-nonlatin.conf 1970-01-01 09:00:00.000000000 +0900 -+++ fontconfig-2.14.2/conf.d/69-nonlatin.conf 2020-12-03 20:45:00.000000000 +0900 -@@ -0,0 +1,228 @@ +diff -pruN fontconfig-2.15.0.orig/conf.d/69-nonlatin.conf fontconfig-2.15.0/conf.d/69-nonlatin.conf +--- fontconfig-2.15.0.orig/conf.d/69-nonlatin.conf 1970-01-01 09:00:00.000000000 +0900 ++++ fontconfig-2.15.0/conf.d/69-nonlatin.conf 2023-03-22 20:36:46.000000000 +0900 +@@ -0,0 +1,240 @@ + + + @@ -269,6 +281,10 @@ diff -pruN fontconfig-2.14.2.orig/conf.d/69-nonlatin.conf fontconfig-2.14.2/conf + AR PL New Sung + ZYSong18030 + HanyiSong ++ Hiragino Mincho ProN ++ Songti SC ++ Songti TC ++ SimSong + MgOpen Canonica + Sazanami Mincho + IPAMonaMincho @@ -282,6 +298,7 @@ diff -pruN fontconfig-2.14.2.orig/conf.d/69-nonlatin.conf fontconfig-2.14.2/conf + NanumMyeongjo + UnBatang + Baekmuk Batang ++ AppleMyungjo + KacstQura + Frank Ruehl CLM + Lohit Bengali @@ -339,6 +356,12 @@ diff -pruN fontconfig-2.14.2.orig/conf.d/69-nonlatin.conf fontconfig-2.14.2/conf + WenQuanYi Bitmap Song + AR PL ShanHeiSun Uni + AR PL New Sung ++ Hiragino Sans ++ PingFang SC ++ PingFang TC ++ PingFang HK ++ Hiragino Sans CNS ++ Hiragino Sans GB + MgOpen Modata + VL Gothic + IPAMonaGothic @@ -357,6 +380,7 @@ diff -pruN fontconfig-2.14.2.orig/conf.d/69-nonlatin.conf fontconfig-2.14.2/conf + UnDotum + Baekmuk Dotum + Baekmuk Gulim ++ Apple SD Gothic Neo + KacstQura + Lohit Bengali + Lohit Gujarati @@ -462,9 +486,9 @@ diff -pruN fontconfig-2.14.2.orig/conf.d/69-nonlatin.conf fontconfig-2.14.2/conf + + + -diff -pruN fontconfig-2.14.2.orig/conf.d/Makefile.am fontconfig-2.14.2/conf.d/Makefile.am ---- fontconfig-2.14.2.orig/conf.d/Makefile.am 2022-11-28 18:17:51.000000000 +0900 -+++ fontconfig-2.14.2/conf.d/Makefile.am 2023-08-17 16:56:24.358848001 +0900 +diff -pruN fontconfig-2.15.0.orig/conf.d/Makefile.am fontconfig-2.15.0/conf.d/Makefile.am +--- fontconfig-2.15.0.orig/conf.d/Makefile.am 2023-08-24 14:14:15.000000000 +0900 ++++ fontconfig-2.15.0/conf.d/Makefile.am 2023-12-22 23:08:05.514969924 +0900 @@ -47,7 +47,7 @@ CONF_LINKS = \ 60-generic.conf \ 60-latin.conf \ @@ -474,7 +498,7 @@ diff -pruN fontconfig-2.14.2.orig/conf.d/Makefile.am fontconfig-2.14.2/conf.d/Ma 69-unifont.conf \ 80-delicious.conf \ 90-synthetic.conf -@@ -94,7 +94,7 @@ template_DATA = \ +@@ -95,7 +95,7 @@ template_DATA = \ 60-latin.conf \ 65-fonts-persian.conf \ 65-khmer.conf \ diff --git a/fontconfig.spec b/fontconfig.spec index d52502d..e5bd5b5 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -4,8 +4,8 @@ Summary: Font configuration and customization library Name: fontconfig -Version: 2.14.2 -Release: 5%{?dist} +Version: 2.15.0 +Release: 1%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 @@ -156,7 +156,7 @@ if [ $1 == 0 ] && [ -e %{_sysconfdir}/xml/catalog ]; then fi %files -f %{name}.lang -%doc README AUTHORS +%doc README.md AUTHORS %doc fontconfig-user.txt fontconfig-user.html %doc %{_fontconfig_confdir}/README %license COPYING @@ -192,6 +192,10 @@ fi %doc fontconfig-devel.txt fontconfig-devel %changelog +* Fri Dec 22 2023 Akira TAGOH - 2.15.0-1 +- New upstream release. + Resolves: rhbz#2255623 + * Thu Aug 17 2023 Akira TAGOH - 2.14.2-5 - Update 65-nonlatin.conf to 69-nonlatin.conf This basically provides substitutes for certain languages and is helpful diff --git a/sources b/sources index 9884c80..10b4abe 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ SHA512 (fontconfig-2.14.2.tar.xz) = 23483e0ae6aa7589fd37f9949a4cf951c5bff981739dbb446881e4cea86a208c0ab31e2358666eac724af1dc6a689a42733a7ce91cd3e76d8d91eacedb318085 +SHA512 (fontconfig-2.15.0.tar.xz) = 754cd5fffa198fc07a39cf7df683e9adfa7f54ab41fdff8c0eacc078fd35d3e01069ba343f2b045e0b40df88d9f1fc1ee0f7565799f9cb194a59cf95b64c4417 From bfd9218620b7da2315d310df2d9fcc35aab207bf Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 19 Jan 2024 19:36:21 +0000 Subject: [PATCH 49/73] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- fontconfig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontconfig.spec b/fontconfig.spec index e5bd5b5..0d6e0c5 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.15.0 -Release: 1%{?dist} +Release: 2%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 @@ -192,6 +192,9 @@ fi %doc fontconfig-devel.txt fontconfig-devel %changelog +* Fri Jan 19 2024 Fedora Release Engineering - 2.15.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Fri Dec 22 2023 Akira TAGOH - 2.15.0-1 - New upstream release. Resolves: rhbz#2255623 From 50326b480810be2507507c99322995cc75663c98 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 24 Jan 2024 11:51:39 +0000 Subject: [PATCH 50/73] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- fontconfig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontconfig.spec b/fontconfig.spec index 0d6e0c5..a1d6e29 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.15.0 -Release: 2%{?dist} +Release: 3%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 @@ -192,6 +192,9 @@ fi %doc fontconfig-devel.txt fontconfig-devel %changelog +* Wed Jan 24 2024 Fedora Release Engineering - 2.15.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Fri Jan 19 2024 Fedora Release Engineering - 2.15.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From e200ccfc726f40f54e5695afbeb37efe2209f7e2 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Sat, 10 Feb 2024 02:28:59 +0900 Subject: [PATCH 51/73] Delete .uuid with fc-cache -f. Resolves: rhbz#1761885 --- fontconfig-remove-uuid.patch | 67 ++++++++++++++++++++++++++++++++++++ fontconfig.spec | 7 +++- 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 fontconfig-remove-uuid.patch diff --git a/fontconfig-remove-uuid.patch b/fontconfig-remove-uuid.patch new file mode 100644 index 0000000..16c0d04 --- /dev/null +++ b/fontconfig-remove-uuid.patch @@ -0,0 +1,67 @@ +From c22908828fb2dbfdf38733d119adc1cf5fe00173 Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Sat, 10 Feb 2024 00:20:54 +0900 +Subject: [PATCH 1/2] Clean up .uuid files with fc-cache -f too + +.uuid file was obsoleted >5 years ago and it was supposed to +be cleaned up by fc-cache -r but not -f. +This change tries to clean it up by fc-cache -f. + +https://bugzilla.redhat.com/show_bug.cgi?id=1761885 +--- + src/fcdir.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/fcdir.c b/src/fcdir.c +index 6f7b3835..2e4fdc69 100644 +--- a/src/fcdir.c ++++ b/src/fcdir.c +@@ -234,7 +234,7 @@ FcDirScanConfig (FcFontSet *set, + + if (FcDebug () & FC_DBG_SCAN) + printf ("\tScanning dir %s\n", s_dir); +- ++ + d = opendir ((char *) s_dir); + if (!d) + { +@@ -459,7 +459,10 @@ FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config) + + /* Not using existing cache file, construct new cache */ + if (!cache) ++ { ++ FcDirCacheDeleteUUID (dir, config); + cache = FcDirCacheScan (dir, config); ++ } + FcConfigDestroy (config); + + return cache; +-- +2.43.0 + +From a76b95105ca26c600279b2daf4bd43b37a918823 Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Sat, 10 Feb 2024 02:15:45 +0900 +Subject: [PATCH 2/2] Fix undesired unref of FcConfig on Win32 + +--- + src/fccache.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/fccache.c b/src/fccache.c +index cebbb810..54f76ac1 100644 +--- a/src/fccache.c ++++ b/src/fccache.c +@@ -106,8 +106,8 @@ FcDirCacheDeleteUUID (const FcChar8 *dir, + FcStrFree (target); + bail: + FcStrFree (d); +-#endif + FcConfigDestroy (config); ++#endif + + return ret; + } +-- +2.43.0 + diff --git a/fontconfig.spec b/fontconfig.spec index a1d6e29..6390590 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.15.0 -Release: 3%{?dist} +Release: 4%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 @@ -22,6 +22,7 @@ Patch0: %{name}-sleep-less.patch Patch4: %{name}-drop-lang-from-pkgkit-format.patch Patch5: %{name}-disable-network-required-test.patch Patch6: %{name}-lower-nonlatin-conf.patch +Patch7: %{name}-remove-uuid.patch BuildRequires: libxml2-devel BuildRequires: freetype-devel >= %{freetype_version} @@ -192,6 +193,10 @@ fi %doc fontconfig-devel.txt fontconfig-devel %changelog +* Sat Feb 10 2024 Akira TAGOH - 2.15.0-4 +- Delete .uuid with fc-cache -f. + Resolves: rhbz#1761885 + * Wed Jan 24 2024 Fedora Release Engineering - 2.15.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From be5b48f736a36bec35e6c112c0a646c6fbd29a82 Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Tue, 30 Apr 2024 01:22:24 +0200 Subject: [PATCH 52/73] Fix emoji fonts being disabled when bitmap fonts were disabled --- fontconfig-fix-emojis.patch | 109 ++++++++++++++++++++++++++++++++++++ fontconfig.spec | 6 +- 2 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 fontconfig-fix-emojis.patch diff --git a/fontconfig-fix-emojis.patch b/fontconfig-fix-emojis.patch new file mode 100644 index 0000000..ef4738b --- /dev/null +++ b/fontconfig-fix-emojis.patch @@ -0,0 +1,109 @@ +From 810a300398dc93b7becca4a7f286e8999adc09a5 Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Fri, 8 Mar 2024 01:55:14 +0900 +Subject: [PATCH] Sort out bitmap related config files + +70-no-bitmaps-and-emoji.conf: reject bitmap fonts including bitmap emoji fonts. +70-no-bitmaps-except-emoji.conf: reject bitmap fonts except bitmap emoji fonts. +70-no-bitmaps.conf: same to 70-no-bitmaps-except-emoji.conf for backward compatibility +but deprecated. This will be dropped in the future. + +Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/409 +--- + conf.d/70-no-bitmaps-and-emoji.conf | 13 +++++++++++++ + conf.d/70-no-bitmaps-except-emoji.conf | 14 ++++++++++++++ + conf.d/70-no-bitmaps.conf | 11 ++--------- + conf.d/Makefile.am | 2 ++ + conf.d/meson.build | 2 ++ + 5 files changed, 33 insertions(+), 9 deletions(-) + create mode 100644 conf.d/70-no-bitmaps-and-emoji.conf + create mode 100644 conf.d/70-no-bitmaps-except-emoji.conf + +diff --git a/conf.d/70-no-bitmaps-and-emoji.conf b/conf.d/70-no-bitmaps-and-emoji.conf +new file mode 100644 +index 00000000..3e18a4cf +--- /dev/null ++++ b/conf.d/70-no-bitmaps-and-emoji.conf +@@ -0,0 +1,13 @@ ++ ++ ++ ++ Reject bitmap fonts, including bitmap emoji fonts ++ ++ ++ ++ ++ false ++ ++ ++ ++ +diff --git a/conf.d/70-no-bitmaps-except-emoji.conf b/conf.d/70-no-bitmaps-except-emoji.conf +new file mode 100644 +index 00000000..3170cd6f +--- /dev/null ++++ b/conf.d/70-no-bitmaps-except-emoji.conf +@@ -0,0 +1,14 @@ ++ ++ ++ ++ Reject bitmap fonts except bitmap emoji fonts ++ ++ ++ ++ ++ false ++ false ++ ++ ++ ++ +diff --git a/conf.d/70-no-bitmaps.conf b/conf.d/70-no-bitmaps.conf +index 10203acb..767e4115 100644 +--- a/conf.d/70-no-bitmaps.conf ++++ b/conf.d/70-no-bitmaps.conf +@@ -1,13 +1,6 @@ + + + +- Reject bitmap fonts +- +- +- +- +- false +- +- +- ++ Reject bitmap fonts except bitmap emoji fonts (deprecated; use 70-no-bitmaps-except-emoji.conf) ++ 70-no-bitmaps-except-emoji.conf + +diff --git a/conf.d/Makefile.am b/conf.d/Makefile.am +index fd858348..737b4fb2 100644 +--- a/conf.d/Makefile.am ++++ b/conf.d/Makefile.am +@@ -98,6 +98,8 @@ template_DATA = \ + 69-nonlatin.conf \ + 69-unifont.conf \ + 70-no-bitmaps.conf \ ++ 70-no-bitmaps-and-emoji.conf \ ++ 70-no-bitmaps-except-emoji.conf \ + 70-yes-bitmaps.conf \ + 80-delicious.conf \ + 90-synthetic.conf +diff --git a/conf.d/meson.build b/conf.d/meson.build +index 8e896118..b6d07ee0 100644 +--- a/conf.d/meson.build ++++ b/conf.d/meson.build +@@ -36,6 +36,8 @@ conf_files = [ + '65-nonlatin.conf', + '69-unifont.conf', + '70-no-bitmaps.conf', ++ '70-no-bitmaps-and-emoji.conf', ++ '70-no-bitmaps-except-emoji.conf', + '70-yes-bitmaps.conf', + '80-delicious.conf', + '90-synthetic.conf', +-- +GitLab + diff --git a/fontconfig.spec b/fontconfig.spec index 6390590..85991f1 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.15.0 -Release: 4%{?dist} +Release: 5%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 @@ -23,6 +23,7 @@ Patch4: %{name}-drop-lang-from-pkgkit-format.patch Patch5: %{name}-disable-network-required-test.patch Patch6: %{name}-lower-nonlatin-conf.patch Patch7: %{name}-remove-uuid.patch +Patch8: %{name}-fix-emojis.patch BuildRequires: libxml2-devel BuildRequires: freetype-devel >= %{freetype_version} @@ -193,6 +194,9 @@ fi %doc fontconfig-devel.txt fontconfig-devel %changelog +* Mon Apr 29 2024 Michael Kuhn - 2.15.0-5 +- Fix emoji fonts being disabled when bitmap fonts were disabled + * Sat Feb 10 2024 Akira TAGOH - 2.15.0-4 - Delete .uuid with fc-cache -f. Resolves: rhbz#1761885 From 354394f0f41a6de0997c59d806ec524ab17e1cc3 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Fri, 7 Jun 2024 23:03:12 +0900 Subject: [PATCH 53/73] Own /usr/lib/fontconfig Resolves: rhbz#2284076 --- fontconfig.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/fontconfig.spec b/fontconfig.spec index 85991f1..856f352 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.15.0 -Release: 5%{?dist} +Release: 6%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 @@ -178,6 +178,7 @@ fi # If you want to do so, you should use local.conf instead. %config %{_fontconfig_masterdir}/fonts.conf %config(noreplace) %{_fontconfig_confdir}/*.conf +%dir /usr/lib/fontconfig %dir /usr/lib/fontconfig/cache %{_mandir}/man1/* %{_mandir}/man5/* @@ -194,6 +195,10 @@ fi %doc fontconfig-devel.txt fontconfig-devel %changelog +* Fri Jun 7 2024 Akira TAGOH - 2.15.0-6 +- Own /usr/lib/fontconfig + Resolves: rhbz#2284076 + * Mon Apr 29 2024 Michael Kuhn - 2.15.0-5 - Fix emoji fonts being disabled when bitmap fonts were disabled From 067f5c6f8e55b7238501bf1470e792cfbb120ff6 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 17 Jul 2024 23:26:13 +0000 Subject: [PATCH 54/73] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- fontconfig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontconfig.spec b/fontconfig.spec index 856f352..bfdb782 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.15.0 -Release: 6%{?dist} +Release: 7%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 @@ -195,6 +195,9 @@ fi %doc fontconfig-devel.txt fontconfig-devel %changelog +* Wed Jul 17 2024 Fedora Release Engineering - 2.15.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Fri Jun 7 2024 Akira TAGOH - 2.15.0-6 - Own /usr/lib/fontconfig Resolves: rhbz#2284076 From d3f982b32de573dd5d557e75fa0792e4a87fc25a Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Thu, 18 Jul 2024 19:37:02 +0900 Subject: [PATCH 55/73] ci: Use tmt based test cases --- .fmf/version | 1 + tests/basic/main.fmf | 3 +++ tests/basic/test.sh | 22 ++++++++++++++++++++++ tests/tests.yml | 14 -------------- 4 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 .fmf/version create mode 100644 tests/basic/main.fmf create mode 100755 tests/basic/test.sh delete mode 100644 tests/tests.yml diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/tests/basic/main.fmf b/tests/basic/main.fmf new file mode 100644 index 0000000..d6c06ec --- /dev/null +++ b/tests/basic/main.fmf @@ -0,0 +1,3 @@ +summary: Concise summary describing what the test does +test: ./test.sh +framework: beakerlib diff --git a/tests/basic/test.sh b/tests/basic/test.sh new file mode 100755 index 0000000..10de1b4 --- /dev/null +++ b/tests/basic/test.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +rlJournalStart + rlPhaseStartSetup + rlRun "tmp=\$(mktemp -d)" 0 "Create tmp directory" + rlRun "pushd $tmp" + rlRun "set -o pipefail" + rlPhaseEnd + + rlPhaseStartTest + rlRun "fc-match" 0 "Check fc-match" + rlRun "fc-list" 0 "Check fc-list" + rlRun "fc-scan /usr/share/fonts" 0 "Check fc-scan" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $tmp" 0 "Remove tmp directory" + rlPhaseEnd +rlJournalEnd diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index d3fa1ed..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,14 +0,0 @@ -- hosts: localhost - roles: - - role: standard-test-basic - tags: - - classic - required_packages: - - fontconfig - tests: - - fcmatch_test: - dir: . - run: fc-match - - fclist_test: - dir: . - run: fc-list From c400e27282f14ea8e6102529bf176cdcba501655 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Fri, 19 Jul 2024 20:09:47 +0900 Subject: [PATCH 56/73] ci: Add fmf plan file --- plans/basic.fmf | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 plans/basic.fmf diff --git a/plans/basic.fmf b/plans/basic.fmf new file mode 100644 index 0000000..c1627f9 --- /dev/null +++ b/plans/basic.fmf @@ -0,0 +1,5 @@ +summary: Basic smoke test +discover: + how: fmf +execute: + how: tmt From c6712606928e77b5a59599e704cbf302296c03fe Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Thu, 1 Aug 2024 12:45:32 +0900 Subject: [PATCH 57/73] Fix a memory leak and potentially uninitialized values. --- fontconfig-fix-SAST.patch | 54 +++++++++++++++++++++++++++++++++++++++ fontconfig.spec | 6 ++++- 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 fontconfig-fix-SAST.patch diff --git a/fontconfig-fix-SAST.patch b/fontconfig-fix-SAST.patch new file mode 100644 index 0000000..6ef1b07 --- /dev/null +++ b/fontconfig-fix-SAST.patch @@ -0,0 +1,54 @@ +From eaa335e7c4686c622f31e691f8a41fdf30ea42b3 Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Wed, 31 Jul 2024 17:31:36 +0900 +Subject: [PATCH 1/2] Fix a memory leak in _get_real_paths_from_prefix + +--- + src/fcxml.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/src/fcxml.c b/src/fcxml.c +index 9fe0674..083fc1f 100644 +--- a/src/fcxml.c ++++ b/src/fcxml.c +@@ -1327,11 +1327,9 @@ _get_real_paths_from_prefix(FcConfigParse *parse, const FcChar8 *path, const FcC + if (!p) + return NULL; + parent = FcStrDirname (p); ++ FcStrFree (p); + if (!parent) +- { +- free (p); + return NULL; +- } + } + } + #ifndef _WIN32 +-- +2.45.2 + +From ab765827101787d49c0a66b23addc1f68f99a455 Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Wed, 31 Jul 2024 17:37:53 +0900 +Subject: [PATCH 2/2] Set FcTypeVoid if no valid types to convert + +--- + src/fcname.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/fcname.c b/src/fcname.c +index 566f0ef..b152bd9 100644 +--- a/src/fcname.c ++++ b/src/fcname.c +@@ -406,6 +406,8 @@ FcNameConvert (FcType type, const char *object, FcChar8 *string) + v.u.r = FcRangeCreateDouble (b, e); + break; + default: ++ /* No valid type to convert */ ++ v.type = FcTypeVoid; + break; + } + return v; +-- +2.45.2 + diff --git a/fontconfig.spec b/fontconfig.spec index bfdb782..8f32181 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.15.0 -Release: 7%{?dist} +Release: 8%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 @@ -24,6 +24,7 @@ Patch5: %{name}-disable-network-required-test.patch Patch6: %{name}-lower-nonlatin-conf.patch Patch7: %{name}-remove-uuid.patch Patch8: %{name}-fix-emojis.patch +Patch9: %{name}-fix-SAST.patch BuildRequires: libxml2-devel BuildRequires: freetype-devel >= %{freetype_version} @@ -195,6 +196,9 @@ fi %doc fontconfig-devel.txt fontconfig-devel %changelog +* Thu Aug 1 2024 Akira TAGOH - 2.15.0-8 +- Fix a memory leak and potentially uninitialized values. + * Wed Jul 17 2024 Fedora Release Engineering - 2.15.0-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From e2bb04c6dbe8cda0add21fda01a23f0770bdd404 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 16 Jan 2025 18:36:18 +0000 Subject: [PATCH 58/73] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- fontconfig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontconfig.spec b/fontconfig.spec index 8f32181..c4a9476 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.15.0 -Release: 8%{?dist} +Release: 9%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 @@ -196,6 +196,9 @@ fi %doc fontconfig-devel.txt fontconfig-devel %changelog +* Thu Jan 16 2025 Fedora Release Engineering - 2.15.0-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Thu Aug 1 2024 Akira TAGOH - 2.15.0-8 - Fix a memory leak and potentially uninitialized values. From 39a7075dc3bf71fdb013926f31a29acc1324edc2 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Sat, 18 Jan 2025 01:36:49 +0900 Subject: [PATCH 59/73] New upstream release. Use meson instead of autotools to build. --- .gitignore | 1 + ...config-disable-network-required-test.patch | 43 +- fontconfig-lower-nonlatin-conf.patch | 517 +----------------- fontconfig.spec | 63 ++- sources | 3 +- 5 files changed, 99 insertions(+), 528 deletions(-) diff --git a/.gitignore b/.gitignore index fab771d..b63773a 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,4 @@ fontconfig-2.8.0.tar.gz /fontconfig-2.14.1.tar.xz /fontconfig-2.14.2.tar.xz /fontconfig-2.15.0.tar.xz +/fontconfig-2.16.0.tar.xz diff --git a/fontconfig-disable-network-required-test.patch b/fontconfig-disable-network-required-test.patch index 8481f39..b276aa5 100644 --- a/fontconfig-disable-network-required-test.patch +++ b/fontconfig-disable-network-required-test.patch @@ -1,7 +1,38 @@ -diff -pruN fontconfig-2.13.93.orig/test/run-test.sh fontconfig-2.13.93/test/run-test.sh ---- fontconfig-2.13.93.orig/test/run-test.sh 2020-11-28 10:56:42.000000000 +0900 -+++ fontconfig-2.13.93/test/run-test.sh 2020-11-28 12:39:57.345644527 +0900 -@@ -421,18 +421,18 @@ rm -rf "$MYCACHEBASEDIR" "$MYCONFIG" my- +diff -pruN fontconfig-2.16.0.orig/test/meson.build fontconfig-2.16.0/test/meson.build +--- fontconfig-2.16.0.orig/test/meson.build 2025-01-18 00:15:05.000000000 +0900 ++++ fontconfig-2.16.0/test/meson.build 2025-01-18 01:07:12.893480441 +0900 +@@ -15,7 +15,7 @@ if host_machine.system() != 'windows' + ['test-bz106632.c', {'c_args': ['-DFONTFILE="@0@"'.format(join_paths(meson.current_source_dir(), '4x6.pcf'))]}], + ['test-issue107.c'], # FIXME: fails on mingw + # FIXME: this needs NotoSans-hinted.zip font downloaded and unpacked into test build directory! see run-test.sh +- ['test-crbug1004254.c', {'dependencies': dependency('threads')}], # for pthread ++ #['test-crbug1004254.c', {'dependencies': dependency('threads')}], # for pthread + ] + + if get_option('default_library') == 'static' +@@ -62,12 +62,12 @@ if host_machine.system() != 'windows' + + test('run_test_sh', find_program('run-test.sh'), timeout: 600, env: ['srcdir=@0@'.format(meson.current_source_dir()), 'builddir=@0@'.format(meson.current_build_dir()), 'EXEEXT=@0@'.format(conf.get('EXEEXT')), 'VERBOSE=1']) + +- if pytest.found() +- test('pytest', pytest, args: ['--tap'], +- workdir: meson.current_source_dir(), +- env: ['builddir=@0@'.format(meson.current_build_dir())], +- protocol: 'tap') +- endif ++# if pytest.found() ++# test('pytest', pytest, args: ['--tap'], ++# workdir: meson.current_source_dir(), ++# env: ['builddir=@0@'.format(meson.current_build_dir())], ++# protocol: 'tap') ++# endif + endif + + if jsonc_dep.found() +diff -pruN fontconfig-2.16.0.orig/test/run-test.sh fontconfig-2.16.0/test/run-test.sh +--- fontconfig-2.16.0.orig/test/run-test.sh 2025-01-18 00:15:05.000000000 +0900 ++++ fontconfig-2.16.0/test/run-test.sh 2025-01-18 01:06:54.310144693 +0900 +@@ -499,18 +499,18 @@ rm -rf "$MYCACHEBASEDIR" "$MYCONFIG" "$B fi # if [ "x$EXEEXT" = "x" ] @@ -11,7 +42,7 @@ diff -pruN fontconfig-2.13.93.orig/test/run-test.sh fontconfig-2.13.93/test/run- - curl -s -o "$FONTDIR"/noto.zip https://noto-website-2.storage.googleapis.com/pkgs/NotoSans-hinted.zip - (cd "$FONTDIR"; unzip noto.zip) - if [ -n "${SOURCE_DATE_EPOCH:-}" ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then -- touch -m -t "$(date -d @"${SOURCE_DATE_EPOCH}" +%y%m%d%H%M.%S)" "$FONTDIR" +- touch -m -t "$(fdate ${SOURCE_DATE_EPOCH})" "$FONTDIR" - fi - "$BUILDTESTDIR"/test-crbug1004254 -else @@ -21,7 +52,7 @@ diff -pruN fontconfig-2.13.93.orig/test/run-test.sh fontconfig-2.13.93/test/run- +# curl -s -o "$FONTDIR"/noto.zip https://noto-website-2.storage.googleapis.com/pkgs/NotoSans-hinted.zip +# (cd "$FONTDIR"; unzip noto.zip) +# if [ -n "${SOURCE_DATE_EPOCH:-}" ] && [ ${#SOURCE_DATE_EPOCH} -gt 0 ]; then -+# touch -m -t "$(date -d @"${SOURCE_DATE_EPOCH}" +%y%m%d%H%M.%S)" "$FONTDIR" ++# touch -m -t "$(fdate ${SOURCE_DATE_EPOCH})" "$FONTDIR" +# fi +# "$BUILDTESTDIR"/test-crbug1004254 +#else diff --git a/fontconfig-lower-nonlatin-conf.patch b/fontconfig-lower-nonlatin-conf.patch index 2be984f..3ff373a 100644 --- a/fontconfig-lower-nonlatin-conf.patch +++ b/fontconfig-lower-nonlatin-conf.patch @@ -1,494 +1,6 @@ -diff -pruN fontconfig-2.15.0.orig/conf.d/65-nonlatin.conf fontconfig-2.15.0/conf.d/65-nonlatin.conf ---- fontconfig-2.15.0.orig/conf.d/65-nonlatin.conf 2023-03-22 20:36:46.000000000 +0900 -+++ fontconfig-2.15.0/conf.d/65-nonlatin.conf 1970-01-01 09:00:00.000000000 +0900 -@@ -1,240 +0,0 @@ -- -- -- -- Set preferable fonts for non-Latin -- -- serif -- -- Artsounk -- BPG UTF8 M -- Kinnari -- Norasi -- Frank Ruehl -- Dror -- JG LaoTimes -- Saysettha Unicode -- Pigiarniq -- B Davat -- B Compset -- Kacst-Qr -- Urdu Nastaliq Unicode -- Raghindi -- Mukti Narrow -- malayalam -- Sampige -- padmaa -- Hapax Berbère -- MS Mincho -- SimSun -- PMingLiu -- WenQuanYi Zen Hei -- WenQuanYi Bitmap Song -- AR PL ShanHeiSun Uni -- AR PL New Sung -- ZYSong18030 -- HanyiSong -- Hiragino Mincho ProN -- Songti SC -- Songti TC -- SimSong -- MgOpen Canonica -- Sazanami Mincho -- IPAMonaMincho -- IPAMincho -- Kochi Mincho -- AR PL SungtiL GB -- AR PL Mingti2L Big5 -- AR PL Zenkai Uni -- MS 明朝 -- ZYSong18030 -- NanumMyeongjo -- UnBatang -- Baekmuk Batang -- AppleMyungjo -- KacstQura -- Frank Ruehl CLM -- Lohit Bengali -- Lohit Gujarati -- Lohit Hindi -- Lohit Marathi -- Lohit Maithili -- Lohit Kashmiri -- Lohit Konkani -- Lohit Nepali -- Lohit Sindhi -- Lohit Punjabi -- Lohit Tamil -- Rachana -- Lohit Malayalam -- Lohit Kannada -- Lohit Telugu -- Lohit Oriya -- LKLUG -- -- -- -- sans-serif -- -- Nachlieli -- Lucida Sans Unicode -- Yudit Unicode -- Kerkis -- ArmNet Helvetica -- Artsounk -- BPG UTF8 M -- Waree -- Loma -- Garuda -- Umpush -- Saysettha Unicode -- JG Lao Old Arial -- GF Zemen Unicode -- Pigiarniq -- B Davat -- B Compset -- Kacst-Qr -- Urdu Nastaliq Unicode -- Raghindi -- Mukti Narrow -- malayalam -- Sampige -- padmaa -- Hapax Berbère -- MS Gothic -- UmePlus P Gothic -- Microsoft YaHei -- Microsoft JhengHei -- WenQuanYi Zen Hei -- WenQuanYi Bitmap Song -- AR PL ShanHeiSun Uni -- AR PL New Sung -- Hiragino Sans -- PingFang SC -- PingFang TC -- PingFang HK -- Hiragino Sans CNS -- Hiragino Sans GB -- MgOpen Modata -- VL Gothic -- IPAMonaGothic -- IPAGothic -- Sazanami Gothic -- Kochi Gothic -- AR PL KaitiM GB -- AR PL KaitiM Big5 -- AR PL ShanHeiSun Uni -- AR PL SungtiL GB -- AR PL Mingti2L Big5 -- MS ゴシック -- ZYSong18030 -- TSCu_Paranar -- NanumGothic -- UnDotum -- Baekmuk Dotum -- Baekmuk Gulim -- Apple SD Gothic Neo -- KacstQura -- Lohit Bengali -- Lohit Gujarati -- Lohit Hindi -- Lohit Marathi -- Lohit Maithili -- Lohit Kashmiri -- Lohit Konkani -- Lohit Nepali -- Lohit Sindhi -- Lohit Punjabi -- Lohit Tamil -- Meera -- Lohit Malayalam -- Lohit Kannada -- Lohit Telugu -- Lohit Oriya -- LKLUG -- -- -- -- monospace -- -- Miriam Mono -- VL Gothic -- IPAMonaGothic -- IPAGothic -- Sazanami Gothic -- Kochi Gothic -- AR PL KaitiM GB -- MS Gothic -- UmePlus Gothic -- NSimSun -- MingLiu -- AR PL ShanHeiSun Uni -- AR PL New Sung Mono -- HanyiSong -- AR PL SungtiL GB -- AR PL Mingti2L Big5 -- ZYSong18030 -- NanumGothicCoding -- NanumGothic -- UnDotum -- Baekmuk Dotum -- Baekmuk Gulim -- TlwgTypo -- TlwgTypist -- TlwgTypewriter -- TlwgMono -- Hasida -- GF Zemen Unicode -- Hapax Berbère -- Lohit Bengali -- Lohit Gujarati -- Lohit Hindi -- Lohit Marathi -- Lohit Maithili -- Lohit Kashmiri -- Lohit Konkani -- Lohit Nepali -- Lohit Sindhi -- Lohit Punjabi -- Lohit Tamil -- Meera -- Lohit Malayalam -- Lohit Kannada -- Lohit Telugu -- Lohit Oriya -- LKLUG -- -- -- -- -- system-ui -- -- Noto Sans Arabic UI -- Noto Sans Bengali UI -- Noto Sans Devanagari UI -- Noto Sans Gujarati UI -- Noto Sans Gurmukhi UI -- Noto Sans Kannada UI -- Noto Sans Khmer UI -- Noto Sans Lao UI -- Noto Sans Malayalam UI -- Noto Sans Myanmar UI -- Noto Sans Oriya UI -- Noto Sans Sinhala UI -- Noto Sans Tamil UI -- Noto Sans Telugu UI -- Noto Sans Thai UI -- Leelawadee UI -- Nirmala UI -- Yu Gothic UI -- Meiryo UI -- MS UI Gothic -- Khmer UI -- Lao UI -- Microsoft YaHei UI -- Microsoft JhengHei UI -- -- -- -- -diff -pruN fontconfig-2.15.0.orig/conf.d/69-nonlatin.conf fontconfig-2.15.0/conf.d/69-nonlatin.conf ---- fontconfig-2.15.0.orig/conf.d/69-nonlatin.conf 1970-01-01 09:00:00.000000000 +0900 -+++ fontconfig-2.15.0/conf.d/69-nonlatin.conf 2023-03-22 20:36:46.000000000 +0900 -@@ -0,0 +1,240 @@ -+ -+ -+ -+ Set preferable fonts for non-Latin -+ -+ serif -+ -+ Artsounk -+ BPG UTF8 M -+ Kinnari -+ Norasi -+ Frank Ruehl -+ Dror -+ JG LaoTimes -+ Saysettha Unicode -+ Pigiarniq -+ B Davat -+ B Compset -+ Kacst-Qr -+ Urdu Nastaliq Unicode -+ Raghindi -+ Mukti Narrow -+ malayalam -+ Sampige -+ padmaa -+ Hapax Berbère -+ MS Mincho -+ SimSun -+ PMingLiu -+ WenQuanYi Zen Hei -+ WenQuanYi Bitmap Song -+ AR PL ShanHeiSun Uni -+ AR PL New Sung -+ ZYSong18030 -+ HanyiSong -+ Hiragino Mincho ProN -+ Songti SC -+ Songti TC -+ SimSong -+ MgOpen Canonica -+ Sazanami Mincho -+ IPAMonaMincho -+ IPAMincho -+ Kochi Mincho -+ AR PL SungtiL GB -+ AR PL Mingti2L Big5 -+ AR PL Zenkai Uni -+ MS 明朝 -+ ZYSong18030 -+ NanumMyeongjo -+ UnBatang -+ Baekmuk Batang -+ AppleMyungjo -+ KacstQura -+ Frank Ruehl CLM -+ Lohit Bengali -+ Lohit Gujarati -+ Lohit Hindi -+ Lohit Marathi -+ Lohit Maithili -+ Lohit Kashmiri -+ Lohit Konkani -+ Lohit Nepali -+ Lohit Sindhi -+ Lohit Punjabi -+ Lohit Tamil -+ Rachana -+ Lohit Malayalam -+ Lohit Kannada -+ Lohit Telugu -+ Lohit Oriya -+ LKLUG -+ -+ -+ -+ sans-serif -+ -+ Nachlieli -+ Lucida Sans Unicode -+ Yudit Unicode -+ Kerkis -+ ArmNet Helvetica -+ Artsounk -+ BPG UTF8 M -+ Waree -+ Loma -+ Garuda -+ Umpush -+ Saysettha Unicode -+ JG Lao Old Arial -+ GF Zemen Unicode -+ Pigiarniq -+ B Davat -+ B Compset -+ Kacst-Qr -+ Urdu Nastaliq Unicode -+ Raghindi -+ Mukti Narrow -+ malayalam -+ Sampige -+ padmaa -+ Hapax Berbère -+ MS Gothic -+ UmePlus P Gothic -+ Microsoft YaHei -+ Microsoft JhengHei -+ WenQuanYi Zen Hei -+ WenQuanYi Bitmap Song -+ AR PL ShanHeiSun Uni -+ AR PL New Sung -+ Hiragino Sans -+ PingFang SC -+ PingFang TC -+ PingFang HK -+ Hiragino Sans CNS -+ Hiragino Sans GB -+ MgOpen Modata -+ VL Gothic -+ IPAMonaGothic -+ IPAGothic -+ Sazanami Gothic -+ Kochi Gothic -+ AR PL KaitiM GB -+ AR PL KaitiM Big5 -+ AR PL ShanHeiSun Uni -+ AR PL SungtiL GB -+ AR PL Mingti2L Big5 -+ MS ゴシック -+ ZYSong18030 -+ TSCu_Paranar -+ NanumGothic -+ UnDotum -+ Baekmuk Dotum -+ Baekmuk Gulim -+ Apple SD Gothic Neo -+ KacstQura -+ Lohit Bengali -+ Lohit Gujarati -+ Lohit Hindi -+ Lohit Marathi -+ Lohit Maithili -+ Lohit Kashmiri -+ Lohit Konkani -+ Lohit Nepali -+ Lohit Sindhi -+ Lohit Punjabi -+ Lohit Tamil -+ Meera -+ Lohit Malayalam -+ Lohit Kannada -+ Lohit Telugu -+ Lohit Oriya -+ LKLUG -+ -+ -+ -+ monospace -+ -+ Miriam Mono -+ VL Gothic -+ IPAMonaGothic -+ IPAGothic -+ Sazanami Gothic -+ Kochi Gothic -+ AR PL KaitiM GB -+ MS Gothic -+ UmePlus Gothic -+ NSimSun -+ MingLiu -+ AR PL ShanHeiSun Uni -+ AR PL New Sung Mono -+ HanyiSong -+ AR PL SungtiL GB -+ AR PL Mingti2L Big5 -+ ZYSong18030 -+ NanumGothicCoding -+ NanumGothic -+ UnDotum -+ Baekmuk Dotum -+ Baekmuk Gulim -+ TlwgTypo -+ TlwgTypist -+ TlwgTypewriter -+ TlwgMono -+ Hasida -+ GF Zemen Unicode -+ Hapax Berbère -+ Lohit Bengali -+ Lohit Gujarati -+ Lohit Hindi -+ Lohit Marathi -+ Lohit Maithili -+ Lohit Kashmiri -+ Lohit Konkani -+ Lohit Nepali -+ Lohit Sindhi -+ Lohit Punjabi -+ Lohit Tamil -+ Meera -+ Lohit Malayalam -+ Lohit Kannada -+ Lohit Telugu -+ Lohit Oriya -+ LKLUG -+ -+ -+ -+ -+ system-ui -+ -+ Noto Sans Arabic UI -+ Noto Sans Bengali UI -+ Noto Sans Devanagari UI -+ Noto Sans Gujarati UI -+ Noto Sans Gurmukhi UI -+ Noto Sans Kannada UI -+ Noto Sans Khmer UI -+ Noto Sans Lao UI -+ Noto Sans Malayalam UI -+ Noto Sans Myanmar UI -+ Noto Sans Oriya UI -+ Noto Sans Sinhala UI -+ Noto Sans Tamil UI -+ Noto Sans Telugu UI -+ Noto Sans Thai UI -+ Leelawadee UI -+ Nirmala UI -+ Yu Gothic UI -+ Meiryo UI -+ MS UI Gothic -+ Khmer UI -+ Lao UI -+ Microsoft YaHei UI -+ Microsoft JhengHei UI -+ -+ -+ -+ -diff -pruN fontconfig-2.15.0.orig/conf.d/Makefile.am fontconfig-2.15.0/conf.d/Makefile.am ---- fontconfig-2.15.0.orig/conf.d/Makefile.am 2023-08-24 14:14:15.000000000 +0900 -+++ fontconfig-2.15.0/conf.d/Makefile.am 2023-12-22 23:08:05.514969924 +0900 +diff -pruN fontconfig-2.16.0.orig/conf.d/Makefile.am fontconfig-2.16.0/conf.d/Makefile.am +--- fontconfig-2.16.0.orig/conf.d/Makefile.am 2025-01-18 00:15:05.000000000 +0900 ++++ fontconfig-2.16.0/conf.d/Makefile.am 2025-01-18 00:38:32.245398277 +0900 @@ -47,7 +47,7 @@ CONF_LINKS = \ 60-generic.conf \ 60-latin.conf \ @@ -506,4 +18,25 @@ diff -pruN fontconfig-2.15.0.orig/conf.d/Makefile.am fontconfig-2.15.0/conf.d/Ma + 69-nonlatin.conf \ 69-unifont.conf \ 70-no-bitmaps.conf \ - 70-yes-bitmaps.conf \ + 70-no-bitmaps-and-emoji.conf \ +diff -pruN fontconfig-2.16.0.orig/conf.d/meson.build fontconfig-2.16.0/conf.d/meson.build +--- fontconfig-2.16.0.orig/conf.d/meson.build 2025-01-18 00:15:05.000000000 +0900 ++++ fontconfig-2.16.0/conf.d/meson.build 2025-01-18 00:38:43.243595743 +0900 +@@ -33,7 +33,7 @@ conf_files = [ + '60-latin.conf', + '65-fonts-persian.conf', + '65-khmer.conf', +- '65-nonlatin.conf', ++ '69-nonlatin.conf', + '69-unifont.conf', + '70-no-bitmaps.conf', + '70-no-bitmaps-and-emoji.conf', +@@ -64,7 +64,7 @@ conf_links = [ + '60-generic.conf', + '60-latin.conf', + '65-fonts-persian.conf', +- '65-nonlatin.conf', ++ '69-nonlatin.conf', + '69-unifont.conf', + '80-delicious.conf', + '90-synthetic.conf', diff --git a/fontconfig.spec b/fontconfig.spec index c4a9476..77d4737 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -4,8 +4,8 @@ Summary: Font configuration and customization library Name: fontconfig -Version: 2.15.0 -Release: 9%{?dist} +Version: 2.16.0 +Release: 1%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 @@ -22,17 +22,14 @@ Patch0: %{name}-sleep-less.patch Patch4: %{name}-drop-lang-from-pkgkit-format.patch Patch5: %{name}-disable-network-required-test.patch Patch6: %{name}-lower-nonlatin-conf.patch -Patch7: %{name}-remove-uuid.patch -Patch8: %{name}-fix-emojis.patch -Patch9: %{name}-fix-SAST.patch BuildRequires: libxml2-devel BuildRequires: freetype-devel >= %{freetype_version} BuildRequires: fontpackages-devel -BuildRequires: autoconf automake libtool gettext +BuildRequires: gettext BuildRequires: gperf BuildRequires: docbook-utils docbook-utils-pdf -BuildRequires: make +BuildRequires: meson ninja-build Requires: fonts-filesystem freetype # Register DTD system-wide to make validation work by default @@ -74,36 +71,42 @@ which is useful for developing applications that uses fontconfig. %prep %autosetup -p1 +# To reduce a maintenance cost of fontconfig-lower-nonlatin-conf.patch +mv conf.d/65-nonlatin.conf conf.d/69-nonlatin.conf %build -# We don't want to rebuild the docs, but we want to install the included ones. -export HASDOCBOOK=no - -for i in doc/*.fncs; do - touch -r $i ${i//.fncs/.sgml} -done -autoreconf -%configure --with-add-fonts=/usr/share/X11/fonts/Type1,/usr/share/X11/fonts/TTF,/usr/local/share/fonts \ - --enable-libxml2 \ - --disable-static --with-cache-dir=/usr/lib/fontconfig/cache - -make %{?_smp_mflags} +%meson -Ddoc=disabled -Dcache-build=disabled -Dxml-backend=libxml2 \ + -Dadditional-fonts-dirs=/usr/share/X11/fonts/Type1,/usr/share/X11/fonts/TTF,/usr/local/share/fonts \ + -Dcache-dir=/usr/lib/fontconfig/cache \ + --default-library=shared +%meson_build %install -make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p" - -find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';' +%meson_install +install -d $RPM_BUILD_ROOT/usr/lib/fontconfig/cache install -p -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d ln -s %{_fontconfig_templatedir}/25-unhint-nonlatin.conf $RPM_BUILD_ROOT%{_fontconfig_confdir}/ # Use implied value to allow the use of conditional conf rm $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d/10-sub-pixel-*.conf -# move installed doc files back to build directory to package them -# in the right place -mv $RPM_BUILD_ROOT%{_docdir}/fontconfig/* . -rmdir $RPM_BUILD_ROOT%{_docdir}/fontconfig/ +# Install docs manually +install -d $RPM_BUILD_ROOT%{_mandir}/man1 +install -d $RPM_BUILD_ROOT%{_mandir}/man3 +install -d $RPM_BUILD_ROOT%{_mandir}/man5 +for f in doc/*.1; do + install -p -m 0644 $f $RPM_BUILD_ROOT%{_mandir}/man1 +done +for f in doc/*.3; do + install -p -m 0644 $f $RPM_BUILD_ROOT%{_mandir}/man3 +done +for f in doc/*.5; do + install -p -m 0644 $f $RPM_BUILD_ROOT%{_mandir}/man5 +done +for f in doc/*.txt doc/*.pdf doc/*.html; do + install -p -m 0644 $f . +done # adjust the timestamp to avoid conflicts for multilib touch -r doc/fontconfig-user.sgml fontconfig-user.txt @@ -122,7 +125,7 @@ install -p -m 0755 %{SOURCE2} $RPM_BUILD_ROOT%{_bindir}/fc-cache cat %{name}-conf.lang >> %{name}.lang %check -VERBOSE=1 make check +%meson_test %post umask 0022 @@ -193,9 +196,13 @@ fi %{_datadir}/gettext/its/fontconfig.loc %files devel-doc -%doc fontconfig-devel.txt fontconfig-devel +%doc fontconfig-devel.txt fontconfig-devel.html %changelog +* Sat Jan 18 2025 Akira TAGOH - 2.16.0-1 +- New upstream release. +- Use meson instead of autotools to build. + * Thu Jan 16 2025 Fedora Release Engineering - 2.15.0-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild diff --git a/sources b/sources index 10b4abe..5a758f7 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -SHA512 (fontconfig-2.14.2.tar.xz) = 23483e0ae6aa7589fd37f9949a4cf951c5bff981739dbb446881e4cea86a208c0ab31e2358666eac724af1dc6a689a42733a7ce91cd3e76d8d91eacedb318085 -SHA512 (fontconfig-2.15.0.tar.xz) = 754cd5fffa198fc07a39cf7df683e9adfa7f54ab41fdff8c0eacc078fd35d3e01069ba343f2b045e0b40df88d9f1fc1ee0f7565799f9cb194a59cf95b64c4417 +SHA512 (fontconfig-2.16.0.tar.xz) = 90b5c39e5eadc56a9fbddd69b2a6eaa6bf9ee5cda003091b0896e66f87f3c1be8ab4442f54d20fca7232d72f60d9578f5e5ba3f376e39b64b8a2aa7b8f13b062 From 4c49ef27c3036afc005493f796e9d6c48b0da19f Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Sat, 18 Jan 2025 01:39:40 +0900 Subject: [PATCH 60/73] clean up patches --- 10-sub-pixel-rgb-for-kde.conf | 18 ------ fontconfig-fix-SAST.patch | 54 ----------------- fontconfig-fix-emojis.patch | 109 ---------------------------------- fontconfig-fix-remap.patch | 81 ------------------------- fontconfig-remove-uuid.patch | 67 --------------------- 5 files changed, 329 deletions(-) delete mode 100644 10-sub-pixel-rgb-for-kde.conf delete mode 100644 fontconfig-fix-SAST.patch delete mode 100644 fontconfig-fix-emojis.patch delete mode 100644 fontconfig-fix-remap.patch delete mode 100644 fontconfig-remove-uuid.patch diff --git a/10-sub-pixel-rgb-for-kde.conf b/10-sub-pixel-rgb-for-kde.conf deleted file mode 100644 index 63fd752..0000000 --- a/10-sub-pixel-rgb-for-kde.conf +++ /dev/null @@ -1,18 +0,0 @@ - - - - Enable sub-pixel rendering with the RGB stripes layout for KDE only - - - - - KDE - - rgb - - diff --git a/fontconfig-fix-SAST.patch b/fontconfig-fix-SAST.patch deleted file mode 100644 index 6ef1b07..0000000 --- a/fontconfig-fix-SAST.patch +++ /dev/null @@ -1,54 +0,0 @@ -From eaa335e7c4686c622f31e691f8a41fdf30ea42b3 Mon Sep 17 00:00:00 2001 -From: Akira TAGOH -Date: Wed, 31 Jul 2024 17:31:36 +0900 -Subject: [PATCH 1/2] Fix a memory leak in _get_real_paths_from_prefix - ---- - src/fcxml.c | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/src/fcxml.c b/src/fcxml.c -index 9fe0674..083fc1f 100644 ---- a/src/fcxml.c -+++ b/src/fcxml.c -@@ -1327,11 +1327,9 @@ _get_real_paths_from_prefix(FcConfigParse *parse, const FcChar8 *path, const FcC - if (!p) - return NULL; - parent = FcStrDirname (p); -+ FcStrFree (p); - if (!parent) -- { -- free (p); - return NULL; -- } - } - } - #ifndef _WIN32 --- -2.45.2 - -From ab765827101787d49c0a66b23addc1f68f99a455 Mon Sep 17 00:00:00 2001 -From: Akira TAGOH -Date: Wed, 31 Jul 2024 17:37:53 +0900 -Subject: [PATCH 2/2] Set FcTypeVoid if no valid types to convert - ---- - src/fcname.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/fcname.c b/src/fcname.c -index 566f0ef..b152bd9 100644 ---- a/src/fcname.c -+++ b/src/fcname.c -@@ -406,6 +406,8 @@ FcNameConvert (FcType type, const char *object, FcChar8 *string) - v.u.r = FcRangeCreateDouble (b, e); - break; - default: -+ /* No valid type to convert */ -+ v.type = FcTypeVoid; - break; - } - return v; --- -2.45.2 - diff --git a/fontconfig-fix-emojis.patch b/fontconfig-fix-emojis.patch deleted file mode 100644 index ef4738b..0000000 --- a/fontconfig-fix-emojis.patch +++ /dev/null @@ -1,109 +0,0 @@ -From 810a300398dc93b7becca4a7f286e8999adc09a5 Mon Sep 17 00:00:00 2001 -From: Akira TAGOH -Date: Fri, 8 Mar 2024 01:55:14 +0900 -Subject: [PATCH] Sort out bitmap related config files - -70-no-bitmaps-and-emoji.conf: reject bitmap fonts including bitmap emoji fonts. -70-no-bitmaps-except-emoji.conf: reject bitmap fonts except bitmap emoji fonts. -70-no-bitmaps.conf: same to 70-no-bitmaps-except-emoji.conf for backward compatibility -but deprecated. This will be dropped in the future. - -Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/409 ---- - conf.d/70-no-bitmaps-and-emoji.conf | 13 +++++++++++++ - conf.d/70-no-bitmaps-except-emoji.conf | 14 ++++++++++++++ - conf.d/70-no-bitmaps.conf | 11 ++--------- - conf.d/Makefile.am | 2 ++ - conf.d/meson.build | 2 ++ - 5 files changed, 33 insertions(+), 9 deletions(-) - create mode 100644 conf.d/70-no-bitmaps-and-emoji.conf - create mode 100644 conf.d/70-no-bitmaps-except-emoji.conf - -diff --git a/conf.d/70-no-bitmaps-and-emoji.conf b/conf.d/70-no-bitmaps-and-emoji.conf -new file mode 100644 -index 00000000..3e18a4cf ---- /dev/null -+++ b/conf.d/70-no-bitmaps-and-emoji.conf -@@ -0,0 +1,13 @@ -+ -+ -+ -+ Reject bitmap fonts, including bitmap emoji fonts -+ -+ -+ -+ -+ false -+ -+ -+ -+ -diff --git a/conf.d/70-no-bitmaps-except-emoji.conf b/conf.d/70-no-bitmaps-except-emoji.conf -new file mode 100644 -index 00000000..3170cd6f ---- /dev/null -+++ b/conf.d/70-no-bitmaps-except-emoji.conf -@@ -0,0 +1,14 @@ -+ -+ -+ -+ Reject bitmap fonts except bitmap emoji fonts -+ -+ -+ -+ -+ false -+ false -+ -+ -+ -+ -diff --git a/conf.d/70-no-bitmaps.conf b/conf.d/70-no-bitmaps.conf -index 10203acb..767e4115 100644 ---- a/conf.d/70-no-bitmaps.conf -+++ b/conf.d/70-no-bitmaps.conf -@@ -1,13 +1,6 @@ - - - -- Reject bitmap fonts -- -- -- -- -- false -- -- -- -+ Reject bitmap fonts except bitmap emoji fonts (deprecated; use 70-no-bitmaps-except-emoji.conf) -+ 70-no-bitmaps-except-emoji.conf - -diff --git a/conf.d/Makefile.am b/conf.d/Makefile.am -index fd858348..737b4fb2 100644 ---- a/conf.d/Makefile.am -+++ b/conf.d/Makefile.am -@@ -98,6 +98,8 @@ template_DATA = \ - 69-nonlatin.conf \ - 69-unifont.conf \ - 70-no-bitmaps.conf \ -+ 70-no-bitmaps-and-emoji.conf \ -+ 70-no-bitmaps-except-emoji.conf \ - 70-yes-bitmaps.conf \ - 80-delicious.conf \ - 90-synthetic.conf -diff --git a/conf.d/meson.build b/conf.d/meson.build -index 8e896118..b6d07ee0 100644 ---- a/conf.d/meson.build -+++ b/conf.d/meson.build -@@ -36,6 +36,8 @@ conf_files = [ - '65-nonlatin.conf', - '69-unifont.conf', - '70-no-bitmaps.conf', -+ '70-no-bitmaps-and-emoji.conf', -+ '70-no-bitmaps-except-emoji.conf', - '70-yes-bitmaps.conf', - '80-delicious.conf', - '90-synthetic.conf', --- -GitLab - diff --git a/fontconfig-fix-remap.patch b/fontconfig-fix-remap.patch deleted file mode 100644 index 5809a0b..0000000 --- a/fontconfig-fix-remap.patch +++ /dev/null @@ -1,81 +0,0 @@ -From fc0e9a78d2fe3b26f0b93c2a99b160e75e2a9f89 Mon Sep 17 00:00:00 2001 -From: Akira TAGOH -Date: Wed, 28 Sep 2022 21:39:09 +0900 -Subject: [PATCH 1/3] Real fix of 91114d18c - -The change in 91114d18c broke remapping font paths. - -Patch from Mattias Clasen - -Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/331 ---- - src/fcstr.c | 6 +----- - 1 file changed, 1 insertion(+), 5 deletions(-) - -diff --git a/src/fcstr.c b/src/fcstr.c -index 3fe518f..5ce65da 100644 ---- a/src/fcstr.c -+++ b/src/fcstr.c -@@ -1467,7 +1467,6 @@ FcStrSetAddFilenamePairWithSalt (FcStrSet *set, const FcChar8 *a, const FcChar8 - { - FcChar8 *new_a = NULL; - FcChar8 *new_b = NULL; -- FcChar8 *rs = NULL; - FcBool ret; - - if (a) -@@ -1487,10 +1486,7 @@ FcStrSetAddFilenamePairWithSalt (FcStrSet *set, const FcChar8 *a, const FcChar8 - } - } - /* Override maps with new one if exists */ -- if (FcStrSetMemberAB (set, new_a, new_b, &rs)) -- { -- FcStrSetDel (set, rs); -- } -+ FcStrSetDel (set, new_a); - ret = FcStrSetAddTriple (set, new_a, new_b, salt); - if (new_a) - FcStrFree (new_a); --- -2.37.3 - -From a10d07682a09ce5effbd121920b119618f4b7775 Mon Sep 17 00:00:00 2001 -From: Akira TAGOH -Date: Wed, 28 Sep 2022 23:30:06 +0900 -Subject: [PATCH 2/3] Fix test cases for wrong use of remap-dir - ---- - test/run-test.sh | 12 +++++++++--- - 1 file changed, 9 insertions(+), 3 deletions(-) - -diff --git a/test/run-test.sh b/test/run-test.sh -index 1cedb8d..2b8a412 100644 ---- a/test/run-test.sh -+++ b/test/run-test.sh -@@ -177,7 +177,10 @@ $FCCACHE "$FONTDIR" - sleep 1 - ls -l "$CACHEDIR" > out1 - TESTTMPDIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX) --sed "s!@FONTDIR@!$TESTTMPDIR/fonts! -+# Once font dir is remapped, we could use $FONTDIR as different one in theory. -+# but we don't use it here and to avoid duplicate entries, set the non-existing -+# directory here. -+sed "s!@FONTDIR@!$FONTDIR/a! - s!@REMAPDIR@!$TESTTMPDIR/fonts! - s!@CACHEDIR@!$TESTTMPDIR/cache.dir!" < "$TESTDIR"/fonts.conf.in > bind-fonts.conf - echo "$BWRAP --bind / / --bind \"$CACHEDIR\" \"$TESTTMPDIR\"/cache.dir --bind \"$FONTDIR\" \"$TESTTMPDIR\"/fonts --bind .. \"$TESTTMPDIR\"/build --dev-bind /dev /dev --setenv FONTCONFIG_FILE \"$TESTTMPDIR\"/build/test/bind-fonts.conf \"$TESTTMPDIR\"/build/fc-match/fc-match\"$EXEEXT\" -f \"%{file}\n\" \":foundry=Misc\" > xxx" -@@ -273,7 +276,10 @@ sleep 1 - (cd "$CACHEDIR"; ls -1 --color=no ./*cache*) > out1 - TESTTMPDIR=$(mktemp -d "$TMPDIR"/fontconfig.XXXXXXXX) - mkdir -p "$TESTTMPDIR"/cache.dir --sed "s!@FONTDIR@!$TESTTMPDIR/fonts! -+# Once font dir is remapped, we could use $FONTDIR as different one in theory. -+# but we don't use it here and to avoid duplicate entries, set the non-existing -+# directory here. -+sed "s!@FONTDIR@!$FONTDIR/a! - s!@REMAPDIR@!$TESTTMPDIR/fonts! - s!@CACHEDIR@!$TESTTMPDIR/cache.dir!" < "$TESTDIR"/fonts.conf.in > bind-fonts.conf - $BWRAP --bind / / --bind "$FONTDIR" "$TESTTMPDIR"/fonts --bind .. "$TESTTMPDIR"/build --dev-bind /dev /dev --setenv FONTCONFIG_FILE "$TESTTMPDIR"/build/test/bind-fonts.conf "$TESTTMPDIR"/build/fc-cache/fc-cache"$EXEEXT" "$TESTTMPDIR"/fonts --- -2.37.3 - diff --git a/fontconfig-remove-uuid.patch b/fontconfig-remove-uuid.patch deleted file mode 100644 index 16c0d04..0000000 --- a/fontconfig-remove-uuid.patch +++ /dev/null @@ -1,67 +0,0 @@ -From c22908828fb2dbfdf38733d119adc1cf5fe00173 Mon Sep 17 00:00:00 2001 -From: Akira TAGOH -Date: Sat, 10 Feb 2024 00:20:54 +0900 -Subject: [PATCH 1/2] Clean up .uuid files with fc-cache -f too - -.uuid file was obsoleted >5 years ago and it was supposed to -be cleaned up by fc-cache -r but not -f. -This change tries to clean it up by fc-cache -f. - -https://bugzilla.redhat.com/show_bug.cgi?id=1761885 ---- - src/fcdir.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/fcdir.c b/src/fcdir.c -index 6f7b3835..2e4fdc69 100644 ---- a/src/fcdir.c -+++ b/src/fcdir.c -@@ -234,7 +234,7 @@ FcDirScanConfig (FcFontSet *set, - - if (FcDebug () & FC_DBG_SCAN) - printf ("\tScanning dir %s\n", s_dir); -- -+ - d = opendir ((char *) s_dir); - if (!d) - { -@@ -459,7 +459,10 @@ FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config) - - /* Not using existing cache file, construct new cache */ - if (!cache) -+ { -+ FcDirCacheDeleteUUID (dir, config); - cache = FcDirCacheScan (dir, config); -+ } - FcConfigDestroy (config); - - return cache; --- -2.43.0 - -From a76b95105ca26c600279b2daf4bd43b37a918823 Mon Sep 17 00:00:00 2001 -From: Akira TAGOH -Date: Sat, 10 Feb 2024 02:15:45 +0900 -Subject: [PATCH 2/2] Fix undesired unref of FcConfig on Win32 - ---- - src/fccache.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/fccache.c b/src/fccache.c -index cebbb810..54f76ac1 100644 ---- a/src/fccache.c -+++ b/src/fccache.c -@@ -106,8 +106,8 @@ FcDirCacheDeleteUUID (const FcChar8 *dir, - FcStrFree (target); - bail: - FcStrFree (d); --#endif - FcConfigDestroy (config); -+#endif - - return ret; - } --- -2.43.0 - From cab4ae8a7abc7f2ffaf75c85df04da5c1f039130 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Sat, 18 Jan 2025 01:40:36 +0900 Subject: [PATCH 61/73] Add a reference to bz --- fontconfig.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/fontconfig.spec b/fontconfig.spec index 77d4737..3ae94db 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -201,6 +201,7 @@ fi %changelog * Sat Jan 18 2025 Akira TAGOH - 2.16.0-1 - New upstream release. + Resolves: rhbz#2338618 - Use meson instead of autotools to build. * Thu Jan 16 2025 Fedora Release Engineering - 2.15.0-9 From 54b18701644f67c1ef6be4e400358e276c690374 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Mon, 20 Jan 2025 16:43:04 +0900 Subject: [PATCH 62/73] Patch meson.build instead of creating a cache dir --- fontconfig-meson-cachedir.patch | 29 +++++++++++++++++++++++++++++ fontconfig.spec | 4 +++- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 fontconfig-meson-cachedir.patch diff --git a/fontconfig-meson-cachedir.patch b/fontconfig-meson-cachedir.patch new file mode 100644 index 0000000..e1313c9 --- /dev/null +++ b/fontconfig-meson-cachedir.patch @@ -0,0 +1,29 @@ +From 9b864e8ceb480c31cd76ce3fe1d6215f8655ec55 Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Mon, 20 Jan 2025 12:08:36 +0900 +Subject: [PATCH] meson: create fc_cachedir at the installation time + +Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/445 +--- + meson.build | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/meson.build b/meson.build +index 4439758..85968b2 100644 +--- a/meson.build ++++ b/meson.build +@@ -550,6 +550,11 @@ if not meson.is_subproject() + meson.add_dist_script('build-aux/meson-dist-autotools.py') + endif + ++if host_machine.system() != 'windows' ++ install_emptydir(fc_cachedir, ++ install_tag: 'runtime') ++endif ++ + # Summary + doc_targets = get_variable('doc_targets', []) + +-- +2.48.1 + diff --git a/fontconfig.spec b/fontconfig.spec index 3ae94db..4aa9a9f 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -22,6 +22,7 @@ Patch0: %{name}-sleep-less.patch Patch4: %{name}-drop-lang-from-pkgkit-format.patch Patch5: %{name}-disable-network-required-test.patch Patch6: %{name}-lower-nonlatin-conf.patch +Patch7: %{name}-meson-cachedir.patch BuildRequires: libxml2-devel BuildRequires: freetype-devel >= %{freetype_version} @@ -84,7 +85,6 @@ mv conf.d/65-nonlatin.conf conf.d/69-nonlatin.conf %install %meson_install -install -d $RPM_BUILD_ROOT/usr/lib/fontconfig/cache install -p -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d ln -s %{_fontconfig_templatedir}/25-unhint-nonlatin.conf $RPM_BUILD_ROOT%{_fontconfig_confdir}/ @@ -111,6 +111,8 @@ done # adjust the timestamp to avoid conflicts for multilib touch -r doc/fontconfig-user.sgml fontconfig-user.txt touch -r doc/fontconfig-user.sgml fontconfig-user.html +touch -r doc/fontconfig-devel.sgml fontconfig-devel.txt +touch -r doc/fontconfig-devel.sgml fontconfig-devel.html # rename fc-cache binary mv $RPM_BUILD_ROOT%{_bindir}/fc-cache $RPM_BUILD_ROOT%{_bindir}/fc-cache-%{__isa_bits} From d1acb38e3bebda20cd1c0d6e3e4a1b68cdaf9def Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Thu, 23 Jan 2025 22:44:43 +0900 Subject: [PATCH 63/73] Add gcc to BR --- fontconfig.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fontconfig.spec b/fontconfig.spec index 4aa9a9f..7ca4d3e 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -30,7 +30,7 @@ BuildRequires: fontpackages-devel BuildRequires: gettext BuildRequires: gperf BuildRequires: docbook-utils docbook-utils-pdf -BuildRequires: meson ninja-build +BuildRequires: meson ninja-build gcc Requires: fonts-filesystem freetype # Register DTD system-wide to make validation work by default From 64359ad1d0b91eaa9444791a7fc531677848c0d6 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Thu, 23 Jan 2025 23:32:46 +0900 Subject: [PATCH 64/73] Disable meson test on s390x temporarily --- fontconfig.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fontconfig.spec b/fontconfig.spec index 7ca4d3e..fe79d5e 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -127,7 +127,10 @@ install -p -m 0755 %{SOURCE2} $RPM_BUILD_ROOT%{_bindir}/fc-cache cat %{name}-conf.lang >> %{name}.lang %check +# rhbz#2341757: md5 calculation seems wrong on s390x. unable to finish testcases properly +%ifnarch s390x %meson_test +%endif %post umask 0022 @@ -205,6 +208,7 @@ fi - New upstream release. Resolves: rhbz#2338618 - Use meson instead of autotools to build. +- Disable meson test on s390x temporarily. * Thu Jan 16 2025 Fedora Release Engineering - 2.15.0-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From 7ee5fe699075534ca734e18039d8fdfd7ff83a82 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Mon, 27 Jan 2025 11:20:30 +0900 Subject: [PATCH 65/73] Fix endian detection. Resolves: rhbz#2341757 --- fontconfig-meson-endianness.patch | 25 +++++++++++++++++++++++++ fontconfig.spec | 8 +++++--- 2 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 fontconfig-meson-endianness.patch diff --git a/fontconfig-meson-endianness.patch b/fontconfig-meson-endianness.patch new file mode 100644 index 0000000..d880c4d --- /dev/null +++ b/fontconfig-meson-endianness.patch @@ -0,0 +1,25 @@ +diff --git a/meson.build b/meson.build +index 85968b29..b9501dfc 100644 +--- a/meson.build ++++ b/meson.build +@@ -181,6 +181,7 @@ conf.set_quoted('PACKAGE_VERSION', meson.project_version()) + conf.set_quoted('PACKAGE_STRING', '@0@ @1@'.format(meson.project_name(), meson.project_version())) + conf.set_quoted('PACKAGE_BUGREPORT', 'https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/new') + conf.set_quoted('PACKAGE_URL', '') ++conf.set('WORDS_BIGENDIAN', (host_machine.endian() == 'big').to_int()) + + if host_machine.system() == 'windows' + conf.set('EXEEXT', '.exe') +diff --git a/src/fcmd5.h b/src/fcmd5.h +index 7e8a6e1e..bf507285 100644 +--- a/src/fcmd5.h ++++ b/src/fcmd5.h +@@ -27,7 +27,7 @@ static void MD5Update(struct MD5Context *ctx, const unsigned char *buf, unsigned + static void MD5Final(unsigned char digest[16], struct MD5Context *ctx); + static void MD5Transform(FcChar32 buf[4], FcChar32 in[16]); + +-#ifndef WORDS_BIGENDIAN ++#if !defined(WORDS_BIGENDIAN) || !WORDS_BIGENDIAN + #define byteReverse(buf, len) /* Nothing */ + #else + /* diff --git a/fontconfig.spec b/fontconfig.spec index fe79d5e..93ea1dd 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -23,6 +23,7 @@ Patch4: %{name}-drop-lang-from-pkgkit-format.patch Patch5: %{name}-disable-network-required-test.patch Patch6: %{name}-lower-nonlatin-conf.patch Patch7: %{name}-meson-cachedir.patch +Patch8: %{name}-meson-endianness.patch BuildRequires: libxml2-devel BuildRequires: freetype-devel >= %{freetype_version} @@ -127,10 +128,7 @@ install -p -m 0755 %{SOURCE2} $RPM_BUILD_ROOT%{_bindir}/fc-cache cat %{name}-conf.lang >> %{name}.lang %check -# rhbz#2341757: md5 calculation seems wrong on s390x. unable to finish testcases properly -%ifnarch s390x %meson_test -%endif %post umask 0022 @@ -204,6 +202,10 @@ fi %doc fontconfig-devel.txt fontconfig-devel.html %changelog +* Mon Jan 27 2025 Akira TAGOH - 2.16.0-2 +- Fix endian detection. + Resolves: rhbz#2341757 + * Sat Jan 18 2025 Akira TAGOH - 2.16.0-1 - New upstream release. Resolves: rhbz#2338618 From 702de2a7ad716ed043810107d59855470691761a Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Mon, 27 Jan 2025 11:46:26 +0900 Subject: [PATCH 66/73] Bump the release --- fontconfig.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fontconfig.spec b/fontconfig.spec index 93ea1dd..10096f7 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.16.0 -Release: 1%{?dist} +Release: 2%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 From 97f5c4867adcb8c26ae2434f9a9d29cbbd09ca0e Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Thu, 13 Mar 2025 20:46:19 +0900 Subject: [PATCH 67/73] New upstream release. --- .gitignore | 1 + fontconfig-drop-lang-from-pkgkit-format.patch | 20 +++++++++---------- fontconfig.spec | 11 ++++++---- sources | 1 + 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index b63773a..866d60a 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,4 @@ fontconfig-2.8.0.tar.gz /fontconfig-2.14.2.tar.xz /fontconfig-2.15.0.tar.xz /fontconfig-2.16.0.tar.xz +/fontconfig-2.16.1.tar.xz diff --git a/fontconfig-drop-lang-from-pkgkit-format.patch b/fontconfig-drop-lang-from-pkgkit-format.patch index 8b77308..abece6d 100644 --- a/fontconfig-drop-lang-from-pkgkit-format.patch +++ b/fontconfig-drop-lang-from-pkgkit-format.patch @@ -1,12 +1,12 @@ -diff -pruN fontconfig-2.13.92.orig/src/fcformat.c fontconfig-2.13.92/src/fcformat.c ---- fontconfig-2.13.92.orig/src/fcformat.c 2018-07-19 12:14:39.000000000 +0900 -+++ fontconfig-2.13.92/src/fcformat.c 2020-01-20 13:05:33.626227767 +0900 -@@ -78,7 +78,7 @@ - #define FCCAT_FORMAT "\"%{file|basename|cescape}\" %{index} \"%{-file{%{=unparse|cescape}}}\"" - #define FCMATCH_FORMAT "%{file:-|basename}: \"%{family[0]:-}\" \"%{style[0]:-}\"" - #define FCLIST_FORMAT "%{?file{%{file}: }}%{-file{%{=unparse}}}" --#define PKGKIT_FORMAT "%{[]family{font(%{family|downcase|delete( )})\n}}%{[]lang{font(:lang=%{lang|downcase|translate(_,-)})\n}}" -+#define PKGKIT_FORMAT "%{[]family{font(%{family|downcase|delete( )})\n}}" - +diff -pruN fontconfig-2.16.1.orig/src/fcformat.c fontconfig-2.16.1/src/fcformat.c +--- fontconfig-2.16.1.orig/src/fcformat.c 2025-03-13 20:16:47.000000000 +0900 ++++ fontconfig-2.16.1/src/fcformat.c 2025-03-13 20:42:03.633324643 +0900 +@@ -77,7 +77,7 @@ + #define FCCAT_FORMAT "\"%{file|basename|cescape}\" %{index} \"%{-file{%{=unparse|cescape}}}\"" + #define FCMATCH_FORMAT "%{file:-|basename}: \"%{family[0]:-}\" \"%{style[0]:-}\"" + #define FCLIST_FORMAT "%{?file{%{file}: }}%{-file{%{=unparse}}}" +-#define PKGKIT_FORMAT "%{[]family{font(%{family|downcase|delete( )})\n}}%{[]lang{font(:lang=%{lang|downcase|translate(_,-)})\n}}" ++#define PKGKIT_FORMAT "%{[]family{font(%{family|downcase|delete( )})\n}}" static void + message (const char *fmt, ...) diff --git a/fontconfig.spec b/fontconfig.spec index 10096f7..0502868 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -4,8 +4,8 @@ Summary: Font configuration and customization library Name: fontconfig -Version: 2.16.0 -Release: 2%{?dist} +Version: 2.16.1 +Release: 1%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 @@ -22,8 +22,6 @@ Patch0: %{name}-sleep-less.patch Patch4: %{name}-drop-lang-from-pkgkit-format.patch Patch5: %{name}-disable-network-required-test.patch Patch6: %{name}-lower-nonlatin-conf.patch -Patch7: %{name}-meson-cachedir.patch -Patch8: %{name}-meson-endianness.patch BuildRequires: libxml2-devel BuildRequires: freetype-devel >= %{freetype_version} @@ -89,6 +87,8 @@ mv conf.d/65-nonlatin.conf conf.d/69-nonlatin.conf install -p -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d ln -s %{_fontconfig_templatedir}/25-unhint-nonlatin.conf $RPM_BUILD_ROOT%{_fontconfig_confdir}/ +rm $RPM_BUILD_ROOT/%{_libdir}/libfontconfig.a + # Use implied value to allow the use of conditional conf rm $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d/10-sub-pixel-*.conf @@ -202,6 +202,9 @@ fi %doc fontconfig-devel.txt fontconfig-devel.html %changelog +* Thu Mar 13 2025 Akira TAGOH - 2.16.1-1 +- New upstream release. + * Mon Jan 27 2025 Akira TAGOH - 2.16.0-2 - Fix endian detection. Resolves: rhbz#2341757 diff --git a/sources b/sources index 5a758f7..2efbd1f 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ SHA512 (fontconfig-2.16.0.tar.xz) = 90b5c39e5eadc56a9fbddd69b2a6eaa6bf9ee5cda003091b0896e66f87f3c1be8ab4442f54d20fca7232d72f60d9578f5e5ba3f376e39b64b8a2aa7b8f13b062 +SHA512 (fontconfig-2.16.1.tar.xz) = 50901593e7d3ae1727a9ae3861f2d4074e1f031f8a5ac0cb5ab8db90e35c2a12bd14e9f40185187035887a26c3aca054a751fcf97f5cff63484091aa386fec8b From 3a435a53cb482bd8c33827561775197548adcf3a Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Fri, 11 Apr 2025 16:57:07 +0900 Subject: [PATCH 68/73] New upstream release. --- .gitignore | 1 + fontconfig.spec | 5 ++++- sources | 3 +-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 866d60a..ef7450e 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,4 @@ fontconfig-2.8.0.tar.gz /fontconfig-2.15.0.tar.xz /fontconfig-2.16.0.tar.xz /fontconfig-2.16.1.tar.xz +/fontconfig-2.16.2.tar.xz diff --git a/fontconfig.spec b/fontconfig.spec index 0502868..7e5818d 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -4,7 +4,7 @@ Summary: Font configuration and customization library Name: fontconfig -Version: 2.16.1 +Version: 2.16.2 Release: 1%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code @@ -202,6 +202,9 @@ fi %doc fontconfig-devel.txt fontconfig-devel.html %changelog +* Fri Apr 11 2025 Akira TAGOH - 2.16.2-1 +- New upstream release. + * Thu Mar 13 2025 Akira TAGOH - 2.16.1-1 - New upstream release. diff --git a/sources b/sources index 2efbd1f..f17bc64 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -SHA512 (fontconfig-2.16.0.tar.xz) = 90b5c39e5eadc56a9fbddd69b2a6eaa6bf9ee5cda003091b0896e66f87f3c1be8ab4442f54d20fca7232d72f60d9578f5e5ba3f376e39b64b8a2aa7b8f13b062 -SHA512 (fontconfig-2.16.1.tar.xz) = 50901593e7d3ae1727a9ae3861f2d4074e1f031f8a5ac0cb5ab8db90e35c2a12bd14e9f40185187035887a26c3aca054a751fcf97f5cff63484091aa386fec8b +SHA512 (fontconfig-2.16.2.tar.xz) = b51ac822f00b41026d74b73aabcdb5ec766b68c478fdb0a50d5ec20c5ad4661ba38417aac088ee86ef097bd1ecda708f818636389acb34502444298a08701c12 From 518fc318a28bc4058a74a82a38c06112748f440e Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Fri, 11 Apr 2025 17:14:41 +0900 Subject: [PATCH 69/73] Adjust patches and cleanup --- ...config-disable-network-required-test.patch | 26 +++++++++-------- fontconfig-meson-cachedir.patch | 29 ------------------- fontconfig-meson-endianness.patch | 25 ---------------- 3 files changed, 14 insertions(+), 66 deletions(-) delete mode 100644 fontconfig-meson-cachedir.patch delete mode 100644 fontconfig-meson-endianness.patch diff --git a/fontconfig-disable-network-required-test.patch b/fontconfig-disable-network-required-test.patch index b276aa5..d73f26a 100644 --- a/fontconfig-disable-network-required-test.patch +++ b/fontconfig-disable-network-required-test.patch @@ -1,16 +1,16 @@ -diff -pruN fontconfig-2.16.0.orig/test/meson.build fontconfig-2.16.0/test/meson.build ---- fontconfig-2.16.0.orig/test/meson.build 2025-01-18 00:15:05.000000000 +0900 -+++ fontconfig-2.16.0/test/meson.build 2025-01-18 01:07:12.893480441 +0900 -@@ -15,7 +15,7 @@ if host_machine.system() != 'windows' - ['test-bz106632.c', {'c_args': ['-DFONTFILE="@0@"'.format(join_paths(meson.current_source_dir(), '4x6.pcf'))]}], - ['test-issue107.c'], # FIXME: fails on mingw +diff -pruN fontconfig-2.16.2.orig/test/meson.build fontconfig-2.16.2/test/meson.build +--- fontconfig-2.16.2.orig/test/meson.build 2025-04-11 15:47:01.000000000 +0900 ++++ fontconfig-2.16.2/test/meson.build 2025-04-11 17:09:10.556195744 +0900 +@@ -18,7 +18,7 @@ if host_machine.system() != 'windows' + ] + tests_not_parallel += [ # FIXME: this needs NotoSans-hinted.zip font downloaded and unpacked into test build directory! see run-test.sh - ['test-crbug1004254.c', {'dependencies': dependency('threads')}], # for pthread + #['test-crbug1004254.c', {'dependencies': dependency('threads')}], # for pthread ] if get_option('default_library') == 'static' -@@ -62,12 +62,12 @@ if host_machine.system() != 'windows' +@@ -70,13 +70,13 @@ if host_machine.system() != 'windows' test('run_test_sh', find_program('run-test.sh'), timeout: 600, env: ['srcdir=@0@'.format(meson.current_source_dir()), 'builddir=@0@'.format(meson.current_build_dir()), 'EXEEXT=@0@'.format(conf.get('EXEEXT')), 'VERBOSE=1']) @@ -18,20 +18,22 @@ diff -pruN fontconfig-2.16.0.orig/test/meson.build fontconfig-2.16.0/test/meson. - test('pytest', pytest, args: ['--tap'], - workdir: meson.current_source_dir(), - env: ['builddir=@0@'.format(meson.current_build_dir())], -- protocol: 'tap') +- protocol: 'tap', +- timeout: 600) - endif +# if pytest.found() +# test('pytest', pytest, args: ['--tap'], +# workdir: meson.current_source_dir(), +# env: ['builddir=@0@'.format(meson.current_build_dir())], -+# protocol: 'tap') ++# protocol: 'tap', ++# timeout: 600) +# endif endif if jsonc_dep.found() -diff -pruN fontconfig-2.16.0.orig/test/run-test.sh fontconfig-2.16.0/test/run-test.sh ---- fontconfig-2.16.0.orig/test/run-test.sh 2025-01-18 00:15:05.000000000 +0900 -+++ fontconfig-2.16.0/test/run-test.sh 2025-01-18 01:06:54.310144693 +0900 +diff -pruN fontconfig-2.16.2.orig/test/run-test.sh fontconfig-2.16.2/test/run-test.sh +--- fontconfig-2.16.2.orig/test/run-test.sh 2025-04-11 15:47:01.000000000 +0900 ++++ fontconfig-2.16.2/test/run-test.sh 2025-04-11 17:08:18.741839058 +0900 @@ -499,18 +499,18 @@ rm -rf "$MYCACHEBASEDIR" "$MYCONFIG" "$B fi # if [ "x$EXEEXT" = "x" ] diff --git a/fontconfig-meson-cachedir.patch b/fontconfig-meson-cachedir.patch deleted file mode 100644 index e1313c9..0000000 --- a/fontconfig-meson-cachedir.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 9b864e8ceb480c31cd76ce3fe1d6215f8655ec55 Mon Sep 17 00:00:00 2001 -From: Akira TAGOH -Date: Mon, 20 Jan 2025 12:08:36 +0900 -Subject: [PATCH] meson: create fc_cachedir at the installation time - -Fixes https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/445 ---- - meson.build | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/meson.build b/meson.build -index 4439758..85968b2 100644 ---- a/meson.build -+++ b/meson.build -@@ -550,6 +550,11 @@ if not meson.is_subproject() - meson.add_dist_script('build-aux/meson-dist-autotools.py') - endif - -+if host_machine.system() != 'windows' -+ install_emptydir(fc_cachedir, -+ install_tag: 'runtime') -+endif -+ - # Summary - doc_targets = get_variable('doc_targets', []) - --- -2.48.1 - diff --git a/fontconfig-meson-endianness.patch b/fontconfig-meson-endianness.patch deleted file mode 100644 index d880c4d..0000000 --- a/fontconfig-meson-endianness.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff --git a/meson.build b/meson.build -index 85968b29..b9501dfc 100644 ---- a/meson.build -+++ b/meson.build -@@ -181,6 +181,7 @@ conf.set_quoted('PACKAGE_VERSION', meson.project_version()) - conf.set_quoted('PACKAGE_STRING', '@0@ @1@'.format(meson.project_name(), meson.project_version())) - conf.set_quoted('PACKAGE_BUGREPORT', 'https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/new') - conf.set_quoted('PACKAGE_URL', '') -+conf.set('WORDS_BIGENDIAN', (host_machine.endian() == 'big').to_int()) - - if host_machine.system() == 'windows' - conf.set('EXEEXT', '.exe') -diff --git a/src/fcmd5.h b/src/fcmd5.h -index 7e8a6e1e..bf507285 100644 ---- a/src/fcmd5.h -+++ b/src/fcmd5.h -@@ -27,7 +27,7 @@ static void MD5Update(struct MD5Context *ctx, const unsigned char *buf, unsigned - static void MD5Final(unsigned char digest[16], struct MD5Context *ctx); - static void MD5Transform(FcChar32 buf[4], FcChar32 in[16]); - --#ifndef WORDS_BIGENDIAN -+#if !defined(WORDS_BIGENDIAN) || !WORDS_BIGENDIAN - #define byteReverse(buf, len) /* Nothing */ - #else - /* From 9a1e8029b08ec413091ea00d11801700b8cd64bd Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Fri, 27 Jun 2025 14:48:43 +0900 Subject: [PATCH 70/73] New upstream release. Resolves: rhbz#2375126 --- .gitignore | 1 + ...config-disable-network-required-test.patch | 77 +++++++++++++++---- fontconfig.spec | 8 +- sources | 2 +- 4 files changed, 69 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index ef7450e..8ea9665 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,4 @@ fontconfig-2.8.0.tar.gz /fontconfig-2.16.0.tar.xz /fontconfig-2.16.1.tar.xz /fontconfig-2.16.2.tar.xz +/fontconfig-2.17.0.tar.xz diff --git a/fontconfig-disable-network-required-test.patch b/fontconfig-disable-network-required-test.patch index d73f26a..e048b49 100644 --- a/fontconfig-disable-network-required-test.patch +++ b/fontconfig-disable-network-required-test.patch @@ -1,40 +1,87 @@ -diff -pruN fontconfig-2.16.2.orig/test/meson.build fontconfig-2.16.2/test/meson.build ---- fontconfig-2.16.2.orig/test/meson.build 2025-04-11 15:47:01.000000000 +0900 -+++ fontconfig-2.16.2/test/meson.build 2025-04-11 17:09:10.556195744 +0900 -@@ -18,7 +18,7 @@ if host_machine.system() != 'windows' +diff -pruN fontconfig-2.17.0.orig/test/meson.build fontconfig-2.17.0/test/meson.build +--- fontconfig-2.17.0.orig/test/meson.build 2025-06-27 12:12:04.000000000 +0900 ++++ fontconfig-2.17.0/test/meson.build 2025-06-27 14:41:08.843726446 +0900 +@@ -1,16 +1,16 @@ +-fetch_test_fonts = custom_target( +- 'fetch_test_fonts', +- output: 'testfonts', +- command: [ +- python3, +- join_paths(meson.project_source_root(), 'build-aux', 'fetch-testfonts.py'), +- '--target-dir', +- '@BUILD_ROOT@/testfonts', +- '--try-symlink', +- ], +- build_by_default: false, +- build_always_stale: true, +-) ++#fetch_test_fonts = custom_target( ++# 'fetch_test_fonts', ++# output: 'testfonts', ++# command: [ ++# python3, ++# join_paths(meson.project_source_root(), 'build-aux', 'fetch-testfonts.py'), ++# '--target-dir', ++# '@BUILD_ROOT@/testfonts', ++# '--try-symlink', ++# ], ++# build_by_default: false, ++# build_always_stale: true, ++#) + + tests = [ + ['test-bz89617.c', {'c_args': ['-DSRCDIR="@0@"'.format(meson.current_source_dir())]}], +@@ -33,7 +33,7 @@ if host_machine.system() != 'windows' ] tests_not_parallel += [ # FIXME: this needs NotoSans-hinted.zip font downloaded and unpacked into test build directory! see run-test.sh - ['test-crbug1004254.c', {'dependencies': dependency('threads')}], # for pthread -+ #['test-crbug1004254.c', {'dependencies': dependency('threads')}], # for pthread ++ # ['test-crbug1004254.c', {'dependencies': dependency('threads')}], # for pthread + ['test-mt-fccfg.c', {'include_directories': include_directories('../src'), 'dependencies': dependency('threads')}], ] - if get_option('default_library') == 'static' -@@ -70,13 +70,13 @@ if host_machine.system() != 'windows' +@@ -74,10 +74,10 @@ foreach test_data : tests + tests_not_pa + endforeach + + +-if get_option('fontations').enabled() +- rust = import('rust') +- rust.test('fc_fontations_rust_tests', fc_fontations, link_with: [libfontconfig_internal], depends: fetch_test_fonts, env: ['builddir=@0@'.format(meson.project_build_root())],) +-endif ++#if get_option('fontations').enabled() ++# rust = import('rust') ++# rust.test('fc_fontations_rust_tests', fc_fontations, link_with: [libfontconfig_internal], depends: fetch_test_fonts, env: ['builddir=@0@'.format(meson.project_build_root())],) ++#endif + + fs = import('fs') + +@@ -92,14 +92,14 @@ if host_machine.system() != 'windows' test('run_test_sh', find_program('run-test.sh'), timeout: 600, env: ['srcdir=@0@'.format(meson.current_source_dir()), 'builddir=@0@'.format(meson.current_build_dir()), 'EXEEXT=@0@'.format(conf.get('EXEEXT')), 'VERBOSE=1']) - if pytest.found() - test('pytest', pytest, args: ['--tap'], - workdir: meson.current_source_dir(), -- env: ['builddir=@0@'.format(meson.current_build_dir())], +- env: ['builddir=@0@'.format(meson.project_build_root())], - protocol: 'tap', -- timeout: 600) +- timeout: 600, +- depends: fetch_test_fonts) - endif +# if pytest.found() +# test('pytest', pytest, args: ['--tap'], +# workdir: meson.current_source_dir(), -+# env: ['builddir=@0@'.format(meson.current_build_dir())], ++# env: ['builddir=@0@'.format(meson.project_build_root())], +# protocol: 'tap', -+# timeout: 600) ++# timeout: 600, ++# depends: fetch_test_fonts) +# endif endif if jsonc_dep.found() -diff -pruN fontconfig-2.16.2.orig/test/run-test.sh fontconfig-2.16.2/test/run-test.sh ---- fontconfig-2.16.2.orig/test/run-test.sh 2025-04-11 15:47:01.000000000 +0900 -+++ fontconfig-2.16.2/test/run-test.sh 2025-04-11 17:08:18.741839058 +0900 -@@ -499,18 +499,18 @@ rm -rf "$MYCACHEBASEDIR" "$MYCONFIG" "$B +diff -pruN fontconfig-2.17.0.orig/test/run-test.sh fontconfig-2.17.0/test/run-test.sh +--- fontconfig-2.17.0.orig/test/run-test.sh 2025-06-27 12:12:04.000000000 +0900 ++++ fontconfig-2.17.0/test/run-test.sh 2025-06-27 14:39:19.098581228 +0900 +@@ -521,18 +521,18 @@ rm -rf "$MYCACHEBASEDIR" "$MYCONFIG" "$B fi # if [ "x$EXEEXT" = "x" ] diff --git a/fontconfig.spec b/fontconfig.spec index 7e5818d..0c5b455 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -4,7 +4,7 @@ Summary: Font configuration and customization library Name: fontconfig -Version: 2.16.2 +Version: 2.17.0 Release: 1%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code @@ -87,8 +87,6 @@ mv conf.d/65-nonlatin.conf conf.d/69-nonlatin.conf install -p -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d ln -s %{_fontconfig_templatedir}/25-unhint-nonlatin.conf $RPM_BUILD_ROOT%{_fontconfig_confdir}/ -rm $RPM_BUILD_ROOT/%{_libdir}/libfontconfig.a - # Use implied value to allow the use of conditional conf rm $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d/10-sub-pixel-*.conf @@ -202,6 +200,10 @@ fi %doc fontconfig-devel.txt fontconfig-devel.html %changelog +* Fri Jun 27 2025 Akira TAGOH - 2.17.0-1 +- New upstream release. + Resolves: rhbz#2375126 + * Fri Apr 11 2025 Akira TAGOH - 2.16.2-1 - New upstream release. diff --git a/sources b/sources index f17bc64..9a3bb99 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (fontconfig-2.16.2.tar.xz) = b51ac822f00b41026d74b73aabcdb5ec766b68c478fdb0a50d5ec20c5ad4661ba38417aac088ee86ef097bd1ecda708f818636389acb34502444298a08701c12 +SHA512 (fontconfig-2.17.0.tar.xz) = dd64905c3e0e5c5881df505b8f0bea594bbac5ce145f57aedcd7130978cd285491497198d8f2d6ed26f7b2abb31268dc3ff97aa75ce998b8e57f2d5c75b240b4 From 8bca22ae6843289d280f9d03098bcede86764255 Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Mon, 30 Jun 2025 16:50:15 +0900 Subject: [PATCH 71/73] Backport a patch to fix a crash with Graphite fonts Drop 70-*bitmaps*.conf from /etc/fonts/conf.d so far. Resolves: rhbz#2375426 --- fontconfig-fix-crash.patch | 28 ++++++++++++++++++++++++++++ fontconfig.spec | 9 +++++++++ 2 files changed, 37 insertions(+) create mode 100644 fontconfig-fix-crash.patch diff --git a/fontconfig-fix-crash.patch b/fontconfig-fix-crash.patch new file mode 100644 index 0000000..c52b33d --- /dev/null +++ b/fontconfig-fix-crash.patch @@ -0,0 +1,28 @@ +From b9bec06d73340f1b5727302d13ac3df307b7febc Mon Sep 17 00:00:00 2001 +From: Akira TAGOH +Date: Mon, 30 Jun 2025 09:05:18 +0900 +Subject: [PATCH] Fix a heap buffer overflow + +https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/481 + +Changelog: fixed +--- + src/fcfreetype.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/fcfreetype.c b/src/fcfreetype.c +index 7a4d9811..0a87d27a 100644 +--- a/src/fcfreetype.c ++++ b/src/fcfreetype.c +@@ -2661,7 +2661,7 @@ FcFontCapabilities (FT_Face face) + goto bail; + + maxsize = (((FT_ULong)gpos_count + (FT_ULong)gsub_count) * OTLAYOUT_LEN + +- (issilgraphitefont ? strlen(fcSilfCapability) : 0)); ++ (issilgraphitefont ? strlen(fcSilfCapability) + 1: 0)); + complex_ = malloc (sizeof (FcChar8) * maxsize); + if (!complex_) + goto bail; +-- +2.50.0 + diff --git a/fontconfig.spec b/fontconfig.spec index 0c5b455..ebc311e 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -22,6 +22,7 @@ Patch0: %{name}-sleep-less.patch Patch4: %{name}-drop-lang-from-pkgkit-format.patch Patch5: %{name}-disable-network-required-test.patch Patch6: %{name}-lower-nonlatin-conf.patch +Patch7: %{name}-fix-crash.patch BuildRequires: libxml2-devel BuildRequires: freetype-devel >= %{freetype_version} @@ -90,6 +91,9 @@ ln -s %{_fontconfig_templatedir}/25-unhint-nonlatin.conf $RPM_BUILD_ROOT%{_fontc # Use implied value to allow the use of conditional conf rm $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d/10-sub-pixel-*.conf +# Do not enable bitmap-related conf +rm $RPM_BUILD_ROOT%{_sysconfdir}/fonts/conf.d/70-*bitmaps*.conf + # Install docs manually install -d $RPM_BUILD_ROOT%{_mandir}/man1 install -d $RPM_BUILD_ROOT%{_mandir}/man3 @@ -200,6 +204,11 @@ fi %doc fontconfig-devel.txt fontconfig-devel.html %changelog +* Mon Jun 30 2025 Akira TAGOH - 2.17.0-2 +- Backport a patch to fix a crash with Graphite fonts +- Drop 70-*bitmaps*.conf from /etc/fonts/conf.d so far. + Resolves: rhbz#2375426 + * Fri Jun 27 2025 Akira TAGOH - 2.17.0-1 - New upstream release. Resolves: rhbz#2375126 From b06b4f8a9146a7e2fa129af061d270d44f16977e Mon Sep 17 00:00:00 2001 From: Akira TAGOH Date: Mon, 30 Jun 2025 16:51:15 +0900 Subject: [PATCH 72/73] bump a release --- fontconfig.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fontconfig.spec b/fontconfig.spec index ebc311e..e4c4b0d 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.17.0 -Release: 1%{?dist} +Release: 2%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 From 90ff975dce8834d53778e793405bb55abf7d6980 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 23 Jul 2025 20:41:05 +0000 Subject: [PATCH 73/73] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- fontconfig.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fontconfig.spec b/fontconfig.spec index e4c4b0d..1bc63c7 100644 --- a/fontconfig.spec +++ b/fontconfig.spec @@ -5,7 +5,7 @@ Summary: Font configuration and customization library Name: fontconfig Version: 2.17.0 -Release: 2%{?dist} +Release: 3%{?dist} # src/ftglue.[ch] is in Public Domain # src/fccache.c contains Public Domain code ## https://gitlab.com/fedora/legal/fedora-license-data/-/issues/177 @@ -204,6 +204,9 @@ fi %doc fontconfig-devel.txt fontconfig-devel.html %changelog +* Wed Jul 23 2025 Fedora Release Engineering - 2.17.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Mon Jun 30 2025 Akira TAGOH - 2.17.0-2 - Backport a patch to fix a crash with Graphite fonts - Drop 70-*bitmaps*.conf from /etc/fonts/conf.d so far.