From fa244f3d8807415247c8aeb77145502b1cb9ace8 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 19 Aug 2002 19:32:05 +0000 Subject: [PATCH] Various config changes plus a couple of optimizations from Owen --- ChangeLog | 19 +++++++ config.h.in | 9 ---- config/Makedefs.in | 25 +++++---- configure.in | 117 +++++++--------------------------------- fc-cache/Imakefile | 2 +- fc-lang/Imakefile | 4 +- fc-lang/ja.orth | 4 +- fc-lang/ko.orth | 5 +- fc-lang/zh_cn.orth | 5 +- fc-lang/zh_sg.orth | 4 +- fc-list/Imakefile | 2 +- fontconfig/fcprivate.h | 4 +- fontconfig/fontconfig.h | 18 +++---- fonts.conf.in | 12 +++++ src/Imakefile | 2 +- src/fccache.c | 69 ++++++++++++++---------- src/fccfg.c | 33 +++++------- src/fcdbg.c | 7 +-- src/fclist.c | 4 +- src/fcmatch.c | 5 +- src/fcname.c | 4 +- src/fcpat.c | 43 +-------------- src/fcxml.c | 17 +----- src/fontconfig.man | 22 +++----- 24 files changed, 159 insertions(+), 277 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5decb0d..b12772c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +Mon Aug 19 11:57:27 PDT 2002 + + Fix autoconf files to pass FONTCONFIG_PATH on + compile line so that ${prefix} gets substituted + correctly. + + + Use getc_unlocked/putc_unlocked on systems that + provide them to avoid damage done to stdio by posix + + + Eliminate FC_PATTERN and FcTypePattern in favor of + an extended api for FcConfigSubstitute which takes + both the font and the pattern. + + + Add 'sans serif' alias for 'sans-serif' as some apps + can't handle hyphens in family names + + + Eliminate pretense of support for libxml2 + + + Comment origins of Han orthographies + Tue Jul 30 18:37:09 PDT 2002 keithp + Add binding property to edit element so that strong diff --git a/config.h.in b/config.h.in index 9e226b0..ee9c890 100644 --- a/config.h.in +++ b/config.h.in @@ -97,12 +97,6 @@ /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF -/* Use libxml2 library for xml parsing */ -#undef HAVE_XML2 - -/* Define to 1 if you have the `xmlInitParser' function. */ -#undef HAVE_XMLINITPARSER - /* Define to 1 if you have the `XML_ParserCreate' function. */ #undef HAVE_XML_PARSERCREATE @@ -142,6 +136,3 @@ /* Define to `int' if does not define. */ #undef pid_t - -/* Define to the directory containing font configuration files */ -#undef FONTCONFIG_PATH diff --git a/config/Makedefs.in b/config/Makedefs.in index f3603f7..82582cf 100644 --- a/config/Makedefs.in +++ b/config/Makedefs.in @@ -1,5 +1,5 @@ # -# $XFree86: xc/lib/fontconfig/config/Makedefs.in,v 1.2 2002/05/21 17:48:15 keithp Exp $ +# $XFree86: xc/lib/fontconfig/config/Makedefs.in,v 1.3 2002/08/01 15:57:26 keithp Exp $ # # Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc. # @@ -32,19 +32,12 @@ bindir=@bindir@ datadir=@datadir@ includedir=@includedir@ sysconfdir=@sysconfdir@ - -CDEBUGFLAGS=@CFLAGS@ -CPPFLAGS=@CPPFLAGS@ -DEFS=@DEFS@ +confdir=@confdir@ DSO_LDOPTS=@DSO_LDOPTS@ DSO_CFLAGS=@DSO_CFLAGS@ DSO_PIC_CFLAGS=@DSO_PIC_CFLAGS@ -INCLUDES=-I$(TOPDIR) -I$(srcdir) - -CFLAGS=$(CDEBUGFLAGS) $(INCLUDES) $(DEFS) $(CPPFLAGS) - INSTALL=@INSTALL@ INSTALL_PROGRAM=@INSTALL_PROGRAM@ INSTALL_SCRIPT=@INSTALL_SCRIPT@ @@ -52,10 +45,6 @@ INSTALL_DATA=@INSTALL_DATA@ MKSHLIB=@MKSHLIB@ LN_S=@LN_S@ -X_FONT_DIR=@X_FONT_DIR@ -FC_DEFAULT_FONTS=@FC_DEFAULT_FONTS@ -FONTCONFIG_PATH=@FONTCONFIG_PATH@ - # shared libraries LIBDIR=$(libdir) # programs @@ -65,6 +54,16 @@ CONFDIR=@CONFDIR@ # include files INCLUDEDIR=$(includedir)/fontconfig +X_FONT_DIR=@X_FONT_DIR@ +FC_DEFAULT_FONTS=@FC_DEFAULT_FONTS@ +FCPATH_DEF=-DFONTCONFIG_PATH=\"$(CONFDIR)\" + +CDEBUGFLAGS=@CFLAGS@ + +INCLUDES=-I$(TOPDIR) -I$(srcdir) @CPPFLAGS@ + +CFLAGS=$(CDEBUGFLAGS) @DEFS@ $(FCPATH_DEF) $(INCLUDES) + LIBBASE=libfontconfig.so LIBFILE=$(LIBBASE).@PACKAGE_MAJOR@.@PACKAGE_MINOR@ LIBMAJOR=$(LIBBASE).@PACKAGE_MAJOR@ diff --git a/configure.in b/configure.in index 325ff9a..a3c1f75 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ dnl -dnl $XFree86: xc/lib/fontconfig/configure.in,v 1.6 2002/06/07 17:55:41 keithp Exp $ +dnl $XFree86: xc/lib/fontconfig/configure.in,v 1.7 2002/08/01 15:57:25 keithp Exp $ dnl dnl Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc. dnl @@ -23,6 +23,7 @@ dnl PERFORMANCE OF THIS SOFTWARE. dnl # Process this file with autoconf to produce a configure script. + AC_INIT(fontconfig, 1.0.1, fonts@xfree86.org) AC_CONFIG_AUX_DIR(config) AC_CONFIG_HEADER(config.h) @@ -30,13 +31,11 @@ AC_CONFIG_HEADER(config.h) AC_ARG_WITH(freetype_includes, [ --with-freetype-includes=DIR Use FreeType includes in DIR], freetype_includes=$withval, freetype_includes=yes) AC_ARG_WITH(freetype_lib, [ --with-freetype-lib=DIR Use FreeType library in DIR], freetype_lib=$withval, freetype_lib=yes) AC_ARG_WITH(freetype_config, [ --with-freetype-config=PROG Use FreeType configuration program PROG], freetype_config=$withval, freetype_config=yes) -AC_ARG_WITH(expat, [ --with-expat=DIR Use Expat in DIR instead of xml2], expat=$withval, expat=maybe) +AC_ARG_WITH(expat, [ --with-expat=DIR Use Expat in DIR], expat=$withval, expat=yes) AC_ARG_WITH(expat_includes, [ --with-expat-includes=DIR Use Expat includes in DIR], expat_includes=$withval, expat_includes=yes) AC_ARG_WITH(expat_lib, [ --with-expat-lib=DIR Use Expat library in DIR], expat_lib=$withval, expat_lib=yes) -AC_ARG_WITH(xml2, [ --with-xml2=DIR Use Libxml2 in DIR instead of expat], xml2=$withval, xml2=maybe) -AC_ARG_WITH(xml2_includes, [ --with-xml2-includes=DIR Use Libxml2 includes in DIR], xml2_includes=$withval, xml2_includes=yes) -AC_ARG_WITH(xml2_lib, [ --with-xml2-lib=DIR Use Libxml2 library in DIR], xml2_lib=$withval, xml2_lib=yes) AC_ARG_WITH(default_fonts, [ --with-default-fonts=DIR Use fonts from DIR when config is busted], defaultfonts="$withval", default_fonts=yes) +AC_ARG_WITH(confdir, [ --with-confdir=DIR Use DIR to store configuration files (default /etc/fonts)], confdir="$withval", confdir=yes) # Checks for programs. AC_PROG_CC @@ -210,39 +209,21 @@ AC_SUBST(FC_DEFAULT_FONTS) # Set CONFDIR and FONTCONFIG_PATH # -CONFDIR="$sysconfdir/fonts" -AC_DEFINE_UNQUOTED(CONFDIR, "$CONFDIR") -AC_SUBST(CONFDIR) - -FONTCONFIG_PATH="$CONFDIR" -AC_DEFINE_UNQUOTED(FONTCONFIG_PATH, "$CONFDIR") -AC_SUBST(FONTCONFIG_PATH) - -# -# Check expat/libxml2 configuration -# - -case "$expat" in -maybe) - ;; -no) - xml2=yes +case "$confdir" in +no|yes) + confdir=/etc/fonts ;; *) - xml2=no ;; esac +AC_SUBST(confdir) +CONFDIR='${confdir}' +AC_DEFINE_UNQUOTED(CONFDIR, "$CONFDIR") +AC_SUBST(CONFDIR) -case "$xml2" in -maybe) - ;; -no) - expat=yes - ;; -*) - expat=no - ;; -esac +# +# Check expat configuration +# case "$expat" in no) @@ -259,7 +240,7 @@ no) case "$expat_lib" in yes) case "$expat" in - yes|maybe) + yes) expat_library="-lexpat" ;; *) @@ -317,7 +298,6 @@ no) HAVE_EXPAT=1 AC_SUBST(HAVE_EXPAT) AC_DEFINE_UNQUOTED(HAVE_EXPAT,$HAVE_EXPAT) - xml2=no ;; esac ;; @@ -325,71 +305,10 @@ no) ;; esac -case "$xml2" in -no) - ;; -*) - case "$xml2_includes" in - yes|no) - xml2_include_path="" - ;; - *) - xml2_include_path="-I$xml2_includes" - ;; - esac - case "$xml2_lib" in - yes) - case "$xml2" in - yes|maybe) - xml2_library="-lxml2" - ;; - *) - xml2_library="-L$xml2/lib -lxml2" - ;; - esac - ;; - no) - ;; - *) - xml2_library="-L$xml2_lib -lxml2" - ;; - esac - - saved_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $xml2_include_path" - saved_LIBS="$LIBS" - LIBS="$LIBS $xml2_library" - - AC_CHECK_HEADER(libxml/parser.h) - case "$ac_cv_header_libxml_parser_h" in - no) - CPPFLAGS="$saved_CPPFLAGS" - LIBS="$saved_LIBS" - xml2=no - ;; - yes) - AC_CHECK_FUNCS(xmlInitParser) - case "$ac_cv_func_xmlInitParser" in - no) - CPPFLAGS="$saved_CPPFLAGS" - LIBS="$saved_LIBS" - xml2=no - ;; - yes) - HAVE_XML2=1 - AC_SUBST(HAVE_XML2) - AC_DEFINE_UNQUOTED(HAVE_XML2,$HAVE_XML2) - expat=no - ;; - esac - ;; - esac - ;; -esac -case "$expat""$xml2" in -nono) - AC_MSG_ERROR([cannot find either libxml2 or expat]) +case "$expat" in +no) + AC_MSG_ERROR([cannot find expat library]) ;; esac diff --git a/fc-cache/Imakefile b/fc-cache/Imakefile index baaf3dd..3394142 100644 --- a/fc-cache/Imakefile +++ b/fc-cache/Imakefile @@ -5,7 +5,7 @@ XCOMM $XFree86$ #include "../local.def" #endif -INCLUDES=$(FREETYPE2INCLUDES) $(LIBXML2INCLUDES) -I.. +INCLUDES=$(FREETYPE2INCLUDES) -I.. LOCAL_LIBRARIES=FontconfigClientLibs DEPLIBS=FontconfigClientDepLibs diff --git a/fc-lang/Imakefile b/fc-lang/Imakefile index efe2999..e58a684 100644 --- a/fc-lang/Imakefile +++ b/fc-lang/Imakefile @@ -1,11 +1,11 @@ -XCOMM $XFree86: xc/lib/fontconfig/fc-lang/Imakefile,v 1.12 2002/08/06 18:59:59 keithp Exp $ +XCOMM $XFree86: xc/lib/fontconfig/fc-lang/Imakefile,v 1.14 2002/08/08 00:10:49 keithp Exp $ #ifdef UseInstalled /* building outside the tree, use private defines */ #include "../local.def" #endif -INCLUDES=$(FREETYPE2INCLUDES) $(LIBXML2INCLUDES) -I.. -I../src +INCLUDES=$(FREETYPE2INCLUDES) -I.. -I../src LOCAL_LIBRARIES=FontconfigClientLibs DEPLIBS=FontconfigClientDepLibs diff --git a/fc-lang/ja.orth b/fc-lang/ja.orth index e234bb5..90b4865 100644 --- a/fc-lang/ja.orth +++ b/fc-lang/ja.orth @@ -1,5 +1,5 @@ # -# $XFree86: xc/lib/fontconfig/fc-lang/ja.orth,v 1.2 2002/07/06 23:59:15 keithp Exp $ +# $XFree86: xc/lib/fontconfig/fc-lang/ja.orth,v 1.3 2002/07/13 20:33:05 keithp Exp $ # # Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc. # @@ -21,6 +21,8 @@ # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. # +# Coverage from JIS X 0208 (1990) +# 0x3000 # IDEOGRAPHIC SPACE 0x3001 # IDEOGRAPHIC COMMA 0x3002 # IDEOGRAPHIC FULL STOP diff --git a/fc-lang/ko.orth b/fc-lang/ko.orth index b80163c..d7ccdc9 100644 --- a/fc-lang/ko.orth +++ b/fc-lang/ko.orth @@ -1,5 +1,5 @@ # -# $XFree86: xc/lib/fontconfig/fc-lang/ko.orth,v 1.2 2002/07/06 23:59:16 keithp Exp $ +# $XFree86: xc/lib/fontconfig/fc-lang/ko.orth,v 1.3 2002/07/12 21:05:59 keithp Exp $ # # Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc. # @@ -22,6 +22,9 @@ # PERFORMANCE OF THIS SOFTWARE. # # Korean (KO) +# +# Coverage from KSC 5601-1992 +# #0x3000 # IDEOGRAPHIC SPACE #0x3001 # IDEOGRAPHIC COMMA #0x3002 # IDEOGRAPHIC FULL STOP diff --git a/fc-lang/zh_cn.orth b/fc-lang/zh_cn.orth index 907cb21..daf2333 100644 --- a/fc-lang/zh_cn.orth +++ b/fc-lang/zh_cn.orth @@ -1,5 +1,5 @@ # -# $XFree86$ +# $XFree86: xc/lib/fontconfig/fc-lang/zh_cn.orth,v 1.2 2002/07/06 23:59:19 keithp Exp $ # # Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc. # @@ -22,6 +22,9 @@ # PERFORMANCE OF THIS SOFTWARE. # # Chinese (simplified) (ZH-CN) +# +# Coverage computed from GB2312 +# 0x02C7 # CARON (Mandarin Chinese third tone) 0x02C9 # MODIFIER LETTER MACRON (Mandarin Chinese first tone) 0x4E00 # diff --git a/fc-lang/zh_sg.orth b/fc-lang/zh_sg.orth index acf86b5..d638086 100644 --- a/fc-lang/zh_sg.orth +++ b/fc-lang/zh_sg.orth @@ -1,5 +1,5 @@ # -# $XFree86$ +# $XFree86: xc/lib/fontconfig/fc-lang/zh_sg.orth,v 1.1 2002/07/08 07:31:51 keithp Exp $ # # Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc. # @@ -23,5 +23,5 @@ # # Chinese in Singapore (ZH-SG) # -# Just use GB2312 as for ZH-CH +# Just use GB2312 as for ZH-CN include zh_cn.orth diff --git a/fc-list/Imakefile b/fc-list/Imakefile index 7c2ff97..7425997 100644 --- a/fc-list/Imakefile +++ b/fc-list/Imakefile @@ -5,7 +5,7 @@ XCOMM $XFree86$ #include "../local.def" #endif -INCLUDES=$(FREETYPE2INCLUDES) $(LIBXML2INCLUDES) -I.. +INCLUDES=$(FREETYPE2INCLUDES) -I.. LOCAL_LIBRARIES=FontconfigClientLibs DEPLIBS=FontconfigClientDepLibs diff --git a/fontconfig/fcprivate.h b/fontconfig/fcprivate.h index 3754efa..cd63ad6 100644 --- a/fontconfig/fcprivate.h +++ b/fontconfig/fcprivate.h @@ -1,5 +1,5 @@ /* - * $XFree86: xc/lib/fontconfig/fontconfig/fcprivate.h,v 1.3 2002/05/31 23:21:24 keithp Exp $ + * $XFree86: xc/lib/fontconfig/fontconfig/fcprivate.h,v 1.4 2002/08/11 18:10:41 keithp Exp $ * * Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc. * @@ -73,8 +73,6 @@ case FcTypeFTFace: \ __v__.u.f = va_arg (va, FT_Face); \ break; \ - case FcTypePattern: \ - __v__.u.p = va_arg (va, FcPattern *); \ } \ if (!FcPatternAdd (__p__, __o__, __v__, FcTrue)) \ goto _FcPatternVapBuild_bail1; \ diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h index b5fc1f6..6f378cd 100644 --- a/fontconfig/fontconfig.h +++ b/fontconfig/fontconfig.h @@ -1,5 +1,5 @@ /* - * $XFree86: xc/lib/fontconfig/fontconfig/fontconfig.h,v 1.23 2002/07/28 10:50:58 keithp Exp $ + * $XFree86: xc/lib/fontconfig/fontconfig/fontconfig.h,v 1.25 2002/08/11 18:10:41 keithp Exp $ * * Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc. * @@ -71,7 +71,6 @@ typedef int FcBool; #define FC_SOURCE "source" /* String (X11, freetype) */ #define FC_CHARSET "charset" /* CharSet */ #define FC_LANG "lang" /* String OS/2 CodePageRange */ -#define FC_PATTERN "pattern" /* FcPattern */ #define FC_DIR_CACHE_FILE "fonts.cache" #define FC_USER_CACHE_FILE ".fonts.cache" @@ -110,8 +109,7 @@ typedef enum _FcType { FcTypeBool, FcTypeMatrix, FcTypeCharSet, - FcTypeFTFace, - FcTypePattern + FcTypeFTFace } FcType; typedef struct _FcMatrix { @@ -278,6 +276,12 @@ FcConfigAppFontAddDir (FcConfig *config, void FcConfigAppFontClear (FcConfig *config); +FcBool +FcConfigSubstituteWithPat (FcConfig *config, + FcPattern *p, + FcPattern *p_pat, + FcMatchKind kind); + FcBool FcConfigSubstitute (FcConfig *config, FcPattern *p, @@ -605,9 +609,6 @@ FcPatternAddCharSet (FcPattern *p, const char *object, const FcCharSet *c); FcBool FcPatternAddBool (FcPattern *p, const char *object, FcBool b); -FcBool -FcPatternAddPattern (FcPattern *p, const char *object, const FcPattern *pp); - FcResult FcPatternGetInteger (FcPattern *p, const char *object, int n, int *i); @@ -626,9 +627,6 @@ FcPatternGetCharSet (FcPattern *p, const char *object, int n, FcCharSet **c); FcResult FcPatternGetBool (FcPattern *p, const char *object, int n, FcBool *b); -FcResult -FcPatternGetPattern (FcPattern *p, const char *object, int n, FcPattern **pp); - FcPattern * FcPatternVaBuild (FcPattern *orig, va_list va); diff --git a/fonts.conf.in b/fonts.conf.in index 4806560..8480564 100644 --- a/fonts.conf.in +++ b/fonts.conf.in @@ -45,6 +45,18 @@ + + + + sans serif + + + sans-serif + + + diff --git a/src/Imakefile b/src/Imakefile index bdb2f7f..ba6663f 100644 --- a/src/Imakefile +++ b/src/Imakefile @@ -21,7 +21,7 @@ SOFONTCONFIGREV=1.0 #include -INCLUDES=$(FREETYPE2INCLUDES) $(LIBXML2INCLUDES) -I.. +INCLUDES=$(FREETYPE2INCLUDES) -I.. DEFINES=-DFC_DEFAULT_FONTS='"$(FC_DEFAULT_FONTS)"' -DHAVE_EXPAT diff --git a/src/fccache.c b/src/fccache.c index f1567da..f4d6f91 100644 --- a/src/fccache.c +++ b/src/fccache.c @@ -1,5 +1,5 @@ /* - * $XFree86: xc/lib/fontconfig/src/fccache.c,v 1.7 2002/05/21 17:06:22 keithp Exp $ + * $XFree86: xc/lib/fontconfig/src/fccache.c,v 1.10 2002/08/06 19:00:43 keithp Exp $ * * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. * @@ -24,6 +24,21 @@ #include "fcint.h" +/* + * POSIX has broken stdio so that getc must do thread-safe locking, + * this is a serious performance problem for applications doing large + * amounts of IO with getc (as is done here). If available, use + * the getc_unlocked varient instead. + */ + +#if defined(getc_unlocked) || defined(_IO_getc_unlocked) +#define GETC(f) getc_unlocked(f) +#define PUTC(c,f) putc_unlocked(c,f) +#else +#define GETC(f) getc(f) +#define PUTC(c,f) putc(c,f) +#endif + #define FC_DBG_CACHE_REF 1024 static FcChar8 * @@ -35,7 +50,7 @@ FcCacheReadString (FILE *f, FcChar8 *dest, int len) int size; int i; - while ((c = getc (f)) != EOF) + while ((c = GETC (f)) != EOF) if (c == '"') break; if (c == EOF) @@ -47,7 +62,7 @@ FcCacheReadString (FILE *f, FcChar8 *dest, int len) i = 0; d = dest; escape = FcFalse; - while ((c = getc (f)) != EOF) + while ((c = GETC (f)) != EOF) { if (!escape) { @@ -87,7 +102,7 @@ FcCacheReadUlong (FILE *f, unsigned long *dest) unsigned long t; int c; - while ((c = getc (f)) != EOF) + while ((c = GETC (f)) != EOF) { if (!isspace (c)) break; @@ -102,7 +117,7 @@ FcCacheReadUlong (FILE *f, unsigned long *dest) if (!isdigit (c)) return FcFalse; t = t * 10 + (c - '0'); - c = getc (f); + c = GETC (f); } *dest = t; return FcTrue; @@ -141,11 +156,11 @@ FcCacheWriteChars (FILE *f, const FcChar8 *chars) switch (c) { case '"': case '\\': - if (putc ('\\', f) == EOF) + if (PUTC ('\\', f) == EOF) return FcFalse; /* fall through */ default: - if (putc (c, f) == EOF) + if (PUTC (c, f) == EOF) return FcFalse; } } @@ -156,11 +171,11 @@ static FcBool FcCacheWriteString (FILE *f, const FcChar8 *string) { - if (putc ('"', f) == EOF) + if (PUTC ('"', f) == EOF) return FcFalse; if (!FcCacheWriteChars (f, string)) return FcFalse; - if (putc ('"', f) == EOF) + if (PUTC ('"', f) == EOF) return FcFalse; return FcTrue; } @@ -168,17 +183,17 @@ FcCacheWriteString (FILE *f, const FcChar8 *string) static FcBool FcCacheWritePath (FILE *f, const FcChar8 *dir, const FcChar8 *file) { - if (putc ('"', f) == EOF) + if (PUTC ('"', f) == EOF) return FcFalse; if (dir) if (!FcCacheWriteChars (f, dir)) return FcFalse; if (dir && dir[strlen((const char *) dir) - 1] != '/') - if (putc ('/', f) == EOF) + if (PUTC ('/', f) == EOF) return FcFalse; if (!FcCacheWriteChars (f, file)) return FcFalse; - if (putc ('"', f) == EOF) + if (PUTC ('"', f) == EOF) return FcFalse; return FcTrue; } @@ -200,7 +215,7 @@ FcCacheWriteUlong (FILE *f, unsigned long t) while (pow) { digit = temp / pow; - if (putc ((char) digit + '0', f) == EOF) + if (PUTC ((char) digit + '0', f) == EOF) return FcFalse; temp = temp - pow * digit; pow = pow / 10; @@ -767,19 +782,19 @@ FcGlobalCacheSave (FcGlobalCache *cache, continue; if (!FcCacheWriteString (f, dir->info.file)) goto bail4; - if (putc (' ', f) == EOF) + if (PUTC (' ', f) == EOF) goto bail4; if (!FcCacheWriteInt (f, 0)) goto bail4; - if (putc (' ', f) == EOF) + if (PUTC (' ', f) == EOF) goto bail4; if (!FcCacheWriteTime (f, dir->info.time)) goto bail4; - if (putc (' ', f) == EOF) + if (PUTC (' ', f) == EOF) goto bail4; if (!FcCacheWriteString (f, (FcChar8 *) FC_FONT_FILE_DIR)) goto bail4; - if (putc ('\n', f) == EOF) + if (PUTC ('\n', f) == EOF) goto bail4; for (file_hash = 0; file_hash < FC_GLOBAL_CACHE_FILE_HASH_SIZE; file_hash++) @@ -790,19 +805,19 @@ FcGlobalCacheSave (FcGlobalCache *cache, continue; if (!FcCacheWritePath (f, dir->info.file, file->info.file)) goto bail4; - if (putc (' ', f) == EOF) + if (PUTC (' ', f) == EOF) goto bail4; if (!FcCacheWriteInt (f, file->id < 0 ? 0 : file->id)) goto bail4; - if (putc (' ', f) == EOF) + if (PUTC (' ', f) == EOF) goto bail4; if (!FcCacheWriteTime (f, file->info.time)) goto bail4; - if (putc (' ', f) == EOF) + if (PUTC (' ', f) == EOF) goto bail4; if (!FcCacheWriteString (f, file->name)) goto bail4; - if (putc ('\n', f) == EOF) + if (PUTC ('\n', f) == EOF) goto bail4; } } @@ -981,15 +996,15 @@ FcDirCacheWriteDir (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir) base = FcFileBaseName (cache_file, dir); if (!FcCacheWriteString (f, base)) goto bail3; - if (putc (' ', f) == EOF) + if (PUTC (' ', f) == EOF) goto bail3; if (!FcCacheWriteInt (f, 0)) goto bail3; - if (putc (' ', f) == EOF) + if (PUTC (' ', f) == EOF) goto bail3; if (!FcCacheWriteString (f, FC_FONT_FILE_DIR)) goto bail3; - if (putc ('\n', f) == EOF) + if (PUTC ('\n', f) == EOF) goto bail3; } @@ -1005,11 +1020,11 @@ FcDirCacheWriteDir (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir) printf (" write file \"%s\"\n", base); if (!FcCacheWriteString (f, base)) goto bail3; - if (putc (' ', f) == EOF) + if (PUTC (' ', f) == EOF) goto bail3; if (!FcCacheWriteInt (f, id)) goto bail3; - if (putc (' ', f) == EOF) + if (PUTC (' ', f) == EOF) goto bail3; name = FcNameUnparse (font); if (!name) @@ -1018,7 +1033,7 @@ FcDirCacheWriteDir (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir) free (name); if (!ret) goto bail3; - if (putc ('\n', f) == EOF) + if (PUTC ('\n', f) == EOF) goto bail3; } diff --git a/src/fccfg.c b/src/fccfg.c index 328b1ac..ab99278 100644 --- a/src/fccfg.c +++ b/src/fccfg.c @@ -1,5 +1,5 @@ /* - * $XFree86: xc/lib/fontconfig/src/fccfg.c,v 1.18 2002/07/31 01:36:37 keithp Exp $ + * $XFree86: xc/lib/fontconfig/src/fccfg.c,v 1.19 2002/08/11 18:10:42 keithp Exp $ * * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. * @@ -592,18 +592,6 @@ FcConfigCompareValue (FcValue m, break; } break; - case FcTypePattern: - switch (op) { - case FcOpEqual: - ret = FcPatternEqual (m.u.p, v.u.p); - break; - case FcOpNotEqual: - ret = !FcPatternEqual (m.u.p, v.u.p); - break; - default: - break; - } - break; } } else @@ -1009,9 +997,10 @@ FcConfigPatternCanon (FcPattern *p, } FcBool -FcConfigSubstitute (FcConfig *config, - FcPattern *p, - FcMatchKind kind) +FcConfigSubstituteWithPat (FcConfig *config, + FcPattern *p, + FcPattern *p_pat, + FcMatchKind kind) { FcSubst *s; FcSubState *st; @@ -1019,7 +1008,6 @@ FcConfigSubstitute (FcConfig *config, FcTest *t; FcEdit *e; FcValueList *l; - FcPattern *p_pat = 0; FcPattern *m; if (!config) @@ -1042,10 +1030,7 @@ FcConfigSubstitute (FcConfig *config, if (kind == FcMatchPattern) s = config->substPattern; else - { s = config->substFont; - (void) FcPatternGetPattern (p, FC_PATTERN, 0, &p_pat); - } for (; s; s = s->next) { /* @@ -1222,6 +1207,14 @@ FcConfigSubstitute (FcConfig *config, return FcTrue; } +FcBool +FcConfigSubstitute (FcConfig *config, + FcPattern *p, + FcMatchKind kind) +{ + return FcConfigSubstituteWithPat (config, p, 0, kind); +} + #ifndef FONTCONFIG_PATH #define FONTCONFIG_PATH "/etc/fonts" #endif diff --git a/src/fcdbg.c b/src/fcdbg.c index 9f7cec9..a3deba1 100644 --- a/src/fcdbg.c +++ b/src/fcdbg.c @@ -1,5 +1,5 @@ /* - * $XFree86: xc/lib/fontconfig/src/fcdbg.c,v 1.4 2002/06/19 20:08:22 keithp Exp $ + * $XFree86: xc/lib/fontconfig/src/fcdbg.c,v 1.7 2002/08/11 18:10:42 keithp Exp $ * * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. * @@ -54,11 +54,6 @@ FcValuePrint (const FcValue v) case FcTypeFTFace: printf (" face"); break; - case FcTypePattern: - printf (" pattern {"); - FcPatternPrint (v.u.p); - printf (" } "); - break; } } diff --git a/src/fclist.c b/src/fclist.c index e57f2bd..0ba7b04 100644 --- a/src/fclist.c +++ b/src/fclist.c @@ -1,5 +1,5 @@ /* - * $XFree86: xc/lib/fontconfig/src/fclist.c,v 1.7 2002/06/19 20:08:22 keithp Exp $ + * $XFree86: xc/lib/fontconfig/src/fclist.c,v 1.8 2002/08/11 18:10:42 keithp Exp $ * * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. * @@ -247,8 +247,6 @@ FcListValueHash (FcValue v) return FcCharSetCount (v.u.c); case FcTypeFTFace: return (FcChar32) v.u.f; - case FcTypePattern: - return (FcChar32) v.u.p->num; } return 0; } diff --git a/src/fcmatch.c b/src/fcmatch.c index 99e9fd1..3853cb7 100644 --- a/src/fcmatch.c +++ b/src/fcmatch.c @@ -1,5 +1,5 @@ /* - * $XFree86: xc/lib/fontconfig/src/fcmatch.c,v 1.16 2002/07/06 23:47:44 keithp Exp $ + * $XFree86: xc/lib/fontconfig/src/fcmatch.c,v 1.17 2002/08/11 18:10:42 keithp Exp $ * * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. * @@ -402,8 +402,7 @@ FcFontRenderPrepare (FcConfig *config, if (!fe) FcPatternAdd (new, pe->object, pe->values->value, FcTrue); } - FcPatternAddPattern (new, FC_PATTERN, pat); - FcConfigSubstitute (config, new, FcMatchFont); + FcConfigSubstituteWithPat (config, new, pat, FcMatchFont); return new; } diff --git a/src/fcname.c b/src/fcname.c index fc8c3a4..29e1c92 100644 --- a/src/fcname.c +++ b/src/fcname.c @@ -1,5 +1,5 @@ /* - * $XFree86: xc/lib/fontconfig/src/fcname.c,v 1.10 2002/06/29 20:31:02 keithp Exp $ + * $XFree86: xc/lib/fontconfig/src/fcname.c,v 1.11 2002/08/11 18:10:42 keithp Exp $ * * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. * @@ -472,8 +472,6 @@ FcNameUnparseValue (FcStrBuf *buf, return FcNameUnparseCharSet (buf, v.u.c); case FcTypeFTFace: return FcTrue; - case FcTypePattern: - return FcTrue; } return FcFalse; } diff --git a/src/fcpat.c b/src/fcpat.c index a12414b..bf527a4 100644 --- a/src/fcpat.c +++ b/src/fcpat.c @@ -1,5 +1,5 @@ /* - * $XFree86: xc/lib/fontconfig/src/fcpat.c,v 1.12 2002/08/07 01:45:59 keithp Exp $ + * $XFree86: xc/lib/fontconfig/src/fcpat.c,v 1.13 2002/08/11 18:10:42 keithp Exp $ * * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. * @@ -55,9 +55,6 @@ FcValueDestroy (FcValue v) case FcTypeCharSet: FcCharSetDestroy ((FcCharSet *) v.u.c); break; - case FcTypePattern: - FcPatternDestroy ((FcPattern *) v.u.p); - break; default: break; } @@ -82,9 +79,6 @@ FcValueSave (FcValue v) if (!v.u.c) v.type = FcTypeVoid; break; - case FcTypePattern: - FcPatternReference ((FcPattern *) v.u.p); - break; default: break; } @@ -107,9 +101,6 @@ FcValueListDestroy (FcValueList *l) case FcTypeCharSet: FcCharSetDestroy ((FcCharSet *) l->value.u.c); break; - case FcTypePattern: - FcPatternDestroy ((FcPattern *) l->value.u.p); - break; default: break; } @@ -154,8 +145,6 @@ FcValueEqual (FcValue va, FcValue vb) return FcCharSetEqual (va.u.c, vb.u.c); case FcTypeFTFace: return va.u.f == vb.u.f; - case FcTypePattern: - return FcPatternEqual (va.u.p, vb.u.p); } return FcFalse; } @@ -206,8 +195,6 @@ FcValueHash (FcValue v) case FcTypeFTFace: return FcStringHash ((const FcChar8 *) ((FT_Face) v.u.f)->family_name) ^ FcStringHash ((const FcChar8 *) ((FT_Face) v.u.f)->style_name); - case FcTypePattern: - return (FcChar32) v.u.p->num; } return FcFalse; } @@ -459,9 +446,6 @@ bail2: case FcTypeCharSet: FcCharSetDestroy ((FcCharSet *) value.u.c); break; - case FcTypePattern: - FcPatternDestroy ((FcPattern *) value.u.p); - break; default: break; } @@ -579,16 +563,6 @@ FcPatternAddFTFace (FcPattern *p, const char *object, const FT_Face f) return FcPatternAdd (p, object, v, FcTrue); } -FcBool -FcPatternAddPattern (FcPattern *p, const char *object, const FcPattern *pp) -{ - FcValue v; - - v.type = FcTypePattern; - v.u.p = pp; - return FcPatternAdd (p, object, v, FcTrue); -} - FcResult FcPatternGet (FcPattern *p, const char *object, int id, FcValue *v) { @@ -730,21 +704,6 @@ FcPatternGetFTFace (FcPattern *p, const char *object, int id, FT_Face *f) return FcResultMatch; } -FcResult -FcPatternGetPattern (FcPattern *p, const char *object, int id, FcPattern **pp) -{ - FcValue v; - FcResult r; - - r = FcPatternGet (p, object, id, &v); - if (r != FcResultMatch) - return r; - if (v.type != FcTypePattern) - return FcResultTypeMismatch; - *pp = (FcPattern *) v.u.p; - return FcResultMatch; -} - FcPattern * FcPatternDuplicate (FcPattern *orig) { diff --git a/src/fcxml.c b/src/fcxml.c index e265fa5..242a56d 100644 --- a/src/fcxml.c +++ b/src/fcxml.c @@ -1,5 +1,5 @@ /* - * $XFree86: xc/lib/fontconfig/src/fcxml.c,v 1.17 2002/07/31 01:36:37 keithp Exp $ + * $XFree86: xc/lib/fontconfig/src/fcxml.c,v 1.18 2002/08/11 18:10:42 keithp Exp $ * * Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc. * @@ -25,28 +25,15 @@ #include #include "fcint.h" -#ifndef HAVE_EXPAT -#define HAVE_EXPAT 1 -#endif - -#ifndef HAVE_XML2 -#define HAVE_XML2 0 -#endif - -#if HAVE_EXPAT #ifndef HAVE_XMLPARSE_H #define HAVE_XMLPARSE_H 0 #endif + #if HAVE_XMLPARSE_H #include #else #include #endif -#endif - -#if HAVE_XML2 -#include "fclibxml2.h" -#endif FcTest * FcTestCreate (FcMatchKind kind, diff --git a/src/fontconfig.man b/src/fontconfig.man index aedb714..cac9aba 100644 --- a/src/fontconfig.man +++ b/src/fontconfig.man @@ -1,5 +1,5 @@ .\" -.\" $XFree86: xc/lib/fontconfig/src/fontconfig.man,v 1.2 2002/08/06 19:54:10 keithp Exp $ +.\" $XFree86: xc/lib/fontconfig/src/fontconfig.man,v 1.3 2002/08/11 18:10:43 keithp Exp $ .\" .\" Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc. .\" @@ -865,10 +865,15 @@ void FcConfigAppFontClear (FcConfig *config) Clears the set of application-specific fonts. .TP -FcBool FcConfigSubstitute (FcConfig *config, FcPattern *p, FcMatchKind kind) +FcBool FcConfigSubstituteWithPat (FcConfig *config, FcPattern *p, FcPattern *p_pat FcMatchKind kind) Performs the sequence of pattern modification operations, if 'kind' is FcMatchPattern, then those tagged as pattern operations are applied, else -if 'kind' is FcMatchFont, those tagged as font operations are applied. +if 'kind' is FcMatchFont, those tagged as font operations are applied and +p_pat is used for elements with target=pattern. + +.TP +FcBool FcConfigSubstitute (FcConfig *config, FcPattern *p, FcMatchKind kind) +Calls FcConfigSubstituteWithPat setting p_pat to NULL. .TP FcPattern *FcFontMatch (FcConfig *config, FcPattern *p, FcResult *result) @@ -1025,17 +1030,6 @@ Constructs a pattern representing the 'id'th font in 'file'. The number of fonts in 'file' is returned in 'count'. .SS XML specific functions -.nf -.B #include -.fi -These functions expose the libxml2 datatypes used for font configuration. - -.TP -xmlDocPtr FcConfigLoad (const char *file) -Loads a configuration file mapping 'file' into a filename with -FcConfigFilename. This doesn't load a complete configuration as any -include files referenced from 'file' will not be loaded. - .TP FcBool FcConfigParseAndLoad (FcConfig *config, const FcChar8 *file, FcBool complain) Walks the configuration in 'file' and constructs the internal representation in -- 2.39.5