From c6f80401dc533b04341afe8d596960d1bc25efce Mon Sep 17 00:00:00 2001 From: marha Date: Tue, 10 Apr 2012 10:49:59 +0200 Subject: fontconfig mesa xkeyboard-config xserver pixman git update 10 Apr 2012 --- fontconfig/Makefile.am | 36 +++--- fontconfig/conf.d/Makefile.am | 99 +++++++------- fontconfig/configure.in | 249 +++++++++++++++++------------------- fontconfig/doc/fontconfig-user.sgml | 6 +- fontconfig/fonts.conf.in | 2 +- fontconfig/fonts.dtd | 2 +- fontconfig/src/Makefile.am | 2 +- fontconfig/src/fcxml.c | 27 +++- 8 files changed, 209 insertions(+), 214 deletions(-) (limited to 'fontconfig') diff --git a/fontconfig/Makefile.am b/fontconfig/Makefile.am index 1b943672d..1738c3329 100644 --- a/fontconfig/Makefile.am +++ b/fontconfig/Makefile.am @@ -54,8 +54,11 @@ MAINTAINERCLEANFILES = \ pkgconfigdir=$(libdir)/pkgconfig pkgconfig_DATA = fontconfig.pc -configdir=$(CONFDIR) -config_DATA=fonts.dtd +baseconfigdir = $(BASECONFIGDIR) +configdir = $(CONFIGDIR) + +xmldir = $(XMLDIR) +xml_DATA = fonts.dtd if CROSS_COMPILING RUN_FC_CACHE_TEST=false @@ -88,23 +91,24 @@ fonts.conf: fonts.conf.in Makefile -e 's,@FC_CACHEDIR\@,$(FC_CACHEDIR),g' \ -e 's,@FC_DEFAULT_FONTS\@,$(FC_DEFAULT_FONTS),g' \ -e 's,@FC_FONTPATH\@,$(FC_FONTPATH),g' \ + -e 's,@CONFIGDIR\@,$(CONFIGDIR),g' \ -e 's,@PACKAGE\@,$(PACKAGE),g' \ -e 's,@VERSION\@,$(VERSION),g' \ $(srcdir)/$@.in > $@.tmp && \ mv $@.tmp $@ install-data-local: fonts.conf - $(mkinstalldirs) $(DESTDIR)$(configdir) $(DESTDIR)$(fc_cachedir) - if [ -f $(DESTDIR)$(configdir)/fonts.conf ]; then \ - echo "backing up existing $(DESTDIR)$(configdir)/fonts.conf"; \ - mv $(DESTDIR)$(configdir)/fonts.conf $(DESTDIR)$(configdir)/fonts.conf.bak; \ + $(mkinstalldirs) $(DESTDIR)$(baseconfigdir) $(DESTDIR)$(fc_cachedir) + if [ -f $(DESTDIR)$(baseconfigdir)/fonts.conf ]; then \ + echo "backing up existing $(DESTDIR)$(baseconfigdir)/fonts.conf"; \ + mv $(DESTDIR)$(baseconfigdir)/fonts.conf $(DESTDIR)$(baseconfigdir)/fonts.conf.bak; \ fi if [ -f $(srcdir)/fonts.conf ]; then \ - echo " $(INSTALL_DATA) $(srcdir)/fonts.conf $(DESTDIR)$(configdir)/fonts.conf"; \ - $(INSTALL_DATA) $(srcdir)/fonts.conf $(DESTDIR)$(configdir)/fonts.conf; \ + echo " $(INSTALL_DATA) $(srcdir)/fonts.conf $(DESTDIR)$(baseconfigdir)/fonts.conf"; \ + $(INSTALL_DATA) $(srcdir)/fonts.conf $(DESTDIR)$(baseconfigdir)/fonts.conf; \ else if [ -f fonts.conf ]; then \ - echo " $(INSTALL_DATA) fonts.conf $(DESTDIR)$(configdir)/fonts.conf"; \ - $(INSTALL_DATA) fonts.conf $(DESTDIR)$(configdir)/fonts.conf; \ + echo " $(INSTALL_DATA) fonts.conf $(DESTDIR)$(baseconfigdir)/fonts.conf"; \ + $(INSTALL_DATA) fonts.conf $(DESTDIR)$(baseconfigdir)/fonts.conf; \ fi; fi @(if $(RUN_FC_CACHE_TEST); then \ echo "fc-cache$(EXEEXT) -s -f -v"; \ @@ -119,14 +123,14 @@ install-data-local: fonts.conf uninstall-local: if [ -f $(srcdir)/fonts.conf ]; then \ - if cmp -s $(srcdir)/fonts.conf $(DESTDIR)$(configdir)/fonts.conf; then \ - echo " uninstall standard $(DESTDIR)$(configdir)/fonts.conf"; \ - $(RM) $(DESTDIR)$(configdir)/fonts.conf; \ + if cmp -s $(srcdir)/fonts.conf $(DESTDIR)$(baseconfigdir)/fonts.conf; then \ + echo " uninstall standard $(DESTDIR)$(baseconfigdir)/fonts.conf"; \ + $(RM) $(DESTDIR)$(baseconfigdir)/fonts.conf; \ fi; \ else if [ -f fonts.conf ]; then \ - if cmp -s fonts.conf $(DESTDIR)$(configdir)/fonts.conf; then \ - echo " uninstall standard $(DESTDIR)$(configdir)/fonts.conf"; \ - $(RM) $(DESTDIR)$(configdir)/fonts.conf; \ + if cmp -s fonts.conf $(DESTDIR)$(baseconfigdir)/fonts.conf; then \ + echo " uninstall standard $(DESTDIR)$(baseconfigdir)/fonts.conf"; \ + $(RM) $(DESTDIR)$(baseconfigdir)/fonts.conf; \ fi; \ fi; fi diff --git a/fontconfig/conf.d/Makefile.am b/fontconfig/conf.d/Makefile.am index 13f243bb3..93bf8d321 100644 --- a/fontconfig/conf.d/Makefile.am +++ b/fontconfig/conf.d/Makefile.am @@ -24,37 +24,6 @@ DOC_FILES= \ README -CONF_FILES = \ - 10-autohint.conf \ - 10-no-sub-pixel.conf \ - 10-sub-pixel-bgr.conf \ - 10-sub-pixel-rgb.conf \ - 10-sub-pixel-vbgr.conf \ - 10-sub-pixel-vrgb.conf \ - 10-unhinted.conf \ - 11-lcdfilter-default.conf \ - 11-lcdfilter-legacy.conf \ - 11-lcdfilter-light.conf \ - 20-fix-globaladvance.conf \ - 20-unhint-small-vera.conf \ - 25-unhint-nonlatin.conf \ - 30-urw-aliases.conf \ - 30-metric-aliases.conf \ - 40-nonlatin.conf \ - 45-latin.conf \ - 49-sansserif.conf \ - 50-user.conf \ - 51-local.conf \ - 60-latin.conf \ - 65-fonts-persian.conf \ - 65-khmer.conf \ - 65-nonlatin.conf \ - 69-unifont.conf \ - 70-no-bitmaps.conf \ - 70-yes-bitmaps.conf \ - 80-delicious.conf \ - 90-synthetic.conf - CONF_LINKS = \ 20-fix-globaladvance.conf \ 20-unhint-small-vera.conf \ @@ -72,28 +41,56 @@ CONF_LINKS = \ 80-delicious.conf \ 90-synthetic.conf -EXTRA_DIST = $(CONF_FILES) $(DOC_FILES) +EXTRA_DIST = $(template_DATA) $(DOC_FILES) -configdir=$(CONFDIR) -confavaildir=$(configdir)/conf.avail -confddir=$(configdir)/conf.d +configdir=$(CONFIGDIR) +config_DATA = $(DOC_FILES) -confavail_DATA=$(CONF_FILES) -confd_DATA=$(DOC_FILES) +templatedir = $(TEMPLATEDIR) +template_DATA = \ + 10-autohint.conf \ + 10-no-sub-pixel.conf \ + 10-sub-pixel-bgr.conf \ + 10-sub-pixel-rgb.conf \ + 10-sub-pixel-vbgr.conf \ + 10-sub-pixel-vrgb.conf \ + 10-unhinted.conf \ + 11-lcdfilter-default.conf \ + 11-lcdfilter-legacy.conf \ + 11-lcdfilter-light.conf \ + 20-fix-globaladvance.conf \ + 20-unhint-small-vera.conf \ + 25-unhint-nonlatin.conf \ + 30-urw-aliases.conf \ + 30-metric-aliases.conf \ + 40-nonlatin.conf \ + 45-latin.conf \ + 49-sansserif.conf \ + 50-user.conf \ + 51-local.conf \ + 60-latin.conf \ + 65-fonts-persian.conf \ + 65-khmer.conf \ + 65-nonlatin.conf \ + 69-unifont.conf \ + 70-no-bitmaps.conf \ + 70-yes-bitmaps.conf \ + 80-delicious.conf \ + 90-synthetic.conf install-data-local: - mkdir -p ${DESTDIR}${confddir} - @(echo cd ${DESTDIR}${confddir}; \ - cd ${DESTDIR}${confddir}; \ - for i in ${CONF_LINKS}; do \ - $(RM) $$i; \ - echo $(RM) $$i";" ln -s ../conf.avail/$$i .; \ - ln -s ../conf.avail/$$i .; \ - done) + mkdir -p $(DESTDIR)$(configdir) + @(echo cd $(DESTDIR)$(configdir); \ + cd $(DESTDIR)$(configdir); \ + for i in $(CONF_LINKS); do \ + echo $(RM) $$i";" ln -s $(templatedir)/$$i .; \ + $(RM) $$i; \ + ln -s $(templatedir)/$$i .; \ + done) uninstall-local: - @(echo cd ${DESTDIR}${confddir}; \ - cd ${DESTDIR}${confddir}; \ - for i in ${CONF_LINKS}; do \ - echo $(RM) $$i; \ - $(RM) $$i; \ - done) + @(echo cd $(DESTDIR)$(configdir); \ + cd $(DESTDIR)$(configdir); \ + for i in $(CONF_LINKS); do \ + echo $(RM) $$i; \ + $(RM) $$i; \ + done) diff --git a/fontconfig/configure.in b/fontconfig/configure.in index e0aba1992..ea44c1422 100644 --- a/fontconfig/configure.in +++ b/fontconfig/configure.in @@ -63,6 +63,7 @@ AC_PROG_LN_S AC_LIBTOOL_WIN32_DLL AM_PROG_LIBTOOL AC_PROG_MAKE_SET +PKG_PROG_PKG_CONFIG AC_MSG_CHECKING([for RM macro]) _predefined_rm=`make -p -f /dev/null 2>/dev/null|grep '^RM ='|sed -e 's/^RM = //'` @@ -106,7 +107,11 @@ AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes) dnl ========================================================================== -AC_ARG_WITH(arch, [ --with-arch=ARCH Force architecture to ARCH], arch="$withval", arch=auto) +AC_ARG_WITH(arch, + [AC_HELP_STRING([--with-arch=ARCH], + [Force architecture to ARCH])], + , + arch="$withval", arch=auto) if test "x$arch" != xauto; then AC_DEFINE_UNQUOTED([FC_ARCHITECTURE], "$arch", [Architecture prefix to use for cache file names]) @@ -166,20 +171,7 @@ AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.]) # # Checks for FreeType # - -AC_ARG_WITH(freetype-config, [ --with-freetype-config=PROG Use FreeType configuration program PROG], freetype_config=$withval, freetype_config=yes) - -if test "$freetype_config" = "yes"; then - AC_PATH_PROG(ft_config,freetype-config,no) - if test "$ft_config" = "no"; then - AC_MSG_ERROR([You must have freetype installed; see http://www.freetype.org/]) - fi -else - ft_config="$freetype_config" -fi - -FREETYPE_CFLAGS="`$ft_config --cflags`" -FREETYPE_LIBS="`$ft_config --libs`" +PKG_CHECK_MODULES(FREETYPE, freetype2) AC_SUBST(FREETYPE_LIBS) AC_SUBST(FREETYPE_CFLAGS) @@ -202,123 +194,48 @@ LIBS="$fontconfig_save_libs" # # Check expat configuration # - -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) - if test "$enable_libxml2" != "yes"; then - case "$expat" in - no) - ;; - *) - case "$expat_includes" in - yes) - case "$expat" in - yes) - ;; - *) - EXPAT_CFLAGS="-I$expat/include" - ;; - esac - ;; - no) - EXPAT_CFLAGS="" - ;; - *) - EXPAT_CFLAGS="-I$expat_includes" - ;; - esac - case "$expat_lib" in - yes) - case "$expat" in - yes) - EXPAT_LIBS="-lexpat" - ;; - *) - EXPAT_LIBS="-L$expat/lib -lexpat" - ;; - esac - ;; - no) - ;; - *) - EXPAT_LIBS="-L$expat_lib -lexpat" - ;; - esac - - expatsaved_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS" - expatsaved_LIBS="$LIBS" - LIBS="$LIBS $EXPAT_LIBS" - - AC_CHECK_HEADER(expat.h) - case "$ac_cv_header_expat_h" in - no) - AC_CHECK_HEADER(xmlparse.h) - case "$ac_cv_header_xmlparse_h" in - no) - have_expat_header=no; - ;; - yes) - HAVE_XMLPARSE_H=1 - AC_SUBST(HAVE_XMLPARSE_H) - AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H, + # specify EXPAT_CFLAGS and/or EXPAT_LIBS if you like the old behavior + # with --with-expat-includes and --with-expat-lib. + PKG_CHECK_MODULES(EXPAT, expat) + expatsaved_CPPFLAGS="$CPPFLAGS" + expatsaved_LIBS="$LIBS" + CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS" + LIBS="$LIBS $EXPAT_LIBS" + + AC_CHECK_HEADER(expat.h) + if test "$ac_cv_header_expat_h" = "no"; then + AC_CHECK_HEADER(xmlparse.h) + if test "$ac_cv_header_xmlparse_h" = "yes"; then + HAVE_XMLPARSE_H=1 + AC_SUBST(HAVE_XMLPARSE_H) + AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H, [Use xmlparse.h instead of expat.h]) - have_expat_header=yes - ;; - esac - ;; - yes) - have_expat_header=yes - ;; - esac - case "$have_expat_header" in - no) - expat=no - ;; - yes) - AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler) - case "$ac_cv_func_XML_SetDoctypeDeclHandler" in - yes) - HAVE_EXPAT=1 - AC_SUBST(HAVE_EXPAT) - AC_DEFINE_UNQUOTED(HAVE_EXPAT,$HAVE_EXPAT, - [Found a useable expat library]) - ;; - *) - expat=no - ;; - esac - ;; - esac - CPPFLAGS="$expatsaved_CPPFLAGS" - LIBS="$expatsaved_LIBS" - ;; - esac - + else + AC_MSG_ERROR([ +*** expat is required. or try to use --enable-libxml2]) + fi + fi + AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler) + if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then + AC_MSG_ERROR([ +*** expat is required. or try to use --enable-libxml2]) + fi + CPPFLAGS="$expatsaved_CPPFLAGS" + LIBS="$expatsaved_LIBS" + AC_SUBST(EXPAT_CFLAGS) AC_SUBST(EXPAT_LIBS) - - case "$expat" in - no) - EXPAT_CFLAGS="" - EXPAT_LIBS="" - - AC_MSG_WARN([Cannot find usable expat library. Trying to use libxml2 as fallback.]) - ;; - esac fi # # Check libxml2 configuration # +AC_ARG_ENABLE(libxml2, + [AC_HELP_STRING([--enable-libxml2], + [Use libxml2 instead of Expat])]) -AC_ARG_ENABLE(libxml2, [ --enable-libxml2 Use libxml2 instead of Expat]) - -PKG_PROG_PKG_CONFIG - -if test "$enable_libxml2" = "yes" -o "$expat" = "no"; then +if test "$enable_libxml2" = "yes"; then PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6]) AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat]) @@ -330,7 +247,10 @@ fi # Set default font directory # -AC_ARG_WITH(default-fonts, [ --with-default-fonts=DIR Use fonts from DIR when config is busted], default_fonts="$withval", default_fonts=yes) +AC_ARG_WITH(default-fonts, + [AC_HELP_STRING([--with-default-fonts=DIR], + [Use fonts from DIR when config is busted])], + default_fonts="$withval", default_fonts=yes) case "$default_fonts" in yes) @@ -358,7 +278,10 @@ AC_SUBST(FC_DEFAULT_FONTS) # with outline fonts; those with bitmaps can be added as desired in # local.conf or ~/.fonts.conf # -AC_ARG_WITH(add-fonts, [ --with-add-fonts=DIR1,DIR2,...Find additional fonts in DIR1,DIR2,... ], add_fonts="$withval", add_fonts=yes) +AC_ARG_WITH(add-fonts, + [AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...], + [Find additional fonts in DIR1,DIR2,... ])], + add_fonts="$withval", add_fonts=yes) case "$add_fonts" in yes) @@ -409,7 +332,10 @@ AC_SUBST(FC_FONTPATH) # # Set default cache directory path # -AC_ARG_WITH(cache-dir, [ --with-cache-dir=DIR Use DIR to store cache files (default LOCALSTATEDIR/cache/fontconfig)], fc_cachedir="$withval", fc_cachedir=yes) +AC_ARG_WITH(cache-dir, + [AC_HELP_STRING([--with-cache-dir=DIR], + [Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])], + fc_cachedir="$withval", fc_cachedir=yes) case $fc_cachedir in no|yes) @@ -430,23 +356,72 @@ FC_FONTDATE=`LC_ALL=C date` AC_SUBST(FC_FONTDATE) -AC_ARG_WITH(confdir, [ --with-confdir=DIR Use DIR to store configuration files (default SYSCONFDIR/fonts)], confdir="$withval", confdir=yes) - # -# Set CONFDIR and FONTCONFIG_PATH +# Set configuration paths # -case "$confdir" in +AC_ARG_WITH(templatedir, + [AC_HELP_STRING([--with-templatedir=DIR], + [Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])], + [templatedir="$withval"], + [templatedir=yes]) +AC_ARG_WITH(baseconfigdir, + [AC_HELP_STRING([--with-baseconfigdir=DIR], + [Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])], + [baseconfigdir="$withval"], + [baseconfigdir=yes]) +AC_ARG_WITH(configdir, + [AC_HELP_STRING([--with-configdir=DIR], + [Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])], + [configdir="$withval"], + [configdir=yes]) +AC_ARG_WITH(xmldir, + [AC_HELP_STRING([--with-xmldir=DIR], + [Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])], + [xmldir="$withval"], + [xmldir=yes]) + +case "$templatedir" in no|yes) - confdir='${sysconfdir}'/fonts + templatedir='${datadir}'/fontconfig/conf.avail ;; *) ;; esac -AC_SUBST(confdir) -CONFDIR=${confdir} -AC_DEFINE_UNQUOTED(CONFDIR, "$CONFDIR",[Font configuration directory]) -AC_SUBST(CONFDIR) +case "$baseconfigdir" in +no|yes) + baseconfigdir='${sysconfdir}'/fonts + ;; +*) + ;; +esac +case "$configdir" in +no|yes) + configdir='${baseconfigdir}'/conf.d + ;; +*) + ;; +esac +case "$xmldir" in +no|yes) + xmldir='${datadir}'/xml/fontconfig + ;; +*) + ;; +esac + +TEMPLATEDIR=${templatedir} +BASECONFIGDIR=${baseconfigdir} +CONFIGDIR=${configdir} +XMLDIR=${xmldir} +AC_SUBST(templatedir) +AC_SUBST(TEMPLATEDIR) +AC_SUBST(baseconfigdir) +AC_SUBST(BASECONFIGDIR) +AC_SUBST(configdir) +AC_SUBST(CONFIGDIR) +AC_SUBST(xmldir) +AC_SUBST(XMLDIR) # # Let people not build/install docs if they don't have docbook @@ -468,7 +443,11 @@ if test x$HASDOCBOOK = xno; then fi fi -AC_ARG_ENABLE(docs, [ --disable-docs Don't build and install documentation],,enable_docs=$default_docs) +AC_ARG_ENABLE(docs, + [AC_HELP_STRING([--disable-docs], + [Don't build and install documentation])], + , + enable_docs=$default_docs) AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes) diff --git a/fontconfig/doc/fontconfig-user.sgml b/fontconfig/doc/fontconfig-user.sgml index d5da6c03a..14fdc79aa 100644 --- a/fontconfig/doc/fontconfig-user.sgml +++ b/fontconfig/doc/fontconfig-user.sgml @@ -392,8 +392,8 @@ build the fontconfig database. <literal><test qual="any" name="property" target="default" compare="eq"></literal> This element contains a single value which is compared with the target ('pattern', 'font', 'scan' or 'default') property "property" (substitute any of the property names seen -above). 'compare' can be one of "eq", "not_eq", "less", "less_eq", "more", or -"more_eq". 'qual' may either be the default, "any", in which case the match +above). 'compare' can be one of "eq", "not_eq", "less", "less_eq", "more", "more_eq", "contains" or +"not_contains". 'qual' may either be the default, "any", in which case the match succeeds if any value associated with the property matches the test value, or "all", in which case all of the values associated with the property must match the test value. When used in a <match target="font"> element, @@ -510,7 +510,7 @@ elements. <or> and <and> are - <literal><eq></literal>, <literal><not_eq></literal>, <literal><less></literal>, <literal><less_eq></literal>, <literal><more></literal>, <literal><more_eq></literal> + <literal><eq></literal>, <literal><not_eq></literal>, <literal><less></literal>, <literal><less_eq></literal>, <literal><more></literal>, <literal><more_eq></literal>, <literal><contains></literal>, <literal><not_contains</literal> These elements compare two values, producing a boolean result. diff --git a/fontconfig/fonts.conf.in b/fontconfig/fonts.conf.in index a17c01eeb..533381b9d 100644 --- a/fontconfig/fonts.conf.in +++ b/fontconfig/fonts.conf.in @@ -66,7 +66,7 @@ - conf.d + @CONFIGDIR@ diff --git a/fontconfig/fonts.dtd b/fontconfig/fonts.dtd index 5f072ee44..e1e8b7382 100644 --- a/fontconfig/fonts.dtd +++ b/fontconfig/fonts.dtd @@ -113,7 +113,7 @@ - + diff --git a/fontconfig/src/Makefile.am b/fontconfig/src/Makefile.am index fb30cd596..591fc1613 100644 --- a/fontconfig/src/Makefile.am +++ b/fontconfig/src/Makefile.am @@ -75,7 +75,7 @@ INCLUDES = \ $(EXPAT_CFLAGS) \ $(WARN_CFLAGS) \ -DFC_CACHEDIR='"$(FC_CACHEDIR)"' \ - -DFONTCONFIG_PATH='"$(CONFDIR)"' + -DFONTCONFIG_PATH='"$(BASECONFIGDIR)"' EXTRA_DIST = makealias diff --git a/fontconfig/src/fcxml.c b/fontconfig/src/fcxml.c index 0fb82b64b..79dfc0b8d 100644 --- a/fontconfig/src/fcxml.c +++ b/fontconfig/src/fcxml.c @@ -1583,7 +1583,7 @@ FcParseAlias (FcConfigParse *parse) FcExpr *family = 0, *accept = 0, *prefer = 0, *def = 0, *new = 0; FcEdit *edit = 0, *next; FcVStack *vstack; - FcTest *test; + FcTest *test = NULL; FcValueBinding binding; if (!FcConfigLexBinding (parse, FcConfigGetAttribute (parse, "binding"), &binding)) @@ -1626,6 +1626,11 @@ FcParseAlias (FcConfigParse *parse) def = vstack->u.expr; vstack->tag = FcVStackNone; break; + case FcVStackTest: + vstack->u.test->next = test; + test = vstack->u.test; + vstack->tag = FcVStackNone; + break; default: FcConfigMessage (parse, FcSevereWarning, "bad alias"); break; @@ -1683,11 +1688,21 @@ FcParseAlias (FcConfigParse *parse) } if (edit) { - test = FcTestCreate (parse, FcMatchPattern, - FcQualAny, - (FcChar8 *) FC_FAMILY, - FcOpEqual, - family); + FcTest *t = FcTestCreate (parse, FcMatchPattern, + FcQualAny, + (FcChar8 *) FC_FAMILY, + FcOpEqual, + family); + if (test) + { + FcTest *p = test; + + while (p->next) + p = p->next; + p->next = t; + } + else + test = t; if (test) if (!FcConfigAddEdit (parse->config, test, edit, FcMatchPattern)) FcTestDestroy (test); -- cgit v1.2.3