[Fontconfig] fontconfig: Branch 'master'
Keith Packard
keithp at kemper.freedesktop.org
Fri Sep 15 10:57:24 PDT 2006
src/fccfg.c | 86 +++++++++++++++++++++++++++++-------------------------------
src/fcdir.c | 4 +-
src/fcint.h | 3 +-
3 files changed, 46 insertions(+), 47 deletions(-)
New commits:
diff-tree 97c3d5b692c7a45dc1d923fe04b6f2e011583d2d (from b190ad9da46ff2e8a9ede0afcb59a6c59641515b)
Author: Keith Packard <keithp at neko.keithp.com>
Date: Fri Sep 15 00:23:40 2006 -0700
Reimplement FcConfigAppFontAddDir; function was lost in 2.4.0.
With the cache restructuring of 2.4.0, the ability to add
application-specific font files and directories was accidentally lost.
Reimplement this using by sharing the logic used to load configured font
directories.
diff --git a/src/fccfg.c b/src/fccfg.c
index 01d381c..635fdea 100644
--- a/src/fccfg.c
+++ b/src/fccfg.c
@@ -227,7 +227,8 @@ FcConfigDestroy (FcConfig *config)
*/
FcBool
-FcConfigAddCache (FcConfig *config, FcCache *cache)
+FcConfigAddCache (FcConfig *config, FcCache *cache,
+ FcSetName set, FcStrSet *dirSet)
{
FcFontSet *fs;
intptr_t *dirs;
@@ -263,7 +264,7 @@ FcConfigAddCache (FcConfig *config, FcCa
continue;
nref++;
- FcFontSetAdd (config->fonts[FcSetSystem], font);
+ FcFontSetAdd (config->fonts[set], font);
}
FcDirCacheReference (cache, nref);
}
@@ -278,12 +279,37 @@ FcConfigAddCache (FcConfig *config, FcCa
{
FcChar8 *dir = FcOffsetToPtr (dirs, dirs[i], FcChar8);
if (FcConfigAcceptFilename (config, dir))
- FcConfigAddFontDir (config, dir);
+ FcStrSetAddFilename (dirSet, dir);
}
}
return FcTrue;
}
+static FcBool
+FcConfigAddDirList (FcConfig *config, FcSetName set, FcStrSet *dirSet)
+{
+ FcStrList *dirlist;
+ FcChar8 *dir;
+ FcCache *cache;
+
+ dirlist = FcStrListCreate (dirSet);
+ if (!dirlist)
+ return FcFalse;
+
+ while ((dir = FcStrListNext (dirlist)))
+ {
+ if (FcDebug () & FC_DBG_FONTSET)
+ printf ("adding fonts from%s\n", dir);
+ cache = FcDirCacheRead (dir, FcFalse, config);
+ if (!cache)
+ continue;
+ FcConfigAddCache (config, cache, set, dirSet);
+ FcDirCacheUnload (cache);
+ }
+ FcStrListDone (dirlist);
+ return FcTrue;
+}
+
/*
* Scan the current list of directories in the configuration
* and build the set of available fonts.
@@ -293,9 +319,6 @@ FcBool
FcConfigBuildFonts (FcConfig *config)
{
FcFontSet *fonts;
- FcStrList *dirlist;
- FcChar8 *dir;
- FcCache *cache;
if (!config)
{
@@ -306,33 +329,15 @@ FcConfigBuildFonts (FcConfig *config)
fonts = FcFontSetCreate ();
if (!fonts)
- goto bail;
+ return FcFalse;
FcConfigSetFonts (config, fonts, FcSetSystem);
- dirlist = FcStrListCreate (config->fontDirs);
- if (!dirlist)
- goto bail;
-
- while ((dir = FcStrListNext (dirlist)))
- {
- if (FcDebug () & FC_DBG_FONTSET)
- printf ("adding fonts from%s\n", dir);
- cache = FcDirCacheRead (dir, FcFalse, config);
- if (!cache)
- continue;
- FcConfigAddCache (config, cache);
- FcDirCacheUnload (cache);
- }
-
- FcStrListDone (dirlist);
-
+ if (!FcConfigAddDirList (config, FcSetSystem, config->fontDirs))
+ return FcFalse;
if (FcDebug () & FC_DBG_FONTSET)
FcFontSetPrint (fonts);
-
return FcTrue;
-bail:
- return FcFalse;
}
FcBool
@@ -1799,9 +1804,7 @@ FcConfigAppFontAddDir (FcConfig *con
const FcChar8 *dir)
{
FcFontSet *set;
- FcStrSet *subdirs;
- FcStrList *sublist;
- FcChar8 *subdir;
+ FcStrSet *dirs;
if (!config)
{
@@ -1809,8 +1812,9 @@ FcConfigAppFontAddDir (FcConfig *con
if (!config)
return FcFalse;
}
- subdirs = FcStrSetCreate ();
- if (!subdirs)
+
+ dirs = FcStrSetCreate ();
+ if (!dirs)
return FcFalse;
set = FcConfigGetFonts (config, FcSetApplication);
@@ -1819,26 +1823,20 @@ FcConfigAppFontAddDir (FcConfig *con
set = FcFontSetCreate ();
if (!set)
{
- FcStrSetDestroy (subdirs);
+ FcStrSetDestroy (dirs);
return FcFalse;
}
FcConfigSetFonts (config, set, FcSetApplication);
}
- if (!FcDirScanConfig (set, subdirs, config->blanks, dir, FcFalse, config))
+ FcStrSetAddFilename (dirs, dir);
+
+ if (!FcConfigAddDirList (config, FcSetApplication, dirs))
{
- FcStrSetDestroy (subdirs);
+ FcStrSetDestroy (dirs);
return FcFalse;
}
- if ((sublist = FcStrListCreate (subdirs)))
- {
- while ((subdir = FcStrListNext (sublist)))
- {
- FcConfigAppFontAddDir (config, subdir);
- }
- FcStrListDone (sublist);
- }
- FcStrSetDestroy (subdirs);
+ FcStrSetDestroy (dirs);
return FcTrue;
}
diff --git a/src/fcdir.c b/src/fcdir.c
index bb5cfc9..d082992 100644
--- a/src/fcdir.c
+++ b/src/fcdir.c
@@ -273,7 +273,7 @@ FcDirScanConfig (FcFontSet *set,
FcBool force,
FcConfig *config)
{
- return FcFalse; /* XXX fixme */
+ return FcFalse; /* XXX deprecated */
}
FcBool
@@ -284,7 +284,7 @@ FcDirScan (FcFontSet *set,
const FcChar8 *dir,
FcBool force)
{
- return FcDirScanConfig (set, dirs, blanks, dir, force, NULL);
+ return FcFalse; /* XXX deprecated */
}
FcBool
diff --git a/src/fcint.h b/src/fcint.h
index afa37d2..60563cb 100644
--- a/src/fcint.h
+++ b/src/fcint.h
@@ -584,7 +584,8 @@ FcPrivate FcFileTime
FcConfigModifiedTime (FcConfig *config);
FcPrivate FcBool
-FcConfigAddCache (FcConfig *config, FcCache *cache);
+FcConfigAddCache (FcConfig *config, FcCache *cache,
+ FcSetName set, FcStrSet *dirSet);
/* fcserialize.c */
FcPrivate intptr_t
More information about the Fontconfig
mailing list