summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Build/source/texk/README2
-rw-r--r--Build/source/texk/dvisvgm/TLpatches/TL-Changes19
-rw-r--r--Build/source/texk/dvisvgm/TLpatches/patch-04-configure15
-rw-r--r--Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles163
-rwxr-xr-xBuild/source/texk/dvisvgm/configure24
-rw-r--r--Build/source/texk/dvisvgm/configure.ac2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/Makefile.am5
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in7
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/NEWS8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/aminclude_static.am2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/configure.ac4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.116
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in39
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/boost/boost-vectorstream.hpp9
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/defs.am11
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.cpp8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.hpp4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.cpp14
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.hpp2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVG.cpp30
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Font.cpp2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Font.hpp2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.cpp2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.hpp2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.cpp2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.am14
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.in36
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.cpp2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandlerProxy.cpp85
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandlerProxy.hpp (renamed from Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorStreamTest.cpp)56
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.cpp30
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp2
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.cpp8
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.hpp1
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/VFActions.hpp5
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.cpp16
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/VectorStream.hpp84
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/optimizer/Makefile.in4
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp257
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/ttf/Makefile.am1
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/src/ttf/Makefile.in5
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.am6
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.in56
-rw-r--r--Build/source/texk/dvisvgm/tests/sample_v2-nf.svg2
-rw-r--r--Build/source/texk/dvisvgm/tests/sample_v2-wf.svg2
-rw-r--r--Build/source/texk/dvisvgm/tests/sample_v3-nf.svg2
-rw-r--r--Build/source/texk/dvisvgm/tests/sample_v3-wf.svg2
-rw-r--r--Build/source/texk/dvisvgm/tests/upjf.svg2
-rw-r--r--Build/source/texk/dvisvgm/tests/upjf1.svg2
-rw-r--r--Build/source/texk/dvisvgm/version.ac2
50 files changed, 467 insertions, 609 deletions
diff --git a/Build/source/texk/README b/Build/source/texk/README
index 3aa45dd1bca..db8865ce264 100644
--- a/Build/source/texk/README
+++ b/Build/source/texk/README
@@ -61,7 +61,7 @@ dvipos - maintained here, by us
dvipsk - maintained here, by us
-dvisvgm 3.2 - checked 16jan24
+dvisvgm 3.2.1 - checked 5mar24
https://dvisvgm.de/Downloads/
https://github.com/mgieseki/dvisvgm
https://ctan.org/pkg/dvisvgm
diff --git a/Build/source/texk/dvisvgm/TLpatches/TL-Changes b/Build/source/texk/dvisvgm/TLpatches/TL-Changes
index a2b81ac1e19..de53a4f9260 100644
--- a/Build/source/texk/dvisvgm/TLpatches/TL-Changes
+++ b/Build/source/texk/dvisvgm/TLpatches/TL-Changes
@@ -32,13 +32,14 @@ svn rm `!!`
svn status | sed -n 's/^\!//p' # rerun, should be empty now
cd ..
-Update our ./configure.ac from upstream dvisvgm-src/configure.ac.
-See patch-04-configure for reference, but they won't apply as-is.
-Probably easiest to check dvisvgm-prev/configure.ac vs. new:
-diff dvisvgm-{prev,$ver}/configure.ac
-and then install the changes in our configure.ac by hand.
+# Update our ./configure.ac from upstream dvisvgm-src/configure.ac.
+# See patch-04-configure for reference, but won't apply if there are any
+# non-trivial changes. Best to check dvisvgm-prev/configure.ac vs. new:
+cd ..
+diff -u2 dvisvgm-{prev,$ver}/configure.ac
+# and then install the changes in our configure.ac by hand as needed.
-# patch to integrate into TL build; will likely need adjusting also.
+# patch to integrate into TL build; even more likely to need adjusting.
patch -d dvisvgm-src -p1 <TLpatches/patch-08-makefiles
# remake autostuff (then make, etc., with fingers crossed).
@@ -55,6 +56,12 @@ make -C ../../Work/texk/dvisvgm check
\cp -f ../../Work/texk/dvisvgm/sample*.svg tests/
\cp -f ../../Work/texk/dvisvgm/upjf_full.svg tests/upjf.svg
\cp -f ../../Work/texk/dvisvgm/upjf1_full.svg tests/upjf1.svg
+#
+# check that only diffs are the version number:
+svn diff tests
+#
+# and rerun make check, should pass now:
+make -C ../../Work/texk/dvisvgm check
# before committing, update patches:
diff -u2 dvisvgm-$ver/configure.ac ./ >TLpatches/patch-04-configure
diff --git a/Build/source/texk/dvisvgm/TLpatches/patch-04-configure b/Build/source/texk/dvisvgm/TLpatches/patch-04-configure
index 5fcac0cc37e..d4f43dc4a1a 100644
--- a/Build/source/texk/dvisvgm/TLpatches/patch-04-configure
+++ b/Build/source/texk/dvisvgm/TLpatches/patch-04-configure
@@ -1,5 +1,5 @@
---- dvisvgm-3.2/configure.ac 2024-01-11 00:52:01.000000000 -0800
-+++ ./configure.ac 2024-01-16 10:32:10.211225839 -0800
+--- dvisvgm-3.2.1/configure.ac 2024-02-29 00:19:44.000000000 -0800
++++ ./configure.ac 2024-03-05 14:59:41.578987696 -0800
@@ -1,18 +1,31 @@
-# This file is part of dvisvgm
-# Copyright (C) 2005-2024 Martin Gieseking <martin.gieseking@uos.de>
@@ -21,10 +21,10 @@
+dnl Copyright 2005-2024 Martin Gieseking
+dnl
AC_PREREQ([2.69])
--AC_INIT([dvisvgm],[3.2],[martin.gieseking@uos.de])
+-AC_INIT([dvisvgm],[3.2.1],[martin.gieseking@uos.de])
+m4_include([version.ac])[] dnl define dvisvgm_version
+AC_INIT([dvisvgm (TeX Live)], dvisvgm_version, [tex-k@tug.org])
- DATE="January 2024"
+ DATE="February 2024"
-AC_CONFIG_SRCDIR(src)
+AC_CONFIG_SRCDIR([dvisvgm-src/src/dvisvgm.cpp])
AC_CONFIG_HEADERS([config.h])
@@ -122,7 +122,7 @@
+fi
AS_IF([test "x$have_libgs" = "xno"],
# Ghostscript not found, check for dlopen
-@@ -83,65 +70,88 @@
+@@ -83,68 +70,88 @@
[AC_DEFINE(DISABLE_GS, 1, [Set to 1 if PostScript support should be disabled])]
[AC_MSG_WARN(PostScript support disabled)])])
+fi
@@ -235,6 +235,9 @@
-AM_CONDITIONAL(HAVE_WOFF2, [test "x$have_woff2" = "xyes"])
-AM_CONDITIONAL(HAVE_XXHASH, [test "x$have_xxhash" = "xyes"])
-
+-# Dummy required for TL build sections in automake files
+-AM_CONDITIONAL(WIN32, false)
+-
-AS_IF([test "x$enable_woff" != "xyes"],
- [AC_DEFINE([DISABLE_WOFF], 1, [Define if WOFF support is disabled])],
- [AS_IF([test "x$with_ttfautohint" != "xno"],
@@ -265,7 +268,7 @@
-
AC_CHECK_HEADERS_ONCE([libintl.h stdlib.h string.h strings.h unistd.h])
-@@ -156,81 +166,82 @@
+@@ -159,81 +166,82 @@
AX_GCC_BUILTIN(__builtin_clz)
-# add options for selection of "optional" library locations
diff --git a/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles b/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles
index 728144cf82d..e3753fc5682 100644
--- a/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles
+++ b/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles
@@ -1,6 +1,6 @@
---- dvisvgm-3.2/./Makefile.am 2024-01-03 02:50:11.000000000 -0800
-+++ dvisvgm-src/./Makefile.am 2024-01-16 09:31:00.523974816 -0800
-@@ -4,9 +4,9 @@
+--- dvisvgm-3.2.1/./Makefile.am 2024-01-03 02:50:11.000000000 -0800
++++ dvisvgm-src/./Makefile.am 2024-03-05 15:17:38.259701130 -0800
+@@ -4,9 +4,12 @@
## Process this file with automake.
-include $(top_srcdir)/aminclude_static.am
@@ -9,141 +9,36 @@
AUTOMAKE_OPTIONS = foreign
EXTRA_DIST = COPYING
-SUBDIRS = libs src tests doc
-+SUBDIRS = libs src #not for TL: m4 tests doc
- ACLOCAL_AMFLAGS = -I m4
-
---- dvisvgm-3.2/./libs/Makefile.am 2024-01-03 02:50:11.000000000 -0800
-+++ dvisvgm-src/./libs/Makefile.am 2024-01-16 09:31:00.524974811 -0800
-@@ -4,5 +4,9 @@
- ## Process this file with automake.
-
--SUBDIRS = boost clipper md5 potrace variant xxHash
-+SUBDIRS = boost clipper md5 variant xxHash
-+
++SUBDIRS = libs src
+if !TEXLIVE_BUILD
-+SUBDIRS += potrace
++SUBDIRS += m4 tests doc
+endif
+ ACLOCAL_AMFLAGS = -I m4
- if ENABLE_WOFF
---- dvisvgm-3.2/./libs/defs.am 2024-01-03 02:50:11.000000000 -0800
-+++ dvisvgm-src/./libs/defs.am 2024-01-16 09:49:05.754922928 -0800
-@@ -8,6 +8,9 @@
-
+--- dvisvgm-3.2.1/./libs/defs.am 2024-01-22 05:46:24.000000000 -0800
++++ dvisvgm-src/./libs/defs.am 2024-03-05 15:20:00.075059010 -0800
+@@ -11,6 +11,6 @@
+ else
if !HAVE_POTRACE
-POTRACE_CFLAGS = -I$(dvisvgm_srcdir)/libs/potrace
-POTRACE_LIBS = ../libs/potrace/libpotrace.a
-+POTRACE_CFLAGS = $(POTRACE_INCLUDES)
-+endif
-+#
-+if TEXLIVE_BUILD
-+POTRACE_CFLAGS = $(POTRACE_INCLUDES)
- endif
-
---- dvisvgm-3.2/./src/ttf/Makefile.am 2023-01-10 05:20:29.000000000 -0800
-+++ dvisvgm-src/./src/ttf/Makefile.am 2024-01-16 09:31:00.524974811 -0800
-@@ -23,3 +23,4 @@
- -I$(dvisvgm_srcdir)/libs/boost \
- -I$(dvisvgm_srcdir)/libs/variant/include \
-+ $(ZLIB_INCLUDES) \
- $(BROTLI_CFLAGS) $(WOFF2_CFLAGS)
---- dvisvgm-3.2/./src/Makefile.am 2024-01-11 00:52:01.000000000 -0800
-+++ dvisvgm-src/./src/Makefile.am 2024-01-18 09:44:09.359399768 -0800
-@@ -18,8 +18,6 @@
- ../libs/clipper/libclipper.a \
- ../libs/md5/libmd5.a \
-- $(FREETYPE_LIBS) \
- $(POTRACE_LIBS) \
-- $(XXHASH_LIBS) \
-- $(ZLIB_LIBS)
-+ $(XXHASH_LIBS)
-
- if ENABLE_WOFF
-@@ -29,5 +27,16 @@
- $(WOFF2_LIBS) \
- $(BROTLI_LIBS)
--endif
-+endif ENABLE_WOFF
-+
-+if TEXLIVE_BUILD
-+dvisvgm_LDADD += \
-+ $(KPATHSEA_LIBS) \
-+ $(FREETYPE2_LIBS) \
-+ $(ZLIB_LIBS)
-+else
-+dvisvgm_LDADD += \
-+ $(FREETYPE_LIBS) \
-+ $(ZLIB_LIBS)
-+endif !TEXLIVE_BUILD
-
- dvisvgm_DEPENDENCIES = $(noinst_LTLIBRARIES)
-@@ -171,9 +180,4 @@
- EXTRA_DIST = options.xml options.dtd iapi.h ierrors.h MiKTeXCom.hpp MiKTeXCom.cpp
-
--if !TEXLIVE_BUILD
--WARNING_CFLAGS = -Wall
--WARNING_CXXFLAGS = -Wall -Wnon-virtual-dtor
--endif
++# POTRACE_CFLAGS = -I$(dvisvgm_srcdir)/libs/potrace
++# POTRACE_LIBS = ../libs/potrace/libpotrace.a
+ endif !HAVE_POTRACE
+ endif !TEXLIVE_BUILD
+--- dvisvgm-3.2.1/./src/Makefile.am 2024-02-29 00:19:44.000000000 -0800
++++ dvisvgm-src/./src/Makefile.am 2024-03-05 15:05:07.159805866 -0800
+@@ -258,13 +258,2 @@
+ @POTRACE_RULE@
+ endif TEXLIVE_BUILD
-
- AM_CFLAGS = $(WARNING_CFLAGS) \
- $(ZLIB_CFLAGS) \
-@@ -182,9 +186,5 @@
- AM_CXXFLAGS = $(WARNING_CXXFLAGS) \
- -I$(dvisvgm_srcdir)/libs/clipper \
-- -I$(dvisvgm_srcdir)/libs/variant/include \
-- $(KPSE_CFLAGS) \
-- $(FREETYPE_CFLAGS) \
-- $(ZLIB_CFLAGS) \
-- $(CODE_COVERAGE_CFLAGS)
-+ -I$(dvisvgm_srcdir)/libs/variant/include
-
- AM_CXXFLAGS += \
-@@ -192,4 +192,22 @@
- $(XXHASH_CFLAGS)
-
-+if TEXLIVE_BUILD
-+AM_CXXFLAGS += \
-+ $(KPATHSEA_INCLUDES) \
-+ $(POTRACE_INCLUDES) \
-+ $(FREETYPE2_INCLUDES) \
-+ $(ZLIB_INCLUDES) \
-+ $(CODE_COVERAGE_CFLAGS)
-+if WIN32
-+AM_CXXFLAGS += -DTEXLIVEWIN32
-+endif WIN32
-+else
-+AM_CXXFLAGS += \
-+ $(KPSE_CFLAGS) \
-+ $(FREETYPE_CFLAGS) \
-+ $(ZLIB_CFLAGS) \
-+ $(CODE_COVERAGE_CFLAGS)
-+endif !TEXLIVE_BUILD
-+
- AM_LDFLAGS = \
- $(KPSE_LIBS) \
-@@ -203,6 +221,9 @@
- $(WOFF2_CFLAGS)
-
-+# TL: do not try to rebuild these source files.
-+if !TEXLIVE_BUILD
- AM_LDFLAGS += $(TTFAUTOHINT_LIBS)
--endif
-+endif !TEXLIVE_BUILD
-+endif ENABLE_WOFF
-
- AM_CXXFLAGS += -I$(dvisvgm_srcdir)/libs/md5
-@@ -226,4 +247,15 @@
-
- if TEXLIVE_BUILD
-+# Rebuild libkpathsea:
-+@KPATHSEA_RULE@
-+# Rebuild libfreetype:
-+@FREETYPE2_RULE@
-+# Rebuild libz:
-+@ZLIB_RULE@
-+# Rebuild potrace:
-+@POTRACE_RULE@
-+endif TEXLIVE_BUILD
-+
-+if TEXLIVE_BUILD
- # Rebuild libkpathsea:
- @KPATHSEA_RULE@
+-if TEXLIVE_BUILD
+-# Rebuild libkpathsea:
+-@KPATHSEA_RULE@
+-# Rebuild libfreetype:
+-@FREETYPE2_RULE@
+-# Rebuild libz:
+-@ZLIB_RULE@
+-# Rebuild potrace:
+-@POTRACE_RULE@
+-endif TEXLIVE_BUILD
diff --git a/Build/source/texk/dvisvgm/configure b/Build/source/texk/dvisvgm/configure
index f19161e807d..85cc0aa82de 100755
--- a/Build/source/texk/dvisvgm/configure
+++ b/Build/source/texk/dvisvgm/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for dvisvgm (TeX Live) 3.2.
+# Generated by GNU Autoconf 2.72 for dvisvgm (TeX Live) 3.2.1.
#
# Report bugs to <tex-k@tug.org>.
#
@@ -614,8 +614,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='dvisvgm (TeX Live)'
PACKAGE_TARNAME='dvisvgm--tex-live-'
-PACKAGE_VERSION='3.2'
-PACKAGE_STRING='dvisvgm (TeX Live) 3.2'
+PACKAGE_VERSION='3.2.1'
+PACKAGE_STRING='dvisvgm (TeX Live) 3.2.1'
PACKAGE_BUGREPORT='tex-k@tug.org'
PACKAGE_URL=''
@@ -1431,7 +1431,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-'configure' configures dvisvgm (TeX Live) 3.2 to adapt to many kinds of systems.
+'configure' configures dvisvgm (TeX Live) 3.2.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1503,7 +1503,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of dvisvgm (TeX Live) 3.2:";;
+ short | recursive ) echo "Configuration of dvisvgm (TeX Live) 3.2.1:";;
esac
cat <<\_ACEOF
@@ -1643,7 +1643,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-dvisvgm (TeX Live) configure 3.2
+dvisvgm (TeX Live) configure 3.2.1
generated by GNU Autoconf 2.72
Copyright (C) 2023 Free Software Foundation, Inc.
@@ -2391,7 +2391,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by dvisvgm (TeX Live) $as_me 3.2, which was
+It was created by dvisvgm (TeX Live) $as_me 3.2.1, which was
generated by GNU Autoconf 2.72. Invocation command line was
$ $0$ac_configure_args_raw
@@ -3386,7 +3386,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-DATE="January 2024"
+DATE="February 2024"
ac_config_headers="$ac_config_headers config.h"
@@ -9185,7 +9185,7 @@ fi
# Define the identity of the package.
PACKAGE='dvisvgm--tex-live-'
- VERSION='3.2'
+ VERSION='3.2.1'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -21644,7 +21644,7 @@ Usage: $0 [OPTIONS]
Report bugs to <bug-libtool@gnu.org>."
lt_cl_version="\
-dvisvgm (TeX Live) config.lt 3.2
+dvisvgm (TeX Live) config.lt 3.2.1
configured by $0, generated by GNU Autoconf 2.72.
Copyright (C) 2011 Free Software Foundation, Inc.
@@ -25142,7 +25142,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by dvisvgm (TeX Live) $as_me 3.2, which was
+This file was extended by dvisvgm (TeX Live) $as_me 3.2.1, which was
generated by GNU Autoconf 2.72. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -25210,7 +25210,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-dvisvgm (TeX Live) config.status 3.2
+dvisvgm (TeX Live) config.status 3.2.1
configured by $0, generated by GNU Autoconf 2.72,
with options \\"\$ac_cs_config\\"
diff --git a/Build/source/texk/dvisvgm/configure.ac b/Build/source/texk/dvisvgm/configure.ac
index 01edeea429a..a0e86db4903 100644
--- a/Build/source/texk/dvisvgm/configure.ac
+++ b/Build/source/texk/dvisvgm/configure.ac
@@ -15,7 +15,7 @@ dnl
AC_PREREQ([2.69])
m4_include([version.ac])[] dnl define dvisvgm_version
AC_INIT([dvisvgm (TeX Live)], dvisvgm_version, [tex-k@tug.org])
-DATE="January 2024"
+DATE="February 2024"
AC_CONFIG_SRCDIR([dvisvgm-src/src/dvisvgm.cpp])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIRS([../../m4])dnl not just _DIR
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.am
index 5bb4d6cd866..bfaa08d18d0 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.am
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.am
@@ -7,7 +7,10 @@ include $(top_srcdir)/dvisvgm-src/aminclude_static.am
AUTOMAKE_OPTIONS = foreign
EXTRA_DIST = COPYING
-SUBDIRS = libs src #not for TL: m4 tests doc
+SUBDIRS = libs src
+if !TEXLIVE_BUILD
+SUBDIRS += m4 tests doc
+endif
ACLOCAL_AMFLAGS = -I m4
if USE_BUNDLED_LIBS
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in
index 96d17c9c748..f1250a5a3be 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in
@@ -15,7 +15,7 @@
@SET_MAKE@
# aminclude_static.am generated automatically by Autoconf
-# from AX_AM_MACROS_STATIC on Thu Jan 11 09:52:29 CET 2024
+# from AX_AM_MACROS_STATIC on Thu Feb 29 09:20:58 CET 2024
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
@@ -90,6 +90,7 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
+@TEXLIVE_BUILD_FALSE@am__append_1 = m4 tests doc
subdir = dvisvgm-src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/dvisvgm-src/m4/ax_gcc_builtin.m4 \
@@ -167,7 +168,7 @@ am__define_uniq_tagged_files = \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-DIST_SUBDIRS = $(SUBDIRS)
+DIST_SUBDIRS = libs src m4 tests doc
am__DIST_COMMON = $(srcdir)/Makefile.in \
$(top_srcdir)/dvisvgm-src/aminclude_static.am AUTHORS COPYING \
INSTALL NEWS README
@@ -373,7 +374,7 @@ top_srcdir = @top_srcdir@
@USE_BUNDLED_LIBS_TRUE@AM_DISTCHECK_CONFIGURE_FLAGS = --enable-bundled-libs
AUTOMAKE_OPTIONS = foreign
EXTRA_DIST = COPYING
-SUBDIRS = libs src #not for TL: m4 tests doc
+SUBDIRS = libs src $(am__append_1)
ACLOCAL_AMFLAGS = -I m4
@CODE_COVERAGE_ENABLED_TRUE@lcov_dir = $(top_builddir)/lcov
@CODE_COVERAGE_ENABLED_TRUE@lcov_file = $(lcov_dir)/lcov.info
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/NEWS b/Build/source/texk/dvisvgm/dvisvgm-src/NEWS
index 2f2a5bee5ae..aadc0dd9289 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/NEWS
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/NEWS
@@ -1,3 +1,11 @@
+dvisvgm-3.2.1 (2024-02-29)
+- delayed loading of Ghostscript library to speed up the conversion of
+ DVI files without PS specials (GH issue #262)
+- some improvements required for TeX Live builds
+ (patches by Karl Berry, GH issues #259, #260)
+- added more details to some DVI warning messages
+- added some further information to the manual page
+
dvisvgm-3.2 (2024-01-11)
- PDF handler: fixed a rounding issue that could lead to slightly bigger
text extents (GH issue #256)
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/aminclude_static.am b/Build/source/texk/dvisvgm/dvisvgm-src/aminclude_static.am
index 8bf9b4ccc8f..6a111ddfd75 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/aminclude_static.am
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/aminclude_static.am
@@ -1,6 +1,6 @@
# aminclude_static.am generated automatically by Autoconf
-# from AX_AM_MACROS_STATIC on Thu Jan 11 09:52:29 CET 2024
+# from AX_AM_MACROS_STATIC on Thu Feb 29 09:20:58 CET 2024
# Code coverage
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac b/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac
index 0374478903b..f3930d53e05 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac
@@ -4,8 +4,8 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
-AC_INIT([dvisvgm],[3.2],[martin.gieseking@uos.de])
-DATE="January 2024"
+AC_INIT([dvisvgm],[3.2.1],[martin.gieseking@uos.de])
+DATE="February 2024"
AC_CONFIG_SRCDIR(src)
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1 b/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1
index dbcd907ab54..3232620e95a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1
@@ -2,12 +2,12 @@
.\" Title: dvisvgm
.\" Author: Martin Gieseking <martin.gieseking@uos.de>
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\" Date: 2024-01-06
+.\" Date: 2024-02-04
.\" Manual: dvisvgm Manual
-.\" Source: dvisvgm 3.2
+.\" Source: dvisvgm 3.2.1
.\" Language: English
.\"
-.TH "DVISVGM" "1" "2024\-01\-06" "dvisvgm 3\&.2" "dvisvgm Manual"
+.TH "DVISVGM" "1" "2024\-02\-04" "dvisvgm 3\&.2\&.1" "dvisvgm Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -28,7 +28,7 @@
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
-dvisvgm \- converts DVI and EPS files to the XML\-based SVG format
+dvisvgm \- converts DVI, EPS, and PDF files to the XML\-based SVG format
.SH "SYNOPSIS"
.sp
\fBdvisvgm\fR [\fIoptions\fR] \fIfile\fR[\&.dvi]
@@ -1283,9 +1283,11 @@ attributes are omitted\&.
.RE
.SH "SUPPORTED SPECIALS"
.sp
-dvisvgm supports several \fIspecial commands\fR that enrich the DVI command set with additional instructions for features, like color, graphics, and hyperlinks\&. The term \fIspecial command\fR, or just \fIspecial\fR, originates from the TeX command \fB\especial{\&...}\fR which does almost nothing\&. TeX only forwards the whole command to the DVI file and delegates its execution to the DVI driver\&. The DVI driver can then decide to either process or ignore it, depending on the supported statements\&. The parameter of TeX\(cqs \fB\especial\fR command is given in curly braces and may consist of an arbitrary character sequence representing the actual instruction, for example \fBcolor Red\fR\&.
+dvisvgm supports several \fIspecial commands\fR that enrich the DVI command set with additional instructions for features, like color, graphics, and hyperlinks\&. The term \fIspecial command\fR, or just \fIspecial\fR, originates from the TeX command \fB\especial{\&...}\fR which does almost nothing\&. TeX only forwards the argument of this command to the DVI file using the corresponding \fIxxx\fR opcode, thus delegating its execution to the DVI driver\&. The driver can then decide to either process or ignore it, depending on the supported statements\&. The parameter of TeX\(cqs \fB\especial\fR command is given in curly braces and may consist of an arbitrary character sequence representing the actual instruction, for example \fBcolor Red\fR\&.
.sp
-dvisvgm delegates the evaluation of special commands to dedicated handlers\&. Each handler is responsible for all special statements of the same command set, i\&.e\&. commands usually \(en but not necessarily \(en beginning with a common prefix\&. For example, all PDF specials start with the prefix \fBpdf:\fR, while the TPIC special set consists of 13 different commands without common identifier\&. The PDF specials are processed by dvisvgm\(cqs \fIpdf\fR handler, the TPIC ones by the \fItpic\fR handler\&. To get a list of the actually provided special handlers, use option \fB\-\-list\-specials\fR (see above)\&. The following list gives an overview of the special sets currently supported\&. The names of the handlers can also be used to disable the processing of individual sets of specials\&. For further information on this, see option \fB\-\-no\-specials\fR\&.
+It might be worth mentioning that specials are only evaluated when processing DVI files\&. PS/EPS and PDF don\(cqt know anything about the concept of specials and therefore don\(cqt provide means to represent them\&.
+.sp
+In order to evaluate the special commands, dvisvgm implements several dedicated handlers\&. Each handler is responsible for all special statements belonging to the same command set, i\&.e\&. commands usually \(en but not necessarily \(en beginning with a common prefix\&. For example, all PDF specials start with the prefix \fBpdf:\fR, while the TPIC special set consists of 13 different commands without common identifier\&. The PDF specials are processed by dvisvgm\(cqs \fIpdf\fR handler, the TPIC ones by the \fItpic\fR handler\&. To get a list of the actually provided special handlers, use option \fB\-\-list\-specials\fR (see above)\&. The following list gives an overview of the special sets currently supported\&. The names of the handlers can also be used to disable the processing of individual sets of specials\&. For further information on this, see option \fB\-\-no\-specials\fR\&.
.PP
\fBbgcolor\fR
.RS 4
@@ -1302,7 +1304,7 @@ Statements of this command set provide instructions to change the text/paint col
.PP
\fBdvisvgm\fR
.RS 4
-dvisvgm offers its own small set of specials\&. The following list gives a brief overview\&.
+The following list gives a brief overview of dvisvgm\(cqs own set of currently supported specials\&.
.PP
\fBdvisvgm:raw\fR \fItext\fR
.RS 4
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in b/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in
index db5b48a35bb..f055998145f 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in
@@ -22,11 +22,11 @@ Martin Gieseking <@PACKAGE_BUGREPORT@>
:man source: dvisvgm
:man version: @VERSION@
:man manual: dvisvgm Manual
-:revdate: 2024-01-06 14:30 +0100
+:revdate: 2024-02-04 15:33 +0100
Name
----
-dvisvgm - converts DVI and EPS files to the XML-based SVG format
+dvisvgm - converts DVI, EPS, and PDF files to the XML-based SVG format
Synopsis
@@ -785,20 +785,23 @@ Supported Specials
------------------
dvisvgm supports several 'special commands' that enrich the DVI command set with additional instructions
for features, like color, graphics, and hyperlinks. The term 'special command', or just 'special', originates
-from the TeX command +\special{...}+ which does almost nothing. TeX only forwards the whole command to the
-DVI file and delegates its execution to the DVI driver. The DVI driver can then decide to either process or
-ignore it, depending on the supported statements. The parameter of TeX's +\special+ command is given in curly
-braces and may consist of an arbitrary character sequence representing the actual instruction, for example
-+color Red+.
-
-dvisvgm delegates the evaluation of special commands to dedicated handlers. Each handler is responsible for
-all special statements of the same command set, i.e. commands usually &#x2013; but not necessarily &#x2013;
-beginning with a common prefix. For example, all PDF specials start with the prefix +pdf:+, while the TPIC
-special set consists of 13 different commands without common identifier. The PDF specials are processed by
-dvisvgm's 'pdf' handler, the TPIC ones by the 'tpic' handler. To get a list of the actually provided special
-handlers, use option *--list-specials* (see above). The following list gives an overview of the special sets
-currently supported. The names of the handlers can also be used to disable the processing of individual sets
-of specials. For further information on this, see option *--no-specials*.
+from the TeX command +\special{...}+ which does almost nothing. TeX only forwards the argument of this command
+to the DVI file using the corresponding 'xxx' opcode, thus delegating its execution to the DVI driver. The
+driver can then decide to either process or ignore it, depending on the supported statements. The parameter
+of TeX's +\special+ command is given in curly braces and may consist of an arbitrary character sequence
+representing the actual instruction, for example +color Red+.
+
+It might be worth mentioning that specials are only evaluated when processing DVI files. PS/EPS and PDF
+don't know anything about the concept of specials and therefore don't provide means to represent them.
+
+In order to evaluate the special commands, dvisvgm implements several dedicated handlers. Each handler is
+responsible for all special statements belonging to the same command set, i.e. commands usually &#x2013;
+but not necessarily &#x2013; beginning with a common prefix. For example, all PDF specials start with the
+prefix +pdf:+, while the TPIC special set consists of 13 different commands without common identifier. The
+PDF specials are processed by dvisvgm's 'pdf' handler, the TPIC ones by the 'tpic' handler. To get a list of
+the actually provided special handlers, use option *--list-specials* (see above). The following list gives an
+overview of the special sets currently supported. The names of the handlers can also be used to disable the
+processing of individual sets of specials. For further information on this, see option *--no-specials*.
*bgcolor*::
Special statements for changing the background/page color. Currently, dvisvgm only supports the +background+
@@ -813,8 +816,8 @@ Statements of this command set provide instructions to change the text/paint col
exact syntax, see the documentation of dvips, for instance.
*dvisvgm*::
-dvisvgm offers its own small set of specials. The following list gives a brief overview.
- *dvisvgm:raw* 'text';;
+The following list gives a brief overview of dvisvgm's own set of currently supported specials.
+*dvisvgm:raw* 'text';;
Adds an arbitrary sequence of XML nodes to the page section of the SVG document. dvisvgm checks syntax and
proper nesting of the inserted elements but does not perform any validation, thus the user has to ensure
that the resulting SVG is still valid. Opening and closing tags may be distributed among different 'raw'
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/boost/boost-vectorstream.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/libs/boost/boost-vectorstream.hpp
index 91aa2f864d1..851d186656d 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/boost/boost-vectorstream.hpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/boost/boost-vectorstream.hpp
@@ -43,6 +43,11 @@
#include <string> // char traits
#include <cstddef> // ptrdiff_t
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wreorder"
+#endif
+
namespace boost { namespace interprocess {
//!A streambuf class that controls the transmission of elements to and from
@@ -604,4 +609,8 @@ class basic_vectorstream
}} //namespace boost { namespace interprocess {
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
#endif /* BOOST_INTERPROCESS_VECTORSTREAM_HPP */
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/defs.am b/Build/source/texk/dvisvgm/dvisvgm-src/libs/defs.am
index 2731452011b..50b15563e2a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/defs.am
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/libs/defs.am
@@ -6,13 +6,14 @@ BROTLI_CFLAGS += -I$(dvisvgm_srcdir)/libs/brotli/include
BROTLI_LIBS += ../libs/brotli/libbrotli.a
endif
-if !HAVE_POTRACE
-POTRACE_CFLAGS = $(POTRACE_INCLUDES)
-endif
-#
if TEXLIVE_BUILD
POTRACE_CFLAGS = $(POTRACE_INCLUDES)
-endif
+else
+if !HAVE_POTRACE
+# POTRACE_CFLAGS = -I$(dvisvgm_srcdir)/libs/potrace
+# POTRACE_LIBS = ../libs/potrace/libpotrace.a
+endif !HAVE_POTRACE
+endif !TEXLIVE_BUILD
if !HAVE_WOFF2
WOFF2_CFLAGS += -I$(dvisvgm_srcdir)/libs/woff2/include
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.cpp
index f87cbcbf3f3..a6ae7495c49 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.cpp
@@ -81,7 +81,7 @@ int BasicDVIReader::evalCommand (CommandHandler &handler, int &param) {
const int opcode = readByte();
if (!isStreamValid() || opcode < 0) // at end of file
- throw InvalidDVIFileException("invalid DVI file");
+ throw DVIPrematureEOFException();
int num_param_bytes = 0;
param = -1;
@@ -163,7 +163,7 @@ void BasicDVIReader::executePreamble () {
return;
}
}
- throw DVIException("invalid DVI file");
+ throw DVIException("invalid DVI file (missing preamble)");
}
@@ -171,7 +171,7 @@ void BasicDVIReader::executePreamble () {
void BasicDVIReader::goToPostamble () {
clearStream();
if (!isStreamValid())
- throw DVIException("invalid DVI file");
+ throw DVIException("invalid DVI file (missing postamble)");
seek(-1, ios::end); // stream pointer to last byte
int count=0;
@@ -198,7 +198,7 @@ void BasicDVIReader::executePostamble () {
void BasicDVIReader::executePostPost () {
clearStream(); // reset all status bits
if (!isStreamValid())
- throw DVIException("invalid DVI file");
+ throw DVIException("invalid DVI file (missing postpost)");
seek(-1, ios::end); // stream pointer to last byte
int count=0;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.hpp
index c3135cb5d51..f3976a6b928 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.hpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/BasicDVIReader.hpp
@@ -32,8 +32,8 @@ struct DVIException : public MessageException {
};
-struct InvalidDVIFileException : public DVIException {
- explicit InvalidDVIFileException (const std::string &msg) : DVIException(msg) {}
+struct DVIPrematureEOFException : public DVIException {
+ explicit DVIPrematureEOFException () : DVIException("premature end of DVI stream") {}
};
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.cpp
index b7c08bc1395..01501f29b0c 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.cpp
@@ -20,6 +20,7 @@
#include <algorithm>
#include <sstream>
+#include <vectorstream.hpp>
#include "Color.hpp"
#include "DVIActions.hpp"
#include "DVIReader.hpp"
@@ -27,7 +28,6 @@
#include "FontManager.hpp"
#include "HashFunction.hpp"
#include "utility.hpp"
-#include "VectorStream.hpp"
using namespace std;
@@ -49,7 +49,7 @@ void DVIReader::executeAll () {
try {
opcode = executeCommand();
}
- catch (const InvalidDVIFileException &e) {
+ catch (const DVIPrematureEOFException &e) {
// end of stream reached
opcode = -1;
}
@@ -64,7 +64,7 @@ void DVIReader::executeAll () {
bool DVIReader::executePage (unsigned n) {
clearStream(); // reset all status bits
if (!isStreamValid())
- throw DVIException("invalid DVI file");
+ throw DVIException("invalid DVI file (page "+to_string(n)+" not found");
if (n < 1 || n > numberOfPages())
return false;
@@ -204,7 +204,7 @@ void DVIReader::cmdPop (int) {
void DVIReader::putVFChar (Font *font, uint32_t c) {
if (auto vf = font_cast<VirtualFont*>(font)) { // is current font a virtual font?
FontManager &fm = FontManager::instance();
- const vector<uint8_t> *dvi = vf->getDVI(c); // try to get DVI snippet that represents character c
+ const auto *dvi = vf->getDVI(c); // try to get DVI snippet that represents character c
Font *firstFont = fm.vfFirstFont(vf);
if (!dvi) {
const FontMetrics *ffm = firstFont ? firstFont->getMetrics() : nullptr;
@@ -222,8 +222,8 @@ void DVIReader::putVFChar (Font *font, uint32_t c) {
_dvi2bp = vf->scaledSize()/(1 << 20);
DVIState savedState = _dviState; // save current cursor position
_dviState.x = _dviState.y = _dviState.w = _dviState.z = 0;
- VectorInputStream<uint8_t> vis(*dvi);
- istream &is = replaceStream(vis);
+ ivectorstream<vector<char>> vis(*dvi);
+ auto &is = replaceStream(vis);
try {
executeAll(); // execute DVI fragment
}
@@ -534,7 +534,7 @@ void DVIReader::defineVFFont (uint32_t fontnum, const string &path, const string
/** This template method is called by the VFReader after reading a character definition from a VF file.
* @param[in] c character number
* @param[in] dvi DVI fragment describing the character */
-void DVIReader::defineVFChar (uint32_t c, vector<uint8_t> &&dvi) {
+void DVIReader::defineVFChar (uint32_t c, vector<char> &&dvi) {
FontManager::instance().assignVFChar(c, std::move(dvi));
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.hpp
index ffab16c5a81..b221960cb6c 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.hpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIReader.hpp
@@ -77,7 +77,7 @@ class DVIReader : public BasicDVIReader, public VFActions {
// VFAction methods
void defineVFFont (uint32_t fontnum, const std::string &path, const std::string &name, uint32_t checksum, double dsize, double ssize) override;
- void defineVFChar (uint32_t c, std::vector<uint8_t> &&dvi) override;
+ void defineVFChar (uint32_t c, std::vector<char> &&dvi) override;
// The following template methods provide higher-level access to the DVI commands.
// In contrast to their cmdXXX pendants, they don't require any handling of the input stream.
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVG.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVG.cpp
index b4340a89fec..a1da593d08b 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVG.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/DVIToSVG.cpp
@@ -54,13 +54,8 @@
#include "HtmlSpecialHandler.hpp"
#include "PapersizeSpecialHandler.hpp"
#include "PdfSpecialHandler.hpp"
+#include "PsSpecialHandlerProxy.hpp"
#include "TpicSpecialHandler.hpp"
-#ifndef HAVE_LIBGS
- #include "NoPsSpecialHandler.hpp"
-#endif
-#ifndef DISABLE_GS
- #include "PsSpecialHandler.hpp"
-#endif
///////////////////////////////////
@@ -423,28 +418,9 @@ void DVIToSVG::setProcessSpecials (const char *ignorelist, bool pswarning) {
SpecialManager::registerHandler<EmSpecialHandler>(ignoredHandlerName); // handles emTeX specials
SpecialManager::registerHandler<HtmlSpecialHandler>(ignoredHandlerName); // handles hyperref specials
SpecialManager::registerHandler<PapersizeSpecialHandler>(ignoredHandlerName); // handles papersize special
- SpecialManager::registerHandler<PdfSpecialHandler>(ignoredHandlerName); // handles pdf specials
+ SpecialManager::registerHandler<PdfSpecialHandler>(ignoredHandlerName);
SpecialManager::registerHandler<TpicSpecialHandler>(ignoredHandlerName); // handles tpic specials
- if (find(ignoredHandlerName.begin(), ignoredHandlerName.end(), PsSpecialHandler::handlerName()) == ignoredHandlerName.end()) {
-#ifndef DISABLE_GS
- if (Ghostscript().available())
- SpecialManager::registerHandler<PsSpecialHandler>(ignoredHandlerName); // handles PostScript specials
- else
-#endif
- {
-#ifndef HAVE_LIBGS
- // dummy PS special handler that only prints warning messages
- SpecialManager::registerHandler<NoPsSpecialHandler>(ignoredHandlerName);
- if (pswarning) {
-#ifdef DISABLE_GS
- Message::wstream() << "processing of PostScript specials has been disabled permanently\n";
-#else
- Message::wstream() << "processing of PostScript specials is disabled (Ghostscript not found)\n";
-#endif
- }
-#endif
- }
- }
+ SpecialManager::registerHandler(util::make_unique<PsSpecialHandlerProxy>(pswarning), ignoredHandlerName);
}
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.cpp
index 42737d364ae..56b4c635b06 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.cpp
@@ -725,7 +725,7 @@ void VirtualFontImpl::assignChar (uint32_t c, DVIVector &&dvi) {
/** Returns the DVI sippet that describes a given character of the virtual font.
* @param[in] c character code
* @return pointer to vector of DVI commands, or 0 if character doesn't exist */
-const vector<uint8_t>* VirtualFontImpl::getDVI (int c) const {
+const VirtualFont::DVIVector* VirtualFontImpl::getDVI (int c) const {
auto it = _charDefs.find(c);
return (it == _charDefs.end() ? nullptr : &it->second);
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.hpp
index 84c19e512e3..c8a2e340a9a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.hpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Font.hpp
@@ -162,7 +162,7 @@ class PhysicalFont : public virtual Font {
class VirtualFont : public virtual Font {
friend class FontManager;
public:
- using DVIVector = std::vector<uint8_t>;
+ using DVIVector = std::vector<char>;
public:
static std::unique_ptr<Font> create (const std::string &name, uint32_t checksum, double dsize, double ssize);
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.cpp
index 1020617178b..2a5778326ab 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.cpp
@@ -377,7 +377,7 @@ void FontManager::leaveVF () {
/** Assigns a sequence of DVI commands to a char code.
* @param[in] c character code
* @param[in] dvi DVI commands that describe character c */
-void FontManager::assignVFChar (int c, vector<uint8_t> &&dvi) {
+void FontManager::assignVFChar (int c, vector<char> &&dvi) {
if (!_vfStack.empty())
_vfStack.top()->assignChar(c, std::move(dvi));
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.hpp
index 3b051a38356..a2deb89d95d 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.hpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/FontManager.hpp
@@ -72,7 +72,7 @@ class FontManager {
Font* vfFirstFont (const VirtualFont *vf) const;
void enterVF (VirtualFont *vf);
void leaveVF ();
- void assignVFChar (int c, std::vector<uint8_t> &&dvi);
+ void assignVFChar (int c, std::vector<char> &&dvi);
void addUsedChar (const Font &font, int c);
void resetUsedChars ();
CharMap& getUsedChars () {return _usedChars;}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.cpp
index 6b2c6aa388d..6584d068498 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/GFReader.cpp
@@ -158,7 +158,7 @@ bool GFReader::executePostamble () {
throw GFException("invalid identification byte in postpost");
_in.seekg(-5, ios::cur); // now on postpost
if (_in.get() != 249)
- throw GFException("invalid GF file");
+ throw GFException("invalid GF file (missing postpost)");
uint32_t q = readUnsigned(4); // pointer to begin of postamble
_in.seekg(q); // now on begin of postamble
while (executeCommand() != 249); // execute all commands until postpost is reached
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.am
index 393452534f2..f1888535c7a 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.am
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.am
@@ -133,6 +133,7 @@ libdvisvgm_la_SOURCES = \
PSPattern.hpp PSPattern.cpp \
PSPreviewHandler.hpp PSPreviewHandler.cpp \
PsSpecialHandler.hpp PsSpecialHandler.cpp \
+ PsSpecialHandlerProxy.hpp PsSpecialHandlerProxy.cpp \
RangeMap.hpp RangeMap.cpp \
ShadingPatch.hpp ShadingPatch.cpp \
SignalHandler.hpp SignalHandler.cpp \
@@ -161,7 +162,6 @@ libdvisvgm_la_SOURCES = \
Unicode.hpp Unicode.cpp \
utility.hpp utility.cpp \
VectorIterator.hpp \
- VectorStream.hpp \
VFActions.hpp \
VFReader.hpp VFReader.cpp \
windows.hpp \
@@ -185,6 +185,7 @@ AM_CFLAGS = $(WARNING_CFLAGS) \
$(CODE_COVERAGE_CFLAGS)
AM_CXXFLAGS = $(WARNING_CXXFLAGS) \
+ -I$(dvisvgm_srcdir)/libs/boost \
-I$(dvisvgm_srcdir)/libs/clipper \
-I$(dvisvgm_srcdir)/libs/variant/include
@@ -256,14 +257,3 @@ if TEXLIVE_BUILD
# Rebuild potrace:
@POTRACE_RULE@
endif TEXLIVE_BUILD
-
-if TEXLIVE_BUILD
-# Rebuild libkpathsea:
-@KPATHSEA_RULE@
-# Rebuild libfreetype:
-@FREETYPE2_RULE@
-# Rebuild libz:
-@ZLIB_RULE@
-# Rebuild potrace:
-@POTRACE_RULE@
-endif TEXLIVE_BUILD
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.in
index 99d4c39a8a6..7e9e615e634 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.in
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.in
@@ -92,6 +92,8 @@ host_triplet = @host@
bin_PROGRAMS = dvisvgm$(EXEEXT)
@HAVE_BROTLI_FALSE@am__append_1 = -I$(dvisvgm_srcdir)/libs/brotli/include
@HAVE_BROTLI_FALSE@am__append_2 = ../libs/brotli/libbrotli.a
+# POTRACE_CFLAGS = -I$(dvisvgm_srcdir)/libs/potrace
+# POTRACE_LIBS = ../libs/potrace/libpotrace.a
@HAVE_WOFF2_FALSE@am__append_3 = -I$(dvisvgm_srcdir)/libs/woff2/include
@HAVE_WOFF2_FALSE@am__append_4 = ../libs/woff2/libwoff2.a
@ENABLE_WOFF_TRUE@am__append_5 = ttf
@@ -180,12 +182,12 @@ am_libdvisvgm_la_OBJECTS = BasicDVIReader.lo Bezier.lo \
PDFParser.lo PdfSpecialHandler.lo PDFToSVG.lo \
PreScanDVIReader.lo Process.lo psdefs.lo PSInterpreter.lo \
PSPattern.lo PSPreviewHandler.lo PsSpecialHandler.lo \
- RangeMap.lo ShadingPatch.lo SignalHandler.lo SourceInput.lo \
- SpecialActions.lo SpecialManager.lo StreamReader.lo \
- StreamWriter.lo Subfont.lo SVGCharHandler.lo \
- SVGCharHandlerFactory.lo SVGCharPathHandler.lo \
- SVGCharTspanTextHandler.lo SVGElement.lo SVGOutput.lo \
- SVGSingleCharTextHandler.lo SVGTree.lo System.lo \
+ PsSpecialHandlerProxy.lo RangeMap.lo ShadingPatch.lo \
+ SignalHandler.lo SourceInput.lo SpecialActions.lo \
+ SpecialManager.lo StreamReader.lo StreamWriter.lo Subfont.lo \
+ SVGCharHandler.lo SVGCharHandlerFactory.lo \
+ SVGCharPathHandler.lo SVGCharTspanTextHandler.lo SVGElement.lo \
+ SVGOutput.lo SVGSingleCharTextHandler.lo SVGTree.lo System.lo \
TensorProductPatch.lo Terminal.lo TFM.lo ToUnicodeMap.lo \
TpicSpecialHandler.lo TriangularPatch.lo Unicode.lo utility.lo \
VFReader.lo XMLDocument.lo XMLNode.lo XMLParser.lo \
@@ -258,7 +260,8 @@ am__depfiles_remade = ./$(DEPDIR)/BasicDVIReader.Plo \
./$(DEPDIR)/PapersizeSpecialHandler.Plo \
./$(DEPDIR)/PathClipper.Plo ./$(DEPDIR)/PdfSpecialHandler.Plo \
./$(DEPDIR)/PreScanDVIReader.Plo ./$(DEPDIR)/Process.Plo \
- ./$(DEPDIR)/PsSpecialHandler.Plo ./$(DEPDIR)/RangeMap.Plo \
+ ./$(DEPDIR)/PsSpecialHandler.Plo \
+ ./$(DEPDIR)/PsSpecialHandlerProxy.Plo ./$(DEPDIR)/RangeMap.Plo \
./$(DEPDIR)/SVGCharHandler.Plo \
./$(DEPDIR)/SVGCharHandlerFactory.Plo \
./$(DEPDIR)/SVGCharPathHandler.Plo \
@@ -545,8 +548,6 @@ dvisvgm_SOURCES = \
CommandLine.hpp \
dvisvgm.cpp
-@HAVE_POTRACE_FALSE@POTRACE_CFLAGS = $(POTRACE_INCLUDES)
-#
@TEXLIVE_BUILD_TRUE@POTRACE_CFLAGS = $(POTRACE_INCLUDES)
@HAVE_XXHASH_FALSE@XXHASH_CFLAGS = -I$(dvisvgm_srcdir)/libs/xxHash
@HAVE_XXHASH_FALSE@XXHASH_LIBS = ../libs/xxHash/libxxhash.a
@@ -640,6 +641,7 @@ libdvisvgm_la_SOURCES = \
PSPattern.hpp PSPattern.cpp \
PSPreviewHandler.hpp PSPreviewHandler.cpp \
PsSpecialHandler.hpp PsSpecialHandler.cpp \
+ PsSpecialHandlerProxy.hpp PsSpecialHandlerProxy.cpp \
RangeMap.hpp RangeMap.cpp \
ShadingPatch.hpp ShadingPatch.cpp \
SignalHandler.hpp SignalHandler.cpp \
@@ -668,7 +670,6 @@ libdvisvgm_la_SOURCES = \
Unicode.hpp Unicode.cpp \
utility.hpp utility.cpp \
VectorIterator.hpp \
- VectorStream.hpp \
VFActions.hpp \
VFReader.hpp VFReader.cpp \
windows.hpp \
@@ -686,7 +687,8 @@ AM_CFLAGS = $(WARNING_CFLAGS) \
$(ZLIB_CFLAGS) \
$(CODE_COVERAGE_CFLAGS)
-AM_CXXFLAGS = $(WARNING_CXXFLAGS) -I$(dvisvgm_srcdir)/libs/clipper \
+AM_CXXFLAGS = $(WARNING_CXXFLAGS) -I$(dvisvgm_srcdir)/libs/boost \
+ -I$(dvisvgm_srcdir)/libs/clipper \
-I$(dvisvgm_srcdir)/libs/variant/include $(POTRACE_CFLAGS) \
$(XXHASH_CFLAGS) $(am__append_11) $(am__append_12) \
$(am__append_13) $(am__append_14) -I$(dvisvgm_srcdir)/libs/md5
@@ -868,6 +870,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PreScanDVIReader.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Process.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PsSpecialHandler.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PsSpecialHandlerProxy.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RangeMap.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SVGCharHandler.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SVGCharHandlerFactory.Plo@am__quote@ # am--include-marker
@@ -1206,6 +1209,7 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/PreScanDVIReader.Plo
-rm -f ./$(DEPDIR)/Process.Plo
-rm -f ./$(DEPDIR)/PsSpecialHandler.Plo
+ -rm -f ./$(DEPDIR)/PsSpecialHandlerProxy.Plo
-rm -f ./$(DEPDIR)/RangeMap.Plo
-rm -f ./$(DEPDIR)/SVGCharHandler.Plo
-rm -f ./$(DEPDIR)/SVGCharHandlerFactory.Plo
@@ -1351,6 +1355,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/PreScanDVIReader.Plo
-rm -f ./$(DEPDIR)/Process.Plo
-rm -f ./$(DEPDIR)/PsSpecialHandler.Plo
+ -rm -f ./$(DEPDIR)/PsSpecialHandlerProxy.Plo
-rm -f ./$(DEPDIR)/RangeMap.Plo
-rm -f ./$(DEPDIR)/SVGCharHandler.Plo
-rm -f ./$(DEPDIR)/SVGCharHandlerFactory.Plo
@@ -1445,15 +1450,6 @@ uninstall-am: uninstall-binPROGRAMS
# Rebuild potrace:
@TEXLIVE_BUILD_TRUE@@POTRACE_RULE@
-# Rebuild libkpathsea:
-@TEXLIVE_BUILD_TRUE@@KPATHSEA_RULE@
-# Rebuild libfreetype:
-@TEXLIVE_BUILD_TRUE@@FREETYPE2_RULE@
-# Rebuild libz:
-@TEXLIVE_BUILD_TRUE@@ZLIB_RULE@
-# Rebuild potrace:
-@TEXLIVE_BUILD_TRUE@@POTRACE_RULE@
-
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.cpp
index 65f098eb35a..3d8e6a35006 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.cpp
@@ -40,6 +40,6 @@ void NoPsSpecialHandler::dviEndPage (unsigned pageno, SpecialActions &actions) {
vector<const char*> NoPsSpecialHandler::prefixes () const {
- vector<const char*> pfx {"header=", "psfile=", "PSfile=", "ps:", "ps::", "!", "\""};
+ vector<const char*> pfx {"header=", "psfile=", "PSfile=", "ps:", "ps::", "!", "\"", "pst:", "PST:"};
return pfx;
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandlerProxy.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandlerProxy.cpp
new file mode 100644
index 00000000000..d13cc124ae6
--- /dev/null
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandlerProxy.cpp
@@ -0,0 +1,85 @@
+/*************************************************************************
+** PsSpecialHandlerProxy.cpp **
+** **
+** This file is part of dvisvgm -- a fast DVI to SVG converter **
+** Copyright (C) 2005-2024 Martin Gieseking <martin.gieseking@uos.de> **
+** **
+** This program is free software; you can redistribute it and/or **
+** modify it under the terms of the GNU General Public License as **
+** published by the Free Software Foundation; either version 3 of **
+** the License, or (at your option) any later version. **
+** **
+** This program is distributed in the hope that it will be useful, but **
+** WITHOUT ANY WARRANTY; without even the implied warranty of **
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
+** GNU General Public License for more details. **
+** **
+** You should have received a copy of the GNU General Public License **
+** along with this program; if not, see <http://www.gnu.org/licenses/>. **
+*************************************************************************/
+
+#include <config.h>
+#include <memory>
+#include "Message.hpp"
+#ifndef DISABLE_GS
+ #include "PsSpecialHandler.hpp"
+#endif
+#ifndef HAVE_LIBGS
+ #include "NoPsSpecialHandler.hpp"
+#endif
+#include "PsSpecialHandlerProxy.hpp"
+#include "SpecialManager.hpp"
+#include "utility.hpp"
+
+using namespace std;
+
+inline unique_ptr<SpecialHandler> createPsSpecialHandler () {
+#ifndef DISABLE_GS
+#ifndef HAVE_LIBGS
+ if (Ghostscript().available())
+#endif
+ return util::make_unique<PsSpecialHandler>();
+#endif
+#ifndef HAVE_LIBGS
+ return util::make_unique<NoPsSpecialHandler>();
+#endif
+}
+
+
+/** Replaces this handler proxy with the actual PS special handler. */
+SpecialHandler* PsSpecialHandlerProxy::replaceHandler () {
+ auto psSpecialHandler = createPsSpecialHandler();
+ if (_pswarning) {
+#ifdef DISABLE_GS
+ Message::wstream() << "processing of PostScript specials was permanently disabled\n";
+#else
+ if (!psSpecialHandler->name())
+ Message::wstream() << "processing of PostScript specials is disabled (Ghostscript not found)\n";
+#endif
+ }
+ SpecialHandler *handlerPtr = psSpecialHandler.get();
+ SpecialManager::instance().unregisterHandler(this);
+ SpecialManager::instance().registerHandler(std::move(psSpecialHandler));
+ return handlerPtr;
+}
+
+
+void PsSpecialHandlerProxy::preprocess (const string &prefix, istream &is, SpecialActions &actions) {
+ replaceHandler()->preprocess(prefix, is, actions);
+}
+
+
+bool PsSpecialHandlerProxy::process (const string &prefix, istream &is, SpecialActions &actions) {
+ return replaceHandler()->process(prefix, is, actions);
+}
+
+
+const char* PsSpecialHandlerProxy::info() const {
+ return createPsSpecialHandler()->info();
+}
+
+
+vector<const char *> PsSpecialHandlerProxy::prefixes() const {
+ vector<const char*> pfx {"header=", "pdffile=", "psfile=", "PSfile=", "ps:", "ps::", "!", "\"", "pst:", "PST:"};
+ return pfx;
+}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorStreamTest.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandlerProxy.hpp
index 794336ec2d4..f2a1b3ab13b 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/VectorStreamTest.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandlerProxy.hpp
@@ -1,5 +1,5 @@
/*************************************************************************
-** VectorStreamTest.cpp **
+** PsSpecialHandlerProxy.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
** Copyright (C) 2005-2024 Martin Gieseking <martin.gieseking@uos.de> **
@@ -18,46 +18,22 @@
** along with this program; if not, see <http://www.gnu.org/licenses/>. **
*************************************************************************/
-#include <gtest/gtest.h>
-#include <vector>
-#include "VectorStream.hpp"
+#pragma once
-using std::string;
-using std::vector;
+#include "SpecialHandler.hpp"
-TEST(VectorStreamTest, read1) {
- const char *str = "abcdefghijklm\0nopqrstuvwxyz";
- vector<char> vec(str, str+27);
- VectorInputStream<char> vs(vec);
- for (unsigned count = 0; vs; count++) {
- int c = vs.get();
- if (count < vec.size()) {
- EXPECT_EQ(c, str[count]) << "count=" << count;
- }
- else {
- EXPECT_EQ(c, -1);
- }
- }
-}
+class PsSpecialHandlerProxy : public SpecialHandler {
+ public:
+ explicit PsSpecialHandlerProxy (bool pswarning) : _pswarning(pswarning) {}
+ void preprocess (const std::string &prefix, std::istream &is, SpecialActions &actions) override;
+ bool process (const std::string &prefix, std::istream &is, SpecialActions &actions) override;
+ const char* name () const override {return "ps";}
+ const char* info () const override;
+ std::vector<const char*> prefixes () const override;
+ protected:
+ SpecialHandler* replaceHandler ();
-TEST(VectorStreamTest, read2) {
- vector<int> vec;
- VectorInputStream<int> vs(vec);
- EXPECT_EQ(vs.get(), -1);
-}
-
-
-TEST(VectorStreamTest, read3) {
- vector<int> vec;
- vec.push_back(-2);
- vec.push_back(-1);
- vec.push_back(0);
- vec.push_back(1);
- VectorInputStream<int> vs(vec);
- EXPECT_EQ(vs.get(), 254);
- EXPECT_EQ(vs.get(), 255);
- EXPECT_EQ(vs.get(), 0);
- EXPECT_EQ(vs.get(), 1);
- EXPECT_EQ(vs.get(), -1);
-}
+ private:
+ bool _pswarning;
+};
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.cpp
index 21f70c4af2a..175f3c54fb0 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.cpp
@@ -56,6 +56,13 @@ void SpecialManager::registerHandler (unique_ptr<SpecialHandler> handler) {
}
+void SpecialManager::registerHandler (unique_ptr<SpecialHandler> handler, const vector<string> &ignoredHandlerNames) {
+ const char *name = handler->name();
+ if (!name || find(ignoredHandlerNames.begin(), ignoredHandlerNames.end(), string(name)) == ignoredHandlerNames.end())
+ instance().registerHandler(std::move(handler));
+}
+
+
/** Registers several special handlers at once.
* If ignorelist == 0, all given handlers are registered. To exclude selected sets of
* specials, the corresponding names can be given separated by non alpha-numeric characters,
@@ -77,6 +84,21 @@ void SpecialManager::registerHandlers (vector<unique_ptr<SpecialHandler>> &handl
}
+/** Removes a handler and the corresponding prefixes. */
+void SpecialManager::unregisterHandler (SpecialHandler *handler) {
+ if (handler) {
+ auto it = find_if(_handlerPool.begin(), _handlerPool.end(), [=](unique_ptr<SpecialHandler> &h) {
+ return h.get() == handler;
+ });
+ if (it != _handlerPool.end()) {
+ for (const char *prefix : handler->prefixes())
+ _handlersByPrefix.erase(prefix);
+ _handlerPool.erase(it);
+ }
+ }
+}
+
+
/** Looks for a handler responsible for a given special prefix.
* @param[in] prefix the special prefix, e.g. "color" or "em"
* @return in case of success: pointer to handler, 0 otherwise */
@@ -170,10 +192,10 @@ void SpecialManager::writeHandlerInfo (ostream &os) const {
if (handler->name())
sortmap[handler->name()] = handler.get();
for (const auto &strhandlerpair : sortmap) {
- os << setw(10) << left << strhandlerpair.second->name() << ' ';
- if (strhandlerpair.second->info())
- os << strhandlerpair.second->info();
- os << endl;
+ if (const char *info = strhandlerpair.second->info()) {
+ os << setw(10) << left << strhandlerpair.second->name() << ' ';
+ os << info << '\n';
+ }
}
os.flags(osflags); // restore format flags
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp
index b4eb95c991c..00cc3ebc6b3 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp
@@ -48,8 +48,10 @@ class SpecialManager {
instance().registerHandler(util::make_unique<Handler>());
}
+ static void registerHandler (std::unique_ptr<SpecialHandler> handler, const std::vector<std::string> &ignoredHandlerNames);
void registerHandler (std::unique_ptr<SpecialHandler> handler);
void registerHandlers (std::vector<std::unique_ptr<SpecialHandler>> &handlers, const char *ignorelist);
+ void unregisterHandler (SpecialHandler *handler);
void unregisterHandlers ();
void preprocess (const std::string &special, SpecialActions &actions) const;
bool process (const std::string &special, double dvi2bp, SpecialActions &actions) const;
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.cpp
index 93d4045248a..5fcdd8d8081 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.cpp
@@ -146,6 +146,14 @@ vector<uint8_t> StreamReader::readBytes (int n, HashFunction &hashfunc) {
}
+vector<char> StreamReader::readBytesAsChars (int n) {
+ vector<char> chars(n);
+ if (n > 0)
+ _is->read(chars.data(), n);
+ return chars;
+}
+
+
int StreamReader::readByte (HashFunction &hashfunc) {
int ret = readByte();
if (ret >= 0) {
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.hpp
index c5d06d4a3bb..70f05a5c774 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.hpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/StreamReader.hpp
@@ -46,6 +46,7 @@ class StreamReader {
std::string readString (int length, HashFunction &hashfunc);
std::vector<uint8_t> readBytes (int n);
std::vector<uint8_t> readBytes (int n, HashFunction &hash);
+ std::vector<char> readBytesAsChars (int n);
int readByte () {return _is->get();}
int readByte (HashFunction &hashfunc);
void seek (std::streampos pos, std::ios::seekdir dir) {_is->seekg(pos, dir);}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/VFActions.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/VFActions.hpp
index 2c8d6e47cc9..dc623293592 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/VFActions.hpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/VFActions.hpp
@@ -25,13 +25,12 @@
#include <vector>
-struct VFActions
-{
+struct VFActions {
virtual ~VFActions () =default;
virtual void vfPreamble (const std::string &comment, uint32_t checksum, double dsize) {}
virtual void vfPostamble () {}
virtual void defineVFFont (uint32_t fontnum, const std::string &path, const std::string &name, uint32_t checksum, double dsize, double ssize) {}
- virtual void defineVFChar (uint32_t c, std::vector<uint8_t> &&dvi) {}
+ virtual void defineVFChar (uint32_t c, std::vector<char> &&dvi) {}
};
#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.cpp
index bf126039e4f..5ca91ced3db 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/VFReader.cpp
@@ -126,13 +126,13 @@ void VFReader::cmdPost () {
void VFReader::cmdLongChar () {
- uint32_t pl = readUnsigned(4); // packet length (length of DVI subroutine)
+ uint32_t pl = readUnsigned(4); // packet length (length of DVI subroutine)
if (!_actions)
- seek(8+pl, ios::cur); // skip remaining char definition bytes
+ seek(8+pl, ios::cur); // skip remaining char definition bytes
else {
- uint32_t cc = readUnsigned(4); // character code
- readUnsigned(4); // equals character width from corresponding TFM file
- auto dvi = readBytes(pl); // DVI subroutine
+ uint32_t cc = readUnsigned(4); // character code
+ readUnsigned(4); // equals character width from corresponding TFM file
+ auto dvi = readBytesAsChars(pl); // DVI subroutine
_actions->defineVFChar(cc, std::move(dvi)); // call template method for user actions
}
}
@@ -144,9 +144,9 @@ void VFReader::cmdShortChar (int pl) {
if (!_actions)
seek(4+pl, ios::cur); // skip char definition bytes
else {
- uint32_t cc = readUnsigned(1); // character code
- readUnsigned(3); // character width from corresponding TFM file
- auto dvi = readBytes(pl); // DVI subroutine
+ uint32_t cc = readUnsigned(1); // character code
+ readUnsigned(3); // character width from corresponding TFM file
+ auto dvi = readBytesAsChars(pl); // DVI subroutine
_actions->defineVFChar(cc, std::move(dvi)); // call template method for user actions
}
}
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/VectorStream.hpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/VectorStream.hpp
deleted file mode 100644
index 10189944002..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/VectorStream.hpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/*************************************************************************
-** VectorStream.hpp **
-** **
-** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2024 Martin Gieseking <martin.gieseking@uos.de> **
-** **
-** This program is free software; you can redistribute it and/or **
-** modify it under the terms of the GNU General Public License as **
-** published by the Free Software Foundation; either version 3 of **
-** the License, or (at your option) any later version. **
-** **
-** This program is distributed in the hope that it will be useful, but **
-** WITHOUT ANY WARRANTY; without even the implied warranty of **
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
-** GNU General Public License for more details. **
-** **
-** You should have received a copy of the GNU General Public License **
-** along with this program; if not, see <http://www.gnu.org/licenses/>. **
-*************************************************************************/
-
-#ifndef VECTORSTREAM_HPP
-#define VECTORSTREAM_HPP
-
-#include <istream>
-#include <vector>
-
-template <typename T>
-class VectorStreamBuffer : public std::streambuf {
- public:
- explicit VectorStreamBuffer (const std::vector<T> &v) {
- if (!v.empty()) {
- _begin = _curr = &v[0];
- _end = &v[0]+v.size();
- }
- }
-
- protected:
- int_type underflow () override {
- return _curr == _end ? traits_type::eof() : traits_type::to_int_type(*_curr);
- }
-
- int_type uflow() override {
- return _curr == _end ? traits_type::eof() : traits_type::to_int_type(*_curr++);
- }
-
- std::streamsize showmanyc () override {return _end-_curr;}
-
- int_type pbackfail (int_type c) override {
- if (_curr == _begin || (c != traits_type::eof() && c != _curr[-1]))
- return traits_type::eof();
- return traits_type::to_int_type(*--_curr);
- }
-
- pos_type seekoff (off_type off, std::ios_base::seekdir dir, std::ios_base::openmode which=std::ios_base::in) override {
- switch (dir) {
- case std::ios_base::cur:
- _curr += off; break;
- case std::ios_base::beg:
- _curr = _begin+off; break;
- case std::ios_base::end:
- _curr = _end-off; break;
- default:
- break;
- }
- return _curr-_begin;
- }
-
- private:
- const T *_begin=nullptr;
- const T *_end=nullptr;
- const T *_curr=nullptr;
-};
-
-
-template <typename T>
-class VectorInputStream : public std::istream {
- public:
- explicit VectorInputStream (const std::vector<T> &source) : std::istream(&_buf), _buf(source) {}
-
- private:
- VectorStreamBuffer<T> _buf;
-};
-
-#endif
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/optimizer/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/src/optimizer/Makefile.in
index 9f108830241..5dfafffaf30 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/optimizer/Makefile.in
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/optimizer/Makefile.in
@@ -90,6 +90,8 @@ build_triplet = @build@
host_triplet = @host@
@HAVE_BROTLI_FALSE@am__append_1 = -I$(dvisvgm_srcdir)/libs/brotli/include
@HAVE_BROTLI_FALSE@am__append_2 = ../libs/brotli/libbrotli.a
+# POTRACE_CFLAGS = -I$(dvisvgm_srcdir)/libs/potrace
+# POTRACE_LIBS = ../libs/potrace/libpotrace.a
@HAVE_WOFF2_FALSE@am__append_3 = -I$(dvisvgm_srcdir)/libs/woff2/include
@HAVE_WOFF2_FALSE@am__append_4 = ../libs/woff2/libwoff2.a
subdir = dvisvgm-src/src/optimizer
@@ -382,8 +384,6 @@ liboptimizer_la_SOURCES = \
TransformSimplifier.hpp TransformSimplifier.cpp \
WSNodeRemover.hpp WSNodeRemover.cpp
-@HAVE_POTRACE_FALSE@POTRACE_CFLAGS = $(POTRACE_INCLUDES)
-#
@TEXLIVE_BUILD_TRUE@POTRACE_CFLAGS = $(POTRACE_INCLUDES)
@HAVE_XXHASH_FALSE@XXHASH_CFLAGS = -I$(dvisvgm_srcdir)/libs/xxHash
@HAVE_XXHASH_FALSE@XXHASH_LIBS = ../libs/xxHash/libxxhash.a
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp b/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp
index bba86bee7c0..a16690a9553 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp
@@ -33,132 +33,133 @@ const char *PSInterpreter::PSDEFS =
"ulldevice get put @SD/:image @SD/image get put @SD/:colorimage @SD/colorimage "
"get put @SD/.setopacityalpha known not{@SD/.setopacityalpha{pop}put}if @SD/.se"
"tshapealpha known not{@SD/.setshapealpha{pop}put}if @SD/.setblendmode known no"
-"t{@SD/.setblendmode{pop}put}if @SD/prseq{-1 1{-1 roll =only( )print}for(\\n)pr"
-"int}put @SD/prcmd{( )exch(\\ndvi.)3{print}repeat prseq}put @SD/cvxall{{cvx}for"
-"all}put @SD/defpr{[exch/copy cvx @SD 4 index[/get/exec]cvxall 5 index 3 index "
-"dup length string cvs/prcmd cvx]cvx bind def}put @SD/querypos{{currentpoint}st"
-"opped{$error/newerror false put}{2(querypos)prcmd}ifelse}put @SD/applyscaleval"
-"s{1 0 dtransform exch dup mul exch dup mul add sqrt 0 1 dtransform exch dup mu"
-"l exch dup mul add sqrt 1 0 dtransform dup mul exch dup dup mul 3 -1 roll add "
-"dup 0 eq{pop}{sqrt div}ifelse 3(applyscalevals)prcmd}put @SD/prpath{{2(moveto)"
-"prcmd}{2(lineto)prcmd}{6(curveto)prcmd}{0(closepath)prcmd}pathforall}put @SD/n"
-"ulldevice{@GD/@nulldev true put :nulldevice 1 1(setnulldevice)prcmd}put @SD/ch"
-"arpath{/@dodraw false store :charpath/@dodraw true store}put @SD/stringwidth{/"
-"@dodraw false store :stringwidth/@dodraw true store}put @SD/show{@dodraw @GD/@"
-"nulldev get not and{dup :gsave currentpoint 2{50 mul exch}repeat :newpath move"
-"to 50 50/scale sysexec true charpath fill :grestore/@dodraw false store :show/"
-"@dodraw true store}{:show}ifelse}put @SD/varxyshow{dup 0 ge{<</chr 3 -1 roll s"
-"tring/prc 5 -1 roll/arr 7 -1 roll/str 9 -1 roll/idx 0>>begin 0 chr length str "
-"length 1 sub{str exch chr length getinterval/chr exch store :gsave chr show :g"
-"restore currentpoint prc moveto/idx idx 1 add store}for end}{pop pop show}ifel"
-"se}put @SD/xyshow{dup dup type/arraytype eq exch length 0 gt and{dup length 2 "
-"idiv 2 index length exch idiv}{-1}ifelse{exch arr idx 2 mul get add exch arr i"
-"dx 2 mul 1 add get add}exch varxyshow}put @SD/xshow{dup dup type/arraytype eq "
-"exch length 0 gt and{dup length 2 index length exch idiv}{-1}ifelse{exch arr i"
-"dx get add exch}exch varxyshow}put @SD/yshow{dup dup type/arraytype eq exch le"
-"ngth 0 gt and{dup length 2 index length exch idiv}{-1}ifelse{arr idx get add}e"
-"xch varxyshow}put @SD/awidthshow{{1 string dup 0 5 index put :gsave show :gres"
-"tore pop 0 rmoveto 3 index eq{4 index 4 index rmoveto}if 1 index 1 index rmove"
-"to}exch cshow 5{pop}repeat}put @SD/widthshow{0 0 3 -1 roll awidthshow}put @SD/"
-"ashow{0 0 0 6 3 roll awidthshow}put @SD/newpath{:newpath 1 1(newpath)prcmd}put"
-" @SD/stroke{@dodraw @GD/@nulldev get not and{prcolor 0 1(newpath)prcmd prpath "
-"0(stroke)prcmd :newpath}{:stroke}ifelse}put @SD/fill{@dodraw @GD/@nulldev get "
-"not and{prcolor 0 1(newpath)prcmd prpath 0(fill)prcmd :newpath}{:fill}ifelse}p"
-"ut @SD/eofill{@dodraw @GD/@nulldev get not and{prcolor 0 1(newpath)prcmd prpat"
-"h 0(eofill)prcmd :newpath}{:eofill}ifelse}put/.fillstroke{:gsave fill :grestor"
-"e .swapcolors stroke .swapcolors}bind def/.eofillstroke{:gsave eofill :grestor"
-"e .swapcolors stroke .swapcolors}bind def @SD/clip{:clip @GD/@nulldev get not{"
-"0 1(newpath)prcmd prpath 0(clip)prcmd}if}put @SD/eoclip{:eoclip @GD/@nulldev g"
-"et not{0 1(newpath)prcmd prpath 0(eoclip)prcmd}if}put @SD/shfill{begin current"
-"dict/ShadingType known currentdict/ColorSpace known and currentdict/DataSource"
-" known and currentdict/Function known not and ShadingType 4 ge{DataSource type"
-"/arraytype eq{<</DeviceGray 1/DeviceRGB 3/DeviceCMYK 4/bgknown currentdict/Bac"
-"kground known/bbknown currentdict/BBox known>>begin currentdict ColorSpace kno"
-"wn{ShadingType ColorSpace load bgknown{1 Background aload pop}{0}ifelse bbknow"
-"n{1 BBox aload pop}{0}ifelse ShadingType 5 eq{VerticesPerRow}if DataSource alo"
-"ad length 4 add bgknown{ColorSpace load add}if bbknown{4 add}if ShadingType 5 "
-"eq{1 add}if(shfill)prcmd}if end}if}if end}put @SD/image{dup type/dicttype eq{d"
-"up}{<</Width 6 index/Height 7 index/colorimg false>>}ifelse @execimg}put @SD/c"
-"olorimage{<<2 index{/Width 2 index 8 add index/Height 4 index 9 add index}{/Wi"
-"dth 8 index/Height 9 index}ifelse/colorimg true>>@execimg}put/@imgbase(./)def/"
-"@imgdevice(jpeg)def/@execimg{@GD/@imgcnt 2 copy .knownget{1 add}{1}ifelse put "
-"begin<</imgdev null/imgid @GD/@imgcnt get/ispng @imgdevice 0 3 getinterval(png"
-")eq dup/suffix exch{(.png)}{(.jpg)}ifelse/colorimg currentdict/colorimg .known"
-"get dup{pop}if/colordev 1 index currentcolorspace dup length 1 ne exch 0 get/D"
-"eviceGray ne or or>>begin @imgdevice(png)ne @imgdevice(jpeg)ne and{@imgdevice "
-"cvn}{colordev{ispng{/png16m}{/jpeg}ifelse}{ispng{/pnggray}{/jpeggray}ifelse}if"
-"else}ifelse dup devicedict exch known{:gsave/imgdev exch finddevice def mark/O"
-"utputFile @imgbase imgid 20 string cvs strconcat suffix strconcat/PageSize[Wid"
-"th Height]/UseFastColor true ispng{@imgdevice(pngmonod)eq{/MinFeatureSize wher"
-"e{pop/MinFeatureSize MinFeatureSize}if}if}{/JPEGQ where{pop/JPEGQ JPEGQ}if}ife"
-"lse imgdev putdeviceprops setdevice[Width 0 0 Height neg 0 Height]/setmatrix s"
-"ysexec colorimg{:colorimage}{:image}ifelse/copypage sysexec mark/OutputFile()i"
-"mgdev putdeviceprops pop :grestore imgid Width Height 3(image)prcmd}{pop color"
-"img{:colorimage}{:image}ifelse}ifelse end end}def/@rect{4 -2 roll moveto exch "
-"dup 0 rlineto exch 0 exch rlineto neg 0 rlineto closepath}bind def/@rectcc{4 -"
-"2 roll moveto 2 copy 0 lt exch 0 lt xor{dup 0 exch rlineto exch 0 rlineto neg "
-"0 exch rlineto}{exch dup 0 rlineto exch 0 exch rlineto neg 0 rlineto}ifelse cl"
-"osepath}bind def @SD/rectclip{:newpath dup type/arraytype eq{aload length 4 id"
-"iv{@rectcc}repeat}{@rectcc}ifelse clip :newpath}put @SD/rectfill{:gsave :newpa"
-"th dup type/arraytype eq{aload length 4 idiv{@rectcc}repeat}{@rectcc}ifelse fi"
-"ll :grestore}put @SD/rectstroke{gsave :newpath dup type/arraytype eq{aload len"
-"gth 4 idiv{@rect}repeat}{@rect}ifelse stroke grestore}put false setglobal @SD "
-"readonly pop/initclip 0 defpr/clippath 0 defpr/sysexec{@SD exch get exec}def/a"
-"dddot{dup length 1 add string dup 0 46 put dup 3 -1 roll 1 exch putinterval}de"
-"f/setlinewidth{dup/setlinewidth sysexec 1(setlinewidth)prcmd}def/setlinecap 1 "
-"defpr/setlinejoin 1 defpr/setmiterlimit 1 defpr/setdash{mark 3 1 roll 2 copy/s"
-"etdash sysexec exch aload length 1 add -1 roll counttomark(setdash)prcmd pop}d"
-"ef/@setpagedevice{pop<<>>/setpagedevice sysexec matrix setmatrix newpath 0(set"
-"pagedevice)prcmd}def/@checknulldev{@GD/@nulldev get{currentpagedevice maxlengt"
-"h 0 ne{@GD/@nulldev false put 0 1(setnulldevice)prcmd}if}if}def/prcolor{curren"
-"tcolorspace @setcolorspace currentrgbcolor 3(setrgbcolor)prcmd}def/printgstate"
-"{@dodraw @GD/@nulldev get not and{matrix currentmatrix aload pop 6(setmatrix)p"
-"rcmd applyscalevals currentlinewidth 1(setlinewidth)prcmd currentlinecap 1(set"
-"linecap)prcmd currentlinejoin 1(setlinejoin)prcmd currentmiterlimit 1(setmiter"
-"limit)prcmd revision dup 952 lt{pop}{.currentblendmode .setblendmode 952 eq{.c"
-"urrentopacityalpha .setopacityalpha .currentshapealpha .setshapealpha}{.curren"
-"talphaisshape{1}{0}ifelse 1(setalphaisshape)prcmd .currentstrokeconstantalpha "
-"1(setstrokeconstantalpha)prcmd .currentfillconstantalpha 1(setfillconstantalph"
-"a)prcmd}ifelse}ifelse prcolor currentdash mark 3 1 roll exch aload length 1 ad"
-"d -1 roll counttomark(setdash)prcmd pop}if}def/strconcat{exch dup length 2 ind"
-"ex length add string dup dup 4 2 roll copy length 4 -1 roll putinterval}def/se"
-"tgstate{/setgstate sysexec printgstate}def/save{@UD begin/@saveID vmstatus pop"
-" pop def end :save @saveID 1(save)prcmd}def/restore{:restore @checknulldev pri"
-"ntgstate @UD/@saveID known{@UD begin @saveID end}{0}ifelse 1(restore)prcmd}def"
-"/gsave 0 defpr/grestore{:grestore @checknulldev printgstate 0(grestore)prcmd}d"
-"ef/grestoreall{:grestoreall @checknulldev setstate 0(grestoreall)prcmd}def/rot"
-"ate{dup type/arraytype ne @dodraw and{dup 1(rotate)prcmd}if/rotate sysexec app"
-"lyscalevals}def/scale{dup type/arraytype ne @dodraw and{2 copy 2(scale)prcmd}i"
-"f/scale sysexec applyscalevals}def/translate{dup type/arraytype ne @dodraw and"
-"{2 copy 2(translate)prcmd}if/translate sysexec}def/setmatrix{dup/setmatrix sys"
-"exec @dodraw{aload pop 6(setmatrix)prcmd applyscalevals}{pop}ifelse}def/initma"
-"trix{matrix setmatrix}def/concat{matrix currentmatrix matrix concatmatrix setm"
-"atrix}def/makepattern{gsave<</mx 3 -1 roll>>begin<</XUID[1000000 @patcnt]>>cop"
-"y mx/makepattern sysexec dup begin PatternType 2 lt{PatternType @patcnt BBox a"
-"load pop XStep YStep PaintType mx aload pop 15(makepattern)prcmd :newpath matr"
-"ix setmatrix dup PaintProc 0 1(makepattern)prcmd @GD/@patcnt @patcnt 1 add put"
-"}if end end grestore}def/setpattern{dup begin PatternType end 1 eq{begin Paint"
-"Type 1 eq{XUID aload pop exch pop 1}{:gsave[currentcolorspace aload length -1 "
-"roll pop]/setcolorspace sysexec/setcolor sysexec XUID aload pop exch pop curre"
-"ntrgbcolor :grestore 4}ifelse(setpattern)prcmd currentcolorspace 0 get/Pattern"
-" ne{[/Pattern currentcolorspace]/setcolorspace sysexec}if currentcolorspace @s"
-"etcolorspace end}{/setpattern sysexec}ifelse}def/setcolor{dup type/dicttype eq"
-"{setpattern}{/setcolor sysexec/currentrgbcolor sysexec setrgbcolor}ifelse}def/"
-"setcolorspace{dup/setcolorspace sysexec @setcolorspace}def/@setcolorspace{dup "
-"type/arraytype eq{0 get}if/Pattern eq{1}{0}ifelse 1(setcolorspace)prcmd}def/se"
-"tgray 1 defpr/setcmykcolor 4 defpr/sethsbcolor 3 defpr/setrgbcolor 3 defpr/.se"
-"talphaisshape{@SD/.setalphaisshape known{dup/.setalphaisshape sysexec}if{1}{0}"
-"ifelse 1(setalphaisshape)prcmd}bind def/.setfillconstantalpha{@SD/.setfillcons"
-"tantalpha known{dup/.setfillconstantalpha sysexec}if 1(setfillconstantalpha)pr"
-"cmd}bind def/.setstrokeconstantalpha{@SD/.setstrokeconstantalpha known{dup/.se"
-"tstrokeconstantalpha sysexec}if 1(setstrokeconstantalpha)prcmd}bind def/.setop"
-"acityalpha{false .setalphaisshape dup .setfillconstantalpha .setstrokeconstant"
-"alpha}bind def/.setshapealpha{true .setalphaisshape dup .setfillconstantalpha "
-".setstrokeconstantalpha}bind def/.setblendmode{dup/.setblendmode sysexec<</Nor"
-"mal 0/Compatible 0/Multiply 1/Screen 2/Overlay 3/SoftLight 4/HardLight 5/Color"
-"Dodge 6/ColorBurn 7/Darken 8/Lighten 9/Difference 10/Exclusion 11/Hue 12/Satur"
-"ation 13/Color 14/Luminosity 15/CompatibleOverprint 16>>exch get 1(setblendmod"
-"e)prcmd}def/@pdfpagecount{(r)file runpdfbegin pdfpagecount runpdfend}def/@pdfp"
-"agebox{(r)file runpdfbegin dup dup 1 lt exch pdfpagecount gt or{pop}{pdfgetpag"
-"e/MediaBox pget pop aload pop}ifelse runpdfend}def DELAYBIND{.bindnow}if ";
+"t{@SD/.setblendmode{pop}put}if @SD/prseq{[exch 1 add 1 roll]{=only( )print}for"
+"all(\\n)print}put @SD/prcmd{( )exch(\\ndvi.)3{print}repeat prseq}put @SD/cvxal"
+"l{{cvx}forall}put @SD/defpr{[exch/copy cvx @SD 4 index[/get/exec]cvxall 5 inde"
+"x 3 index dup length string cvs/prcmd cvx]cvx bind def}put @SD/querypos{{curre"
+"ntpoint}stopped{$error/newerror false put}{2(querypos)prcmd}ifelse}put @SD/app"
+"lyscalevals{1 0 dtransform exch dup mul exch dup mul add sqrt 0 1 dtransform e"
+"xch dup mul exch dup mul add sqrt 1 0 dtransform dup mul exch dup dup mul 3 -1"
+" roll add dup 0 eq{pop}{sqrt div}ifelse 3(applyscalevals)prcmd}put @SD/prpath{"
+"{2(moveto)prcmd}{2(lineto)prcmd}{6(curveto)prcmd}{0(closepath)prcmd}pathforall"
+"}put @SD/nulldevice{@GD/@nulldev true put :nulldevice 1 1(setnulldevice)prcmd}"
+"put @SD/charpath{/@dodraw false store :charpath/@dodraw true store}put @SD/str"
+"ingwidth{/@dodraw false store :stringwidth/@dodraw true store}put @SD/show{@do"
+"draw @GD/@nulldev get not and{dup :gsave currentpoint 2{50 mul exch}repeat :ne"
+"wpath moveto 50 50/scale sysexec true charpath fill :grestore/@dodraw false st"
+"ore :show/@dodraw true store}{:show}ifelse}put @SD/varxyshow{dup 0 ge{<</chr 3"
+" -1 roll string/prc 5 -1 roll/arr 7 -1 roll/str 9 -1 roll/idx 0>>begin 0 chr l"
+"ength str length 1 sub{str exch chr length getinterval/chr exch store :gsave c"
+"hr show :grestore currentpoint prc moveto/idx idx 1 add store}for end}{pop pop"
+" show}ifelse}put @SD/xyshow{dup dup type/arraytype eq exch length 0 gt and{dup"
+" length 2 idiv 2 index length exch idiv}{-1}ifelse{exch arr idx 2 mul get add "
+"exch arr idx 2 mul 1 add get add}exch varxyshow}put @SD/xshow{dup dup type/arr"
+"aytype eq exch length 0 gt and{dup length 2 index length exch idiv}{-1}ifelse{"
+"exch arr idx get add exch}exch varxyshow}put @SD/yshow{dup dup type/arraytype "
+"eq exch length 0 gt and{dup length 2 index length exch idiv}{-1}ifelse{arr idx"
+" get add}exch varxyshow}put @SD/awidthshow{{1 string dup 0 5 index put :gsave "
+"show :grestore pop 0 rmoveto 3 index eq{4 index 4 index rmoveto}if 1 index 1 i"
+"ndex rmoveto}exch cshow 5{pop}repeat}put @SD/widthshow{0 0 3 -1 roll awidthsho"
+"w}put @SD/ashow{0 0 0 6 3 roll awidthshow}put @SD/newpath{:newpath 1 1(newpath"
+")prcmd}put @SD/stroke{@dodraw @GD/@nulldev get not and{prcolor 0 1(newpath)prc"
+"md prpath 0(stroke)prcmd :newpath}{:stroke}ifelse}put @SD/fill{@dodraw @GD/@nu"
+"lldev get not and{prcolor 0 1(newpath)prcmd prpath 0(fill)prcmd :newpath}{:fil"
+"l}ifelse}put @SD/eofill{@dodraw @GD/@nulldev get not and{prcolor 0 1(newpath)p"
+"rcmd prpath 0(eofill)prcmd :newpath}{:eofill}ifelse}put/.fillstroke{:gsave fil"
+"l :grestore .swapcolors stroke .swapcolors}bind def/.eofillstroke{:gsave eofil"
+"l :grestore .swapcolors stroke .swapcolors}bind def @SD/clip{:clip @GD/@nullde"
+"v get not{0 1(newpath)prcmd prpath 0(clip)prcmd}if}put @SD/eoclip{:eoclip @GD/"
+"@nulldev get not{0 1(newpath)prcmd prpath 0(eoclip)prcmd}if}put @SD/shfill{beg"
+"in currentdict/ShadingType known currentdict/ColorSpace known and currentdict/"
+"DataSource known and currentdict/Function known not and ShadingType 4 ge{DataS"
+"ource type/arraytype eq{<</DeviceGray 1/DeviceRGB 3/DeviceCMYK 4/bgknown curre"
+"ntdict/Background known/bbknown currentdict/BBox known>>begin currentdict Colo"
+"rSpace known{ShadingType ColorSpace load bgknown{1 Background aload pop}{0}ife"
+"lse bbknown{1 BBox aload pop}{0}ifelse ShadingType 5 eq{VerticesPerRow}if Data"
+"Source aload length 4 add bgknown{ColorSpace load add}if bbknown{4 add}if Shad"
+"ingType 5 eq{1 add}if(shfill)prcmd}if end}if}if end}put @SD/image{dup type/dic"
+"ttype eq{dup}{<</Width 6 index/Height 7 index/colorimg false>>}ifelse @execimg"
+"}put @SD/colorimage{<<2 index{/Width 2 index 8 add index/Height 4 index 9 add "
+"index}{/Width 8 index/Height 9 index}ifelse/colorimg true>>@execimg}put/@imgba"
+"se(./)def/@imgdevice(jpeg)def/@execimg{@GD/@imgcnt 2 copy .knownget{1 add}{1}i"
+"felse put begin<</imgdev null/imgid @GD/@imgcnt get/ispng @imgdevice 0 3 getin"
+"terval(png)eq dup/suffix exch{(.png)}{(.jpg)}ifelse/colorimg currentdict/color"
+"img .knownget dup{pop}if/colordev 1 index currentcolorspace dup length 1 ne ex"
+"ch 0 get/DeviceGray ne or or>>begin @imgdevice(png)ne @imgdevice(jpeg)ne and{@"
+"imgdevice cvn}{colordev{ispng{/png16m}{/jpeg}ifelse}{ispng{/pnggray}{/jpeggray"
+"}ifelse}ifelse}ifelse dup devicedict exch known{:gsave/imgdev exch finddevice "
+"def mark/OutputFile @imgbase imgid 20 string cvs strconcat suffix strconcat/Pa"
+"geSize[Width Height]/UseFastColor true ispng{@imgdevice(pngmonod)eq{/MinFeatur"
+"eSize where{pop/MinFeatureSize MinFeatureSize}if}if}{/JPEGQ where{pop/JPEGQ JP"
+"EGQ}if}ifelse imgdev putdeviceprops setdevice[Width 0 0 Height neg 0 Height]/s"
+"etmatrix sysexec colorimg{:colorimage}{:image}ifelse/copypage sysexec mark/Out"
+"putFile()imgdev putdeviceprops pop :grestore imgid Width Height 3(image)prcmd}"
+"{pop colorimg{:colorimage}{:image}ifelse}ifelse end end}def/@rect{4 -2 roll mo"
+"veto exch dup 0 rlineto exch 0 exch rlineto neg 0 rlineto closepath}bind def/@"
+"rectcc{4 -2 roll moveto 2 copy 0 lt exch 0 lt xor{dup 0 exch rlineto exch 0 rl"
+"ineto neg 0 exch rlineto}{exch dup 0 rlineto exch 0 exch rlineto neg 0 rlineto"
+"}ifelse closepath}bind def @SD/rectclip{:newpath dup type/arraytype eq{aload l"
+"ength 4 idiv{@rectcc}repeat}{@rectcc}ifelse clip :newpath}put @SD/rectfill{:gs"
+"ave :newpath dup type/arraytype eq{aload length 4 idiv{@rectcc}repeat}{@rectcc"
+"}ifelse fill :grestore}put @SD/rectstroke{gsave :newpath dup type/arraytype eq"
+"{aload length 4 idiv{@rect}repeat}{@rect}ifelse stroke grestore}put false setg"
+"lobal @SD readonly pop/initclip 0 defpr/clippath 0 defpr/sysexec{@SD exch get "
+"exec}def/adddot{dup length 1 add string dup 0 46 put dup 3 -1 roll 1 exch puti"
+"nterval}def/setlinewidth{dup/setlinewidth sysexec 1(setlinewidth)prcmd}def/set"
+"linecap 1 defpr/setlinejoin 1 defpr/setmiterlimit 1 defpr/setdash{mark 3 1 rol"
+"l 2 copy/setdash sysexec exch aload length 1 add -1 roll counttomark(setdash)p"
+"rcmd pop}def/@setpagedevice{pop<<>>/setpagedevice sysexec matrix setmatrix new"
+"path 0(setpagedevice)prcmd}def/@checknulldev{@GD/@nulldev get{currentpagedevic"
+"e maxlength 0 ne{@GD/@nulldev false put 0 1(setnulldevice)prcmd}if}if}def/prco"
+"lor{currentcolorspace @setcolorspace currentrgbcolor 3(setrgbcolor)prcmd}def/p"
+"rintgstate{@dodraw @GD/@nulldev get not and{matrix currentmatrix aload pop 6(s"
+"etmatrix)prcmd applyscalevals currentlinewidth 1(setlinewidth)prcmd currentlin"
+"ecap 1(setlinecap)prcmd currentlinejoin 1(setlinejoin)prcmd currentmiterlimit "
+"1(setmiterlimit)prcmd revision dup 952 lt{pop}{.currentblendmode .setblendmode"
+" 952 eq{.currentopacityalpha .setopacityalpha .currentshapealpha .setshapealph"
+"a}{.currentalphaisshape{1}{0}ifelse 1(setalphaisshape)prcmd .currentstrokecons"
+"tantalpha 1(setstrokeconstantalpha)prcmd .currentfillconstantalpha 1(setfillco"
+"nstantalpha)prcmd}ifelse}ifelse prcolor currentdash mark 3 1 roll exch aload l"
+"ength 1 add -1 roll counttomark(setdash)prcmd pop}if}def/strconcat{exch dup le"
+"ngth 2 index length add string dup dup 4 2 roll copy length 4 -1 roll putinter"
+"val}def/setgstate{/setgstate sysexec printgstate}def/save{@UD begin/@saveID vm"
+"status pop pop def end :save @saveID 1(save)prcmd}def/restore{:restore @checkn"
+"ulldev printgstate @UD/@saveID known{@UD begin @saveID end}{0}ifelse 1(restore"
+")prcmd}def/gsave 0 defpr/grestore{:grestore @checknulldev printgstate 0(gresto"
+"re)prcmd}def/grestoreall{:grestoreall @checknulldev setstate 0(grestoreall)prc"
+"md}def/rotate{dup type/arraytype ne @dodraw and{dup 1(rotate)prcmd}if/rotate s"
+"ysexec applyscalevals}def/scale{dup type/arraytype ne @dodraw and{2 copy 2(sca"
+"le)prcmd}if/scale sysexec applyscalevals}def/translate{dup type/arraytype ne @"
+"dodraw and{2 copy 2(translate)prcmd}if/translate sysexec}def/setmatrix{dup/set"
+"matrix sysexec @dodraw{aload pop 6(setmatrix)prcmd applyscalevals}{pop}ifelse}"
+"def/initmatrix{matrix setmatrix}def/concat{matrix currentmatrix matrix concatm"
+"atrix setmatrix}def/makepattern{gsave<</mx 3 -1 roll>>begin<</XUID[1000000 @pa"
+"tcnt]>>copy mx/makepattern sysexec dup begin PatternType 2 lt{PatternType @pat"
+"cnt BBox aload pop XStep YStep PaintType mx aload pop 15(makepattern)prcmd :ne"
+"wpath matrix setmatrix dup PaintProc 0 1(makepattern)prcmd @GD/@patcnt @patcnt"
+" 1 add put}if end end grestore}def/setpattern{dup begin PatternType end 1 eq{b"
+"egin PaintType 1 eq{XUID aload pop exch pop 1}{:gsave[currentcolorspace aload "
+"length -1 roll pop]/setcolorspace sysexec/setcolor sysexec XUID aload pop exch"
+" pop currentrgbcolor :grestore 4}ifelse(setpattern)prcmd currentcolorspace 0 g"
+"et/Pattern ne{[/Pattern currentcolorspace]/setcolorspace sysexec}if currentcol"
+"orspace @setcolorspace end}{/setpattern sysexec}ifelse}def/setcolor{dup type/d"
+"icttype eq{setpattern}{/setcolor sysexec/currentrgbcolor sysexec setrgbcolor}i"
+"felse}def/setcolorspace{dup/setcolorspace sysexec @setcolorspace}def/@setcolor"
+"space{dup type/arraytype eq{0 get}if/Pattern eq{1}{0}ifelse 1(setcolorspace)pr"
+"cmd}def/setgray 1 defpr/setcmykcolor 4 defpr/sethsbcolor 3 defpr/setrgbcolor 3"
+" defpr/.setalphaisshape{@SD/.setalphaisshape known{dup/.setalphaisshape sysexe"
+"c}if{1}{0}ifelse 1(setalphaisshape)prcmd}bind def/.setfillconstantalpha{@SD/.s"
+"etfillconstantalpha known{dup/.setfillconstantalpha sysexec}if 1(setfillconsta"
+"ntalpha)prcmd}bind def/.setstrokeconstantalpha{@SD/.setstrokeconstantalpha kno"
+"wn{dup/.setstrokeconstantalpha sysexec}if 1(setstrokeconstantalpha)prcmd}bind "
+"def/.setopacityalpha{false .setalphaisshape dup .setfillconstantalpha .setstro"
+"keconstantalpha}bind def/.setshapealpha{true .setalphaisshape dup .setfillcons"
+"tantalpha .setstrokeconstantalpha}bind def/.setblendmode{dup/.setblendmode sys"
+"exec<</Normal 0/Compatible 0/Multiply 1/Screen 2/Overlay 3/SoftLight 4/HardLig"
+"ht 5/ColorDodge 6/ColorBurn 7/Darken 8/Lighten 9/Difference 10/Exclusion 11/Hu"
+"e 12/Saturation 13/Color 14/Luminosity 15/CompatibleOverprint 16>>exch get 1(s"
+"etblendmode)prcmd}def/@pdfpagecount{(r)file runpdfbegin pdfpagecount runpdfend"
+"}def/@pdfpagebox{(r)file runpdfbegin dup dup 1 lt exch pdfpagecount gt or{pop}"
+"{pdfgetpage/MediaBox pget pop aload pop}ifelse runpdfend}def DELAYBIND{.bindno"
+"w}if ";
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/ttf/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/src/ttf/Makefile.am
index 6275714ff19..60883f64cc2 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/ttf/Makefile.am
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/ttf/Makefile.am
@@ -22,5 +22,4 @@ include ../../libs/defs.am
AM_CXXFLAGS = \
-I$(dvisvgm_srcdir)/libs/boost \
-I$(dvisvgm_srcdir)/libs/variant/include \
- $(ZLIB_INCLUDES) \
$(BROTLI_CFLAGS) $(WOFF2_CFLAGS)
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/src/ttf/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/src/ttf/Makefile.in
index 8312cc60d6e..e36f65ca31d 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/src/ttf/Makefile.in
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/src/ttf/Makefile.in
@@ -90,6 +90,8 @@ build_triplet = @build@
host_triplet = @host@
@HAVE_BROTLI_FALSE@am__append_1 = -I$(dvisvgm_srcdir)/libs/brotli/include
@HAVE_BROTLI_FALSE@am__append_2 = ../libs/brotli/libbrotli.a
+# POTRACE_CFLAGS = -I$(dvisvgm_srcdir)/libs/potrace
+# POTRACE_LIBS = ../libs/potrace/libpotrace.a
@HAVE_WOFF2_FALSE@am__append_3 = -I$(dvisvgm_srcdir)/libs/woff2/include
@HAVE_WOFF2_FALSE@am__append_4 = ../libs/woff2/libwoff2.a
subdir = dvisvgm-src/src/ttf
@@ -388,15 +390,12 @@ libttf_la_SOURCES = \
VheaTable.hpp VheaTable.cpp \
VmtxTable.hpp VmtxTable.cpp
-@HAVE_POTRACE_FALSE@POTRACE_CFLAGS = $(POTRACE_INCLUDES)
-#
@TEXLIVE_BUILD_TRUE@POTRACE_CFLAGS = $(POTRACE_INCLUDES)
@HAVE_XXHASH_FALSE@XXHASH_CFLAGS = -I$(dvisvgm_srcdir)/libs/xxHash
@HAVE_XXHASH_FALSE@XXHASH_LIBS = ../libs/xxHash/libxxhash.a
AM_CXXFLAGS = \
-I$(dvisvgm_srcdir)/libs/boost \
-I$(dvisvgm_srcdir)/libs/variant/include \
- $(ZLIB_INCLUDES) \
$(BROTLI_CFLAGS) $(WOFF2_CFLAGS)
all: all-am
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.am b/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.am
index 81d28d2622c..0811c94312d 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.am
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.am
@@ -396,12 +396,6 @@ VectorIteratorTest_SOURCES = VectorIteratorTest.cpp testutil.hpp
VectorIteratorTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
VectorIteratorTest_LDADD = $(TESTLIBS)
-TESTS += VectorStreamTest
-check_PROGRAMS += VectorStreamTest
-VectorStreamTest_SOURCES = VectorStreamTest.cpp testutil.hpp
-VectorStreamTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-VectorStreamTest_LDADD = $(TESTLIBS)
-
TESTS += XMLNodeTest
check_PROGRAMS += XMLNodeTest
XMLNodeTest_SOURCES = XMLNodeTest.cpp testutil.hpp
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.in b/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.in
index 2222a330a5c..99438fe4d2d 100644
--- a/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.in
+++ b/Build/source/texk/dvisvgm/dvisvgm-src/tests/Makefile.in
@@ -120,8 +120,7 @@ TESTS = hashcheck$(EXEEXT) BezierTest$(EXEEXT) BitmapTest$(EXEEXT) \
ToUnicodeMapTest$(EXEEXT) TpicSpecialTest$(EXEEXT) \
TriangularPatchTest$(EXEEXT) UnicodeTest$(EXEEXT) \
UtilityTest$(EXEEXT) VectorIteratorTest$(EXEEXT) \
- VectorStreamTest$(EXEEXT) XMLNodeTest$(EXEEXT) \
- XMLStringTest$(EXEEXT) check-conv
+ XMLNodeTest$(EXEEXT) XMLStringTest$(EXEEXT) check-conv
check_PROGRAMS = hashcheck$(EXEEXT) BezierTest$(EXEEXT) \
BitmapTest$(EXEEXT) BoundingBoxTest$(EXEEXT) \
CalculatorTest$(EXEEXT) CMapManagerTest$(EXEEXT) \
@@ -151,8 +150,7 @@ check_PROGRAMS = hashcheck$(EXEEXT) BezierTest$(EXEEXT) \
ToUnicodeMapTest$(EXEEXT) TpicSpecialTest$(EXEEXT) \
TriangularPatchTest$(EXEEXT) UnicodeTest$(EXEEXT) \
UtilityTest$(EXEEXT) VectorIteratorTest$(EXEEXT) \
- VectorStreamTest$(EXEEXT) XMLNodeTest$(EXEEXT) \
- XMLStringTest$(EXEEXT)
+ XMLNodeTest$(EXEEXT) XMLStringTest$(EXEEXT)
subdir = tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_ac_append_to_file.m4 \
@@ -396,10 +394,6 @@ am_VectorIteratorTest_OBJECTS = \
VectorIteratorTest-VectorIteratorTest.$(OBJEXT)
VectorIteratorTest_OBJECTS = $(am_VectorIteratorTest_OBJECTS)
VectorIteratorTest_DEPENDENCIES = $(am__DEPENDENCIES_5)
-am_VectorStreamTest_OBJECTS = \
- VectorStreamTest-VectorStreamTest.$(OBJEXT)
-VectorStreamTest_OBJECTS = $(am_VectorStreamTest_OBJECTS)
-VectorStreamTest_DEPENDENCIES = $(am__DEPENDENCIES_5)
am_XMLNodeTest_OBJECTS = XMLNodeTest-XMLNodeTest.$(OBJEXT)
XMLNodeTest_OBJECTS = $(am_XMLNodeTest_OBJECTS)
XMLNodeTest_DEPENDENCIES = $(am__DEPENDENCIES_5)
@@ -482,7 +476,6 @@ am__depfiles_remade = ./$(DEPDIR)/BezierTest-BezierTest.Po \
./$(DEPDIR)/UnicodeTest-UnicodeTest.Po \
./$(DEPDIR)/UtilityTest-UtilityTest.Po \
./$(DEPDIR)/VectorIteratorTest-VectorIteratorTest.Po \
- ./$(DEPDIR)/VectorStreamTest-VectorStreamTest.Po \
./$(DEPDIR)/XMLNodeTest-XMLNodeTest.Po \
./$(DEPDIR)/XMLStringTest-XMLStringTest.Po \
./$(DEPDIR)/hashcheck-hashcheck.Po \
@@ -555,9 +548,8 @@ SOURCES = $(libgtest_la_SOURCES) $(BezierTest_SOURCES) \
$(TensorProductPatchTest_SOURCES) $(ToUnicodeMapTest_SOURCES) \
$(TpicSpecialTest_SOURCES) $(TriangularPatchTest_SOURCES) \
$(UnicodeTest_SOURCES) $(UtilityTest_SOURCES) \
- $(VectorIteratorTest_SOURCES) $(VectorStreamTest_SOURCES) \
- $(XMLNodeTest_SOURCES) $(XMLStringTest_SOURCES) \
- $(nodist_hashcheck_SOURCES)
+ $(VectorIteratorTest_SOURCES) $(XMLNodeTest_SOURCES) \
+ $(XMLStringTest_SOURCES) $(nodist_hashcheck_SOURCES)
DIST_SOURCES = $(libgtest_la_SOURCES) $(BezierTest_SOURCES) \
$(BitmapTest_SOURCES) $(BoundingBoxTest_SOURCES) \
$(CMapManagerTest_SOURCES) $(CMapReaderTest_SOURCES) \
@@ -588,8 +580,8 @@ DIST_SOURCES = $(libgtest_la_SOURCES) $(BezierTest_SOURCES) \
$(TensorProductPatchTest_SOURCES) $(ToUnicodeMapTest_SOURCES) \
$(TpicSpecialTest_SOURCES) $(TriangularPatchTest_SOURCES) \
$(UnicodeTest_SOURCES) $(UtilityTest_SOURCES) \
- $(VectorIteratorTest_SOURCES) $(VectorStreamTest_SOURCES) \
- $(XMLNodeTest_SOURCES) $(XMLStringTest_SOURCES)
+ $(VectorIteratorTest_SOURCES) $(XMLNodeTest_SOURCES) \
+ $(XMLStringTest_SOURCES)
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
install-data-recursive install-dvi-recursive \
@@ -1031,8 +1023,9 @@ EXTRA_DIST = gtest/LICENSE gtest/include gtest/src/gtest.cc \
gtest/src/gtest-printers.cc gtest/src/gtest-test-part.cc \
gtest/src/gtest-typed-test.cc check-conv genhashcheck.py \
normalize.xsl
-@HAVE_POTRACE_FALSE@POTRACE_CFLAGS = -I$(dvisvgm_srcdir)/libs/potrace
-@HAVE_POTRACE_FALSE@POTRACE_LIBS = ../libs/potrace/libpotrace.a
+@HAVE_POTRACE_FALSE@@TEXLIVE_BUILD_FALSE@POTRACE_CFLAGS = -I$(dvisvgm_srcdir)/libs/potrace
+@TEXLIVE_BUILD_TRUE@POTRACE_CFLAGS = $(POTRACE_INCLUDES)
+@HAVE_POTRACE_FALSE@@TEXLIVE_BUILD_FALSE@POTRACE_LIBS = ../libs/potrace/libpotrace.a
@HAVE_XXHASH_FALSE@XXHASH_CFLAGS = -I$(dvisvgm_srcdir)/libs/xxHash
@HAVE_XXHASH_FALSE@XXHASH_LIBS = ../libs/xxHash/libxxhash.a
LIBS_CFLAGS = $(XXHASH_CFLAGS) -I$(dvisvgm_srcdir)/libs/md5
@@ -1222,9 +1215,6 @@ UtilityTest_LDADD = $(TESTLIBS)
VectorIteratorTest_SOURCES = VectorIteratorTest.cpp testutil.hpp
VectorIteratorTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
VectorIteratorTest_LDADD = $(TESTLIBS)
-VectorStreamTest_SOURCES = VectorStreamTest.cpp testutil.hpp
-VectorStreamTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
-VectorStreamTest_LDADD = $(TESTLIBS)
XMLNodeTest_SOURCES = XMLNodeTest.cpp testutil.hpp
XMLNodeTest_CPPFLAGS = -I$(dvisvgm_srcdir)/tests/gtest/include $(LIBS_CFLAGS)
XMLNodeTest_LDADD = $(TESTLIBS)
@@ -1530,10 +1520,6 @@ VectorIteratorTest$(EXEEXT): $(VectorIteratorTest_OBJECTS) $(VectorIteratorTest_
@rm -f VectorIteratorTest$(EXEEXT)
$(AM_V_CXXLD)$(CXXLINK) $(VectorIteratorTest_OBJECTS) $(VectorIteratorTest_LDADD) $(LIBS)
-VectorStreamTest$(EXEEXT): $(VectorStreamTest_OBJECTS) $(VectorStreamTest_DEPENDENCIES) $(EXTRA_VectorStreamTest_DEPENDENCIES)
- @rm -f VectorStreamTest$(EXEEXT)
- $(AM_V_CXXLD)$(CXXLINK) $(VectorStreamTest_OBJECTS) $(VectorStreamTest_LDADD) $(LIBS)
-
XMLNodeTest$(EXEEXT): $(XMLNodeTest_OBJECTS) $(XMLNodeTest_DEPENDENCIES) $(EXTRA_XMLNodeTest_DEPENDENCIES)
@rm -f XMLNodeTest$(EXEEXT)
$(AM_V_CXXLD)$(CXXLINK) $(XMLNodeTest_OBJECTS) $(XMLNodeTest_LDADD) $(LIBS)
@@ -1612,7 +1598,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnicodeTest-UnicodeTest.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UtilityTest-UtilityTest.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VectorIteratorTest-VectorIteratorTest.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VectorStreamTest-VectorStreamTest.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XMLNodeTest-XMLNodeTest.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XMLStringTest-XMLStringTest.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hashcheck-hashcheck.Po@am__quote@ # am--include-marker
@@ -2475,20 +2460,6 @@ VectorIteratorTest-VectorIteratorTest.obj: VectorIteratorTest.cpp
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VectorIteratorTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o VectorIteratorTest-VectorIteratorTest.obj `if test -f 'VectorIteratorTest.cpp'; then $(CYGPATH_W) 'VectorIteratorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/VectorIteratorTest.cpp'; fi`
-VectorStreamTest-VectorStreamTest.o: VectorStreamTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VectorStreamTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT VectorStreamTest-VectorStreamTest.o -MD -MP -MF $(DEPDIR)/VectorStreamTest-VectorStreamTest.Tpo -c -o VectorStreamTest-VectorStreamTest.o `test -f 'VectorStreamTest.cpp' || echo '$(srcdir)/'`VectorStreamTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/VectorStreamTest-VectorStreamTest.Tpo $(DEPDIR)/VectorStreamTest-VectorStreamTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='VectorStreamTest.cpp' object='VectorStreamTest-VectorStreamTest.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VectorStreamTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o VectorStreamTest-VectorStreamTest.o `test -f 'VectorStreamTest.cpp' || echo '$(srcdir)/'`VectorStreamTest.cpp
-
-VectorStreamTest-VectorStreamTest.obj: VectorStreamTest.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VectorStreamTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT VectorStreamTest-VectorStreamTest.obj -MD -MP -MF $(DEPDIR)/VectorStreamTest-VectorStreamTest.Tpo -c -o VectorStreamTest-VectorStreamTest.obj `if test -f 'VectorStreamTest.cpp'; then $(CYGPATH_W) 'VectorStreamTest.cpp'; else $(CYGPATH_W) '$(srcdir)/VectorStreamTest.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/VectorStreamTest-VectorStreamTest.Tpo $(DEPDIR)/VectorStreamTest-VectorStreamTest.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='VectorStreamTest.cpp' object='VectorStreamTest-VectorStreamTest.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(VectorStreamTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o VectorStreamTest-VectorStreamTest.obj `if test -f 'VectorStreamTest.cpp'; then $(CYGPATH_W) 'VectorStreamTest.cpp'; else $(CYGPATH_W) '$(srcdir)/VectorStreamTest.cpp'; fi`
-
XMLNodeTest-XMLNodeTest.o: XMLNodeTest.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(XMLNodeTest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XMLNodeTest-XMLNodeTest.o -MD -MP -MF $(DEPDIR)/XMLNodeTest-XMLNodeTest.Tpo -c -o XMLNodeTest-XMLNodeTest.o `test -f 'XMLNodeTest.cpp' || echo '$(srcdir)/'`XMLNodeTest.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/XMLNodeTest-XMLNodeTest.Tpo $(DEPDIR)/XMLNodeTest-XMLNodeTest.Po
@@ -3215,13 +3186,6 @@ VectorIteratorTest.log: VectorIteratorTest$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
-VectorStreamTest.log: VectorStreamTest$(EXEEXT)
- @p='VectorStreamTest$(EXEEXT)'; \
- b='VectorStreamTest'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
XMLNodeTest.log: XMLNodeTest$(EXEEXT)
@p='XMLNodeTest$(EXEEXT)'; \
b='XMLNodeTest'; \
@@ -3422,7 +3386,6 @@ distclean: distclean-recursive
-rm -f ./$(DEPDIR)/UnicodeTest-UnicodeTest.Po
-rm -f ./$(DEPDIR)/UtilityTest-UtilityTest.Po
-rm -f ./$(DEPDIR)/VectorIteratorTest-VectorIteratorTest.Po
- -rm -f ./$(DEPDIR)/VectorStreamTest-VectorStreamTest.Po
-rm -f ./$(DEPDIR)/XMLNodeTest-XMLNodeTest.Po
-rm -f ./$(DEPDIR)/XMLStringTest-XMLStringTest.Po
-rm -f ./$(DEPDIR)/hashcheck-hashcheck.Po
@@ -3531,7 +3494,6 @@ maintainer-clean: maintainer-clean-recursive
-rm -f ./$(DEPDIR)/UnicodeTest-UnicodeTest.Po
-rm -f ./$(DEPDIR)/UtilityTest-UtilityTest.Po
-rm -f ./$(DEPDIR)/VectorIteratorTest-VectorIteratorTest.Po
- -rm -f ./$(DEPDIR)/VectorStreamTest-VectorStreamTest.Po
-rm -f ./$(DEPDIR)/XMLNodeTest-XMLNodeTest.Po
-rm -f ./$(DEPDIR)/XMLStringTest-XMLStringTest.Po
-rm -f ./$(DEPDIR)/hashcheck-hashcheck.Po
diff --git a/Build/source/texk/dvisvgm/tests/sample_v2-nf.svg b/Build/source/texk/dvisvgm/tests/sample_v2-nf.svg
index d2f3b928926..deb3dcba386 100644
--- a/Build/source/texk/dvisvgm/tests/sample_v2-nf.svg
+++ b/Build/source/texk/dvisvgm/tests/sample_v2-nf.svg
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- This file was generated by dvisvgm 3.2 -->
+<!-- This file was generated by dvisvgm 3.2.1 -->
<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='220.921985pt' height='574.788988pt' viewBox='61.768369 55.84613 220.921985 574.788988'>
<defs>
<path id='g0-12' d='M3.287671-3.985056C3.745953-3.985056 3.815691-3.855542 3.815691-3.447073V-.757161C3.815691-.308842 3.706102-.308842 3.038605-.308842V0C3.367372-.009963 3.895392-.029888 4.144458-.029888S4.881694-.009963 5.250311 0V-.308842C4.582814-.308842 4.473225-.308842 4.473225-.757161V-4.41345L3.217933-4.323786C3.058531-4.313823 3.048568-4.303861 3.038605-4.303861C3.01868-4.293898 2.998755-4.293898 2.859278-4.293898H1.683686V-5.419676C1.683686-6.405978 2.540473-6.804483 3.158157-6.804483C3.457036-6.804483 3.815691-6.704857 4.014944-6.475716C3.606476-6.455791 3.5467-6.176837 3.5467-6.017435C3.5467-5.688667 3.805729-5.559153 3.995019-5.559153C4.224159-5.559153 4.4533-5.718555 4.4533-6.017435C4.4533-6.60523 3.905355-7.023661 3.16812-7.023661C2.241594-7.023661 1.05604-6.515567 1.05604-5.429639V-4.293898H.268991V-3.985056H1.05604V-.757161C1.05604-.308842 .946451-.308842 .278954-.308842V0C.607721-.009963 1.135741-.029888 1.384807-.029888S2.122042-.009963 2.49066 0V-.308842C1.823163-.308842 1.713574-.308842 1.713574-.757161V-3.985056H3.287671Z'/>
diff --git a/Build/source/texk/dvisvgm/tests/sample_v2-wf.svg b/Build/source/texk/dvisvgm/tests/sample_v2-wf.svg
index 40ea8b99425..a6452b182f1 100644
--- a/Build/source/texk/dvisvgm/tests/sample_v2-wf.svg
+++ b/Build/source/texk/dvisvgm/tests/sample_v2-wf.svg
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- This file was generated by dvisvgm 3.2 -->
+<!-- This file was generated by dvisvgm 3.2.1 -->
<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='220.921985pt' height='574.788988pt' viewBox='61.768369 55.84613 220.921985 574.788988'>
<defs>
<font id='cmr10' horiz-adv-x='0'>
diff --git a/Build/source/texk/dvisvgm/tests/sample_v3-nf.svg b/Build/source/texk/dvisvgm/tests/sample_v3-nf.svg
index 7f21fed9074..7aabace829b 100644
--- a/Build/source/texk/dvisvgm/tests/sample_v3-nf.svg
+++ b/Build/source/texk/dvisvgm/tests/sample_v3-nf.svg
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- This file was generated by dvisvgm 3.2 -->
+<!-- This file was generated by dvisvgm 3.2.1 -->
<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='218.980326pt' height='660.082613pt' viewBox='9.148144 43.042023 218.980326 660.082613'>
<defs>
<path id='g0-49' d='M2.929016-6.37609C2.929016-6.615193 2.929016-6.635118 2.699875-6.635118C2.082192-5.997509 1.205479-5.997509 .886675-5.997509V-5.688667C1.085928-5.688667 1.673724-5.688667 2.191781-5.947696V-.787049C2.191781-.428394 2.161893-.308842 1.265255-.308842H.946451V0C1.295143-.029888 2.161893-.029888 2.560399-.029888S3.825654-.029888 4.174346 0V-.308842H3.855542C2.958904-.308842 2.929016-.418431 2.929016-.787049V-6.37609Z'/>
diff --git a/Build/source/texk/dvisvgm/tests/sample_v3-wf.svg b/Build/source/texk/dvisvgm/tests/sample_v3-wf.svg
index d3251e8f7f5..6126ba4d286 100644
--- a/Build/source/texk/dvisvgm/tests/sample_v3-wf.svg
+++ b/Build/source/texk/dvisvgm/tests/sample_v3-wf.svg
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- This file was generated by dvisvgm 3.2 -->
+<!-- This file was generated by dvisvgm 3.2.1 -->
<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='218.980326pt' height='660.082613pt' viewBox='9.148144 43.042023 218.980326 660.082613'>
<defs>
<font id='cmr10' horiz-adv-x='0'>
diff --git a/Build/source/texk/dvisvgm/tests/upjf.svg b/Build/source/texk/dvisvgm/tests/upjf.svg
index a80cd0dee3f..f455b195214 100644
--- a/Build/source/texk/dvisvgm/tests/upjf.svg
+++ b/Build/source/texk/dvisvgm/tests/upjf.svg
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- This file was generated by dvisvgm 3.2 -->
+<!-- This file was generated by dvisvgm 3.2.1 -->
<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='201.738005pt' height='195.306541pt' viewBox='71.354613 56.787049 201.738005 195.306541'>
<defs>
<font id='cmr10' horiz-adv-x='0'>
diff --git a/Build/source/texk/dvisvgm/tests/upjf1.svg b/Build/source/texk/dvisvgm/tests/upjf1.svg
index d9fa80ddb89..1a0c5c8aecc 100644
--- a/Build/source/texk/dvisvgm/tests/upjf1.svg
+++ b/Build/source/texk/dvisvgm/tests/upjf1.svg
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
-<!-- This file was generated by dvisvgm 3.2 -->
+<!-- This file was generated by dvisvgm 3.2.1 -->
<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='201.738005pt' height='195.306541pt' viewBox='71.354613 56.787049 201.738005 195.306541'>
<defs>
<font id='cmr10' horiz-adv-x='0'>
diff --git a/Build/source/texk/dvisvgm/version.ac b/Build/source/texk/dvisvgm/version.ac
index a2a2ae3c425..7359265a853 100644
--- a/Build/source/texk/dvisvgm/version.ac
+++ b/Build/source/texk/dvisvgm/version.ac
@@ -9,4 +9,4 @@ dnl
dnl --------------------------------------------------------
dnl
dnl m4-include this file to define the current dvisvgm version
-m4_define([dvisvgm_version], [3.2])
+m4_define([dvisvgm_version], [3.2.1])