texlive[47608] Build/source/texk: dvisvgm-2.4

commits+kakuto at tug.org commits+kakuto at tug.org
Fri May 4 06:54:00 CEST 2018


Revision: 47608
          http://tug.org/svn/texlive?view=revision&revision=47608
Author:   kakuto
Date:     2018-05-04 06:54:00 +0200 (Fri, 04 May 2018)
Log Message:
-----------
dvisvgm-2.4

Modified Paths:
--------------
    trunk/Build/source/texk/README
    trunk/Build/source/texk/dvisvgm/ChangeLog
    trunk/Build/source/texk/dvisvgm/TLpatches/ChangeLog
    trunk/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles
    trunk/Build/source/texk/dvisvgm/configure
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/NEWS
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/README
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.am
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.in
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/constants.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/platform.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/version.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_hq.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/command.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encode.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/params.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/quality.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/write_bits.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/decode.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/encode.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/xxhash.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/xxhash.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/m4/ax_cxx_compile_stdcxx.m4
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/BoundingBox.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/CommandLine.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.am
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.in
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Process.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialHandler.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ZLibOutputStream.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/options.xml
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorSpecialTest.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/CommandLineTest.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/DvisvgmSpecialTest.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/GhostscriptTest.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/PapersizeSpecialTest.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/SVGOutputTest.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/TpicSpecialTest.cpp
    trunk/Build/source/texk/dvisvgm/version.ac

Added Paths:
-----------
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ImageToSVG.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ImageToSVG.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PDFToSVG.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SourceInput.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SourceInput.hpp

Removed Paths:
-------------
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/context.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/port.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.cpp

Modified: trunk/Build/source/texk/README
===================================================================
--- trunk/Build/source/texk/README	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/README	2018-05-04 04:54:00 UTC (rev 47608)
@@ -59,7 +59,7 @@
 
 dvipsk - maintained here, by us
 
-dvisvgm 2.3.5 - checked 24mar18
+dvisvgm 2.4 - checked 04may18
   http://dvisvgm.bplaced.net/Downloads
 
 gregorio 5.1.1 - checked 25mar18

Modified: trunk/Build/source/texk/dvisvgm/ChangeLog
===================================================================
--- trunk/Build/source/texk/dvisvgm/ChangeLog	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/ChangeLog	2018-05-04 04:54:00 UTC (rev 47608)
@@ -1,3 +1,7 @@
+2018-05-04  Akira Kakuto  <kakuto at fuk.kindai.ac.jp>
+
+	* Import 2.4.
+
 2018-03-24  Akira Kakuto  <kakuto at fuk.kindai.ac.jp>
 
 	* Import 2.3.5.

Modified: trunk/Build/source/texk/dvisvgm/TLpatches/ChangeLog
===================================================================
--- trunk/Build/source/texk/dvisvgm/TLpatches/ChangeLog	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/TLpatches/ChangeLog	2018-05-04 04:54:00 UTC (rev 47608)
@@ -1,3 +1,8 @@
+2018-05-04  Akira Kakuto  <kakuto at fuk.kindai.ac.jp>
+
+	* Import 2.4.
+	* patch-08-makefiles: adapt.
+
 2018-03-24  Akira Kakuto  <kakuto at fuk.kindai.ac.jp>
 
 	* Import 2.3.5.

Modified: trunk/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles
===================================================================
--- trunk/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/TLpatches/patch-08-makefiles	2018-05-04 04:54:00 UTC (rev 47608)
@@ -1,6 +1,6 @@
-diff -u2r dvisvgm-2.3.5/Makefile.am dvisvgm-src/Makefile.am
---- dvisvgm-2.3.5/Makefile.am	Mon Feb 05 19:10:22 2018
-+++ dvisvgm-src/Makefile.am	Sat Mar 24 15:28:20 2018
+diff -u2r dvisvgm-2.4/Makefile.am dvisvgm-src/Makefile.am
+--- dvisvgm-2.4/Makefile.am	Tue Jan 02 18:32:38 2018
++++ dvisvgm-src/Makefile.am	Fri May 04 13:03:43 2018
 @@ -6,5 +6,5 @@
  AUTOMAKE_OPTIONS = foreign
  EXTRA_DIST = COPYING
@@ -8,9 +8,9 @@
 +SUBDIRS = libs src #not for TL: tests doc
  ACLOCAL_AMFLAGS = -I m4
  
-diff -u2r dvisvgm-2.3.5/src/Makefile.am dvisvgm-src/src/Makefile.am
---- dvisvgm-2.3.5/src/Makefile.am	Thu Mar 22 18:24:00 2018
-+++ dvisvgm-src/src/Makefile.am	Sat Mar 24 15:28:48 2018
+diff -u2r dvisvgm-2.4/src/Makefile.am dvisvgm-src/src/Makefile.am
+--- dvisvgm-2.4/src/Makefile.am	Thu May 03 17:27:18 2018
++++ dvisvgm-src/src/Makefile.am	Fri May 04 13:12:50 2018
 @@ -14,8 +14,5 @@
  	$(noinst_LIBRARIES) \
  	../libs/clipper/libclipper.a \
@@ -36,7 +36,7 @@
 +dvisvgm_DEPENDENCIES += $(KPATHSEA_DEPEND) $(ZLIB_DEPEND) $(FREETYPE2_DEPEND)
  
  libdvisvgm_a_SOURCES = \
-@@ -242,35 +248,45 @@
+@@ -246,35 +252,45 @@
  EXTRA_DIST = options.xml options.dtd iapi.h ierrors.h MiKTeXCom.hpp MiKTeXCom.cpp
  
 -AM_CFLAGS = -Wall \
@@ -97,7 +97,7 @@
 +# TL: do not try to rebuild these source files.
  # the command-line parser class is generated from options.xml by opt2cpp
  $(srcdir)/CommandLine.hpp: options.xml
-@@ -285,6 +301,16 @@
+@@ -289,6 +305,16 @@
  
  psdefs.ps: ;
 +endif ! TEXLIVE_BUILD

Modified: trunk/Build/source/texk/dvisvgm/configure
===================================================================
--- trunk/Build/source/texk/dvisvgm/configure	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/configure	2018-05-04 04:54:00 UTC (rev 47608)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for dvisvgm (TeX Live) 2.3.5.
+# Generated by GNU Autoconf 2.69 for dvisvgm (TeX Live) 2.4.
 #
 # Report bugs to <tex-k at tug.org>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='dvisvgm (TeX Live)'
 PACKAGE_TARNAME='dvisvgm--tex-live-'
-PACKAGE_VERSION='2.3.5'
-PACKAGE_STRING='dvisvgm (TeX Live) 2.3.5'
+PACKAGE_VERSION='2.4'
+PACKAGE_STRING='dvisvgm (TeX Live) 2.4'
 PACKAGE_BUGREPORT='tex-k at tug.org'
 PACKAGE_URL=''
 
@@ -1375,7 +1375,7 @@
   # 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) 2.3.5 to adapt to many kinds of systems.
+\`configure' configures dvisvgm (TeX Live) 2.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1446,7 +1446,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of dvisvgm (TeX Live) 2.3.5:";;
+     short | recursive ) echo "Configuration of dvisvgm (TeX Live) 2.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1581,7 +1581,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-dvisvgm (TeX Live) configure 2.3.5
+dvisvgm (TeX Live) configure 2.4
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2449,7 +2449,7 @@
 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 2.3.5, which was
+It was created by dvisvgm (TeX Live) $as_me 2.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -8188,7 +8188,7 @@
 
 # Define the identity of the package.
  PACKAGE='dvisvgm--tex-live-'
- VERSION='2.3.5'
+ VERSION='2.4'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -20189,7 +20189,7 @@
 Report bugs to <bug-libtool at gnu.org>."
 
 lt_cl_version="\
-dvisvgm (TeX Live) config.lt 2.3.5
+dvisvgm (TeX Live) config.lt 2.4
 configured by $0, generated by GNU Autoconf 2.69.
 
 Copyright (C) 2011 Free Software Foundation, Inc.
@@ -23585,7 +23585,7 @@
 # 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 2.3.5, which was
+This file was extended by dvisvgm (TeX Live) $as_me 2.4, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -23651,7 +23651,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-dvisvgm (TeX Live) config.status 2.3.5
+dvisvgm (TeX Live) config.status 2.4
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 

Deleted: trunk/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog	2018-05-04 04:54:00 UTC (rev 47608)
@@ -1,7471 +0,0 @@
-2018-02-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, 
-    src/version.hpp: 
-  set version to 2.3.3 
-
-  * NEWS: 
-  updated NEWS 
-
-2018-02-19  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PdfSpecialHandler.cpp, src/PdfSpecialHandler.hpp: 
-  don't remove fontmap definitions before processing pdf:mapXXX specials 
-
-  * src/FontEngine.cpp: 
-  prevent creating string from nullptr 
-
-2018-02-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, 
-    src/version.hpp: 
-  set version to 2.3.2 
-
-  * src/TpicSpecialHandler.cpp: 
-  prevent potential division by 0 
-
-  * src/dvisvgm.cpp: 
-  prevent dereferencing nullptr (CACHE_PATH) 
-
-  * NEWS: 
-  updated NEWS 
-
-2018-02-05  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIActions.hpp, src/DVIReader.cpp, src/DVIReader.hpp, 
-    src/DVIToSVG.cpp, src/DVIToSVG.hpp, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.hpp: 
-  don't update the SVG position after DVIActions::setChar()
-Otherwise, all 
-  characters get an explicit x position assigned even if it's
-already 
-  reached by applying the character's advance width. 
-
-2018-01-15  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, src/Ghostscript.cpp: 
-  prevent build error if GS development files are missing 
-
-2018-01-14  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/RangeMap.cpp, src/RangeMap.hpp: 
-  added iterator and some getters to RangeMap 
-
-2018-01-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .appveyor.yml: 
-  AppVeyor: fixed download link of ttfautohint-dll 
-
-  * NEWS: 
-  updated NEWS 
-
-2018-01-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in: 
-  manpage: reworded info about option --bbox=preview (closes #83) 
-
-2018-01-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, 
-    src/version.hpp: 
-  set version to 2.3.1 
-
-2018-01-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .appveyor.yml: 
-  updated FreeType to version 2.9 
-
-2018-01-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CMapReader.cpp, src/Directory.cpp, src/Directory.hpp, 
-    src/DvisvgmSpecialHandler.cpp, src/FileFinder.cpp, src/FileFinder.hpp, 
-    src/FilePath.cpp, src/FilePath.hpp, src/FileSystem.cpp, 
-    src/FileSystem.hpp, src/Font.cpp, src/FontCache.cpp, src/FontCache.hpp, 
-    src/FontMap.cpp, src/FontMetrics.cpp, src/FontMetrics.hpp, 
-    src/MetafontWrapper.cpp: 
-  replaced some C string parameters with C++ strings 
-
-2018-01-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * Makefile.am, README, README.md, configure.ac, doc/Makefile.am, 
-    doc/conf-dblatex-man.xsl, doc/conf-dblatex-pdf.xsl, doc/db2html.xsl, 
-    doc/dvisvgm.txt.in, doc/tweak-db-article.xsl, doc/tweak-db-refentry.xsl, 
-    doc/tweak-dblatex-pdf.xsl, libs/Makefile.am, 
-    libs/ff-woff/fontforge/tmpfile2.cpp, src/AGLTable.hpp, 
-    src/BasicDVIReader.cpp, src/BasicDVIReader.hpp, src/Bezier.cpp, 
-    src/Bezier.hpp, src/BgColorSpecialHandler.cpp, 
-    src/BgColorSpecialHandler.hpp, src/Bitmap.cpp, src/Bitmap.hpp, 
-    src/BoundingBox.cpp, src/BoundingBox.hpp, src/CLCommandLine.cpp, 
-    src/CLCommandLine.hpp, src/CLOption.hpp, src/CMap.cpp, src/CMap.hpp, 
-    src/CMapManager.cpp, src/CMapManager.hpp, src/CMapReader.cpp, 
-    src/CMapReader.hpp, src/CRC32.cpp, src/CRC32.hpp, src/Calculator.cpp, 
-    src/Calculator.hpp, src/CharMapID.cpp, src/CharMapID.hpp, 
-    src/Character.hpp, src/Color.cpp, src/Color.hpp, 
-    src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.hpp, 
-    src/CommandLine.hpp, src/DLLoader.cpp, src/DLLoader.hpp, 
-    src/DVIActions.hpp, src/DVIReader.cpp, src/DVIReader.hpp, 
-    src/DVIToSVG.cpp, src/DVIToSVG.hpp, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.hpp, src/DependencyGraph.hpp, src/Directory.cpp, 
-    src/Directory.hpp, src/DvisvgmSpecialHandler.cpp, 
-    src/DvisvgmSpecialHandler.hpp, src/EPSFile.cpp, src/EPSFile.hpp, 
-    src/EPSToSVG.cpp, src/EPSToSVG.hpp, src/EmSpecialHandler.cpp, 
-    src/EmSpecialHandler.hpp, src/EncFile.cpp, src/EncFile.hpp, 
-    src/FileFinder.cpp, src/FileFinder.hpp, src/FilePath.cpp, 
-    src/FilePath.hpp, src/FileSystem.cpp, src/FileSystem.hpp, 
-    src/FixWord.hpp, src/Font.cpp, src/Font.hpp, src/FontCache.cpp, 
-    src/FontCache.hpp, src/FontEncoding.cpp, src/FontEncoding.hpp, 
-    src/FontEngine.cpp, src/FontEngine.hpp, src/FontManager.cpp, 
-    src/FontManager.hpp, src/FontMap.cpp, src/FontMap.hpp, 
-    src/FontMetrics.cpp, src/FontMetrics.hpp, src/FontStyle.hpp, 
-    src/FontWriter.cpp, src/FontWriter.hpp, src/GFGlyphTracer.cpp, 
-    src/GFGlyphTracer.hpp, src/GFReader.cpp, src/GFReader.hpp, 
-    src/GFTracer.cpp, src/GFTracer.hpp, src/Ghostscript.cpp, 
-    src/Ghostscript.hpp, src/Glyph.hpp, src/GlyphTracerMessages.hpp, 
-    src/GraphicsPath.hpp, src/HtmlSpecialHandler.cpp, 
-    src/HtmlSpecialHandler.hpp, src/HyperlinkManager.cpp, 
-    src/HyperlinkManager.hpp, src/InputBuffer.cpp, src/InputBuffer.hpp, 
-    src/InputReader.cpp, src/InputReader.hpp, src/JFM.cpp, src/JFM.hpp, 
-    src/Length.cpp, src/Length.hpp, src/Makefile.am, src/Makefile.old, 
-    src/MapLine.cpp, src/MapLine.hpp, src/Matrix.cpp, src/Matrix.hpp, 
-    src/Message.cpp, src/Message.hpp, src/MessageException.hpp, 
-    src/MetafontWrapper.cpp, src/MetafontWrapper.hpp, src/MiKTeXCom.cpp, 
-    src/MiKTeXCom.hpp, src/NoPsSpecialHandler.cpp, 
-    src/NoPsSpecialHandler.hpp, src/NumericRanges.hpp, src/PDFParser.cpp, 
-    src/PDFParser.hpp, src/PSFilter.hpp, src/PSInterpreter.cpp, 
-    src/PSInterpreter.hpp, src/PSPattern.cpp, src/PSPattern.hpp, 
-    src/PSPreviewFilter.cpp, src/PSPreviewFilter.hpp, src/PageRanges.cpp, 
-    src/PageRanges.hpp, src/PageSize.cpp, src/PageSize.hpp, src/Pair.hpp, 
-    src/PapersizeSpecialHandler.cpp, src/PapersizeSpecialHandler.hpp, 
-    src/PathClipper.cpp, src/PathClipper.hpp, src/PdfSpecialHandler.cpp, 
-    src/PdfSpecialHandler.hpp, src/PreScanDVIReader.cpp, 
-    src/PreScanDVIReader.hpp, src/Process.cpp, src/Process.hpp, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.hpp, src/RangeMap.cpp, 
-    src/RangeMap.hpp, src/SVGCharHandler.cpp, src/SVGCharHandler.hpp, 
-    src/SVGCharHandlerFactory.cpp, src/SVGCharHandlerFactory.hpp, 
-    src/SVGCharPathHandler.cpp, src/SVGCharPathHandler.hpp, 
-    src/SVGCharTspanTextHandler.cpp, src/SVGCharTspanTextHandler.hpp, 
-    src/SVGOutput.cpp, src/SVGOutput.hpp, src/SVGSingleCharTextHandler.cpp, 
-    src/SVGSingleCharTextHandler.hpp, src/SVGTree.cpp, src/SVGTree.hpp, 
-    src/SWFWriter.cpp, src/SWFWriter.hpp, src/ShadingPatch.cpp, 
-    src/ShadingPatch.hpp, src/SignalHandler.cpp, src/SignalHandler.hpp, 
-    src/SpecialActions.hpp, src/SpecialHandler.hpp, src/SpecialManager.cpp, 
-    src/SpecialManager.hpp, src/StreamReader.cpp, src/StreamReader.hpp, 
-    src/StreamWriter.cpp, src/StreamWriter.hpp, src/Subfont.cpp, 
-    src/Subfont.hpp, src/System.cpp, src/System.hpp, src/TFM.cpp, 
-    src/TFM.hpp, src/TTFAutohint.cpp, src/TTFAutohint.hpp, 
-    src/TensorProductPatch.cpp, src/TensorProductPatch.hpp, src/Terminal.cpp, 
-    src/Terminal.hpp, src/ToUnicodeMap.cpp, src/ToUnicodeMap.hpp, 
-    src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.hpp, 
-    src/TriangularPatch.cpp, src/TriangularPatch.hpp, src/TrueTypeFont.cpp, 
-    src/TrueTypeFont.hpp, src/Unicode.cpp, src/Unicode.hpp, 
-    src/VFActions.hpp, src/VFReader.cpp, src/VFReader.hpp, 
-    src/VectorIterator.hpp, src/VectorStream.hpp, src/XMLDocument.cpp, 
-    src/XMLDocument.hpp, src/XMLNode.cpp, src/XMLNode.hpp, src/XMLString.cpp, 
-    src/XMLString.hpp, src/ZLibOutputStream.hpp, src/dvisvgm.cpp, 
-    src/ffwrapper.c, src/ffwrapper.h, src/genhashmap.py, src/gf2xml.cpp, 
-    src/macros.hpp, src/options.dtd, src/options.xml, src/psdefs.cpp, 
-    src/psdefs.ps, src/utility.cpp, src/utility.hpp, src/version.hpp, 
-    src/version.hpp.in, src/windows.hpp, tests/BezierTest.cpp, 
-    tests/BitmapTest.cpp, tests/BoundingBoxTest.cpp, 
-    tests/CMapManagerTest.cpp, tests/CMapReaderTest.cpp, tests/CMapTest.cpp, 
-    tests/CRC32Test.cpp, tests/CalculatorTest.cpp, 
-    tests/ColorSpecialTest.cpp, tests/ColorTest.cpp, 
-    tests/CommandLineTest.cpp, tests/DVIReaderTest.cpp, 
-    tests/DependencyGraphTest.cpp, tests/DirectoryTest.cpp, 
-    tests/DvisvgmSpecialTest.cpp, tests/EmSpecialTest.cpp, 
-    tests/FileFinderTest.cpp, tests/FilePathTest.cpp, 
-    tests/FileSystemTest.cpp, tests/FontCacheTest.cpp, 
-    tests/FontManagerTest.cpp, tests/FontMapTest.cpp, 
-    tests/GFGlyphTracerTest.cpp, tests/GFReaderTest.cpp, 
-    tests/GhostscriptTest.cpp, tests/GraphicsPathTest.cpp, 
-    tests/JFMReaderTest.cpp, tests/LengthTest.cpp, tests/Makefile.am, 
-    tests/MapLineTest.cpp, tests/MatrixTest.cpp, 
-    tests/MessageExceptionTest.cpp, tests/PDFParserTest.cpp, 
-    tests/PSInterpreterTest.cpp, tests/PageRagesTest.cpp, 
-    tests/PageSizeTest.cpp, tests/PairTest.cpp, 
-    tests/PapersizeSpecialTest.cpp, tests/RangeMapTest.cpp, 
-    tests/SVGOutputTest.cpp, tests/ShadingPatchTest.cpp, 
-    tests/SpecialManagerTest.cpp, tests/SplittedCharInputBufferTest.cpp, 
-    tests/StreamInputBufferTest.cpp, tests/StreamReaderTest.cpp, 
-    tests/StreamWriterTest.cpp, tests/StringMatcherTest.cpp, 
-    tests/SubfontTest.cpp, tests/TFMReaderTest.cpp, 
-    tests/TensorProductPatchTest.cpp, tests/ToUnicodeMapTest.cpp, 
-    tests/TpicSpecialTest.cpp, tests/TriangularPatchTest.cpp, 
-    tests/UnicodeTest.cpp, tests/UtilityTest.cpp, 
-    tests/VectorIteratorTest.cpp, tests/VectorStreamTest.cpp, 
-    tests/XMLNodeTest.cpp, tests/XMLStringTest.cpp, tests/check-conv, 
-    tests/create-makefile, tests/data/Makefile.am, tests/genhashcheck.py, 
-    tests/normalize.xsl, tests/testmain.cpp, update-copyright-year.sh: 
-  updated year in copyright statements to 2018 
-
-  * src/dvisvgm.cpp: 
-  avoid potential dangling string pointer to --fontmap argument 
-
-  * src/Font.cpp: 
-  fixed char width of fonts slanted by style option (closes #82) 
-
-2017-12-31  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/TTFAutohint.hpp: 
-  don't declare member variables of TTFAutohint if ttfautohint is not 
-  available 
-
-  * src/FontWriter.cpp: 
-  keep unhinted TTF if autohinting failed 
-
-2017-12-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .appveyor.yml: 
-  AppVeyor: download and install ttfautohint headers 
-
-  * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, 
-    src/version.hpp: 
-  set version to 2.3 
-
-  * NEWS, README, README.md: 
-  updated README and NEWS 
-
-2017-12-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DLLoader.cpp, src/DLLoader.hpp, src/Ghostscript.cpp, 
-    src/TTFAutohint.cpp: 
-  simplify function to load a symbol from a dynamic library 
-
-2017-12-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * cmake-config.h, cmake/FindTTFAutohint.cmake, configure.ac, 
-    src/CMakeLists.txt, src/DLLoader.cpp, src/DLLoader.hpp, 
-    src/FontWriter.cpp, src/Makefile.am, src/TTFAutohint.cpp, 
-    src/TTFAutohint.hpp, src/dvisvgm.cpp: 
-  added code to load libttfautohint dynamically at runtime 
-
-2017-12-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * libs/xxHash/xxhash.c, libs/xxHash/xxhash.h, libs/xxHash/xxhsum.c: 
-  updated xxHash to version 0.6.4 
-
-2017-12-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/gtest/include/gtest/gtest-param-test.h, 
-    tests/gtest/include/gtest/gtest-printers.h, 
-    tests/gtest/include/gtest/gtest-spi.h, 
-    tests/gtest/include/gtest/gtest-typed-test.h, 
-    tests/gtest/include/gtest/gtest.h, 
-    tests/gtest/include/gtest/internal/custom/gtest-port.h, 
-    tests/gtest/include/gtest/internal/custom/gtest.h, 
-    tests/gtest/include/gtest/internal/gtest-internal.h, 
-    tests/gtest/include/gtest/internal/gtest-param-util-generated.h, 
-    tests/gtest/include/gtest/internal/gtest-param-util.h, 
-    tests/gtest/include/gtest/internal/gtest-port-arch.h, 
-    tests/gtest/include/gtest/internal/gtest-port.h, 
-    tests/gtest/src/gtest-death-test.cc, 
-    tests/gtest/src/gtest-internal-inl.h, tests/gtest/src/gtest-port.cc, 
-    tests/gtest/src/gtest-printers.cc, tests/gtest/src/gtest.cc: 
-  updated gtest 
-
-2017-12-19  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac: 
-  configure: dropped check of outdated Ghostscript version 
-
-  * configure.ac, src/Makefile.am: 
-  configure: added --with-kpathsea to set the path of the kpathsea devel 
-  files
-closes #71 
-
-2017-12-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/psdefs.cpp: 
-  psdefs: replaced '6 array' with 'matrix' 
-
-2017-12-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * libs/woff2/Makefile.am, libs/woff2/include/woff2/file.h, 
-    src/CMakeLists.txt, src/FontWriter.cpp, src/FontWriter.hpp, 
-    src/Makefile.am, src/StreamReader.hpp, src/StreamWriter.cpp, 
-    src/StreamWriter.hpp, src/TrueTypeFont.cpp, src/TrueTypeFont.hpp, 
-    src/ffwrapper.c, src/ffwrapper.h, src/utility.cpp, src/utility.hpp: 
-  replaced ff_sfd_to_woff() with TrueTypeFont::writeWOFF() 
-
-  * CMakeLists.txt, cmake-config.h, cmake/FindTTFAutohint.cmake, 
-    configure.ac, src/CMakeLists.txt, src/FontWriter.cpp, src/Makefile.am, 
-    src/dvisvgm.cpp, tests/CMakeLists.txt: 
-  added optional support for ttfautohint 
-
-2017-12-14  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, libs/CMakeLists.txt, libs/Makefile.am, 
-    libs/brotli/CMakeLists.txt, libs/brotli/LICENSE, libs/brotli/Makefile.am, 
-    libs/brotli/common/constants.h, libs/brotli/common/dictionary.c, 
-    libs/brotli/common/dictionary.h, libs/brotli/common/version.h, 
-    libs/brotli/enc/backward_references.c, 
-    libs/brotli/enc/backward_references.h, 
-    libs/brotli/enc/backward_references_hq.c, 
-    libs/brotli/enc/backward_references_hq.h, 
-    libs/brotli/enc/backward_references_inc.h, libs/brotli/enc/bit_cost.c, 
-    libs/brotli/enc/bit_cost.h, libs/brotli/enc/bit_cost_inc.h, 
-    libs/brotli/enc/block_encoder_inc.h, libs/brotli/enc/block_splitter.c, 
-    libs/brotli/enc/block_splitter.h, libs/brotli/enc/block_splitter_inc.h, 
-    libs/brotli/enc/brotli_bit_stream.c, libs/brotli/enc/brotli_bit_stream.h, 
-    libs/brotli/enc/cluster.c, libs/brotli/enc/cluster.h, 
-    libs/brotli/enc/cluster_inc.h, libs/brotli/enc/command.h, 
-    libs/brotli/enc/compress_fragment.c, libs/brotli/enc/compress_fragment.h, 
-    libs/brotli/enc/compress_fragment_two_pass.c, 
-    libs/brotli/enc/compress_fragment_two_pass.h, libs/brotli/enc/context.h, 
-    libs/brotli/enc/dictionary_hash.c, libs/brotli/enc/dictionary_hash.h, 
-    libs/brotli/enc/encode.c, libs/brotli/enc/entropy_encode.c, 
-    libs/brotli/enc/entropy_encode.h, 
-    libs/brotli/enc/entropy_encode_static.h, libs/brotli/enc/fast_log.h, 
-    libs/brotli/enc/find_match_length.h, libs/brotli/enc/hash.h, 
-    libs/brotli/enc/hash_forgetful_chain_inc.h, 
-    libs/brotli/enc/hash_longest_match64_inc.h, 
-    libs/brotli/enc/hash_longest_match_inc.h, 
-    libs/brotli/enc/hash_longest_match_quickly_inc.h, 
-    libs/brotli/enc/hash_to_binary_tree_inc.h, libs/brotli/enc/histogram.c, 
-    libs/brotli/enc/histogram.h, libs/brotli/enc/histogram_inc.h, 
-    libs/brotli/enc/literal_cost.c, libs/brotli/enc/literal_cost.h, 
-    libs/brotli/enc/memory.c, libs/brotli/enc/memory.h, 
-    libs/brotli/enc/metablock.c, libs/brotli/enc/metablock.h, 
-    libs/brotli/enc/metablock_inc.h, libs/brotli/enc/port.h, 
-    libs/brotli/enc/prefix.h, libs/brotli/enc/quality.h, 
-    libs/brotli/enc/ringbuffer.h, libs/brotli/enc/static_dict.c, 
-    libs/brotli/enc/static_dict.h, libs/brotli/enc/static_dict_lut.h, 
-    libs/brotli/enc/utf8_util.c, libs/brotli/enc/utf8_util.h, 
-    libs/brotli/enc/write_bits.h, libs/brotli/include/brotli/decode.h, 
-    libs/brotli/include/brotli/encode.h, libs/brotli/include/brotli/port.h, 
-    libs/brotli/include/brotli/types.h, libs/woff2/CMakeLists.txt, 
-    libs/woff2/Makefile.am, libs/woff2/brotli/LICENSE, 
-    libs/woff2/brotli/Makefile.am, libs/woff2/brotli/common/constants.h, 
-    libs/woff2/brotli/common/dictionary.c, 
-    libs/woff2/brotli/common/dictionary.h, 
-    libs/woff2/brotli/common/version.h, 
-    libs/woff2/brotli/enc/backward_references.c, 
-    libs/woff2/brotli/enc/backward_references.h, 
-    libs/woff2/brotli/enc/backward_references_hq.c, 
-    libs/woff2/brotli/enc/backward_references_hq.h, 
-    libs/woff2/brotli/enc/backward_references_inc.h, 
-    libs/woff2/brotli/enc/bit_cost.c, libs/woff2/brotli/enc/bit_cost.h, 
-    libs/woff2/brotli/enc/bit_cost_inc.h, 
-    libs/woff2/brotli/enc/block_encoder_inc.h, 
-    libs/woff2/brotli/enc/block_splitter.c, 
-    libs/woff2/brotli/enc/block_splitter.h, 
-    libs/woff2/brotli/enc/block_splitter_inc.h, 
-    libs/woff2/brotli/enc/brotli_bit_stream.c, 
-    libs/woff2/brotli/enc/brotli_bit_stream.h, 
-    libs/woff2/brotli/enc/cluster.c, libs/woff2/brotli/enc/cluster.h, 
-    libs/woff2/brotli/enc/cluster_inc.h, libs/woff2/brotli/enc/command.h, 
-    libs/woff2/brotli/enc/compress_fragment.c, 
-    libs/woff2/brotli/enc/compress_fragment.h, 
-    libs/woff2/brotli/enc/compress_fragment_two_pass.c, 
-    libs/woff2/brotli/enc/compress_fragment_two_pass.h, 
-    libs/woff2/brotli/enc/context.h, libs/woff2/brotli/enc/dictionary_hash.c, 
-    libs/woff2/brotli/enc/dictionary_hash.h, libs/woff2/brotli/enc/encode.c, 
-    libs/woff2/brotli/enc/entropy_encode.c, 
-    libs/woff2/brotli/enc/entropy_encode.h, 
-    libs/woff2/brotli/enc/entropy_encode_static.h, 
-    libs/woff2/brotli/enc/fast_log.h, 
-    libs/woff2/brotli/enc/find_match_length.h, libs/woff2/brotli/enc/hash.h, 
-    libs/woff2/brotli/enc/hash_forgetful_chain_inc.h, 
-    libs/woff2/brotli/enc/hash_longest_match64_inc.h, 
-    libs/woff2/brotli/enc/hash_longest_match_inc.h, 
-    libs/woff2/brotli/enc/hash_longest_match_quickly_inc.h, 
-    libs/woff2/brotli/enc/hash_to_binary_tree_inc.h, 
-    libs/woff2/brotli/enc/histogram.c, libs/woff2/brotli/enc/histogram.h, 
-    libs/woff2/brotli/enc/histogram_inc.h, 
-    libs/woff2/brotli/enc/literal_cost.c, 
-    libs/woff2/brotli/enc/literal_cost.h, libs/woff2/brotli/enc/memory.c, 
-    libs/woff2/brotli/enc/memory.h, libs/woff2/brotli/enc/metablock.c, 
-    libs/woff2/brotli/enc/metablock.h, libs/woff2/brotli/enc/metablock_inc.h, 
-    libs/woff2/brotli/enc/port.h, libs/woff2/brotli/enc/prefix.h, 
-    libs/woff2/brotli/enc/quality.h, libs/woff2/brotli/enc/ringbuffer.h, 
-    libs/woff2/brotli/enc/static_dict.c, libs/woff2/brotli/enc/static_dict.h, 
-    libs/woff2/brotli/enc/static_dict_lut.h, 
-    libs/woff2/brotli/enc/utf8_util.c, libs/woff2/brotli/enc/utf8_util.h, 
-    libs/woff2/brotli/enc/write_bits.h, 
-    libs/woff2/brotli/include/brotli/decode.h, 
-    libs/woff2/brotli/include/brotli/encode.h, 
-    libs/woff2/brotli/include/brotli/port.h, 
-    libs/woff2/brotli/include/brotli/types.h, src/CMakeLists.txt, 
-    src/Makefile.am, tests/Makefile.am, tests/create-makefile: 
-  moved brotli from woff2 to libs folder 
-
-2017-12-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * libs/variant/include/mpark/config.hpp, 
-    libs/variant/include/mpark/lib.hpp, 
-    libs/variant/include/mpark/variant.hpp: 
-  updated mpark::variant to 
-  https://github.com/mpark/variant/commit/382014b
-fixes a build error 
-  introduced with MSVC 19.12 
-
-  * tests/CMakeLists.txt: 
-  ctest: colorize test results and keep gtest colors 
-
-2017-12-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, 
-    src/version.hpp: 
-  set version to 2.2.3 
-
-  * NEWS: 
-  updated NEWS 
-
-2017-11-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * libs/woff2/brotli/common/dictionary.h, 
-    libs/woff2/brotli/common/version.h, 
-    libs/woff2/brotli/enc/backward_references_hq.c, 
-    libs/woff2/brotli/enc/backward_references_hq.h, 
-    libs/woff2/brotli/enc/port.h, libs/woff2/brotli/enc/quality.h, 
-    libs/woff2/brotli/include/brotli/decode.h, 
-    libs/woff2/brotli/include/brotli/encode.h: 
-  updated brotli to version 1.0.2 
-
-2017-11-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BgColorSpecialHandler.cpp, src/BoundingBox.cpp, src/BoundingBox.hpp, 
-    src/Color.cpp, src/PathClipper.cpp, src/SVGTree.cpp, 
-    tests/BoundingBoxTest.cpp: 
-  minor code cleanup and improvements 
-
-  * src/DependencyGraph.hpp: 
-  simplified DependencyGraph::GraphNode 
-
-2017-11-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/TpicSpecialTest.cpp: 
-  added missing initializers in TpicSpecialTest 
-
-  * tests/EmSpecialTest.cpp: 
-  added missing initializers in EmSpecialTest 
-
-  * src/DependencyGraph.hpp: 
-  fixed dangling pointer issue in DependencyGraph 
-
-  * src/Makefile.am, tests/Makefile.am, tests/create-makefile: 
-  suppress warnings regarding 'mismatched tags' 
-  (class/struct)
-https://gcc.gnu.org/wiki/FAQ#Why_GCC_does_not_warn_for_mismatch_between_struct_and_class_.28-Wmismatched-tags.29_.3F 
-
-2017-11-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PSPattern.cpp, src/SVGCharHandler.cpp, src/SVGTree.cpp, 
-    src/TpicSpecialHandler.cpp: 
-  removed redundant calls of std::move() 
-
-  * src/Subfont.cpp, src/Subfont.hpp, tests/CMakeLists.txt, 
-    tests/CMapManagerTest.cpp, tests/FileFinderTest.cpp, 
-    tests/FontManagerTest.cpp, tests/Makefile.am, tests/MapLineTest.cpp, 
-    tests/SubfontTest.cpp, tests/create-makefile, tests/testmain.cpp, 
-    tests/testutil.hpp: 
-  tests: moved common initializations to testmain.cpp 
-
-  * src/DVIReader.hpp, tests/CMakeLists.txt, tests/DVIReaderTest.cpp, 
-    tests/Makefile.am, tests/data/Makefile.am, tests/data/cmr10.pfb, 
-    tests/data/sample_v2.dvi, tests/data/sample_v3.dvi: 
-  added test for DVIReader 
-
-2017-11-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * Makefile.am: 
-  removed redundant lcov statement from Makefile 
-
-2017-11-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/CMapTest.cpp, tests/GFReaderTest.cpp, tests/JFMReaderTest.cpp, 
-    tests/RangeMapTest.cpp, tests/TFMReaderTest.cpp, 
-    tests/TensorProductPatchTest.cpp, tests/ToUnicodeMapTest.cpp, 
-    tests/VectorStreamTest.cpp: 
-  tests: few code improvements 
-
-  * README.md: 
-  added donation badge to readme 
-
-2017-11-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Font.cpp, src/Font.hpp: 
-  prevent dangling pointers to font map entries (closes #79) 
-
-  * src/CMapManager.cpp, src/FileFinder.cpp, src/Font.cpp, src/Font.hpp, 
-    src/FontEngine.cpp, src/FontManager.cpp, src/FontMap.cpp, 
-    src/FontMap.hpp, src/Ghostscript.cpp, src/MiKTeXCom.cpp, src/XMLNode.cpp: 
-  replaced null pointer constants with 'nullptr' 
-
-  * src/XMLString.cpp, tests/TensorProductPatchTest.cpp, 
-    tests/XMLStringTest.cpp: 
-  avoid scientific notation when printing floats/doubles 
-
-  * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, 
-    src/version.hpp: 
-  set version to 2.2.2 
-
-  * NEWS: 
-  updated NEWS 
-
-2017-11-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * CMakeLists.txt: 
-  cmake: generate compile_commands.json by default 
-
-2017-11-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, 
-    src/version.hpp: 
-  set version to 2.2.1 
-
-  * NEWS, README.md: 
-  updated NEWS and README 
-
-  * libs/variant/include/mpark/lib.hpp, 
-    libs/variant/include/mpark/variant.hpp: 
-  updated mpark::variant to commit 
-  ea542a0
-https://github.com/mpark/variant/commit/ea542a0fef86fb8c1696238b95bdaddb8ff2337c 
-
-2017-11-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README, README.md, doc/dvisvgm.txt.in: 
-  minor additions/fixes of manpage and README 
-
-2017-11-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/Makefile.am, doc/db2html.xsl, doc/tweak-db-refentry.xsl: 
-  manpage: avoid using 'stats' to improve portability (closes #72) 
-
-2017-10-31  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/InputReader.cpp, src/InputReader.hpp, src/PSInterpreter.cpp: 
-  simplified code to lookup PS operators 
-
-2017-10-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CMakeLists.txt, src/PsSpecialHandler.hpp, src/psdefs.cpp, 
-    src/psdefs.ps, tests/PSInterpreterTest.cpp: 
-  properly apply CTM to linewidth (closes #77) 
-
-  * src/PsSpecialHandler.hpp, src/psdefs.cpp, src/psdefs.ps, 
-    tests/PSInterpreterTest.cpp: 
-  call applyscalevals on every change of the CTM 
-
-2017-10-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/DVIToSVGActions.hpp, 
-    src/DvisvgmSpecialHandler.cpp, src/EPSToSVG.cpp, src/EPSToSVG.hpp, 
-    src/EmSpecialHandler.cpp, src/HyperlinkManager.cpp, src/PSPattern.cpp, 
-    src/PSPattern.hpp, src/PsSpecialHandler.cpp, src/SVGCharHandler.cpp, 
-    src/SVGCharHandler.hpp, src/SVGCharPathHandler.cpp, 
-    src/SVGCharTspanTextHandler.cpp, src/SVGSingleCharTextHandler.cpp, 
-    src/SVGTree.cpp, src/SVGTree.hpp, src/ShadingPatch.hpp, 
-    src/SpecialActions.hpp, src/TpicSpecialHandler.cpp, src/XMLDocument.cpp, 
-    src/XMLDocument.hpp, src/XMLNode.cpp, src/XMLNode.hpp, src/utility.hpp, 
-    tests/DvisvgmSpecialTest.cpp, tests/EmSpecialTest.cpp, 
-    tests/TpicSpecialTest.cpp, tests/XMLNodeTest.cpp: 
-  replaced raw XMLNode pointers with unique_ptrs
-which helps to ensure 
-  proper ownership and simplifies deleting the corresponding objects 
-
-  * src/DependencyGraph.hpp, src/SVGTree.cpp, tests/DependencyGraphTest.cpp: 
-  manage heap memory in DependencyGraph with unique_ptrs 
-
-2017-10-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * libs/ff-woff/fontforge/macbinary.c: 
-  updated link to CTAN:/tools/macutils/crc 
-
-2017-10-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * libs/woff2/include/woff2/version.h: 
-  replaced CRLF line endings 
-
-2017-10-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CMapManager.cpp, src/CMapReader.cpp, src/CMapReader.hpp, 
-    src/DVIActions.hpp, src/DVIToSVG.cpp, src/DVIToSVG.hpp, 
-    src/DVIToSVGActions.hpp, src/FileFinder.cpp, src/Font.cpp, src/Font.hpp, 
-    src/FontEncoding.cpp, src/FontEncoding.hpp, src/FontEngine.cpp, 
-    src/FontEngine.hpp, src/FontManager.cpp, src/FontMetrics.cpp, 
-    src/FontMetrics.hpp, src/PSPattern.hpp, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.hpp, src/SVGCharHandlerFactory.cpp, 
-    src/SVGCharHandlerFactory.hpp, src/SVGOutput.cpp, 
-    src/SVGSingleCharTextHandler.hpp, src/SVGTree.cpp, src/ShadingPatch.cpp, 
-    src/ShadingPatch.hpp, src/SignalHandler.cpp, src/Subfont.cpp, 
-    src/Subfont.hpp, src/XMLNode.cpp, tests/CMapReaderTest.cpp, 
-    tests/ShadingPatchTest.cpp: 
-  replaced several bare new/delete statements with unique pointers 
-
-  * src/dvisvgm.cpp: 
-  fixed output of option --version 
-
-  * src/Length.hpp, src/PageSize.cpp: 
-  added user-defined literals for some length units 
-
-  * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, 
-    src/version.hpp: 
-  set version to 2.2 
-
-  * NEWS, README, README.md: 
-  updated NEWS and README 
-
-2017-10-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontWriter.cpp: 
-  added missing #include of config.h 
-
-  * src/Message.cpp: 
-  check for '\0' at end of DVISVGM_COLORS 
-
-  * src/Subfont.cpp: 
-  don't access unique_ptr after it has been moved 
-
-2017-10-15  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PDFParser.cpp, src/PDFParser.hpp: 
-  replaced shared_ptr with unique_ptr in PDFParser 
-
-2017-10-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * AUTHORS, configure.ac, doc/dvisvgm.txt.in, libs/CMakeLists.txt, 
-    libs/Makefile.am, libs/variant/CMakeLists.txt, libs/variant/LICENSE.md, 
-    libs/variant/Makefile.am, libs/variant/include/mpark/config.hpp, 
-    libs/variant/include/mpark/in_place.hpp, 
-    libs/variant/include/mpark/lib.hpp, 
-    libs/variant/include/mpark/variant.hpp, src/CMakeLists.txt, 
-    src/HyperlinkManager.cpp, src/HyperlinkManager.hpp, src/InputReader.hpp, 
-    src/Makefile.am, src/PDFParser.cpp, src/PDFParser.hpp, 
-    src/PdfSpecialHandler.cpp, src/PdfSpecialHandler.hpp, 
-    tests/CMakeLists.txt, tests/Makefile.am, tests/PDFParserTest.cpp, 
-    tests/SpecialManagerTest.cpp, tests/create-makefile: 
-  added evaluation of PDF hyperlink specials (closes #74) 
-
-  * .travis.yml: 
-  Travis: use gcc 4.9 rather than 4.8 to compile mpark::variant correctly 
-
-2017-10-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CMakeLists.txt, src/HtmlSpecialHandler.cpp, 
-    src/HtmlSpecialHandler.hpp, src/HyperlinkManager.cpp, 
-    src/HyperlinkManager.hpp, src/Makefile.am, src/dvisvgm.cpp: 
-  separated hyperlink functionality from HtmlSpecialHandler to 
-  HyperlinkManager 
-
-2017-10-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * libs/woff2/src/font.cc, libs/woff2/src/normalize.cc, 
-    libs/woff2/src/woff2_enc.cc: 
-  woff2: removed unused variables to prevent compiler warnings 
-
-2017-10-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * libs/woff2/CMakeLists.txt, libs/woff2/Makefile.am, 
-    libs/woff2/include/woff2/decode.h, libs/woff2/include/woff2/encode.h, 
-    libs/woff2/include/woff2/file.h, libs/woff2/include/woff2/output.h, 
-    libs/woff2/include/woff2/version.h, libs/woff2/src/buffer.h, 
-    libs/woff2/src/file.h, libs/woff2/src/font.cc, libs/woff2/src/font.h, 
-    libs/woff2/src/glyph.cc, libs/woff2/src/glyph.h, 
-    libs/woff2/src/normalize.cc, libs/woff2/src/normalize.h, 
-    libs/woff2/src/port.h, libs/woff2/src/round.h, 
-    libs/woff2/src/store_bytes.h, libs/woff2/src/table_tags.cc, 
-    libs/woff2/src/table_tags.h, libs/woff2/src/transform.cc, 
-    libs/woff2/src/transform.h, libs/woff2/src/variable_length.cc, 
-    libs/woff2/src/variable_length.h, libs/woff2/src/woff2_common.cc, 
-    libs/woff2/src/woff2_common.h, libs/woff2/src/woff2_dec.h, 
-    libs/woff2/src/woff2_enc.cc, libs/woff2/src/woff2_enc.h, 
-    libs/woff2/src/woff2_out.cc, libs/woff2/src/woff2_out.h, 
-    src/FontWriter.cpp, src/Makefile.am, src/dvisvgm.cpp: 
-  updated woff2 to version 1.0.1 
-
-2017-10-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CRC32.hpp, src/SpecialManager.hpp, src/Subfont.hpp, src/XMLNode.hpp: 
-  use delete/default to remove/implement constructors 
-
-  * src/XMLNode.cpp, src/XMLNode.hpp: 
-  added move constructor to XMLElementNode 
-
-  * src/Subfont.cpp, src/Subfont.hpp, src/utility.hpp: 
-  removed stream-based constructor of SubfontException 
-
-2017-09-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/PapersizeSpecialHandler.cpp, 
-    src/PapersizeSpecialHandler.hpp, src/PdfSpecialHandler.cpp, 
-    src/PdfSpecialHandler.hpp, src/SpecialManager.cpp, 
-    src/SpecialManager.hpp, tests/PapersizeSpecialTest.cpp: 
-  added evaluation of pdf:pagesize specials 
-
-2017-09-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp, src/Length.hpp, src/PageSize.cpp, src/PageSize.hpp, 
-    src/utility.hpp, tests/PageSizeTest.cpp: 
-  use class Length in PageSize rather than plain numbers 
-
-  * src/BoundingBox.cpp, src/BoundingBox.hpp, src/DVIToSVG.cpp, 
-    src/utility.cpp, src/utility.hpp, tests/BoundingBoxTest.cpp, 
-    tests/UtilityTest.cpp: 
-  rewrite of BoundingBox::extractLengths() 
-
-2017-09-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/TpicSpecialHandler.cpp: 
-  use isxdigit() to check hex digits 
-
-  * src/InputReader.cpp, src/InputReader.hpp, tests/CMakeLists.txt, 
-    tests/Makefile.am, tests/SplittedCharInputBufferTest.cpp, 
-    tests/StreamInputBufferTest.cpp, tests/StringMatcherTest.cpp: 
-  use Knuth-Morris-Pratt algorithm to find a string in a stream 
-
-  * libs/woff2/brotli/common/constants.h, 
-    libs/woff2/brotli/common/dictionary.c, 
-    libs/woff2/brotli/common/dictionary.h, 
-    libs/woff2/brotli/common/version.h, 
-    libs/woff2/brotli/enc/backward_references.c, 
-    libs/woff2/brotli/enc/backward_references_hq.c, 
-    libs/woff2/brotli/enc/backward_references_hq.h, 
-    libs/woff2/brotli/enc/backward_references_inc.h, 
-    libs/woff2/brotli/enc/block_splitter.c, 
-    libs/woff2/brotli/enc/block_splitter_inc.h, 
-    libs/woff2/brotli/enc/brotli_bit_stream.c, 
-    libs/woff2/brotli/enc/brotli_bit_stream.h, 
-    libs/woff2/brotli/enc/cluster_inc.h, libs/woff2/brotli/enc/command.h, 
-    libs/woff2/brotli/enc/compress_fragment.c, 
-    libs/woff2/brotli/enc/compress_fragment_two_pass.c, 
-    libs/woff2/brotli/enc/encode.c, 
-    libs/woff2/brotli/enc/find_match_length.h, libs/woff2/brotli/enc/hash.h, 
-    libs/woff2/brotli/enc/hash_forgetful_chain_inc.h, 
-    libs/woff2/brotli/enc/hash_longest_match64_inc.h, 
-    libs/woff2/brotli/enc/hash_longest_match_inc.h, 
-    libs/woff2/brotli/enc/hash_longest_match_quickly_inc.h, 
-    libs/woff2/brotli/enc/hash_to_binary_tree_inc.h, 
-    libs/woff2/brotli/enc/memory.h, libs/woff2/brotli/enc/port.h, 
-    libs/woff2/brotli/enc/write_bits.h, 
-    libs/woff2/brotli/include/brotli/decode.h, 
-    libs/woff2/brotli/include/brotli/encode.h: 
-  updated Brotli to version 1.0.1 
-
-2017-09-19  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * transfer-cs: 
-  updated makeskel and transfer-cs 
-
-2017-09-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .appveyor.yml: 
-  updated FreeType to version 2.8.1 
-
-2017-09-15  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp, src/SpecialManager.cpp, src/SpecialManager.hpp, 
-    src/utility.hpp, tests/CMakeLists.txt, tests/Makefile.am, 
-    tests/SpecialManagerTest.cpp: 
-  use smart pointers to allocate/deallocate SpecialHandlers 
-
-  * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.hpp, 
-    src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.hpp, 
-    src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.hpp, 
-    src/EmSpecialHandler.cpp, src/EmSpecialHandler.hpp, 
-    src/HtmlSpecialHandler.cpp, src/HtmlSpecialHandler.hpp, 
-    src/NoPsSpecialHandler.cpp, src/NoPsSpecialHandler.hpp, 
-    src/PapersizeSpecialHandler.cpp, src/PapersizeSpecialHandler.hpp, 
-    src/PdfSpecialHandler.cpp, src/PdfSpecialHandler.hpp, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.hpp, 
-    src/SpecialHandler.hpp, src/SpecialManager.cpp, 
-    src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.hpp, 
-    tests/ColorSpecialTest.cpp, tests/PapersizeSpecialTest.cpp: 
-  changed return value of SpecialHandler::prefixes() to std::vector 
-
-2017-09-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/FileSystemTest.cpp: 
-  close streams before removing crresponding files 
-
-  * tests/CMakeLists.txt: 
-  make name of Python script part of custom command 
-
-2017-09-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/CMakeLists.txt: 
-  made testmain a library to prevent separate builds for each test 
-
-2017-09-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/dvisvgm.cpp: 
-  fixed number of dashes printed by option -V1 
-
-2017-09-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DependencyGraph.hpp, src/SVGTree.cpp, tests/DependencyGraphTest.cpp: 
-  DependencyGraph::getKeys(): return result, don't use reference parameter 
-
-  * src/FileFinder.cpp, src/Makefile.am: 
-  added missing #include; added windows.hpp to Makefile.am 
-
-  * tests/CMakeLists.txt, tests/Makefile.am, tests/create-makefile, 
-    tests/gtest/CMakeLists.txt, tests/testmain.cpp: 
-  define variable TEST_ARGV0 to make argv[0] of main() available in 
-  tests
-this is required to initialize kpathsea properly, for example 
-
-  * src/FileFinder.cpp, src/FileFinder.hpp, tests/CMapManagerTest.cpp, 
-    tests/FileFinderTest.cpp, tests/FontManagerTest.cpp, 
-    tests/MapLineTest.cpp, tests/SubfontTest.cpp: 
-  init libkpathsea correctly in tests to prevent assertion failures 
-
-  * libs/xxHash/xxhash.c, libs/xxHash/xxhash.h, libs/xxHash/xxhsum.c: 
-  updated xxhash to version 0.6.3 
-
-2017-09-07  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/CMakeLists.txt, tests/FontCacheTest.cpp, tests/Makefile.am, 
-    tests/create-makefile: 
-  fixed path issue in FontCacheTest 
-
-  * src/GFReader.cpp: 
-  fixed incorrect integer type in GFReader; insert CharInfos with emplace 
-
-  * src/MapLine.cpp, tests/MapLineTest.cpp: 
-  treat prefix "<<" in a mapline as "<[" (skip second char) 
-
-  * doc/dvisvgm.txt.in, src/dvisvgm.cpp: 
-  added pdftex.map to default mapfiles 
-
-2017-09-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BasicDVIReader.cpp, src/BgColorSpecialHandler.cpp, src/Bitmap.cpp, 
-    src/BoundingBox.cpp, src/CMap.cpp, src/CMapReader.cpp, src/CRC32.cpp, 
-    src/Calculator.cpp, src/ColorSpecialHandler.cpp, src/DLLoader.cpp, 
-    src/DVIReader.cpp, src/Directory.cpp, src/EPSFile.cpp, src/EPSToSVG.cpp, 
-    src/EmSpecialHandler.cpp, src/EncFile.cpp, src/FileFinder.cpp, 
-    src/FilePath.cpp, src/Font.cpp, src/FontCache.cpp, src/FontEncoding.cpp, 
-    src/FontEngine.cpp, src/FontManager.cpp, src/FontMap.cpp, 
-    src/FontMap.hpp, src/FontMetrics.cpp, src/FontWriter.cpp, 
-    src/GFGlyphTracer.cpp, src/GFTracer.cpp, src/HtmlSpecialHandler.cpp, 
-    src/InputBuffer.cpp, src/InputReader.cpp, src/JFM.cpp, src/MapLine.cpp, 
-    src/Message.cpp, src/MetafontWrapper.cpp, src/MiKTeXCom.cpp, 
-    src/NoPsSpecialHandler.cpp, src/PSInterpreter.cpp, src/PSPattern.cpp, 
-    src/PSPreviewFilter.cpp, src/PageRanges.cpp, src/PageSize.cpp, 
-    src/PathClipper.cpp, src/PdfSpecialHandler.cpp, src/SVGTree.cpp, 
-    src/SpecialManager.cpp, src/StreamWriter.cpp, src/TFM.cpp, 
-    src/VFReader.cpp, src/XMLDocument.cpp, src/XMLNode.cpp, 
-    src/XMLString.cpp, src/dvisvgm.cpp: 
-  removed redundant #includes of config.h 
-
-  * src/DLLoader.hpp, src/Directory.cpp, src/Directory.hpp, 
-    src/FileSystem.cpp, src/MiKTeXCom.hpp, src/Process.cpp, src/Terminal.cpp, 
-    src/windows.hpp: 
-  disable macros min/max defined in windows.h 
-
-  * src/CLCommandLine.cpp, src/CMapManager.cpp, src/CMapManager.hpp, 
-    src/Calculator.cpp, src/Calculator.hpp, src/DVIToSVG.cpp, 
-    src/DVIToSVGActions.hpp, src/DependencyGraph.hpp, 
-    src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.hpp, 
-    src/EmSpecialHandler.cpp, src/EmSpecialHandler.hpp, src/FileFinder.cpp, 
-    src/Font.cpp, src/Font.hpp, src/FontCache.hpp, src/FontEncoding.cpp, 
-    src/FontManager.cpp, src/FontManager.hpp, src/FontMap.hpp, 
-    src/GFReader.hpp, src/HtmlSpecialHandler.cpp, src/HtmlSpecialHandler.hpp, 
-    src/InputReader.cpp, src/InputReader.hpp, src/Message.cpp, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.hpp, src/SVGTree.cpp, 
-    src/SVGTree.hpp, src/SpecialManager.hpp, src/Subfont.cpp, 
-    src/Subfont.hpp, tests/StreamInputBufferTest.cpp: 
-  replaced std::map with std::unordered_map where possible to increase 
-  performance 
-
-2017-09-05  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/DvisvgmSpecialTest.cpp: 
-  replaced constexpr with const to make clang happy 
-
-  * doc/dvisvgm.txt.in, src/DvisvgmSpecialHandler.cpp, 
-    tests/DvisvgmSpecialTest.cpp: 
-  allow all common length units in dvisvgm specials 
-
-2017-08-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/AGLTable.hpp, src/CMakeLists.txt, src/CMapReader.cpp, src/Color.cpp, 
-    src/CommandLine.hpp, src/FontWriter.cpp, src/genhashmap.py, 
-    tests/genhashcheck.py: 
-  use list initialization on constant std::arrays 
-
-  * tests/MapLineTest.cpp: 
-  added braces to prevent compiler warnings 
-
-2017-08-25  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CMapManager.cpp, src/DvisvgmSpecialHandler.cpp, src/Font.cpp, 
-    src/Ghostscript.cpp, src/PsSpecialHandler.cpp, src/dvisvgm.cpp, 
-    tests/DvisvgmSpecialTest.cpp: 
-  use range-based for to iterate over a fixed sequence of items 
-
-2017-08-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * m4/ax_code_coverage.m4: 
-  updated ax_code_coverage.m4 to version 25 
-
-2017-08-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .appveyor.yml: 
-  updated potrace to version 1.15 
-
-2017-08-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * libs/woff2/src/font.cc, libs/woff2/src/normalize.cc, 
-    libs/woff2/src/port.h, libs/woff2/src/store_bytes.h, 
-    libs/woff2/src/woff2_common.cc, libs/woff2/src/woff2_enc.cc: 
-  updated woff2 to https://github.com/google/woff2/commits/2e09253 
-
-2017-06-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/gf2xml.cpp, src/gf2xml.mak: 
-  added scripts to generate SVG files from GF glyphs 
-
-2017-06-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/gfprint.mak: 
-  updated gfprint utility 
-
-2017-06-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .appveyor.yml: 
-  AppVeyor: changed build image to VS 2017 
-
-2017-06-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp: 
-  psfile: fixed sign of y coordinates 
-
-2017-06-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.hpp: 
-  use bp units for line width and miter limit 
-
-2017-06-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/EPSToSVG.cpp: 
-  remove redundant clipPath elements also when converting EPS files 
-
-2017-05-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/GraphicsPath.hpp: 
-  replaced vector with deque in class GraphicsPath
-due to cheaper front 
-  insertions/deletions 
-
-  * src/PsSpecialHandler.cpp, src/PsSpecialHandler.hpp: 
-  manage memory of ClippingStack with shared pointers
-- automatically 
-  deletes unreferenced path objects
-- avoids keeping popped (and no longer 
-  required) paths in the pool vector 
-
-2017-05-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Pair.hpp, tests/PairTest.cpp: 
-  added abs() and negation operator to class Pair 
-
-  * src/Matrix.hpp, src/PsSpecialHandler.cpp: 
-  respect transformation of PS state in computation of psfile position 
-  (fixes #70) 
-
-  * src/FileFinder.cpp, src/PsSpecialHandler.cpp: 
-  lookup psfile in texmf tree if it's not present in cwd (fixes #69) 
-
-2017-05-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/FontCacheTest.cpp, tests/Makefile.am, tests/create-makefile: 
-  FontCacheTest: write test output to $builddir/data
-$srcdir/data may be 
-  read-only so that the tests fail unintentionally 
-
-2017-05-15  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * libs/woff2/CMakeLists.txt, libs/woff2/brotli/LICENSE, 
-    libs/woff2/brotli/Makefile.am, libs/woff2/brotli/common/constants.h, 
-    libs/woff2/brotli/common/dictionary.c, 
-    libs/woff2/brotli/common/dictionary.h, 
-    libs/woff2/brotli/common/version.h, 
-    libs/woff2/brotli/enc/backward_references.c, 
-    libs/woff2/brotli/enc/backward_references.h, 
-    libs/woff2/brotli/enc/backward_references_hq.c, 
-    libs/woff2/brotli/enc/backward_references_hq.h, 
-    libs/woff2/brotli/enc/backward_references_inc.h, 
-    libs/woff2/brotli/enc/block_splitter_inc.h, 
-    libs/woff2/brotli/enc/command.h, 
-    libs/woff2/brotli/enc/compress_fragment.c, 
-    libs/woff2/brotli/enc/compress_fragment.h, 
-    libs/woff2/brotli/enc/compress_fragment_two_pass.c, 
-    libs/woff2/brotli/enc/compress_fragment_two_pass.h, 
-    libs/woff2/brotli/enc/context.h, libs/woff2/brotli/enc/dictionary_hash.c, 
-    libs/woff2/brotli/enc/dictionary_hash.h, libs/woff2/brotli/enc/encode.c, 
-    libs/woff2/brotli/enc/fast_log.h, libs/woff2/brotli/enc/hash.h, 
-    libs/woff2/brotli/enc/hash_forgetful_chain_inc.h, 
-    libs/woff2/brotli/enc/hash_longest_match64_inc.h, 
-    libs/woff2/brotli/enc/hash_longest_match_inc.h, 
-    libs/woff2/brotli/enc/hash_longest_match_quickly_inc.h, 
-    libs/woff2/brotli/enc/hash_to_binary_tree_inc.h, 
-    libs/woff2/brotli/enc/histogram.c, libs/woff2/brotli/enc/literal_cost.c, 
-    libs/woff2/brotli/enc/memory.h, libs/woff2/brotli/enc/metablock.c, 
-    libs/woff2/brotli/enc/metablock.h, libs/woff2/brotli/enc/quality.h, 
-    libs/woff2/brotli/enc/static_dict.c, libs/woff2/brotli/enc/static_dict.h, 
-    libs/woff2/brotli/include/brotli/decode.h, 
-    libs/woff2/brotli/include/brotli/encode.h, 
-    libs/woff2/brotli/include/brotli/port.h, 
-    libs/woff2/brotli/include/brotli/types.h: 
-  updated brotli to version 0.6.0 
-
-  * .appveyor.yml: 
-  updated FreeType to version 2.8 
-
-2017-05-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Process.cpp: 
-  close pipe if fork() fails 
-
-2017-05-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * CMakeLists.txt, cmake-config.h, configure.ac, src/SignalHandler.cpp, 
-    src/SignalHandler.hpp: 
-  use sigaction() rather than signal() if possible 
-
-  * src/Process.cpp, src/Process.hpp: 
-  refactored Process class
-- use separate class to encapsulate 
-  system-dependent stuff and to ensure
-  proper termination in case of 
-  signals or errors
-- prevent blocking if subprocess doesn't write anything 
-  to stdout/stderr 
-
-2017-04-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Process.cpp: 
-  quit Process::run() if child process terminated unexpectedly (fixes #68) 
-
-2017-04-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/Makefile.am, tests/create-makefile: 
-  added the FontWriter dependencies to the tests 
-
-2017-04-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Color.cpp, src/Color.hpp, src/PSPattern.cpp, 
-    tests/ColorSpecialTest.cpp: 
-  avoid implicit conversion of Color object to RGB integer 
-
-  * src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.hpp, 
-    tests/CMakeLists.txt, tests/Makefile.am, tests/TpicSpecialTest.cpp: 
-  improved the TPIC special handler and added tests for it 
-
-  * src/TpicSpecialHandler.cpp, tests/TpicSpecialTest.cpp: 
-  added evaluation of TPIC's 'tx' special command 
-
-2017-04-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .gitignore: 
-  updated .hgignore 
-
-2017-04-14  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DLLoader.cpp, src/DLLoader.hpp: 
-  added DLLoader::loadLibrary() to assign a different library 
-
-  * src/DLLoader.cpp, src/DLLoader.hpp, src/Ghostscript.cpp: 
-  replaced c-string parameter of DLLoader() and loadLibrary() with string 
-
-  * src/Ghostscript.cpp: 
-  try to load libgs.X.dylib on Mac systems (closes #66) 
-
-2017-03-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * m4/ax_code_coverage.m4, m4/ax_cxx_compile_stdcxx.m4: 
-  updated m4 scripts 
-
-2017-03-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp, tests/FileFinderTest.cpp: 
-  fixed handling of absolute additional directories in FileFinder 
-
-  * .gitignore, CMakeLists.txt, libs/ff-woff/CMakeLists.txt, 
-    src/CMakeLists.txt, tests/CMakeLists.txt: 
-  cmake: fixed build issues when using a separate build directory 
-
-  * tests/FilePathTest.cpp, tests/FontCacheTest.cpp, 
-    tests/SVGOutputTest.cpp: 
-  tests: minor path improvements 
-
-2017-03-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * libs/woff2/src/normalize.cc, libs/woff2/src/woff2_enc.cc: 
-  woff2: removed unused variables 
-
-  * libs/woff2/CMakeLists.txt, src/Makefile.am, src/dvisvgm.cpp: 
-  improved generation of list showing the library versions 
-
-  * src/Color.cpp, src/FilePath.cpp, src/FontWriter.cpp, src/PageSize.cpp, 
-    src/dvisvgm.cpp, src/utility.cpp, src/utility.hpp, tests/UtilityTest.cpp: 
-  util::tolower() no longer modifies its string parameter 
-
-2017-03-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * libs/ff-woff/fontforge/nowakowskittfinstr.c: 
-  ff-woff: removed redundant variables 
-
-  * libs/woff2/Makefile.am, libs/woff2/brotli/Makefile.am, 
-    libs/woff2/brotli/common/constants.h, 
-    libs/woff2/brotli/common/dictionary.c, 
-    libs/woff2/brotli/common/dictionary.h, 
-    libs/woff2/brotli/common/version.h, 
-    libs/woff2/brotli/enc/backward_references.c, 
-    libs/woff2/brotli/enc/backward_references.cc, 
-    libs/woff2/brotli/enc/backward_references.h, 
-    libs/woff2/brotli/enc/backward_references_inc.h, 
-    libs/woff2/brotli/enc/bit_cost.c, libs/woff2/brotli/enc/bit_cost.h, 
-    libs/woff2/brotli/enc/bit_cost_inc.h, 
-    libs/woff2/brotli/enc/block_encoder_inc.h, 
-    libs/woff2/brotli/enc/block_splitter.c, 
-    libs/woff2/brotli/enc/block_splitter.cc, 
-    libs/woff2/brotli/enc/block_splitter.h, 
-    libs/woff2/brotli/enc/block_splitter_inc.h, 
-    libs/woff2/brotli/enc/brotli_bit_stream.c, 
-    libs/woff2/brotli/enc/brotli_bit_stream.cc, 
-    libs/woff2/brotli/enc/brotli_bit_stream.h, 
-    libs/woff2/brotli/enc/cluster.c, libs/woff2/brotli/enc/cluster.h, 
-    libs/woff2/brotli/enc/cluster_inc.h, libs/woff2/brotli/enc/command.h, 
-    libs/woff2/brotli/enc/compress_fragment.c, 
-    libs/woff2/brotli/enc/compress_fragment.cc, 
-    libs/woff2/brotli/enc/compress_fragment.h, 
-    libs/woff2/brotli/enc/compress_fragment_two_pass.c, 
-    libs/woff2/brotli/enc/compress_fragment_two_pass.cc, 
-    libs/woff2/brotli/enc/compress_fragment_two_pass.h, 
-    libs/woff2/brotli/enc/compressor.h, libs/woff2/brotli/enc/context.h, 
-    libs/woff2/brotli/enc/dictionary.cc, libs/woff2/brotli/enc/dictionary.h, 
-    libs/woff2/brotli/enc/dictionary_hash.h, libs/woff2/brotli/enc/encode.c, 
-    libs/woff2/brotli/enc/encode.cc, libs/woff2/brotli/enc/encode.h, 
-    libs/woff2/brotli/enc/encode_parallel.cc, 
-    libs/woff2/brotli/enc/encode_parallel.h, 
-    libs/woff2/brotli/enc/entropy_encode.c, 
-    libs/woff2/brotli/enc/entropy_encode.cc, 
-    libs/woff2/brotli/enc/entropy_encode.h, 
-    libs/woff2/brotli/enc/entropy_encode_static.h, 
-    libs/woff2/brotli/enc/fast_log.h, 
-    libs/woff2/brotli/enc/find_match_length.h, libs/woff2/brotli/enc/hash.h, 
-    libs/woff2/brotli/enc/hash_forgetful_chain_inc.h, 
-    libs/woff2/brotli/enc/hash_longest_match_inc.h, 
-    libs/woff2/brotli/enc/hash_longest_match_quickly_inc.h, 
-    libs/woff2/brotli/enc/histogram.c, libs/woff2/brotli/enc/histogram.cc, 
-    libs/woff2/brotli/enc/histogram.h, libs/woff2/brotli/enc/histogram_inc.h, 
-    libs/woff2/brotli/enc/literal_cost.c, 
-    libs/woff2/brotli/enc/literal_cost.cc, 
-    libs/woff2/brotli/enc/literal_cost.h, libs/woff2/brotli/enc/memory.c, 
-    libs/woff2/brotli/enc/memory.h, libs/woff2/brotli/enc/metablock.c, 
-    libs/woff2/brotli/enc/metablock.cc, libs/woff2/brotli/enc/metablock.h, 
-    libs/woff2/brotli/enc/metablock_inc.h, libs/woff2/brotli/enc/port.h, 
-    libs/woff2/brotli/enc/prefix.h, libs/woff2/brotli/enc/quality.h, 
-    libs/woff2/brotli/enc/ringbuffer.h, libs/woff2/brotli/enc/static_dict.c, 
-    libs/woff2/brotli/enc/static_dict.cc, 
-    libs/woff2/brotli/enc/static_dict.h, 
-    libs/woff2/brotli/enc/static_dict_lut.h, 
-    libs/woff2/brotli/enc/streams.cc, libs/woff2/brotli/enc/streams.h, 
-    libs/woff2/brotli/enc/transform.h, libs/woff2/brotli/enc/types.h, 
-    libs/woff2/brotli/enc/utf8_util.c, libs/woff2/brotli/enc/utf8_util.cc, 
-    libs/woff2/brotli/enc/utf8_util.h, libs/woff2/brotli/enc/write_bits.h, 
-    libs/woff2/brotli/include/brotli/decode.h, 
-    libs/woff2/brotli/include/brotli/encode.h, 
-    libs/woff2/brotli/include/brotli/port.h, 
-    libs/woff2/brotli/include/brotli/types.h, libs/woff2/src/buffer.h, 
-    libs/woff2/src/font.cc, libs/woff2/src/glyph.cc, 
-    libs/woff2/src/variable_length.cc, libs/woff2/src/woff2_dec.h, 
-    libs/woff2/src/woff2_enc.cc, src/Makefile.am: 
-  updated woff2 to https://github.com/google/woff2/commit/68e9ab5 
-
-  * libs/woff2/CMakeLists.txt: 
-  adapted Makefiles to updated libwoff2 
-
-2017-02-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/BezierTest.cpp, tests/BitmapTest.cpp, tests/BoundingBoxTest.cpp, 
-    tests/CMapManagerTest.cpp, tests/CMapReaderTest.cpp, tests/CMapTest.cpp, 
-    tests/CRC32Test.cpp, tests/ColorTest.cpp, tests/CommandLineTest.cpp, 
-    tests/DirectoryTest.cpp, tests/FileSystemTest.cpp, 
-    tests/GraphicsPathTest.cpp, tests/JFMReaderTest.cpp, 
-    tests/MatrixTest.cpp, tests/PageRagesTest.cpp, tests/RangeMapTest.cpp, 
-    tests/SVGOutputTest.cpp, tests/SplittedCharInputBufferTest.cpp, 
-    tests/StreamInputBufferTest.cpp, tests/StreamReaderTest.cpp, 
-    tests/StreamWriterTest.cpp, tests/SubfontTest.cpp, 
-    tests/TFMReaderTest.cpp, tests/ToUnicodeMapTest.cpp, 
-    tests/UnicodeTest.cpp, tests/VectorIteratorTest.cpp, 
-    tests/XMLNodeTest.cpp: 
-  fixed signed/unsigned warnings in tests 
-
-2017-02-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * libs/woff2/brotli/tools/bro.cc, libs/woff2/brotli/tools/rfc-format.py, 
-    libs/woff2/brotli/tools/version.h: 
-  removed redundant files 
-
-  * CMakeLists.txt, cmake-config.h, cmake/CodeCoverage.cmake, 
-    cmake/GetTriple.cmake, libs/CMakeLists.txt, libs/clipper/CMakeLists.txt, 
-    libs/ff-woff/CMakeLists.txt, libs/woff2/CMakeLists.txt, 
-    libs/xxHash/CMakeLists.txt, prepare-cmake.sh, src/CMakeLists.txt, 
-    tests/CMakeLists.txt, tests/gtest/CMakeLists.txt: 
-  improved cmake build environment (works with ninja) 
-
-2017-02-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .appveyor.yml, .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: 
-  set version to 2.1.3 
-
-  * NEWS: 
-  updated NEWS 
-
-2017-02-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * libs/ff-woff/inc/ffintl.h: 
-  ff-woff: removed redundant defines and prototypes to fix build failure 
-  on Solaris 
-
-  * tests/genhashcheck.py: 
-  reformatted genhashcheck 
-
-  * tests/BezierTest.cpp, tests/CRC32Test.cpp, tests/ToUnicodeMapTest.cpp, 
-    tests/UnicodeTest.cpp, tests/VectorIteratorTest.cpp, 
-    tests/XMLNodeTest.cpp: 
-  minor additions to some tests 
-
-2017-02-15  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, libs/ff-woff/Makefile.am, 
-    libs/ff-woff/fontforge/fflocale.c, libs/ff-woff/fontforge/fflocale.h, 
-    libs/ff-woff/fontforge/sfd.c, libs/ff-woff/fontforge/splinefont.h, 
-    libs/ff-woff/fontforge/tottf.c: 
-  ff-woff: only call uselocale() if present, use setlocale() otherwise 
-
-2017-02-14  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README, README.md: 
-  added information on required C++11 compiler to README 
-
-  * tests/genhashcheck.py: 
-  made genhashcheck.py compatible with Python 3 (plus few minor changes) 
-
-2017-02-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/MapLine.hpp: 
-  removed 'expicit' keyword from default constructor to make gcc 4.8 happy 
-
-  * src/Color.cpp, src/Matrix.cpp, src/TpicSpecialHandler.cpp, 
-    src/utility.hpp: 
-  replaced non-standard constant M_PI with own definition 
-
-  * src/Color.cpp, src/Matrix.cpp, src/utility.hpp: 
-  replaced local copies of deg2rad with global function 
-
-2017-02-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS: 
-  updated NEWS 
-
-2017-02-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Calculator.cpp: 
-  fixed number parsing in Calculator class (failed on Mac) 
-
-  * tests/StreamReaderTest.cpp: 
-  clear istream flags to prevent failure of StreamReaderTest 
-
-  * libs/xxHash/xxhash.c, libs/xxHash/xxhash.h: 
-  removed 'restrict' keyword from xxHash 
-
-  * .travis.yml, appveyor.yml, configure.ac, src/Doxyfile, src/version.hpp: 
-  set version to 2.1.2 
-
-2017-02-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .gitignore, .travis.yml, Makefile.am, configure.ac, tests/Makefile.am, 
-    tests/create-makefile, tests/gtest/LICENSE, 
-    tests/gtest/include/gtest/gtest-death-test.h, 
-    tests/gtest/include/gtest/gtest-message.h, 
-    tests/gtest/include/gtest/gtest-param-test.h, 
-    tests/gtest/include/gtest/gtest-printers.h, 
-    tests/gtest/include/gtest/gtest-spi.h, 
-    tests/gtest/include/gtest/gtest-test-part.h, 
-    tests/gtest/include/gtest/gtest-typed-test.h, 
-    tests/gtest/include/gtest/gtest.h, 
-    tests/gtest/include/gtest/gtest_pred_impl.h, 
-    tests/gtest/include/gtest/gtest_prod.h, 
-    tests/gtest/include/gtest/internal/custom/gtest-port.h, 
-    tests/gtest/include/gtest/internal/custom/gtest-printers.h, 
-    tests/gtest/include/gtest/internal/custom/gtest.h, 
-    tests/gtest/include/gtest/internal/gtest-death-test-internal.h, 
-    tests/gtest/include/gtest/internal/gtest-filepath.h, 
-    tests/gtest/include/gtest/internal/gtest-internal.h, 
-    tests/gtest/include/gtest/internal/gtest-linked_ptr.h, 
-    tests/gtest/include/gtest/internal/gtest-param-util-generated.h, 
-    tests/gtest/include/gtest/internal/gtest-param-util.h, 
-    tests/gtest/include/gtest/internal/gtest-port-arch.h, 
-    tests/gtest/include/gtest/internal/gtest-port.h, 
-    tests/gtest/include/gtest/internal/gtest-string.h, 
-    tests/gtest/include/gtest/internal/gtest-tuple.h, 
-    tests/gtest/include/gtest/internal/gtest-type-util.h, 
-    tests/gtest/src/gtest-all.cc, tests/gtest/src/gtest-death-test.cc, 
-    tests/gtest/src/gtest-filepath.cc, tests/gtest/src/gtest-internal-inl.h, 
-    tests/gtest/src/gtest-port.cc, tests/gtest/src/gtest-printers.cc, 
-    tests/gtest/src/gtest-test-part.cc, tests/gtest/src/gtest-typed-test.cc, 
-    tests/gtest/src/gtest.cc, tests/gtest/src/gtest_main.cc: 
-  bundle gtest with the sources to simplify building and running the tests 
-
-  * src/Directory.cpp, tests/DirectoryTest.cpp: 
-  prevent calling closedir() with null pointer argument 
-
-  * src/VectorStream.hpp: 
-  don't access first vector component if the vector is empty 
-
-  * src/GFReader.cpp, src/StreamReader.cpp, tests/GFReaderTest.cpp, 
-    tests/StreamReaderTest.cpp: 
-  improved implementation of getString() 
-
-  * src/CLCommandLine.cpp: 
-  reset status flags before changing the sstream source 
-
-2017-02-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/CommandLineTest.cpp: 
-  removed redundant function 
-
-  * src/XMLString.cpp, tests/EmSpecialTest.cpp, tests/GFGlyphTracerTest.cpp: 
-  avoid negative zeros (-0) in SVG output 
-
-  * src/BoundingBox.cpp: 
-  fixed memory issue in BoundingBox class 
-
-  * src/CMapReader.cpp, src/InputReader.cpp, src/InputReader.hpp, 
-    tests/SplittedCharInputBufferTest.cpp, tests/StreamInputBufferTest.cpp: 
-  fixed potential number overflow issue 
-
-  * tests/CMapReaderTest.cpp: 
-  fixed memory leak in CMapReaderTest 
-
-  * src/Subfont.cpp: 
-  fixed memory leak in Subfont class 
-
-  * src/XMLNode.cpp: 
-  fixed memory leak in class XMLElementNode 
-
-2017-02-07  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac: 
-  replaced deprecated AC_CONFIG_HEADER 
-
-  * NEWS: 
-  updated NEWS 
-
-2017-02-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .travis.yml, appveyor.yml, configure.ac, src/Doxyfile, src/version.hpp: 
-  set version to 2.1.1 
-
-2017-02-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/FontCacheTest.cpp: 
-  fixed FontCacheTest ('make distcheck' failed) 
-
-2017-02-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Color.cpp, src/Color.hpp, src/VectorIterator.hpp, 
-    tests/ColorTest.cpp, tests/VectorIteratorTest.cpp: 
-  increased coverage of ColorTest 
-
-  * configure.ac, libs/ff-woff/fontforge/splinefont.h: 
-  include xlocale.h in ff-woff if available (fixes #65) 
-
-2017-02-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Makefile.am: 
-  removed spurious colon from src/Makefile.am 
-
-  * configure.ac: 
-  allow C++11 language extensions if necessary 
-
-  * src/Font.cpp, src/Font.hpp: 
-  report Metafont failures only once for each font 
-
-2017-01-31  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README, README.md: 
-  README: updated links, added release badge 
-
-2017-01-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/FontManagerTest.cpp, tests/data/cmr10.pfb: 
-  prevent FontManagerTest to fail due to missing font files 
-
-2017-01-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/MapLine.cpp, src/MapLine.hpp, tests/ColorSpecialTest.cpp, 
-    tests/FontMapTest.cpp, tests/LengthTest.cpp, tests/MapLineTest.cpp: 
-  improved a couple of test cases 
-
-2017-01-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Matrix.cpp, tests/MatrixTest.cpp: 
-  minor changes of matrix class; improved MatrixTest 
-
-2017-01-25  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PapersizeSpecialHandler.cpp, src/PapersizeSpecialHandler.hpp, 
-    tests/Makefile.am, tests/PapersizeSpecialTest.cpp, tests/create-makefile: 
-  added PapersizeSpecialTest 
-
-  * tests/CMapManagerTest.cpp, tests/CMapReaderTest.cpp, 
-    tests/DvisvgmSpecialTest.cpp, tests/EmSpecialTest.cpp, 
-    tests/FileFinderTest.cpp, tests/FontManagerTest.cpp, 
-    tests/JFMReaderTest.cpp, tests/MapLineTest.cpp, tests/SubfontTest.cpp, 
-    tests/TFMReaderTest.cpp, tests/TensorProductPatchTest.cpp: 
-  added 'override' specifier to gtest methods 
-
-  * src/FontCache.cpp, src/FontCache.hpp, tests/FontCacheTest.cpp, 
-    tests/Makefile.am: 
-  added FontCacheTest 
-
-  * tests/Makefile.am, tests/create-makefile: 
-  removed redundant linker flag from tests 
-
-  * m4/ax_code_coverage.m4, m4/ax_cxx_compile_stdcxx.m4: 
-  updated m4 scripts to latest versions 
-
-2017-01-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README.md, appveyor.yml: 
-  added basic appveyor.yml 
-
-2017-01-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/options.xml: 
-  get name of options.xml from command-line; fixed indentation 
-
-  * src/genhashmap.cpp, src/genhashmap.py, src/glyphlist/Makefile, 
-    src/glyphlist/glyphlist.dtd, src/glyphlist/glyphlist.xsl, 
-    src/glyphlist/xmlify.py: 
-  improved generation of AGLTable.hpp 
-
-2017-01-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * libs/ff-woff/Makefile.am, libs/ff-woff/fontforge/fontforge.h, 
-    libs/ff-woff/fontforge/tmpfile2.cpp, libs/ff-woff/fontforge/utils.c, 
-    src/dvisvgm.cpp: 
-  improved error handling of tmpfile2() in ff-woff
-The FontForge library 
-  doesn't check the return value of tmpfile() which may lead
-to segfaults. 
-  The replacement function tmpfile2() throws an exception or calls
-exit() 
-  so that dvisvgm can terminate more cleanly. 
-
-2017-01-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BoundingBox.cpp, src/Color.cpp, src/DVIToSVGActions.cpp, 
-    src/FilePath.cpp, src/FileSystem.cpp, src/FontWriter.cpp, 
-    src/Makefile.am, src/PageSize.cpp, src/SVGOutput.cpp, src/utility.cpp, 
-    src/utility.hpp, tests/Makefile.am, tests/UtilityTest.cpp: 
-  moved common utility functions to separate compilation unit and 
-  namespace 
-
-  * src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/EPSToSVG.cpp: 
-  get program name and version from version.hpp, avoid using macros from 
-  config.h 
-
-  * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: 
-  set version to 2.1 
-
-  * NEWS: 
-  updated NEWS 
-
-2017-01-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * libs/ff-woff/fontforge/utils.c, src/FileSystem.cpp, src/FileSystem.hpp, 
-    src/Font.cpp, src/FontWriter.cpp, src/GlyphTracerMessages.hpp, 
-    src/MetafontWrapper.cpp, src/MetafontWrapper.hpp, src/Process.cpp, 
-    src/Process.hpp, src/SVGOutput.cpp, src/SVGOutput.hpp: 
-  create temp files in the system's temp folder rather than in cwd (closes 
-  #63) 
-
-  * doc/dvisvgm.txt.in, src/CommandLine.hpp, src/dvisvgm.cpp, 
-    src/options.xml: 
-  added option --tmpdir to select a different temp folder 
-
-  * src/FontWriter.cpp, src/FontWriter.hpp: 
-  print error message if FontWriter can't write temporary files 
-
-2017-01-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FilePath.cpp, src/FilePath.hpp, tests/FilePathTest.cpp, 
-    tests/SVGOutputTest.cpp: 
-  retain letter case of filenames (Windows) 
-
-  * src/DVIToSVG.cpp, src/EPSToSVG.cpp, src/SVGTree.hpp: 
-  print warning message if output file could not be written 
-
-  * tests/GhostscriptTest.cpp: 
-  disable GS banner in GhostscriptTest 
-
-2017-01-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp, src/dvisvgm.cpp: 
-  added missing newlines in messages; fixed typo 
-
-2017-01-05  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/AGLTable.hpp, src/genhashmap.cpp, src/glyphlist.txt, 
-    src/glyphlist/Makefile, src/glyphlist/glyphlist-tex.txt, 
-    src/glyphlist/glyphlist.dtd, src/glyphlist/glyphlist.txt, 
-    src/glyphlist/glyphlist.xsl, src/glyphlist/xmlify.py: 
-  updated AGL table and removed colliding codepoints (closes #64) 
-
-2017-01-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * Makefile.am, README, README.md, configure.ac, doc/Makefile.am, 
-    doc/conf-dblatex-man.xsl, doc/conf-dblatex-pdf.xsl, doc/db2html.xsl, 
-    doc/dvisvgm.txt.in, doc/tweak-db-article.xsl, doc/tweak-dblatex-pdf.xsl, 
-    libs/Makefile.am, src/AGLTable.hpp, src/BasicDVIReader.cpp, 
-    src/BasicDVIReader.hpp, src/Bezier.cpp, src/Bezier.hpp, 
-    src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.hpp, 
-    src/Bitmap.cpp, src/Bitmap.hpp, src/BoundingBox.cpp, src/BoundingBox.hpp, 
-    src/CLCommandLine.cpp, src/CLCommandLine.hpp, src/CLOption.hpp, 
-    src/CMap.cpp, src/CMap.hpp, src/CMapManager.cpp, src/CMapManager.hpp, 
-    src/CMapReader.cpp, src/CMapReader.hpp, src/CRC32.cpp, src/CRC32.hpp, 
-    src/Calculator.cpp, src/Calculator.hpp, src/CharMapID.cpp, 
-    src/CharMapID.hpp, src/Character.hpp, src/Color.cpp, src/Color.hpp, 
-    src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.hpp, 
-    src/CommandLine.hpp, src/DLLoader.cpp, src/DLLoader.hpp, 
-    src/DVIActions.hpp, src/DVIReader.cpp, src/DVIReader.hpp, 
-    src/DVIToSVG.cpp, src/DVIToSVG.hpp, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.hpp, src/DependencyGraph.hpp, src/Directory.cpp, 
-    src/Directory.hpp, src/DvisvgmSpecialHandler.cpp, 
-    src/DvisvgmSpecialHandler.hpp, src/EPSFile.cpp, src/EPSFile.hpp, 
-    src/EPSToSVG.cpp, src/EPSToSVG.hpp, src/EmSpecialHandler.cpp, 
-    src/EmSpecialHandler.hpp, src/EncFile.cpp, src/EncFile.hpp, 
-    src/FileFinder.cpp, src/FileFinder.hpp, src/FilePath.cpp, 
-    src/FilePath.hpp, src/FileSystem.cpp, src/FileSystem.hpp, 
-    src/FixWord.hpp, src/Font.cpp, src/Font.hpp, src/FontCache.cpp, 
-    src/FontCache.hpp, src/FontEncoding.cpp, src/FontEncoding.hpp, 
-    src/FontEngine.cpp, src/FontEngine.hpp, src/FontManager.cpp, 
-    src/FontManager.hpp, src/FontMap.cpp, src/FontMap.hpp, 
-    src/FontMetrics.cpp, src/FontMetrics.hpp, src/FontStyle.hpp, 
-    src/FontWriter.cpp, src/FontWriter.hpp, src/GFGlyphTracer.cpp, 
-    src/GFGlyphTracer.hpp, src/GFReader.cpp, src/GFReader.hpp, 
-    src/GFTracer.cpp, src/GFTracer.hpp, src/Ghostscript.cpp, 
-    src/Ghostscript.hpp, src/Glyph.hpp, src/GlyphTracerMessages.hpp, 
-    src/GraphicsPath.hpp, src/HtmlSpecialHandler.cpp, 
-    src/HtmlSpecialHandler.hpp, src/InputBuffer.cpp, src/InputBuffer.hpp, 
-    src/InputReader.cpp, src/InputReader.hpp, src/JFM.cpp, src/JFM.hpp, 
-    src/Length.cpp, src/Length.hpp, src/Makefile.am, src/Makefile.old, 
-    src/MapLine.cpp, src/MapLine.hpp, src/Matrix.cpp, src/Matrix.hpp, 
-    src/Message.cpp, src/Message.hpp, src/MessageException.hpp, 
-    src/MetafontWrapper.cpp, src/MetafontWrapper.hpp, src/MiKTeXCom.cpp, 
-    src/MiKTeXCom.hpp, src/NoPsSpecialHandler.cpp, 
-    src/NoPsSpecialHandler.hpp, src/NumericRanges.hpp, src/PSFilter.hpp, 
-    src/PSInterpreter.cpp, src/PSInterpreter.hpp, src/PSPattern.cpp, 
-    src/PSPattern.hpp, src/PSPreviewFilter.cpp, src/PSPreviewFilter.hpp, 
-    src/PageRanges.cpp, src/PageRanges.hpp, src/PageSize.cpp, 
-    src/PageSize.hpp, src/Pair.hpp, src/PapersizeSpecialHandler.cpp, 
-    src/PapersizeSpecialHandler.hpp, src/PathClipper.cpp, 
-    src/PathClipper.hpp, src/PdfSpecialHandler.cpp, 
-    src/PdfSpecialHandler.hpp, src/PreScanDVIReader.cpp, 
-    src/PreScanDVIReader.hpp, src/Process.cpp, src/Process.hpp, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.hpp, src/RangeMap.cpp, 
-    src/RangeMap.hpp, src/SVGCharHandler.cpp, src/SVGCharHandler.hpp, 
-    src/SVGCharHandlerFactory.cpp, src/SVGCharHandlerFactory.hpp, 
-    src/SVGCharPathHandler.cpp, src/SVGCharPathHandler.hpp, 
-    src/SVGCharTspanTextHandler.cpp, src/SVGCharTspanTextHandler.hpp, 
-    src/SVGOutput.cpp, src/SVGOutput.hpp, src/SVGSingleCharTextHandler.cpp, 
-    src/SVGSingleCharTextHandler.hpp, src/SVGTree.cpp, src/SVGTree.hpp, 
-    src/SWFWriter.cpp, src/SWFWriter.hpp, src/ShadingPatch.cpp, 
-    src/ShadingPatch.hpp, src/SignalHandler.cpp, src/SignalHandler.hpp, 
-    src/SpecialActions.hpp, src/SpecialHandler.hpp, src/SpecialManager.cpp, 
-    src/SpecialManager.hpp, src/StreamReader.cpp, src/StreamReader.hpp, 
-    src/StreamWriter.cpp, src/StreamWriter.hpp, src/Subfont.cpp, 
-    src/Subfont.hpp, src/System.cpp, src/System.hpp, src/TFM.cpp, 
-    src/TFM.hpp, src/TensorProductPatch.cpp, src/TensorProductPatch.hpp, 
-    src/Terminal.cpp, src/Terminal.hpp, src/ToUnicodeMap.cpp, 
-    src/ToUnicodeMap.hpp, src/TpicSpecialHandler.cpp, 
-    src/TpicSpecialHandler.hpp, src/TriangularPatch.cpp, 
-    src/TriangularPatch.hpp, src/Unicode.cpp, src/Unicode.hpp, 
-    src/VFActions.hpp, src/VFReader.cpp, src/VFReader.hpp, 
-    src/VectorIterator.hpp, src/VectorStream.hpp, src/XMLDocument.cpp, 
-    src/XMLDocument.hpp, src/XMLNode.cpp, src/XMLNode.hpp, src/XMLString.cpp, 
-    src/XMLString.hpp, src/ZLibOutputStream.hpp, src/dvisvgm.cpp, 
-    src/ffwrapper.c, src/ffwrapper.h, src/macros.hpp, src/options.dtd, 
-    src/options.xml, src/psdefs.cpp, src/psdefs.ps, src/version.hpp, 
-    src/version.hpp.in, tests/BezierTest.cpp, tests/BitmapTest.cpp, 
-    tests/BoundingBoxTest.cpp, tests/CMapManagerTest.cpp, 
-    tests/CMapReaderTest.cpp, tests/CMapTest.cpp, tests/CRC32Test.cpp, 
-    tests/CalculatorTest.cpp, tests/ColorSpecialTest.cpp, 
-    tests/ColorTest.cpp, tests/CommandLineTest.cpp, 
-    tests/DependencyGraphTest.cpp, tests/DirectoryTest.cpp, 
-    tests/DvisvgmSpecialTest.cpp, tests/EmSpecialTest.cpp, 
-    tests/FileFinderTest.cpp, tests/FilePathTest.cpp, 
-    tests/FileSystemTest.cpp, tests/FontManagerTest.cpp, 
-    tests/FontMapTest.cpp, tests/GFGlyphTracerTest.cpp, 
-    tests/GFReaderTest.cpp, tests/GraphicsPathTest.cpp, 
-    tests/JFMReaderTest.cpp, tests/LengthTest.cpp, tests/Makefile.am, 
-    tests/MapLineTest.cpp, tests/MatrixTest.cpp, 
-    tests/MessageExceptionTest.cpp, tests/PSInterpreterTest.cpp, 
-    tests/PageRagesTest.cpp, tests/PageSizeTest.cpp, tests/PairTest.cpp, 
-    tests/RangeMapTest.cpp, tests/SVGOutputTest.cpp, 
-    tests/ShadingPatchTest.cpp, tests/SplittedCharInputBufferTest.cpp, 
-    tests/StreamInputBufferTest.cpp, tests/StreamReaderTest.cpp, 
-    tests/StreamWriterTest.cpp, tests/SubfontTest.cpp, 
-    tests/TFMReaderTest.cpp, tests/TensorProductPatchTest.cpp, 
-    tests/ToUnicodeMapTest.cpp, tests/TriangularPatchTest.cpp, 
-    tests/UnicodeTest.cpp, tests/VectorIteratorTest.cpp, 
-    tests/VectorStreamTest.cpp, tests/XMLNodeTest.cpp, 
-    tests/XMLStringTest.cpp, tests/check-conv, tests/create-makefile, 
-    tests/data/Makefile.am, tests/genhashcheck.py, tests/normalize.xsl: 
-  updated year in copyright statements to 2017 
-
-2016-12-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/Makefile.am, doc/conf-dblatex-pdf.xsl, doc/db2html.xsl, 
-    doc/dvisvgm.txt.in, doc/dvisvgm.xpr, doc/tweak-db-article.xsl: 
-  manpage: minor refactorings of the XSLT scripts; added generation of 
-  epub 
-
-2016-12-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/conf-dblatex-man.xsl, doc/conf-dblatex-pdf.xsl, doc/db2html.xsl, 
-    doc/tweak-dblatex-pdf.xsl: 
-  added missing email address to copyright headers 
-
-  * doc/conf-dblatex-man.xsl, doc/conf-dblatex-pdf.xsl, 
-    doc/tweak-dblatex-pdf.xsl: 
-  indent with tabs rather than spaces 
-
-  * doc/db2html.xsl: 
-  manpage: replace icon of Author section 
-
-  * doc/conf-dblatex-pdf.xsl, doc/tweak-dblatex-pdf.xsl: 
-  manpage: use mixed case titles in pdf output 
-
-2016-12-15  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/db2html.xsl, doc/dvisvgm.xpr: 
-  manpage: preserve whitespace in list of supported specials 
-
-2016-11-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac: 
-  ensure compiling C files with --std=c99 
-
-2016-11-14  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS: 
-  updated NEWS 
-
-2016-11-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in: 
-  minor changes in manpage 
-
-  * README, README.md, configure.ac, libs/Makefile.am, libs/ff-woff/LICENSE, 
-    libs/ff-woff/Makefile.am, libs/ff-woff/README.md, 
-    libs/ff-woff/fontforge/PfEd.h, libs/ff-woff/fontforge/alphabet.c, 
-    libs/ff-woff/fontforge/asmfpst.c, libs/ff-woff/fontforge/autohint.c, 
-    libs/ff-woff/fontforge/char.c, libs/ff-woff/fontforge/cjk.c, 
-    libs/ff-woff/fontforge/configure-fontforge.h, 
-    libs/ff-woff/fontforge/cvundoes.c, libs/ff-woff/fontforge/dumppfa.c, 
-    libs/ff-woff/fontforge/edgelist.h, libs/ff-woff/fontforge/edgelist2.h, 
-    libs/ff-woff/fontforge/encoding.c, libs/ff-woff/fontforge/encoding.h, 
-    libs/ff-woff/fontforge/fontforge-config.h, 
-    libs/ff-woff/fontforge/fontforge.h, libs/ff-woff/fontforge/fontforgevw.h, 
-    libs/ff-woff/fontforge/fvfonts.c, libs/ff-woff/fontforge/gwwiconv.c, 
-    libs/ff-woff/fontforge/libffstamp.h, libs/ff-woff/fontforge/lookups.c, 
-    libs/ff-woff/fontforge/macbinary.c, libs/ff-woff/fontforge/macenc.c, 
-    libs/ff-woff/fontforge/mathconstants.c, libs/ff-woff/fontforge/memory.c, 
-    libs/ff-woff/fontforge/mm.c, libs/ff-woff/fontforge/namehash.h, 
-    libs/ff-woff/fontforge/namelist.c, libs/ff-woff/fontforge/nouiutil.c, 
-    libs/ff-woff/fontforge/nowakowskittfinstr.c, 
-    libs/ff-woff/fontforge/parsepfa.c, libs/ff-woff/fontforge/parsettf.c, 
-    libs/ff-woff/fontforge/parsettfatt.c, libs/ff-woff/fontforge/psfont.h, 
-    libs/ff-woff/fontforge/psread.c, libs/ff-woff/fontforge/pua.c, 
-    libs/ff-woff/fontforge/sd.h, libs/ff-woff/fontforge/sfd.c, 
-    libs/ff-woff/fontforge/sfd1.c, libs/ff-woff/fontforge/sfd1.h, 
-    libs/ff-woff/fontforge/splinechar.c, libs/ff-woff/fontforge/splinefont.c, 
-    libs/ff-woff/fontforge/splinefont.h, 
-    libs/ff-woff/fontforge/splineorder2.c, 
-    libs/ff-woff/fontforge/splineoverlap.c, 
-    libs/ff-woff/fontforge/splinerefigure.c, 
-    libs/ff-woff/fontforge/splinesave.c, 
-    libs/ff-woff/fontforge/splinesaveafm.c, 
-    libs/ff-woff/fontforge/splineutil.c, 
-    libs/ff-woff/fontforge/splineutil2.c, libs/ff-woff/fontforge/start.c, 
-    libs/ff-woff/fontforge/stemdb.c, libs/ff-woff/fontforge/stemdb.h, 
-    libs/ff-woff/fontforge/tables.h, libs/ff-woff/fontforge/tottf.c, 
-    libs/ff-woff/fontforge/tottfaat.c, libs/ff-woff/fontforge/tottfgpos.c, 
-    libs/ff-woff/fontforge/tottfvar.c, libs/ff-woff/fontforge/ttf.h, 
-    libs/ff-woff/fontforge/ttfinstrs.c, libs/ff-woff/fontforge/ttfinstrs.h, 
-    libs/ff-woff/fontforge/ttfspecial.c, 
-    libs/ff-woff/fontforge/uiinterface.h, libs/ff-woff/fontforge/unialt.c, 
-    libs/ff-woff/fontforge/ustring.c, libs/ff-woff/fontforge/utils.c, 
-    libs/ff-woff/fontforge/utype.c, libs/ff-woff/fontforge/woff.c, 
-    libs/ff-woff/inc/basics.h, libs/ff-woff/inc/chardata.h, 
-    libs/ff-woff/inc/charset.h, libs/ff-woff/inc/dlist.h, 
-    libs/ff-woff/inc/gimage.h, libs/ff-woff/inc/gnetwork.h, 
-    libs/ff-woff/inc/gwwiconv.h, libs/ff-woff/inc/intl.h, 
-    libs/ff-woff/inc/ustring.h, libs/ff-woff/inc/utype.h, src/Makefile.am: 
-  bundle reduced fontforge library (ff-woff) 
-
-  * configure.ac, libs/Makefile.am, libs/clipper/Makefile.am, 
-    libs/ff-woff/Makefile.am, libs/woff2/Makefile.am, 
-    libs/woff2/brotli/Makefile.am, libs/woff2/brotli/enc/Makefile.am, 
-    libs/woff2/src/Makefile.am, src/Makefile.am: 
-  added license files of bundled libraries; relocated Makefiles 
-
-  * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: 
-  set version to 2.0.4 
-
-2016-11-07  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CommandLine.hpp, src/options.xml: 
-  fixed a typo in the --help output 
-
-  * src/BasicDVIReader.cpp, src/BasicDVIReader.hpp, src/DVIReader.cpp, 
-    src/DVIReader.hpp: 
-  use const variables for DVI opcodes rather than the values directly 
-
-2016-11-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontWriter.cpp: 
-  few cosmetic changes; added comments 
-
-2016-09-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: 
-  set version to 2.0.3 
-
-  * NEWS, README, README.md: 
-  updated NEWS and README 
-
-2016-09-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/DVIReader.hpp, src/DVIToSVG.cpp, 
-    src/DVIToSVG.hpp: 
-  dropped tracking of previous DVI state from DVIReader 
-
-  * src/DVIReader.cpp: 
-  fixed positioning of rules 
-
-2016-09-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/DVIReader.hpp, src/DVIToSVG.cpp: 
-  fixed regression in character positioning of of virtual fonts 
-
-2016-09-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp: 
-  fixed type regression in computation of DVI positions (closes #61) 
-
-  * src/RangeMap.cpp: 
-  don't decrement iterator if it points to begin() 
-
-  * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: 
-  set version to 2.0.2 
-
-  * NEWS, README.md: 
-  updated NEWS and README 
-
-2016-09-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: 
-  set version to 2.0.1 
-
-  * NEWS, README, README.md: 
-  updated NEWS and README 
-
-2016-08-31  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README, README.md: 
-  added link to reduced FF library to README 
-
-  * doc/dvisvgm.txt.in, src/FontWriter.cpp, src/FontWriter.hpp, 
-    src/SVGTree.cpp, src/SVGTree.hpp, src/ffwrapper.c: 
-  added option to autohint fonts created by the FontForge library 
-
-2016-08-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVGActions.hpp, src/FontManager.hpp, src/MetafontWrapper.hpp: 
-  adapted struct/class forward declarations 
-
-2016-08-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp, src/FileFinder.hpp: 
-  removed unused variable 
-
-  * src/CLCommandLine.cpp: 
-  added missing cast to avoid compiler warning 
-
-  * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: 
-  set version to 2.0 
-
-  * README, README.md: 
-  updated README files 
-
-  * NEWS: 
-  updated NEWS 
-
-2016-08-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontWriter.cpp, src/FontWriter.hpp, src/ffwrapper.c, 
-    src/ffwrapper.h: 
-  added missing copyright headers 
-
-2016-08-25  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * Makefile.am, clipper/License.txt, clipper/Makefile.am, 
-    clipper/clipper.cpp, clipper/clipper.hpp, configure.ac, libs/Makefile.am, 
-    libs/clipper/License.txt, libs/clipper/Makefile.am, 
-    libs/clipper/clipper.cpp, libs/clipper/clipper.hpp, libs/xxHash/LICENSE, 
-    libs/xxHash/Makefile.am, libs/xxHash/xxhash-fileno.patch, 
-    libs/xxHash/xxhash.c, libs/xxHash/xxhash.h, libs/xxHash/xxhsum.c, 
-    src/Makefile.am, tests/Makefile.am, tests/create-makefile, 
-    xxHash/LICENSE, xxHash/Makefile.am, xxHash/xxhash-fileno.patch, 
-    xxHash/xxhash.c, xxHash/xxhash.h, xxHash/xxhsum.c: 
-  moved bundled libraries (clipper, xxHash) to subfolder 'libs' 
-
-  * configure.ac, doc/dvisvgm.txt.in, libs/Makefile.am, libs/woff2/LICENSE, 
-    libs/woff2/brotli/LICENSE, libs/woff2/brotli/enc/Makefile.am, 
-    libs/woff2/brotli/enc/backward_references.cc, 
-    libs/woff2/brotli/enc/backward_references.h, 
-    libs/woff2/brotli/enc/bit_cost.h, 
-    libs/woff2/brotli/enc/block_splitter.cc, 
-    libs/woff2/brotli/enc/block_splitter.h, 
-    libs/woff2/brotli/enc/brotli_bit_stream.cc, 
-    libs/woff2/brotli/enc/brotli_bit_stream.h, 
-    libs/woff2/brotli/enc/cluster.h, libs/woff2/brotli/enc/command.h, 
-    libs/woff2/brotli/enc/compress_fragment.cc, 
-    libs/woff2/brotli/enc/compress_fragment.h, 
-    libs/woff2/brotli/enc/compress_fragment_two_pass.cc, 
-    libs/woff2/brotli/enc/compress_fragment_two_pass.h, 
-    libs/woff2/brotli/enc/compressor.h, libs/woff2/brotli/enc/context.h, 
-    libs/woff2/brotli/enc/dictionary.cc, libs/woff2/brotli/enc/dictionary.h, 
-    libs/woff2/brotli/enc/dictionary_hash.h, libs/woff2/brotli/enc/encode.cc, 
-    libs/woff2/brotli/enc/encode.h, libs/woff2/brotli/enc/encode_parallel.cc, 
-    libs/woff2/brotli/enc/encode_parallel.h, 
-    libs/woff2/brotli/enc/entropy_encode.cc, 
-    libs/woff2/brotli/enc/entropy_encode.h, 
-    libs/woff2/brotli/enc/entropy_encode_static.h, 
-    libs/woff2/brotli/enc/fast_log.h, 
-    libs/woff2/brotli/enc/find_match_length.h, libs/woff2/brotli/enc/hash.h, 
-    libs/woff2/brotli/enc/histogram.cc, libs/woff2/brotli/enc/histogram.h, 
-    libs/woff2/brotli/enc/literal_cost.cc, 
-    libs/woff2/brotli/enc/literal_cost.h, libs/woff2/brotli/enc/metablock.cc, 
-    libs/woff2/brotli/enc/metablock.h, libs/woff2/brotli/enc/port.h, 
-    libs/woff2/brotli/enc/prefix.h, libs/woff2/brotli/enc/ringbuffer.h, 
-    libs/woff2/brotli/enc/static_dict.cc, 
-    libs/woff2/brotli/enc/static_dict.h, 
-    libs/woff2/brotli/enc/static_dict_lut.h, 
-    libs/woff2/brotli/enc/streams.cc, libs/woff2/brotli/enc/streams.h, 
-    libs/woff2/brotli/enc/transform.h, libs/woff2/brotli/enc/types.h, 
-    libs/woff2/brotli/enc/utf8_util.cc, libs/woff2/brotli/enc/utf8_util.h, 
-    libs/woff2/brotli/enc/write_bits.h, libs/woff2/brotli/tools/bro.cc, 
-    libs/woff2/brotli/tools/rfc-format.py, libs/woff2/brotli/tools/version.h, 
-    libs/woff2/src/Makefile.am, libs/woff2/src/buffer.h, 
-    libs/woff2/src/file.h, libs/woff2/src/font.cc, libs/woff2/src/font.h, 
-    libs/woff2/src/glyph.cc, libs/woff2/src/glyph.h, 
-    libs/woff2/src/normalize.cc, libs/woff2/src/normalize.h, 
-    libs/woff2/src/port.h, libs/woff2/src/round.h, 
-    libs/woff2/src/store_bytes.h, libs/woff2/src/table_tags.cc, 
-    libs/woff2/src/table_tags.h, libs/woff2/src/transform.cc, 
-    libs/woff2/src/transform.h, libs/woff2/src/variable_length.cc, 
-    libs/woff2/src/variable_length.h, libs/woff2/src/woff2_common.cc, 
-    libs/woff2/src/woff2_common.h, libs/woff2/src/woff2_dec.h, 
-    libs/woff2/src/woff2_enc.cc, libs/woff2/src/woff2_enc.h, 
-    libs/woff2/src/woff2_out.cc, libs/woff2/src/woff2_out.h, 
-    src/FontWriter.cpp, src/FontWriter.hpp, src/Makefile.am: 
-  added support for embedding WOFF2 fonts 
-
-2016-08-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/XMLNode.hpp: 
-  added move constructors to XMLNode classes 
-
-2016-08-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontEngine.cpp: 
-  fixed sign of the font descender 
-
-  * configure.ac, doc/dvisvgm.txt.in, src/CommandLine.hpp, 
-    src/FontWriter.cpp, src/FontWriter.hpp, src/GraphicsPath.hpp, 
-    src/Makefile.am, src/SVGTree.cpp, src/SVGTree.hpp, src/XMLNode.cpp, 
-    src/XMLNode.hpp, src/dvisvgm.cpp, src/ffwrapper.c, src/ffwrapper.h, 
-    src/options.xml: 
-  added option --font-format to select the file format used to embed fonts 
-
-2016-08-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * xxHash/xxhash.c, xxHash/xxhash.h, xxHash/xxhsum.c: 
-  updated xxHash to version 0.6.2 
-
-2016-08-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FixWord.hpp, src/Font.cpp, src/FontMetrics.hpp, src/SVGTree.cpp, 
-    src/TFM.cpp, src/TFM.hpp: 
-  added getters for ascent and descent to TFM-based fonts 
-
-2016-08-14  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Ghostscript.hpp: 
-  removed copy constructor of class Ghostscript 
-
-  * src/PathClipper.cpp: 
-  added missing initializers 
-
-2016-08-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * CMakeLists.txt, configure.ac, src/CLCommandLine.cpp, 
-    src/CLCommandLine.hpp, src/CommandLine.hpp, src/Makefile.am, 
-    src/dvisvgm.cpp, src/options.dtd, src/options.xml, src/version.hpp, 
-    src/version.hpp.in: 
-  added version.hpp to provide the current version number 
-
-2016-08-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/MiKTeX209-session_i.c: 
-  added Makefile rule to invocate midl automatically if MiKTeX's COM 
-  interface changes 
-
-2016-08-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/DVIReader.hpp, src/Directory.cpp, 
-    src/Directory.hpp, src/FilePath.cpp, src/FilePath.hpp, src/Font.cpp, 
-    src/Font.hpp, src/FontManager.cpp, src/FontManager.hpp, src/GFReader.hpp, 
-    src/PageRanges.cpp, src/PageRanges.hpp, src/PageSize.cpp, 
-    src/PageSize.hpp, src/SVGOutput.cpp, src/SVGOutput.hpp, 
-    src/VFActions.hpp, src/VFReader.cpp: 
-  pass string parameters by reference if possible 
-
-  * src/System.cpp, src/dvisvgm.cpp: 
-  minor refactorings of dvisvgm.cpp 
-
-  * src/Ghostscript.cpp, src/MiKTeXCom.cpp: 
-  replaced __WIN64__ with pre-defined _WIN64 
-
-2016-08-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * CMakeLists.txt, src/CLCommandLine.cpp, src/CLCommandLine.hpp, 
-    src/CLOption.hpp, src/CmdLineParserBase.cpp, src/CmdLineParserBase.hpp, 
-    src/CommandLine.cpp, src/CommandLine.hpp, src/Makefile.am, 
-    src/dvisvgm.cpp, src/options.dtd, src/options.xml, 
-    tests/CommandLineTest.cpp: 
-  reimplemented the CommandLine parser class 
-
-  * src/CMap.cpp, src/CMapManager.cpp, src/CMapReader.cpp, src/EncFile.cpp, 
-    src/FileFinder.cpp, src/FileFinder.hpp, src/Font.cpp, 
-    src/FontEncoding.cpp, src/FontManager.cpp, src/FontMap.cpp, 
-    src/FontMetrics.cpp, src/Ghostscript.cpp, src/MetafontWrapper.cpp, 
-    src/PsSpecialHandler.cpp, src/Subfont.cpp, src/dvisvgm.cpp, 
-    tests/CMapManagerTest.cpp, tests/FileFinderTest.cpp, 
-    tests/MapLineTest.cpp, tests/SubfontTest.cpp: 
-  made FileFinder a singleton again 
-
-2016-07-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BgColorSpecialHandler.cpp, src/BoundingBox.cpp, 
-    src/DvisvgmSpecialHandler.cpp, src/EmSpecialHandler.cpp, 
-    src/FileSystem.cpp, src/FontCache.cpp, src/FontEngine.cpp, 
-    src/FontManager.cpp, src/GraphicsPath.hpp, src/PSInterpreter.cpp, 
-    src/PapersizeSpecialHandler.cpp, src/PathClipper.cpp, src/RangeMap.cpp, 
-    src/Subfont.cpp, src/TpicSpecialHandler.cpp, src/XMLDocument.cpp, 
-    src/XMLNode.cpp, src/genhashmap.cpp: 
-  replaced insert/push_back with emplace/emplace_back where useful 
-
-2016-07-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PathClipper.cpp: 
-  some minor refactorings of class PathClipper 
-
-  * src/CMapReader.cpp: 
-  minor refactoring of class CMapReader 
-
-2016-07-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontMap.cpp, src/FontMap.hpp: 
-  some syntactic refactorings of class FontMap 
-
-  * src/FontManager.cpp, src/FontManager.hpp: 
-  use unique_ptr to automatically release Font objects in class 
-  FontManager 
-
-2016-07-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/AGLTable.h, src/AGLTable.hpp, src/BasicDVIReader.cpp, 
-    src/BasicDVIReader.h, src/BasicDVIReader.hpp, src/Bezier.cpp, 
-    src/Bezier.h, src/Bezier.hpp, src/BgColorSpecialHandler.cpp, 
-    src/BgColorSpecialHandler.h, src/BgColorSpecialHandler.hpp, 
-    src/Bitmap.cpp, src/Bitmap.h, src/Bitmap.hpp, src/BoundingBox.cpp, 
-    src/BoundingBox.h, src/BoundingBox.hpp, src/CMap.cpp, src/CMap.h, 
-    src/CMap.hpp, src/CMapManager.cpp, src/CMapManager.h, 
-    src/CMapManager.hpp, src/CMapReader.cpp, src/CMapReader.h, 
-    src/CMapReader.hpp, src/CRC32.cpp, src/CRC32.h, src/CRC32.hpp, 
-    src/Calculator.cpp, src/Calculator.h, src/Calculator.hpp, 
-    src/CharMapID.cpp, src/CharMapID.h, src/CharMapID.hpp, src/Character.h, 
-    src/Character.hpp, src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, 
-    src/CmdLineParserBase.hpp, src/Color.cpp, src/Color.h, src/Color.hpp, 
-    src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, 
-    src/ColorSpecialHandler.hpp, src/CommandLine.cpp, src/CommandLine.h, 
-    src/CommandLine.hpp, src/DLLoader.cpp, src/DLLoader.h, src/DLLoader.hpp, 
-    src/DVIActions.h, src/DVIActions.hpp, src/DVIReader.cpp, src/DVIReader.h, 
-    src/DVIReader.hpp, src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVG.hpp, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/DVIToSVGActions.hpp, 
-    src/DependencyGraph.h, src/DependencyGraph.hpp, src/Directory.cpp, 
-    src/Directory.h, src/Directory.hpp, src/DvisvgmSpecialHandler.cpp, 
-    src/DvisvgmSpecialHandler.h, src/DvisvgmSpecialHandler.hpp, 
-    src/EPSFile.cpp, src/EPSFile.h, src/EPSFile.hpp, src/EPSToSVG.cpp, 
-    src/EPSToSVG.h, src/EPSToSVG.hpp, src/EmSpecialHandler.cpp, 
-    src/EmSpecialHandler.h, src/EmSpecialHandler.hpp, src/EncFile.cpp, 
-    src/EncFile.h, src/EncFile.hpp, src/FileFinder.cpp, src/FileFinder.h, 
-    src/FileFinder.hpp, src/FilePath.cpp, src/FilePath.h, src/FilePath.hpp, 
-    src/FileSystem.cpp, src/FileSystem.h, src/FileSystem.hpp, src/FixWord.h, 
-    src/FixWord.hpp, src/Font.cpp, src/Font.h, src/Font.hpp, 
-    src/FontCache.cpp, src/FontCache.h, src/FontCache.hpp, 
-    src/FontEncoding.cpp, src/FontEncoding.h, src/FontEncoding.hpp, 
-    src/FontEngine.cpp, src/FontEngine.h, src/FontEngine.hpp, 
-    src/FontManager.cpp, src/FontManager.h, src/FontManager.hpp, 
-    src/FontMap.cpp, src/FontMap.h, src/FontMap.hpp, src/FontMetrics.cpp, 
-    src/FontMetrics.h, src/FontMetrics.hpp, src/FontStyle.h, 
-    src/FontStyle.hpp, src/GFGlyphTracer.cpp, src/GFGlyphTracer.h, 
-    src/GFGlyphTracer.hpp, src/GFReader.cpp, src/GFReader.h, 
-    src/GFReader.hpp, src/GFTracer.cpp, src/GFTracer.h, src/GFTracer.hpp, 
-    src/Ghostscript.cpp, src/Ghostscript.h, src/Ghostscript.hpp, src/Glyph.h, 
-    src/Glyph.hpp, src/GlyphTracerMessages.h, src/GlyphTracerMessages.hpp, 
-    src/GraphicsPath.h, src/GraphicsPath.hpp, src/HtmlSpecialHandler.cpp, 
-    src/HtmlSpecialHandler.h, src/HtmlSpecialHandler.hpp, 
-    src/InputBuffer.cpp, src/InputBuffer.h, src/InputBuffer.hpp, 
-    src/InputReader.cpp, src/InputReader.h, src/InputReader.hpp, src/JFM.cpp, 
-    src/JFM.h, src/JFM.hpp, src/Length.cpp, src/Length.h, src/Length.hpp, 
-    src/Makefile.am, src/MapLine.cpp, src/MapLine.h, src/MapLine.hpp, 
-    src/Matrix.cpp, src/Matrix.h, src/Matrix.hpp, src/Message.cpp, 
-    src/Message.h, src/Message.hpp, src/MessageException.h, 
-    src/MessageException.hpp, src/MetafontWrapper.cpp, src/MetafontWrapper.h, 
-    src/MetafontWrapper.hpp, src/MiKTeXCom.cpp, src/MiKTeXCom.h, 
-    src/MiKTeXCom.hpp, src/NoPsSpecialHandler.cpp, src/NoPsSpecialHandler.h, 
-    src/NoPsSpecialHandler.hpp, src/NumericRanges.h, src/NumericRanges.hpp, 
-    src/PSFilter.h, src/PSFilter.hpp, src/PSInterpreter.cpp, 
-    src/PSInterpreter.h, src/PSInterpreter.hpp, src/PSPattern.cpp, 
-    src/PSPattern.h, src/PSPattern.hpp, src/PSPreviewFilter.cpp, 
-    src/PSPreviewFilter.h, src/PSPreviewFilter.hpp, src/PageRanges.cpp, 
-    src/PageRanges.h, src/PageRanges.hpp, src/PageSize.cpp, src/PageSize.h, 
-    src/PageSize.hpp, src/Pair.h, src/Pair.hpp, 
-    src/PapersizeSpecialHandler.cpp, src/PapersizeSpecialHandler.h, 
-    src/PapersizeSpecialHandler.hpp, src/PathClipper.cpp, src/PathClipper.h, 
-    src/PathClipper.hpp, src/PdfSpecialHandler.cpp, src/PdfSpecialHandler.h, 
-    src/PdfSpecialHandler.hpp, src/PreScanDVIReader.cpp, 
-    src/PreScanDVIReader.h, src/PreScanDVIReader.hpp, src/Process.cpp, 
-    src/Process.h, src/Process.hpp, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h, src/PsSpecialHandler.hpp, src/RangeMap.cpp, 
-    src/RangeMap.h, src/RangeMap.hpp, src/SVGCharHandler.cpp, 
-    src/SVGCharHandler.h, src/SVGCharHandler.hpp, 
-    src/SVGCharHandlerFactory.cpp, src/SVGCharHandlerFactory.h, 
-    src/SVGCharHandlerFactory.hpp, src/SVGCharPathHandler.cpp, 
-    src/SVGCharPathHandler.h, src/SVGCharPathHandler.hpp, 
-    src/SVGCharTspanTextHandler.cpp, src/SVGCharTspanTextHandler.h, 
-    src/SVGCharTspanTextHandler.hpp, src/SVGOutput.cpp, src/SVGOutput.h, 
-    src/SVGOutput.hpp, src/SVGSingleCharTextHandler.cpp, 
-    src/SVGSingleCharTextHandler.h, src/SVGSingleCharTextHandler.hpp, 
-    src/SVGTree.cpp, src/SVGTree.h, src/SVGTree.hpp, src/SWFWriter.cpp, 
-    src/SWFWriter.h, src/SWFWriter.hpp, src/ShadingPatch.cpp, 
-    src/ShadingPatch.h, src/ShadingPatch.hpp, src/SignalHandler.cpp, 
-    src/SignalHandler.h, src/SignalHandler.hpp, src/SpecialActions.h, 
-    src/SpecialActions.hpp, src/SpecialHandler.h, src/SpecialHandler.hpp, 
-    src/SpecialManager.cpp, src/SpecialManager.h, src/SpecialManager.hpp, 
-    src/StreamReader.cpp, src/StreamReader.h, src/StreamReader.hpp, 
-    src/StreamWriter.cpp, src/StreamWriter.h, src/StreamWriter.hpp, 
-    src/Subfont.cpp, src/Subfont.h, src/Subfont.hpp, src/System.cpp, 
-    src/System.h, src/System.hpp, src/TFM.cpp, src/TFM.h, src/TFM.hpp, 
-    src/TensorProductPatch.cpp, src/TensorProductPatch.h, 
-    src/TensorProductPatch.hpp, src/Terminal.cpp, src/Terminal.h, 
-    src/Terminal.hpp, src/ToUnicodeMap.cpp, src/ToUnicodeMap.h, 
-    src/ToUnicodeMap.hpp, src/TpicSpecialHandler.cpp, 
-    src/TpicSpecialHandler.h, src/TpicSpecialHandler.hpp, 
-    src/TriangularPatch.cpp, src/TriangularPatch.h, src/TriangularPatch.hpp, 
-    src/Unicode.cpp, src/Unicode.h, src/Unicode.hpp, src/VFActions.h, 
-    src/VFActions.hpp, src/VFReader.cpp, src/VFReader.h, src/VFReader.hpp, 
-    src/VectorIterator.h, src/VectorIterator.hpp, src/VectorStream.h, 
-    src/VectorStream.hpp, src/XMLDocument.cpp, src/XMLDocument.h, 
-    src/XMLDocument.hpp, src/XMLNode.cpp, src/XMLNode.h, src/XMLNode.hpp, 
-    src/XMLString.cpp, src/XMLString.h, src/XMLString.hpp, 
-    src/ZLibOutputStream.h, src/ZLibOutputStream.hpp, src/dvisvgm.cpp, 
-    src/macros.h, src/macros.hpp, src/psdefs.cpp, tests/BezierTest.cpp, 
-    tests/BitmapTest.cpp, tests/BoundingBoxTest.cpp, 
-    tests/CMapManagerTest.cpp, tests/CMapReaderTest.cpp, tests/CMapTest.cpp, 
-    tests/CRC32Test.cpp, tests/CalculatorTest.cpp, 
-    tests/ColorSpecialTest.cpp, tests/ColorTest.cpp, 
-    tests/CommandLineTest.cpp, tests/DependencyGraphTest.cpp, 
-    tests/DirectoryTest.cpp, tests/DvisvgmSpecialTest.cpp, 
-    tests/EmSpecialTest.cpp, tests/FileFinderTest.cpp, 
-    tests/FilePathTest.cpp, tests/FileSystemTest.cpp, 
-    tests/FontManagerTest.cpp, tests/FontMapTest.cpp, 
-    tests/GFGlyphTracerTest.cpp, tests/GFReaderTest.cpp, 
-    tests/GhostscriptTest.cpp, tests/GraphicsPathTest.cpp, 
-    tests/JFMReaderTest.cpp, tests/LengthTest.cpp, tests/Makefile.am, 
-    tests/MapLineTest.cpp, tests/MatrixTest.cpp, 
-    tests/MessageExceptionTest.cpp, tests/PSInterpreterTest.cpp, 
-    tests/PageRagesTest.cpp, tests/PageSizeTest.cpp, tests/PairTest.cpp, 
-    tests/RangeMapTest.cpp, tests/SVGOutputTest.cpp, 
-    tests/ShadingPatchTest.cpp, tests/SplittedCharInputBufferTest.cpp, 
-    tests/StreamInputBufferTest.cpp, tests/StreamReaderTest.cpp, 
-    tests/StreamWriterTest.cpp, tests/SubfontTest.cpp, 
-    tests/TFMReaderTest.cpp, tests/TensorProductPatchTest.cpp, 
-    tests/ToUnicodeMapTest.cpp, tests/TriangularPatchTest.cpp, 
-    tests/UnicodeTest.cpp, tests/VectorIteratorTest.cpp, 
-    tests/VectorStreamTest.cpp, tests/XMLNodeTest.cpp, 
-    tests/XMLStringTest.cpp, tests/create-makefile: 
-  renamed filename extension of C++ headers to .hpp 
-
-2016-07-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/genhashmap.cpp, src/glyphlist.txt: 
-  added genhashmap (generates AGLTable.h from glyphlist.txt) 
-
-  * src/CMapManager.cpp, src/CMapManager.h, src/FileFinder.cpp, 
-    src/Font.cpp, src/Font.h, src/XMLDocument.cpp, src/XMLDocument.h, 
-    src/XMLNode.cpp, src/XMLNode.h, tests/XMLNodeTest.cpp: 
-  use smart pointers to release heap memory 
-
-  * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h: 
-  create BoxMap object directly, avoid new/delete 
-
-2016-07-19  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/AGLTable.h, src/Color.cpp, src/Unicode.cpp, tests/genhashcheck.py: 
-  replaced repeated binary search implementations with calls of 
-  lower_bound() 
-
-2016-07-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp, src/Message.cpp: 
-  initialize maps with initializer-lists 
-
-2016-07-05  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Length.cpp, src/TpicSpecialHandler.cpp: 
-  replaced 'id macros' with constexpr functions 
-
-2016-07-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/TFM.cpp: 
-  added missing initializers 
-
-  * src/dvisvgm.cpp: 
-  catch exception in set_cache_dir() 
-
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.16 
-
-  * NEWS, README.md: 
-  updated NEWS and README 
-
-2016-07-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, m4/ax_cxx_compile_stdcxx.m4: 
-  switch from C++03 to C++11 
-
-  * src/NumericRanges.h, src/PapersizeSpecialHandler.cpp, src/Unicode.cpp, 
-    src/VFReader.cpp: 
-  replaced static callback functions with lambdas 
-
-  * src/CMapReader.cpp, src/CMapReader.h, src/CmdLineParserBase.cpp, 
-    src/CmdLineParserBase.h, src/Color.cpp, src/Color.h, src/CommandLine.cpp, 
-    src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, 
-    src/EmSpecialHandler.cpp, src/Font.cpp, src/Font.h, src/FontManager.cpp, 
-    src/GraphicsPath.h, src/HtmlSpecialHandler.cpp, src/HtmlSpecialHandler.h, 
-    src/Length.cpp, src/Length.h, src/PathClipper.cpp, 
-    src/PsSpecialHandler.cpp, src/SVGTree.cpp, src/ShadingPatch.cpp, 
-    src/TensorProductPatch.h, tests/BoundingBoxTest.cpp, 
-    tests/LengthTest.cpp, tests/ShadingPatchTest.cpp, 
-    tests/TensorProductPatchTest.cpp, tests/TriangularPatchTest.cpp: 
-  replaced some enums with enum classes 
-
-  * clipper/clipper.hpp, src/AGLTable.h, src/BasicDVIReader.cpp, 
-    src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.h, src/CMap.cpp, 
-    src/CMap.h, src/CMapReader.cpp, src/CRC32.cpp, src/CRC32.h, 
-    src/CharMapID.h, src/Character.h, src/Color.cpp, src/Color.h, 
-    src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, 
-    src/DVIToSVG.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, 
-    src/EPSFile.cpp, src/EPSFile.h, src/EncFile.cpp, src/EncFile.h, 
-    src/FileSystem.cpp, src/FileSystem.h, src/FixWord.h, src/Font.cpp, 
-    src/Font.h, src/FontCache.cpp, src/FontCache.h, src/FontEncoding.cpp, 
-    src/FontEncoding.h, src/FontEngine.cpp, src/FontEngine.h, 
-    src/FontManager.cpp, src/FontManager.h, src/FontMetrics.cpp, 
-    src/FontMetrics.h, src/GFGlyphTracer.cpp, src/GFGlyphTracer.h, 
-    src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp, src/GFTracer.h, 
-    src/Glyph.h, src/GlyphTracerMessages.h, src/InputBuffer.cpp, 
-    src/InputBuffer.h, src/JFM.cpp, src/JFM.h, src/Makefile.am, 
-    src/Message.h, src/Pair.h, src/PathClipper.cpp, src/PreScanDVIReader.cpp, 
-    src/PsSpecialHandler.h, src/RangeMap.cpp, src/RangeMap.h, 
-    src/SVGCharHandler.h, src/SVGCharPathHandler.cpp, 
-    src/SVGCharPathHandler.h, src/SVGCharTspanTextHandler.cpp, 
-    src/SVGCharTspanTextHandler.h, src/SVGSingleCharTextHandler.cpp, 
-    src/SVGSingleCharTextHandler.h, src/SWFWriter.cpp, src/SWFWriter.h, 
-    src/StreamReader.cpp, src/StreamReader.h, src/StreamWriter.cpp, 
-    src/StreamWriter.h, src/Subfont.cpp, src/Subfont.h, src/TFM.cpp, 
-    src/TFM.h, src/ToUnicodeMap.cpp, src/ToUnicodeMap.h, src/Unicode.cpp, 
-    src/Unicode.h, src/VFActions.h, src/VFReader.cpp, src/VFReader.h, 
-    src/XMLString.cpp, src/types.h, tests/BitmapTest.cpp, 
-    tests/CRC32Test.cpp, tests/ColorSpecialTest.cpp, tests/ColorTest.cpp, 
-    tests/GFGlyphTracerTest.cpp, tests/GFReaderTest.cpp, 
-    tests/JFMReaderTest.cpp, tests/Makefile.am, tests/StreamReaderTest.cpp, 
-    tests/TriangularPatchTest.cpp, tests/TypesTest.cpp, 
-    tests/UnicodeTest.cpp: 
-  replaced own fixed-sized integer types with types from cstdint 
-
-  * AUTHORS, LGPL-2.1.txt, Makefile.am, gzstream/COPYING.LIB, 
-    gzstream/Makefile, gzstream/README, gzstream/gzstream.cpp, 
-    gzstream/gzstream.h, gzstream/index.html, gzstream/logo.gif, 
-    gzstream/test_gunzip.C, gzstream/test_gzip.C, gzstream/version, 
-    src/Makefile.am, src/SVGOutput.cpp, src/SVGOutput.h, 
-    src/ZLibOutputStream.h, src/dvisvgm.cpp, src/gzstream.cpp, 
-    src/gzstream.h, tests/Makefile.am, tests/SVGOutputTest.cpp, 
-    tests/create-makefile: 
-  replaced old gzstream classes 
-
-  * src/DVIReader.cpp, src/DVIReader.h, src/Font.cpp, src/Font.h, 
-    src/FontManager.cpp, src/FontManager.h, src/VFActions.h, 
-    src/VFReader.cpp: 
-  transfer DVI snippet of a VF char by move semantics rather than by heap 
-  pointer 
-
-2016-07-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Bitmap.cpp, src/BoundingBox.h, src/CMapManager.cpp, 
-    src/CmdLineParserBase.cpp, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h, src/DependencyGraph.h, 
-    src/DvisvgmSpecialHandler.cpp, src/EmSpecialHandler.cpp, 
-    src/FileFinder.cpp, src/FilePath.cpp, src/FilePath.h, src/Font.cpp, 
-    src/FontCache.cpp, src/FontEncoding.cpp, src/FontManager.cpp, 
-    src/FontMap.cpp, src/FontMap.h, src/GFReader.cpp, src/GFReader.h, 
-    src/GraphicsPath.h, src/HtmlSpecialHandler.cpp, src/NumericRanges.h, 
-    src/PSPattern.cpp, src/PsSpecialHandler.cpp, src/SVGTree.cpp, 
-    src/SVGTree.h, src/SpecialManager.cpp, src/SpecialManager.h, 
-    src/Subfont.cpp, src/Subfont.h, src/TpicSpecialHandler.cpp, 
-    src/XMLDocument.cpp, src/XMLNode.cpp, src/XMLString.cpp, src/macros.h: 
-  use range-based 'for' loop to iterate over containers; drop FORALL macro 
-
-  * clipper/clipper.hpp, src/BgColorSpecialHandler.h, src/Bitmap.cpp, 
-    src/CMap.h, src/CmdLineParserBase.h, src/ColorSpecialHandler.h, 
-    src/CommandLine.h, src/DVIReader.h, src/DVIToSVG.h, 
-    src/DVIToSVGActions.h, src/DvisvgmSpecialHandler.h, src/EPSToSVG.h, 
-    src/EmSpecialHandler.h, src/EncFile.h, src/Font.h, src/FontCache.cpp, 
-    src/FontEncoding.h, src/FontMetrics.h, src/GFGlyphTracer.h, 
-    src/GFReader.h, src/GFTracer.h, src/GlyphTracerMessages.h, 
-    src/GraphicsPath.h, src/HtmlSpecialHandler.h, src/InputBuffer.h, 
-    src/InputReader.h, src/JFM.h, src/MessageException.h, 
-    src/NoPsSpecialHandler.h, src/PSPattern.h, src/PSPreviewFilter.h, 
-    src/PapersizeSpecialHandler.h, src/PathClipper.cpp, 
-    src/PdfSpecialHandler.h, src/PreScanDVIReader.h, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, 
-    src/SVGCharPathHandler.h, src/SVGCharTspanTextHandler.h, src/SVGOutput.h, 
-    src/SVGSingleCharTextHandler.h, src/SpecialActions.h, src/TFM.h, 
-    src/TensorProductPatch.h, src/TpicSpecialHandler.h, 
-    src/TriangularPatch.h, src/VectorStream.h, src/XMLNode.h: 
-  mark overridden methods with 'override' keyword 
-
-  * src/PsSpecialHandler.cpp: 
-  use unique_ptr rather than deprecated auto_ptr 
-
-  * src/BasicDVIReader.h, src/Bitmap.h, src/CMap.h, src/CmdLineParserBase.h, 
-    src/DVIActions.h, src/Font.h, src/FontEncoding.h, src/FontMetrics.h, 
-    src/GFGlyphTracer.h, src/GFReader.h, src/GFTracer.h, src/GraphicsPath.h, 
-    src/InputBuffer.h, src/InputReader.h, src/MessageException.h, 
-    src/PSFilter.h, src/PSInterpreter.h, src/PSPattern.h, 
-    src/SVGCharHandler.h, src/SVGOutput.h, src/ShadingPatch.h, 
-    src/SpecialActions.h, src/SpecialHandler.h, src/StreamReader.h, 
-    src/StreamWriter.h, src/Subfont.h, src/VFActions.h, src/XMLNode.h: 
-  replaced empty virtual destructors with default ones 
-
-2016-07-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BasicDVIReader.h, src/DVIActions.h, src/DVIReader.cpp, 
-    src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/FontManager.cpp, 
-    src/FontManager.h, src/PreScanDVIReader.h, src/dvisvgm.cpp: 
-  refactored the DVI reader classes
-- added higher-level template methods 
-  to process the DVI commands more safely
-- moved triggering of DVIActions 
-  from DVIReader to DVIToSVG 
-
-2016-06-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BoundingBox.cpp, src/BoundingBox.h, src/DVIToSVG.cpp, 
-    src/dvisvgm.cpp: 
-  fixed computation of bounding boxes modified by relative --bbox argument 
-
-  * xxHash/xxhash.c, xxHash/xxhash.h, xxHash/xxhsum.c: 
-  updated xxHash to version 0.6.1 
-
-2016-06-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/TFM.cpp, tests/JFMReaderTest.cpp, tests/TFMReaderTest.cpp: 
-  minor improvements to TFM/JFM tests 
-
-2016-06-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/VectorStream.h, tests/VectorStreamTest.cpp: 
-  refactored VectorStreamBuffer to keep constness of assigned vector 
-
-  * src/GFReader.cpp: 
-  ensure validity of postpost command in GFReader::executePostamble() 
-
-2016-06-14  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DvisvgmSpecialHandler.cpp, src/TFM.cpp, src/VFReader.cpp: 
-  replaced local definitions of pt2bp with Length::pt2bp 
-
-  * src/XMLNode.h: 
-  added ouput operators for the XML node objects 
-
-  * src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, 
-    tests/EmSpecialTest.cpp, tests/Makefile.am: 
-  improved the emTeX special handler; added EmSpecialTest 
-
-  * src/BoundingBox.cpp, src/BoundingBox.h, tests/BoundingBoxTest.cpp: 
-  fixed unit conversion in BoundingBox class 
-
-2016-06-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/Length.cpp, src/Length.h, tests/LengthTest.cpp: 
-  added dd, cc, and sp units to class Length; fixed factor pt2pc 
-
-2016-06-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * xxHash/xxhash.c, xxHash/xxhash.h: 
-  updated xxHash to version 0.6.0 
-
-  * src/DLLoader.cpp, src/DLLoader.h, src/Directory.cpp, src/Directory.h, 
-    src/FilePath.cpp, src/FilePath.h, src/FileSystem.cpp, src/GFTracer.cpp, 
-    src/Ghostscript.cpp, src/Ghostscript.h, src/Message.cpp, 
-    src/MetafontWrapper.cpp, src/Process.cpp, src/Terminal.cpp, 
-    src/Terminal.h, src/dvisvgm.cpp: 
-  cleaned up Windows-related #defines 
-
-  * xxHash/xxhash-fileno.patch, xxHash/xxhsum.c: 
-  added xxHash test utility 'xxhsum' 
-
-2016-06-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CommandLine.cpp: 
-  removed redundant #includes 
-
-  * src/Length.cpp, src/Length.h, tests/LengthTest.cpp: 
-  added functions to convert between Length::Unit and std::string 
-
-2016-06-07  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CMapManager.cpp, src/CMapManager.h, src/DVIActions.h, 
-    src/DVIToSVGActions.h, src/DvisvgmSpecialHandler.h, src/Font.h, 
-    src/FontEngine.h, src/FontManager.h, src/HtmlSpecialHandler.cpp, 
-    src/HtmlSpecialHandler.h, src/PSPattern.h, src/PSPreviewFilter.h, 
-    src/SVGCharHandler.cpp, src/SVGCharHandler.h, src/SVGCharPathHandler.cpp, 
-    src/SVGCharTspanTextHandler.cpp, src/SVGSingleCharTextHandler.cpp, 
-    src/SVGTree.h, src/SpecialActions.h, src/SpecialHandler.h, 
-    src/SpecialManager.h, src/XMLDocument.cpp, src/XMLNode.h, 
-    tests/XMLNodeTest.cpp: 
-  changed some structs to classes and replaced #includes with forward 
-  declarations 
-
-  * src/SVGCharHandler.h: 
-  added missing initializer to class SVGCharHandler 
-
-2016-06-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h, 
-    src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/DVIToSVG.cpp, 
-    src/DVIToSVGActions.cpp, src/DvisvgmSpecialHandler.cpp, 
-    src/DvisvgmSpecialHandler.h, src/EPSToSVG.cpp, src/EmSpecialHandler.cpp, 
-    src/EmSpecialHandler.h, src/HtmlSpecialHandler.cpp, 
-    src/HtmlSpecialHandler.h, src/NoPsSpecialHandler.cpp, 
-    src/NoPsSpecialHandler.h, src/PSPattern.cpp, src/PSPattern.h, 
-    src/PdfSpecialHandler.cpp, src/PdfSpecialHandler.h, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SpecialHandler.h, 
-    src/SpecialManager.cpp, src/SpecialManager.h, src/TpicSpecialHandler.cpp, 
-    src/TpicSpecialHandler.h, tests/ColorSpecialTest.cpp, 
-    tests/DvisvgmSpecialTest.cpp: 
-  refactored handling of SpecialAction objects 
-
-  * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/SVGTree.cpp, 
-    src/SVGTree.h: 
-  refactored processing of end-of-page (eop) commands 
-
-  * doc/dvisvgm.txt.in, src/DVIToSVG.cpp, src/Makefile.am, 
-    src/PapersizeSpecialHandler.cpp, src/PapersizeSpecialHandler.h, 
-    src/PsSpecialHandler.cpp, src/dvisvgm.cpp: 
-  added evaluation of PS special 'papersize=' 
-
-  * CMakeLists.txt: 
-  updated CMakeLists.txt 
-
-2016-06-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp: 
-  fixed transformation of background color rectange 
-
-2016-05-31  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp, src/EPSToSVG.cpp: 
-  reworded messages printed after finishing a conversion 
-
-2016-05-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVGActions.cpp, src/Font.cpp, src/Makefile.am, 
-    src/SVGCharHandler.cpp, src/SVGCharHandler.h, 
-    src/SVGCharHandlerFactory.cpp, src/SVGCharHandlerFactory.h, 
-    src/SVGCharPathHandler.cpp, src/SVGCharPathHandler.h, 
-    src/SVGCharTspanTextHandler.cpp, src/SVGCharTspanTextHandler.h, 
-    src/SVGSingleCharTextHandler.cpp, src/SVGSingleCharTextHandler.h, 
-    src/SVGTree.cpp, src/SVGTree.h, src/dvisvgm.cpp: 
-  replaced static SVG text backend by specialized handler classes 
-
-  * src/BasicDVIReader.cpp, src/BasicDVIReader.h, src/Bezier.h, 
-    src/TensorProductPatch.h, src/TriangularPatch.h: 
-  replaced leading spaces with tabs 
-
-2016-05-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BasicDVIReader.cpp, src/DVIReader.cpp: 
-  fixed handling of subfont index in native font definition of XDV 7 
-
-2016-05-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/XMLDocument.cpp, src/XMLNode.cpp, src/XMLNode.h, 
-    tests/DvisvgmSpecialTest.cpp: 
-  prevent line wrapping inside text nodes 
-
-2016-05-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README.md, doc/dvisvgm.txt.in, src/BasicDVIReader.cpp, 
-    src/BasicDVIReader.h, src/DVIReader.cpp: 
-  added support for XDV version 7 introduced by XeTeX 0.99995 
-
-2016-05-25  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/TFM.cpp: 
-  prevent reading more than 7 TFM param values (fixes #58) 
-
-2016-05-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/JFM.cpp, src/JFM.h, src/TFM.cpp, src/TFM.h: 
-  TFM: store design size in bp units rather than as fixword 
-
-  * src/FontMetrics.h, src/JFM.cpp, src/TFM.cpp, src/TFM.h: 
-  added methods to query space-related parameters from TFM/JFM files 
-
-  * src/TFM.cpp, tests/JFMReaderTest.cpp, tests/TFMReaderTest.cpp: 
-  fixed calculation of character dimensions in TFM class 
-
-2016-04-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Process.cpp: 
-  fixed collecting stdout/stderr output when executing a process 
-
-2016-04-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CMap.h, src/CMapReader.cpp, tests/CMapManagerTest.cpp, 
-    tests/Makefile.am, tests/data/Makefile.am, tests/data/ot1.cmap: 
-  added CMapManagerTest 
-
-2016-04-19  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.15.1 
-
-  * NEWS, README, README.md: 
-  updated NEWS and README 
-
-2016-04-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Calculator.cpp, src/Matrix.cpp: 
-  use std::ws to skip whitespace in istreams 
-
-  * src/Matrix.cpp: 
-  avoid adding trailing EOF characters when parsing parameters of 
-  transformation commands 
-
-  * tests/CMapReaderTest.cpp: 
-  improved CMapReaderTest 
-
-2016-04-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/AGLTable.h, src/Makefile.am, src/Unicode.cpp, tests/Makefile.am, 
-    tests/create-makefile, tests/genhashcheck.py: 
-  moved AGL hash table from Unicode.cpp to a separate file 
-
-2016-04-07  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/XMLDocument.cpp: 
-  explicitly specify UTF-8 encoding in XML declaration (closes #54) 
-
-  * src/Unicode.cpp, tests/UnicodeTest.cpp: 
-  added support for the AGL character names 'uniFOO' and 'uFOO' 
-
-2016-03-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/GraphicsPath.h: 
-  renamed GraphicsPath::sconito/scubicto 
-
-2016-03-14  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * transfer-cs: 
-  remove patch files after they've been transferred 
-
-  * doc/db2html.xsl: 
-  adapted db2html to insert anchors for each option entry 
-
-  * src/DVIActions.h, src/DVIReader.cpp, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h, src/SVGTree.cpp, src/SVGTree.h: 
-  changed font parameter of setFont() methods from pointer to reference 
-
-  * src/SVGTree.cpp, src/SVGTree.h: 
-  split text and path section of SVGTree::appendChar() into seperate 
-  methods 
-
-2016-02-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS: 
-  updated NEWS 
-
-2016-02-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, 
-    src/Font.cpp, src/Font.h, src/SVGTree.cpp, src/SVGTree.h, 
-    src/dvisvgm.cpp, src/options.xml: 
-  added option --comments (adds comments with additional information to 
-  the SVG file 
-
-  * src/Font.cpp, src/Unicode.cpp, src/Unicode.h, tests/UnicodeTest.cpp: 
-  renamed Unicode::psNameToCodepoint() to Unicode::aglNameToCodepoint 
-
-  * src/FileFinder.cpp, src/FilePath.cpp, src/FileSystem.cpp, 
-    src/FileSystem.h, src/Font.cpp, src/MetafontWrapper.cpp, src/dvisvgm.cpp: 
-  changed string parameters of FileSystem functions to type std::string 
-
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.15 
-
-2016-02-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontEngine.cpp: 
-  reworded error messages of class FontEngine 
-
-  * src/MetafontWrapper.cpp, src/Process.cpp: 
-  avoid reading Metafont logfiles to extract the GF filename 
-
-  * configure.ac, src/FileFinder.cpp, src/FileFinder.h, 
-    tests/FileFinderTest.cpp, tests/GFGlyphTracerTest.cpp, 
-    tests/GFReaderTest.cpp, tests/JFMReaderTest.cpp, tests/Makefile.am, 
-    tests/TFMReaderTest.cpp, tests/cidjmgr0-h.tfm, tests/cmr10.600gf, 
-    tests/cmr10.tfm, tests/create-makefile, tests/data/Makefile.am, 
-    tests/data/cidjmgr0-h.tfm, tests/data/cmr10.600gf, tests/data/cmr10.tfm, 
-    tests/data/dvipdfm_test.map, tests/data/dvips_test.map, 
-    tests/data/frktest-nf-cmp.svg, tests/data/frktest-wf-cmp.svg, 
-    tests/data/frktest.dvi, tests/data/sample-nf-cmp.svg, 
-    tests/data/sample-wf-cmp.svg, tests/data/sample.dvi, 
-    tests/data/sample.sfd, tests/dvipdfm_test.map, tests/dvips_test.map, 
-    tests/frktest-nf-cmp.svg, tests/frktest-wf-cmp.svg, tests/frktest.dvi, 
-    tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg, tests/sample.dvi, 
-    tests/sample.sfd: 
-  moved test data files to subfolder 
-
-2016-02-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, 
-    tests/CommandLineTest.cpp: 
-  minor improvements of class CommandLineTest 
-
-  * src/XMLNode.cpp, tests/DvisvgmSpecialTest.cpp: 
-  improved DvisvgmSpecialTest 
-
-  * src/FontEngine.cpp, src/FontEngine.h: 
-  removed redundant code from class FontEngine 
-
-2016-02-05  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp: 
-  don't remove clipping paths that consist of single moveto commands only 
-
-2016-02-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Bitmap.cpp, src/BoundingBox.cpp, src/CMap.cpp, src/CMapManager.cpp, 
-    src/Calculator.cpp, src/CommandLine.cpp, src/DVIReader.cpp, 
-    src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp, 
-    src/Directory.cpp, src/Directory.h, src/EPSToSVG.cpp, src/EncFile.cpp, 
-    src/FileFinder.cpp, src/Font.cpp, src/FontCache.h, src/FontEngine.cpp, 
-    src/FontManager.cpp, src/FontMap.cpp, src/FontMetrics.cpp, 
-    src/GFGlyphTracer.cpp, src/GFReader.cpp, src/GFTracer.cpp, 
-    src/HtmlSpecialHandler.cpp, src/InputReader.cpp, src/MapLine.cpp, 
-    src/MetafontWrapper.cpp, src/PSInterpreter.cpp, 
-    src/PdfSpecialHandler.cpp, src/Process.cpp, src/PsSpecialHandler.cpp, 
-    src/SVGTree.cpp, src/SpecialManager.cpp, src/StreamReader.cpp, 
-    src/StreamWriter.cpp, src/Subfont.cpp, src/TFM.cpp, 
-    src/TensorProductPatch.cpp, src/TpicSpecialHandler.cpp, src/VFReader.cpp, 
-    src/XMLDocument.cpp, src/dvisvgm.cpp, tests/XMLStringTest.cpp: 
-  minor code cleanup (removed redundant includes, added casts) 
-
-2016-01-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * m4/ax_code_coverage.m4: 
-  updated m4 code coverage script to latest version 
-
-  * src/JFM.h, tests/JFMReaderTest.cpp, tests/Makefile.am, 
-    tests/TFMReaderTest.cpp, tests/cidjmgr0-h.tfm, tests/cmr10.tfm, 
-    tests/create-makefile: 
-  added tests for the TFM and JFM classes 
-
-2016-01-19  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/GraphicsPath.h, tests/GraphicsPathTest.cpp: 
-  fixed access of invalid iterator 
-
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.14.2 
-
-  * NEWS, README.md: 
-  updated NEWS 
-
-2016-01-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/db2html.xsl: 
-  updated links to Bootstrap and Font Awesome in stylesheet db2html.xsl 
-
-  * src/dvisvgm.cpp, xxHash/xxhash.c, xxHash/xxhash.h: 
-  updated xxHash to version 0.5.0 
-
-  * tests/Makefile.am, tests/create-makefile, tests/genhashcheck.py: 
-  added test to check the validity of the char name hashes used in 
-  Unicode.cpp 
-
-2016-01-15  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BgColorSpecialHandler.cpp, src/ColorSpecialHandler.cpp, 
-    src/ColorSpecialHandler.h, tests/ColorSpecialTest.cpp: 
-  removed check for 'background' special from ColorSpecialHandler 
-
-2016-01-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.h, src/FontStyle.h, src/SVGTree.cpp, 
-    src/TriangularPatch.cpp: 
-  updated/fixed some comments 
-
-  * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h, 
-    src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/DVIToSVG.cpp, 
-    src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h: 
-  corrected handling of background color special across DVI pages 
-
-2016-01-05  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/GFReader.cpp, src/GFReader.h: 
-  added checks for misplaced GF commands 
-
-  * NEWS: 
-  updated NEWS 
-
-2016-01-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * Makefile.am, README, README.md, configure.ac, doc/Makefile.am, 
-    doc/conf-dblatex-man.xsl, doc/conf-dblatex-pdf.xsl, doc/db2html.xsl, 
-    doc/dvisvgm.txt.in, src/BasicDVIReader.cpp, src/BasicDVIReader.h, 
-    src/Bezier.cpp, src/Bezier.h, src/BgColorSpecialHandler.cpp, 
-    src/BgColorSpecialHandler.h, src/Bitmap.cpp, src/Bitmap.h, 
-    src/BoundingBox.cpp, src/BoundingBox.h, src/CMap.cpp, src/CMap.h, 
-    src/CMapManager.cpp, src/CMapManager.h, src/CMapReader.cpp, 
-    src/CMapReader.h, src/CRC32.cpp, src/CRC32.h, src/Calculator.cpp, 
-    src/Calculator.h, src/CharMapID.cpp, src/CharMapID.h, src/Character.h, 
-    src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/Color.cpp, 
-    src/Color.h, src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, 
-    src/CommandLine.cpp, src/CommandLine.h, src/DLLoader.cpp, src/DLLoader.h, 
-    src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, 
-    src/DVIToSVG.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, 
-    src/DependencyGraph.h, src/Directory.cpp, src/Directory.h, 
-    src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h, 
-    src/EPSFile.cpp, src/EPSFile.h, src/EPSToSVG.cpp, src/EPSToSVG.h, 
-    src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, src/EncFile.cpp, 
-    src/EncFile.h, src/FileFinder.cpp, src/FileFinder.h, src/FilePath.cpp, 
-    src/FilePath.h, src/FileSystem.cpp, src/FileSystem.h, src/Font.cpp, 
-    src/Font.h, src/FontCache.cpp, src/FontCache.h, src/FontEncoding.cpp, 
-    src/FontEncoding.h, src/FontEngine.cpp, src/FontEngine.h, 
-    src/FontManager.cpp, src/FontManager.h, src/FontMap.cpp, src/FontMap.h, 
-    src/FontMetrics.cpp, src/FontMetrics.h, src/GFGlyphTracer.cpp, 
-    src/GFGlyphTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp, 
-    src/GFTracer.h, src/Ghostscript.cpp, src/Ghostscript.h, src/Glyph.h, 
-    src/GlyphTracerMessages.h, src/GraphicsPath.h, 
-    src/HtmlSpecialHandler.cpp, src/HtmlSpecialHandler.h, 
-    src/InputBuffer.cpp, src/InputBuffer.h, src/InputReader.cpp, 
-    src/InputReader.h, src/JFM.cpp, src/JFM.h, src/Length.cpp, src/Length.h, 
-    src/Makefile.am, src/Makefile.old, src/MapLine.cpp, src/MapLine.h, 
-    src/Matrix.cpp, src/Matrix.h, src/Message.cpp, src/Message.h, 
-    src/MessageException.h, src/MetafontWrapper.cpp, src/MetafontWrapper.h, 
-    src/MiKTeXCom.cpp, src/MiKTeXCom.h, src/NoPsSpecialHandler.cpp, 
-    src/NoPsSpecialHandler.h, src/NumericRanges.h, src/PSFilter.h, 
-    src/PSInterpreter.cpp, src/PSInterpreter.h, src/PSPattern.cpp, 
-    src/PSPattern.h, src/PSPreviewFilter.cpp, src/PSPreviewFilter.h, 
-    src/PageRanges.cpp, src/PageRanges.h, src/PageSize.cpp, src/PageSize.h, 
-    src/Pair.h, src/PathClipper.cpp, src/PathClipper.h, 
-    src/PdfSpecialHandler.cpp, src/PdfSpecialHandler.h, 
-    src/PreScanDVIReader.cpp, src/PreScanDVIReader.h, src/Process.cpp, 
-    src/Process.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, 
-    src/RangeMap.cpp, src/RangeMap.h, src/SVGOutput.cpp, src/SVGOutput.h, 
-    src/SVGTree.cpp, src/SVGTree.h, src/SWFWriter.cpp, src/SWFWriter.h, 
-    src/ShadingPatch.cpp, src/ShadingPatch.h, src/SignalHandler.cpp, 
-    src/SignalHandler.h, src/SpecialActions.h, src/SpecialHandler.h, 
-    src/SpecialManager.cpp, src/SpecialManager.h, src/StreamReader.cpp, 
-    src/StreamReader.h, src/StreamWriter.cpp, src/StreamWriter.h, 
-    src/Subfont.cpp, src/Subfont.h, src/System.cpp, src/System.h, 
-    src/TFM.cpp, src/TFM.h, src/TensorProductPatch.cpp, 
-    src/TensorProductPatch.h, src/Terminal.cpp, src/Terminal.h, 
-    src/ToUnicodeMap.cpp, src/ToUnicodeMap.h, src/TpicSpecialHandler.cpp, 
-    src/TpicSpecialHandler.h, src/TriangularPatch.cpp, src/TriangularPatch.h, 
-    src/Unicode.cpp, src/Unicode.h, src/VFActions.h, src/VFReader.cpp, 
-    src/VFReader.h, src/VectorIterator.h, src/VectorStream.h, 
-    src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h, 
-    src/XMLString.cpp, src/XMLString.h, src/dvisvgm.cpp, src/macros.h, 
-    src/options.dtd, src/options.ggo, src/options.xml, src/psdefs.cpp, 
-    src/psdefs.ps, src/types.h, tests/BezierTest.cpp, tests/BitmapTest.cpp, 
-    tests/BoundingBoxTest.cpp, tests/CMapReaderTest.cpp, tests/CMapTest.cpp, 
-    tests/CRC32Test.cpp, tests/CalculatorTest.cpp, 
-    tests/ColorSpecialTest.cpp, tests/ColorTest.cpp, 
-    tests/CommandLineTest.cpp, tests/DependencyGraphTest.cpp, 
-    tests/DirectoryTest.cpp, tests/DvisvgmSpecialTest.cpp, 
-    tests/FileFinderTest.cpp, tests/FilePathTest.cpp, 
-    tests/FileSystemTest.cpp, tests/FontManagerTest.cpp, 
-    tests/FontMapTest.cpp, tests/GFGlyphTracerTest.cpp, 
-    tests/GFReaderTest.cpp, tests/GraphicsPathTest.cpp, tests/LengthTest.cpp, 
-    tests/Makefile.am, tests/MapLineTest.cpp, tests/MatrixTest.cpp, 
-    tests/MessageExceptionTest.cpp, tests/PSInterpreterTest.cpp, 
-    tests/PageRagesTest.cpp, tests/PageSizeTest.cpp, tests/PairTest.cpp, 
-    tests/RangeMapTest.cpp, tests/SVGOutputTest.cpp, 
-    tests/ShadingPatchTest.cpp, tests/SplittedCharInputBufferTest.cpp, 
-    tests/StreamInputBufferTest.cpp, tests/StreamReaderTest.cpp, 
-    tests/StreamWriterTest.cpp, tests/SubfontTest.cpp, 
-    tests/TensorProductPatchTest.cpp, tests/ToUnicodeMapTest.cpp, 
-    tests/TriangularPatchTest.cpp, tests/TypesTest.cpp, 
-    tests/UnicodeTest.cpp, tests/VectorIteratorTest.cpp, 
-    tests/VectorStreamTest.cpp, tests/XMLNodeTest.cpp, 
-    tests/XMLStringTest.cpp, tests/check-conv, tests/create-makefile, 
-    tests/normalize.xsl: 
-  updated year in copyright statements to 2016 
-
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.14.1 
-
-  * .travis.yml: 
-  force Travis to use legacy builds due to an issue with clang and gtest 
-
-2015-12-31  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp, src/PsSpecialHandler.h: 
-  reset PS graphics state at end of every DVI page 
-
-2015-12-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.14 
-
-  * NEWS: 
-  updated NEWS 
-
-2015-12-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp: 
-  added evaluation of PSTricks specials 'pst:' and 'PST:' 
-
-2015-12-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp: 
-  lookup files in the current working directory before searching the texmf 
-  tree 
-
-  * src/GraphicsPath.h, tests/GraphicsPathTest.cpp: 
-  fixed memory issue in class GraphicsPath<T> 
-
-2015-12-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/DVIToSVG.cpp, src/DVIToSVG.h, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/EPSToSVG.h, 
-    src/PSPreviewFilter.cpp, src/PSPreviewFilter.h, src/PsSpecialHandler.cpp, 
-    src/SpecialActions.h, src/dvisvgm.cpp: 
-  added option --bbox=preview; adapt preview data if --bbox=min 
-
-2015-12-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp: 
-  return entire kpathsea version string if it doesn't start with 
-  'kpathsea' 
-
-  * tests/GhostscriptTest.cpp: 
-  prevent opening a graphics window when running GhostscriptTest 
-
-2015-12-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.13 
-
-  * NEWS: 
-  updated NEWS 
-
-  * clipper/clipper.cpp, clipper/clipper.hpp: 
-  replaced DOS line endings of the Clipper sources to Unix ones 
-
-2015-12-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * CMakeLists.txt, src/Font.cpp, src/Font.h, src/Glyph.h, 
-    src/GraphicPath.h, src/GraphicsPath.h, src/Makefile.am, 
-    src/PathClipper.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, 
-    src/ShadingPatch.h, src/TensorProductPatch.cpp, src/TensorProductPatch.h, 
-    src/TpicSpecialHandler.cpp, src/TriangularPatch.cpp, 
-    src/TriangularPatch.h, tests/GraphicPathTest.cpp, 
-    tests/GraphicsPathTest.cpp, tests/Makefile.am, 
-    tests/TensorProductPatchTest.cpp, tests/TriangularPatchTest.cpp: 
-  renamed class GraphicPath to GraphicsPath 
-
-2015-11-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in: 
-  added a couple of links to the manpage 
-
-  * src/GraphicPath.h, src/PsSpecialHandler.cpp: 
-  remove redundant moveto commands from graphics paths 
-
-2015-11-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .gitignore, CMakeLists.txt, cmake/FindGhostscript.cmake, 
-    cmake/FindKpathsea.cmake, cmake/FindPotrace.cmake: 
-  added files for cmake 
-
-2015-11-25  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVGActions.cpp, src/EPSToSVG.cpp: 
-  remove progress message before printing a PS error message 
-
-  * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h: 
-  removed redundant methods 
-
-2015-11-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/psdefs.cpp, src/psdefs.ps: 
-  added evaluation of PS operators ashow, awidthshow, and widthshow (fixes 
-  #49) 
-
-  * xxHash/xxhash.c: 
-  updated xxHash to version r42 
-
-2015-11-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp, src/psdefs.cpp, src/psdefs.ps: 
-  minor code cleanup and reordering 
-
-  * src/psdefs.cpp, src/psdefs.ps: 
-  reduce rounding errors produced by PS operator 'charpath' 
-
-  * src/psdefs.cpp, src/psdefs.ps: 
-  propagate call of PS operator 'setcolor' to the PS handler 
-
-2015-11-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.12 
-
-  * NEWS: 
-  updated NEWS 
-
-2015-11-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontManager.cpp: 
-  removed redundant #include 
-
-  * src/FontEngine.cpp: 
-  treat character code as character index if no font mapping is set 
-
-2015-11-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README, README.md: 
-  updated links to Google Test framework 
-
-2015-11-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Color.cpp, src/Color.h, src/ColorSpecialHandler.cpp, 
-    src/HtmlSpecialHandler.cpp, tests/ColorTest.cpp: 
-  renamed Color::setName() to Color::setPSName() 
-
-  * tests/Makefile.am, tests/ShadingPatch.cpp, tests/ShadingPatchTest.cpp: 
-  renamed ShadingPatchTest 
-
-  * doc/dvisvgm.txt.in, src/Color.cpp, src/Color.h, src/CommandLine.cpp, 
-    src/CommandLine.h, src/DVIToSVGActions.cpp, 
-    src/DvisvgmSpecialHandler.cpp, src/EmSpecialHandler.cpp, 
-    src/HtmlSpecialHandler.cpp, src/PSPattern.cpp, src/PsSpecialHandler.cpp, 
-    src/SVGTree.cpp, src/TpicSpecialHandler.cpp, src/dvisvgm.cpp, 
-    src/options.xml, tests/ColorTest.cpp: 
-  added option --colornames to replace RGB color values with SVG color 
-  names 
-
-2015-10-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Process.cpp, src/Process.h: 
-  fixed invalid access to freed string memory 
-
-2015-09-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, README, README.md: 
-  updated NEWS and README files 
-
-2015-09-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.11 
-
-2015-09-14  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Font.cpp, src/ToUnicodeMap.cpp, src/Unicode.cpp, src/Unicode.h, 
-    tests/UnicodeTest.cpp: 
-  improved handling of invalid Unicode points 
-
-  * src/Font.cpp, src/Unicode.cpp, src/Unicode.h, tests/UnicodeTest.cpp: 
-  renamed Unicode::psName2Codepoint to Unicode::psNameToCodepoint 
-
-2015-09-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Font.cpp: 
-  prevent creating 0x00 codepoints if PS character name is unknown 
-
-  * src/HtmlSpecialHandler.cpp: 
-  quote XML metacharacters in xlink:title attributes 
-
-2015-09-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/SVGTree.cpp: 
-  force creating a new text element after appending a different node to 
-  the page 
-
-2015-08-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README, README.md: 
-  minor updates to README and README.md 
-
-2015-07-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/GhostscriptTest.cpp, tests/Makefile.am: 
-  added GhostscriptTest 
-
-  * tests/UnicodeTest.cpp: 
-  improved UnicodeTest 
-
-  * tests/CommandLineTest.cpp, tests/MessageExceptionTest.cpp: 
-  use ASSERT_STREQ in tests 
-
-2015-07-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README, README.md, doc/dvisvgm.txt.in: 
-  updated links to project website again (relocated to 
-  dvisvgm.bplaced.net) 
-
-2015-07-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README, README.md, doc/dvisvgm.txt.in: 
-  updated info about new project website 
-
-2015-07-14  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.10 
-
-  * NEWS: 
-  updated NEWS 
-
-2015-07-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README.md, doc/dvisvgm.txt.in, src/BasicDVIReader.cpp, 
-    src/BasicDVIReader.h, src/DVIReader.cpp, src/DVIReader.h, src/Font.h, 
-    src/FontManager.cpp, src/FontManager.h: 
-  added support for new XDV format 6 
-
-2015-07-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README, README.md: 
-  updated README 
-
-2015-07-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/dvisvgm.cpp: 
-  check for option --help before initializing the FileFinder 
-
-  * src/MiKTeXCom.cpp: 
-  added some comments to MiKTeXCom.cpp 
-
-2015-07-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/BezierTest.cpp: 
-  removed #include "debug.h" from test 
-
-  * Makefile.am, configure.ac, xxHash/LICENSE, xxHash/Makefile.am, 
-    xxHash/xxhash.c, xxHash/xxhash.h: 
-  added xxHash library (https://github.com/Cyan4973/xxHash) 
-
-  * src/Font.cpp, src/Makefile.am, src/Unicode.cpp, src/Unicode.h, 
-    tests/Makefile.am, tests/create-makefile: 
-  added mapping from character names to unicode for PostScript fonts 
-
-2015-04-07  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.9.2 
-
-  * NEWS, README.md: 
-  updated NEWS and README.md 
-
-  * src/SVGTree.cpp: 
-  apply --precision settings to font-size attributes too 
-
-2015-04-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/SVGOutputTest.cpp: 
-  remove output files created by SVGOutputTest::getPageStream() 
-
-2015-04-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README.md: 
-  minor additions to README.md 
-
-2015-03-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/GlyphTracerMessages.h: 
-  always skip tracer message if no glyphs have been traced 
-
-  * src/GFReader.cpp, src/GFReader.h, tests/GFReaderTest.cpp: 
-  improved GFReaderTest 
-
-2015-03-25  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/GFGlyphTracer.cpp, src/GFTracer.h, tests/GFGlyphTracerTest.cpp, 
-    tests/Makefile.am: 
-  ensure GFGlyphTracer::executeChar() returns the correct status; added 
-  GFGlyphtracerTest 
-
-  * src/DVIToSVG.cpp: 
-  avoid retracing of fonts if option --no-fonts is given 
-
-2015-03-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/StreamWriterTest.cpp: 
-  fixed StreamWriterTest 
-
-  * tests/SVGOutputTest.cpp: 
-  improved SVGOutputTest 
-
-2015-03-19  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/Makefile.am, tests/ShadingPatch.cpp: 
-  added ShadingPatchTest 
-
-2015-03-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/ShadingPatch.h, src/TensorProductPatch.cpp, 
-    src/TensorProductPatch.h, src/TriangularPatch.cpp, src/TriangularPatch.h, 
-    tests/Makefile.am, tests/TriangularPatchTest.cpp: 
-  added test for class  TriangularPatch 
-
-  * src/Bezier.cpp, src/Bezier.h, src/TensorProductPatch.cpp, 
-    src/TriangularPatch.cpp, src/TriangularPatch.h, 
-    tests/TriangularPatchTest.cpp: 
-  renamed method pointAt() of class Bezier and TriangularPatch to 
-  valueAt() 
-
-  * src/TensorProductPatch.h, tests/TensorProductPatchTest.cpp: 
-  improved TensorProductPatchTest 
-
-2015-03-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * autogen.sh: 
-  updated autogen.sh 
-
-2015-03-15  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/XMLNode.cpp, src/XMLNode.h, tests/Makefile.am, 
-    tests/XMLNodeTest.cpp: 
-  fixed a few issues in class XMLElementNode; added XMLNodeTest 
-
-  * Makefile.am, clipper/Makefile.am, configure.ac, m4/ax_code_coverage.m4, 
-    src/Makefile.am, tests/Makefile.am, tests/create-makefile: 
-  extended build system to generate coverage reports 
-
-  * tests/Makefile.am, tests/VectorIteratorTest.cpp: 
-  added VectorIteratorTest 
-
-2015-03-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/XMLStringTest.cpp: 
-  fixed test class name of XMLString 
-
-2015-03-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/CRC32Test.cpp: 
-  added test for 'compute' methods of class CRC32 
-
-  * tests/GraphicPathTest.cpp: 
-  extended tests of class GraphicPath 
-
-2015-03-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/StreamReaderTest.cpp: 
-  exteded StreamReader tests 
-
-2015-03-07  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/XMLString.cpp, tests/Makefile.am, tests/XMLStringTest.cpp: 
-  fixed conversion from C and C++ strings to XMLString; added 
-  XMLStringTest 
-
-  * .gitignore: 
-  added .gitignore 
-
-2015-03-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Bitmap.cpp, src/Bitmap.h, tests/BitmapTest.cpp, 
-    tests/GFReaderTest.cpp, tests/Makefile.am: 
-  small refactorings of class Bitmap; added tests for class Bitmap 
-
-  * src/BoundingBox.cpp, src/BoundingBox.h, tests/BoundingBoxTest.cpp: 
-  improved BoundingBox tests 
-
-2015-03-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .travis.yml: 
-  Travis conf: added configuration data for Coverity Scan 
-
-  * README.md: 
-  added license badge to README.md 
-
-2015-02-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, README.md: 
-  updated NEWS and README.md 
-
-2015-02-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Calculator.cpp: 
-  replaced while(1) with for(;;) for consistency 
-
-2015-02-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.9.1 
-
-2015-02-25  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Ghostscript.cpp: 
-  disable lookup of GS library in Windows registry for old gcc versions 
-
-2015-02-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/SVGOutput.cpp, src/SVGOutput.h, 
-    tests/Makefile.am, tests/SVGOutputTest.cpp, tests/create-makefile: 
-  added width specifiers and exression evaluation to --output patterns 
-
-  * doc/dvisvgm.txt.in: 
-  minor additions and formatting changes of the manpage 
-
-  * doc/Makefile.am, doc/conf-dblatex-man.xsl, doc/conf-dblatex-pdf.xsl, 
-    doc/dvisvgm.sty, doc/dvisvgm.xpr, doc/tweak-dblatex-pdf.xsl: 
-  improved the layout of the pdf manpage 
-
-  * doc/Makefile.am, doc/db2html.xsl, doc/dvisvgm.css: 
-  create html manpage with a separate stylesheet matching the new website 
-  theme 
-
-2015-02-19  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * .travis.yml: 
-  added configuration file for Travis CI 
-
-  * .travis.yml: 
-  added dependency 'python-lxml' to Travis configuration 
-
-  * .travis.yml: 
-  added dependency 'libgtest-dev' to Travis configuration; ensure call of 
-  'make check' 
-
-  * .travis.yml: 
-  Travis conf: added missing call of 'configure' 
-
-  * .travis.yml: 
-  Travis conf: build gtest libraries since Ubuntu doesn't provide the 
-  binaries 
-
-2015-02-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/TpicSpecialHandler.cpp: 
-  use constant M_PI rather than computing PI locally 
-
-2015-02-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README, README.md: 
-  updated README and README.md 
-
-2015-01-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/TensorProductPatch.cpp, src/TriangularPatch.cpp: 
-  renamed static helper function clip() to snap() 
-
-2015-01-15  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Color.cpp: 
-  resolved ambiguous call of pow (patch by Peter Breitenlohner) 
-
-2015-01-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/VectorIterator.h: 
-  removed redundant method VectorIterator::distanceToLast() 
-
-2014-12-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * Makefile.am, README, README.md, configure.ac, doc/Makefile.am, 
-    doc/dvisvgm.txt.in, src/BasicDVIReader.cpp, src/BasicDVIReader.h, 
-    src/Bezier.cpp, src/Bezier.h, src/BgColorSpecialHandler.cpp, 
-    src/BgColorSpecialHandler.h, src/Bitmap.cpp, src/Bitmap.h, 
-    src/BoundingBox.cpp, src/BoundingBox.h, src/CMap.cpp, src/CMap.h, 
-    src/CMapManager.cpp, src/CMapManager.h, src/CMapReader.cpp, 
-    src/CMapReader.h, src/CRC32.cpp, src/CRC32.h, src/Calculator.cpp, 
-    src/Calculator.h, src/CharMapID.cpp, src/CharMapID.h, src/Character.h, 
-    src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/Color.cpp, 
-    src/Color.h, src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, 
-    src/CommandLine.cpp, src/CommandLine.h, src/DLLoader.cpp, src/DLLoader.h, 
-    src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, 
-    src/DVIToSVG.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, 
-    src/DependencyGraph.h, src/Directory.cpp, src/Directory.h, 
-    src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h, 
-    src/EPSFile.cpp, src/EPSFile.h, src/EPSToSVG.cpp, src/EPSToSVG.h, 
-    src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, src/EncFile.cpp, 
-    src/EncFile.h, src/FileFinder.cpp, src/FileFinder.h, src/FilePath.cpp, 
-    src/FilePath.h, src/FileSystem.cpp, src/FileSystem.h, src/Font.cpp, 
-    src/Font.h, src/FontCache.cpp, src/FontCache.h, src/FontEncoding.cpp, 
-    src/FontEncoding.h, src/FontEngine.cpp, src/FontEngine.h, 
-    src/FontManager.cpp, src/FontManager.h, src/FontMap.cpp, src/FontMap.h, 
-    src/FontMetrics.cpp, src/FontMetrics.h, src/GFGlyphTracer.cpp, 
-    src/GFGlyphTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp, 
-    src/GFTracer.h, src/Ghostscript.cpp, src/Ghostscript.h, src/Glyph.h, 
-    src/GlyphTracerMessages.h, src/GraphicPath.h, src/HtmlSpecialHandler.cpp, 
-    src/HtmlSpecialHandler.h, src/InputBuffer.cpp, src/InputBuffer.h, 
-    src/InputReader.cpp, src/InputReader.h, src/JFM.cpp, src/JFM.h, 
-    src/Length.cpp, src/Length.h, src/Makefile.am, src/Makefile.old, 
-    src/MapLine.cpp, src/MapLine.h, src/Matrix.cpp, src/Matrix.h, 
-    src/Message.cpp, src/Message.h, src/MessageException.h, 
-    src/MetafontWrapper.cpp, src/MetafontWrapper.h, src/MiKTeXCom.cpp, 
-    src/MiKTeXCom.h, src/NoPsSpecialHandler.cpp, src/NoPsSpecialHandler.h, 
-    src/NumericRanges.h, src/PSFilter.h, src/PSInterpreter.cpp, 
-    src/PSInterpreter.h, src/PSPattern.cpp, src/PSPattern.h, 
-    src/PSPreviewFilter.cpp, src/PSPreviewFilter.h, src/PageRanges.cpp, 
-    src/PageRanges.h, src/PageSize.cpp, src/PageSize.h, src/Pair.h, 
-    src/PathClipper.cpp, src/PathClipper.h, src/PdfSpecialHandler.cpp, 
-    src/PdfSpecialHandler.h, src/PreScanDVIReader.cpp, 
-    src/PreScanDVIReader.h, src/Process.cpp, src/Process.h, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/RangeMap.cpp, 
-    src/RangeMap.h, src/SVGOutputBase.h, src/SVGTree.cpp, src/SVGTree.h, 
-    src/SWFWriter.cpp, src/SWFWriter.h, src/ShadingPatch.cpp, 
-    src/ShadingPatch.h, src/SignalHandler.cpp, src/SignalHandler.h, 
-    src/SpecialActions.h, src/SpecialHandler.h, src/SpecialManager.cpp, 
-    src/SpecialManager.h, src/StreamReader.cpp, src/StreamReader.h, 
-    src/StreamWriter.cpp, src/StreamWriter.h, src/Subfont.cpp, src/Subfont.h, 
-    src/System.cpp, src/System.h, src/TFM.cpp, src/TFM.h, 
-    src/TensorProductPatch.cpp, src/TensorProductPatch.h, src/Terminal.cpp, 
-    src/Terminal.h, src/ToUnicodeMap.cpp, src/ToUnicodeMap.h, 
-    src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h, 
-    src/TriangularPatch.cpp, src/TriangularPatch.h, src/Unicode.cpp, 
-    src/Unicode.h, src/VFActions.h, src/VFReader.cpp, src/VFReader.h, 
-    src/VectorIterator.h, src/VectorStream.h, src/XMLDocument.cpp, 
-    src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h, src/XMLString.cpp, 
-    src/XMLString.h, src/dvisvgm.cpp, src/gfprint.mak, src/macros.h, 
-    src/options.dtd, src/options.xml, src/psdefs.cpp, src/psdefs.ps, 
-    src/types.h, tests/BoundingBoxTest.cpp, tests/CMapReaderTest.cpp, 
-    tests/CMapTest.cpp, tests/CRC32Test.cpp, tests/CalculatorTest.cpp, 
-    tests/ColorSpecialTest.cpp, tests/ColorTest.cpp, 
-    tests/CommandLineTest.cpp, tests/DependencyGraphTest.cpp, 
-    tests/DirectoryTest.cpp, tests/DvisvgmSpecialTest.cpp, 
-    tests/FileFinderTest.cpp, tests/FilePathTest.cpp, 
-    tests/FileSystemTest.cpp, tests/FontManagerTest.cpp, 
-    tests/FontMapTest.cpp, tests/GFReaderTest.cpp, tests/GraphicPathTest.cpp, 
-    tests/LengthTest.cpp, tests/Makefile.am, tests/MapLineTest.cpp, 
-    tests/MatrixTest.cpp, tests/MessageExceptionTest.cpp, 
-    tests/PSInterpreterTest.cpp, tests/PageRagesTest.cpp, 
-    tests/PageSizeTest.cpp, tests/PairTest.cpp, tests/RangeMapTest.cpp, 
-    tests/SplittedCharInputBufferTest.cpp, tests/StreamInputBufferTest.cpp, 
-    tests/StreamReaderTest.cpp, tests/StreamWriterTest.cpp, 
-    tests/SubfontTest.cpp, tests/TensorProductPatchTest.cpp, 
-    tests/ToUnicodeMapTest.cpp, tests/TypesTest.cpp, 
-    tests/VectorStreamTest.cpp, tests/check-conv, tests/create-makefile, 
-    tests/normalize.xsl: 
-  updated year in copyright statements to 2015 
-
-2014-12-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/ShadingPatch.h, 
-    src/TensorProductPatch.cpp, src/TensorProductPatch.h, 
-    src/TriangularPatch.cpp, src/TriangularPatch.h, src/dvisvgm.cpp, 
-    src/options.xml: 
-  added command-line options --grad-overlap, --grad-segments, and 
-  --grad-simplify 
-
-  * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/EPSToSVG.cpp, 
-    src/EPSToSVG.h, src/SpecialActions.h, src/SpecialManager.cpp, 
-    src/dvisvgm.cpp: 
-  show PS instruction counter when processing EPS files with option 
-  --progress 
-
-  * src/dvisvgm.cpp: 
-  clear line before printing the message about user interruption to avoid 
-  trailing text fragments 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.9 
-
-  * NEWS: 
-  updated NEWS 
-
-2014-12-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp: 
-  check validity of DVI file before trying to collect the BOPs 
-
-2014-12-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Makefile.am, src/TriangularPatch.cpp, src/TriangularPatch.h: 
-  added class to compute triangular shading patches 
-
-  * src/Makefile.am, src/PsSpecialHandler.cpp, src/ShadingPatch.cpp, 
-    src/ShadingPatch.h, src/TensorProductPatch.cpp, src/TensorProductPatch.h: 
-  extracted common interface class ShadingPatch from TensorProductPatch 
-
-  * src/Color.cpp, src/Color.h, src/Makefile.am, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h, src/VectorIterator.h, src/psdefs.cpp, 
-    src/psdefs.ps: 
-  extended PS operator 'shfill' to support triangular patch meshes 
-
-2014-12-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp, src/PsSpecialHandler.h: 
-  added processing of the optional 'BBox' entry in a PS shading dictionary 
-
-2014-12-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CommandLine.cpp, src/CommandLine.h, src/dvisvgm.cpp, 
-    src/options.xml: 
-  disable option --clipjoin if PS support is disabled 
-
-  * src/Color.cpp, tests/ColorSpecialTest.cpp, tests/ColorTest.cpp: 
-  fixed CMYK to RGB approximation 
-
-2014-11-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h, src/psdefs.cpp, src/psdefs.ps, 
-    tests/PSInterpreterTest.cpp: 
-  added evaluation of PS operator "shfill" (Coons and tensor product 
-  patches only) 
-
-2014-11-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README.md: 
-  added list of features and a download button to README.md 
-
-2014-11-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/MiKTeXCom.cpp: 
-  added missing includes to make MinGW-w64 happy 
-
-2014-11-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * clipper/clipper.cpp, clipper/clipper.hpp: 
-  updated clipper library to version 6.2.1 
-
-2014-11-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Bezier.cpp, src/Bezier.h, src/BoundingBox.h, src/GraphicPath.h, 
-    src/Makefile.am, src/TensorProductPatch.cpp, src/TensorProductPatch.h, 
-    tests/Makefile.am, tests/TensorProductPatchTest.cpp: 
-  added code to compute tensor-product patches required for gradient fills 
-
-2014-11-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Matrix.cpp: 
-  use constant M_PI rather than defining PI locally 
-
-2014-10-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Color.cpp, src/Color.h, src/ColorSpecialHandler.cpp, 
-    src/PsSpecialHandler.cpp, tests/ColorTest.cpp: 
-  replaced float by double in class Color 
-
-  * src/Color.cpp, src/Color.h, src/ColorSpecialHandler.cpp, 
-    src/DVIReader.cpp, src/HtmlSpecialHandler.cpp, src/PsSpecialHandler.cpp, 
-    tests/ColorTest.cpp: 
-  renamed RGB setters/getters of class Color 
-
-  * src/Color.cpp, src/Color.h: 
-  replaced vectors with valarrays in class Color 
-
-  * src/Color.cpp, src/Color.h, tests/ColorTest.cpp: 
-  added deltaE and L*a*b* color space methods to class Color 
-
-2014-10-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * clipper/clipper.cpp, clipper/clipper.hpp: 
-  updated clipper library to version 6.2.0 
-
-  * src/GraphicPath.h, src/PathClipper.cpp, src/PathClipper.h, 
-    src/XMLNode.h: 
-  fixed a couple of doxygen comments; removed redundant 
-  PathClipperException 
-
-2014-10-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CommandLine.cpp: 
-  updated CommandLine.cpp with description of option --no-merge 
-
-  * src/Ghostscript.cpp: 
-  try to lookup the location of the GS DLL in the Windows registry 
-
-2014-10-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/options.xml: 
-  added info about option --no-merge to the manpage 
-
-2014-09-24  Khaled Hosny  <khaled.hosny at hindawi.com>
-
-  * src/Makefile.am: 
-  Add an opt2cpp Python script
-
-A very ugly script that should work as a 
-  drop in replacement for the
-opt2cpp XSLT. 
-
-2014-09-15  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp, src/PsSpecialHandler.h: 
-  ensure that colors set by a color special are always considered by the 
-  PS handler 
-
-2014-09-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BasicDVIReader.cpp, src/DVIReader.cpp, src/FontCache.cpp, 
-    src/GFReader.cpp, src/dvisvgm.cpp: 
-  replaced namespace 'ios_base' with 'ios' 
-
-2014-08-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp: 
-  added missing whitespace boundaries in PS code 
-
-  * src/FontEngine.cpp, tests/PageRagesTest.cpp: 
-  removed unused static functions 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.8.1 
-
-  * NEWS: 
-  updated NEWS 
-
-2014-08-20  Khaled Hosny  <khaled.hosny at hindawi.com>
-
-  * src/CommandLine.cpp, src/CommandLine.h, src/SVGTree.cpp, src/SVGTree.h, 
-    src/dvisvgm.cpp, src/options.xml: 
-  Add an option not to merge adjacent chars
-
-With this option on, each DVI 
-  character is put in its own <text> tag.
-Makes post processing the SVG 
-  file a bit simpler. 
-
-2014-08-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp, src/DependencyGraph.h, src/Makefile.am, 
-    src/SVGTree.cpp, src/SVGTree.h, src/XMLNode.cpp, src/XMLNode.h, 
-    tests/DependencyGraphTest.cpp, tests/Makefile.am: 
-  remove redundant clipPath elements from generated SVG files 
-
-2014-08-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PSPattern.cpp, src/XMLNode.cpp, src/XMLNode.h: 
-  renamed XMLElementNode::findDescendants() and made it constant 
-
-2014-08-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/Makefile.am, tests/create-makefile: 
-  link tests against FreeType library 
-
-2014-08-10  Khaled Hosny  <khaledhosny at eglug.org>
-
-  * configure.ac, src/Makefile.am: 
-  EXTRA_LIBS is not used anymore 
-
-  * configure.ac, src/Makefile.am: 
-  Don't override CXXFLAGS in configure script
-
-Breaks standard things 
-  like:
-
-     make CXXFLAGS="-g -O0 -pg" 
-
-  * configure.ac, src/Makefile.am: 
-  Don't override CPPFLAGS and LDFLAGS in configure
-
-For the same reasons 
-  as the previous commit 
-
-2014-08-07  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h: 
-  removed unused emit() methods from XML classes 
-
-2014-08-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README.md: 
-  minor fixes to README.md 
-
-2014-07-31  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp, src/psdefs.cpp, src/psdefs.ps: 
-  prevent side-effects caused by bop/eop operators present in PS specials 
-
-2014-07-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS: 
-  updated NEWS 
-
-2014-07-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/GraphicPath.h, src/PSInterpreter.cpp, src/PSInterpreter.h, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/psdefs.cpp, 
-    src/psdefs.ps, tests/PSInterpreterTest.cpp: 
-  added evaluation of PS operator 'clippath' (copies clipping path into 
-  graphics path) 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.8 
-
-2014-07-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Font.cpp, src/GFGlyphTracer.cpp, src/GraphicPath.h, 
-    src/PsSpecialHandler.cpp: 
-  renamed GraphicPath::newpath() to GraphicPath::clear() 
-
-2014-07-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/InputReader.cpp, src/PSInterpreter.cpp: 
-  ensure that InputReader::compare() checks whole and not just partial 
-  words 
-
-2014-07-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.h, src/dvisvgm.cpp: 
-  prevent throwing a DVIException when option -l is present 
-
-  * Makefile.am, clipper/License.txt, clipper/Makefile.am, 
-    clipper/clipper.cpp, clipper/clipper.hpp, configure.ac, src/Makefile.am: 
-  added slightly modified sources of clipper library (computes boolops on 
-  polygons) 
-
-  * src/GraphicPath.h: 
-  added field to store the winding rule to class GraphicPath 
-
-  * README, README.md, src/Bezier.cpp, src/Bezier.h, src/GraphicPath.h, 
-    src/Makefile.am, src/PathClipper.cpp, src/PathClipper.h, src/dvisvgm.cpp: 
-  added class PathClipper to compute intersections of closed curved 
-  graphics paths 
-
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/dvisvgm.cpp, 
-    src/options.xml: 
-  added option --clippath to compute the intersection of clipping paths 
-
-2014-07-20  Khaled Hosny  <khaledhosny at eglug.org>
-
-  * src/FontEngine.cpp: 
-  free existing FT_Face before creating a new one 
-
-2014-07-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, 
-    src/GraphicPath.h, src/PsSpecialHandler.cpp, src/SVGTree.cpp, 
-    src/SVGTree.h, src/dvisvgm.cpp, src/options.xml, 
-    tests/GraphicPathTest.cpp: 
-  added option to create relative rather than absolute path commands 
-
-  * src/TpicSpecialHandler.cpp: 
-  TPIC handler: use class GraphicPath to create SVG path commands 
-
-2014-07-07  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVGActions.h, src/Doxyfile, src/HtmlSpecialHandler.h, 
-    src/RangeMap.cpp, src/SpecialManager.cpp, src/ToUnicodeMap.cpp: 
-  fixed a couple of broken doxygen comments 
-
-2014-06-25  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Ghostscript.cpp: 
-  get proper name of Ghostscript library when building for Cygwin 
-
-2014-06-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README.md: 
-  added markdown version of README 
-
-2014-06-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/psdefs.cpp, src/psdefs.ps: 
-  suppress output of PS operator ':show' to prevent the creation of 
-  additional graphic elements 
-
-2014-06-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/SpecialManager.cpp, src/SpecialManager.h: 
-  removed redundant method SpecialManager::leavePSHeaderSection() 
-
-  * doc/dvisvgm.txt.in, src/DVIToSVGActions.cpp, 
-    src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h, 
-    tests/DvisvgmSpecialTest.cpp, tests/Makefile.am: 
-  added/improved dvisvgm::raw* specials 
-
-  * src/InputReader.cpp: 
-  added missing include 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.7 
-
-  * NEWS: 
-  updated NEWS 
-
-2014-06-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/XMLNode.cpp, src/XMLNode.h: 
-  added clear() to XMLNode classes; added XMLTextNode::getText() 
-
-2014-06-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/InputReader.cpp, src/InputReader.h: 
-  added InputReader::getLine() 
-
-  * src/DVIToSVG.cpp, src/SpecialHandler.h, src/SpecialManager.cpp, 
-    src/SpecialManager.h: 
-  added listener to allow SpecialHandlers being notified when 
-  pre-processing has finished 
-
-2014-06-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/SpecialActions.h, tests/ColorSpecialTest.cpp: 
-  renamed class SpecialEmptyActions to EmptySpecialActions 
-
-2014-06-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/Ghostscript.cpp: 
-  removed unused variable; call Ghostscript::exit() with explicitely given 
-  object 
-
-  * src/DVIToSVG.h, src/SpecialManager.h: 
-  removed redundant definition of assignment operators 
-
-2014-06-05  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BasicDVIReader.cpp, src/BasicDVIReader.h, src/DVIReader.cpp, 
-    src/DVIReader.h, src/Makefile.am: 
-  moved basic funtionality of DVIReader to base class BasicDVIReader 
-
-  * src/BasicDVIReader.h, src/DVIReader.cpp, src/DVIToSVG.cpp, 
-    src/DVIToSVG.h, src/dvisvgm.cpp: 
-  moved call of executePreamble() and executePostamble() from DVIToSVG to 
-  DVIReader 
-
-  * src/DVIActions.h, src/DVIReader.cpp, src/DVIToSVG.cpp, src/DVIToSVG.h, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Makefile.am, 
-    src/PreScanDVIReader.cpp, src/PreScanDVIReader.h, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SpecialHandler.h, 
-    src/SpecialManager.cpp, src/SpecialManager.h, src/StreamReader.cpp, 
-    src/StreamReader.h: 
-  pre-process DVI file to collect required data not present in the page 
-  ranges to be converted 
-
-  * src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp, 
-    src/SpecialManager.cpp, src/SpecialManager.h, src/dvisvgm.cpp: 
-  made class SpecialManager a singleton 
-
-  * src/BasicDVIReader.h, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h: 
-  allow to replace the DVI reader assigned to an instance of 
-  DVIToSVGActions 
-
-  * doc/dvisvgm.txt.in, src/BasicDVIReader.h, src/DVIToSVG.cpp, 
-    src/DVIToSVG.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, 
-    src/EPSToSVG.cpp, src/EPSToSVG.h, src/HtmlSpecialHandler.cpp, 
-    src/HtmlSpecialHandler.h, src/PreScanDVIReader.cpp, 
-    src/PreScanDVIReader.h, src/SpecialActions.h: 
-  process hyperref anchors and links across pages 
-
-  * src/BasicDVIReader.cpp, src/BasicDVIReader.h, src/Bitmap.h, 
-    src/BoundingBox.h, src/CMap.h, src/CMapManager.cpp, src/CMapManager.h, 
-    src/CMapReader.h, src/CRC32.h, src/Calculator.cpp, src/Calculator.h, 
-    src/CmdLineParserBase.h, src/Color.cpp, src/ColorSpecialHandler.cpp, 
-    src/ColorSpecialHandler.h, src/CommandLine.cpp, src/CommandLine.h, 
-    src/DLLoader.h, src/DVIReader.cpp, src/DVIToSVG.h, src/DVIToSVGActions.h, 
-    src/Directory.h, src/DvisvgmSpecialHandler.h, src/EmSpecialHandler.cpp, 
-    src/EmSpecialHandler.h, src/EncFile.h, src/FileFinder.h, 
-    src/FileSystem.cpp, src/Font.cpp, src/Font.h, src/FontCache.h, 
-    src/FontEncoding.cpp, src/FontEngine.cpp, src/FontEngine.h, 
-    src/FontManager.cpp, src/FontManager.h, src/FontMap.cpp, src/FontMap.h, 
-    src/GFGlyphTracer.cpp, src/GFGlyphTracer.h, src/GFReader.cpp, 
-    src/GFReader.h, src/GFTracer.h, src/Ghostscript.cpp, src/Ghostscript.h, 
-    src/GraphicPath.h, src/HtmlSpecialHandler.h, src/InputBuffer.cpp, 
-    src/InputBuffer.h, src/JFM.h, src/Length.cpp, src/Length.h, 
-    src/MapLine.cpp, src/MapLine.h, src/Matrix.cpp, src/Matrix.h, 
-    src/MessageException.h, src/MetafontWrapper.cpp, src/MetafontWrapper.h, 
-    src/NoPsSpecialHandler.h, src/NumericRanges.h, src/PSInterpreter.h, 
-    src/PSPattern.h, src/PSPreviewFilter.h, src/PageRanges.h, src/PageSize.h, 
-    src/Pair.h, src/PdfSpecialHandler.cpp, src/PdfSpecialHandler.h, 
-    src/Process.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, 
-    src/SVGTree.h, src/SWFWriter.cpp, src/SignalHandler.h, 
-    src/SpecialActions.h, src/SpecialManager.h, src/StreamWriter.h, 
-    src/Subfont.cpp, src/Subfont.h, src/TFM.h, src/ToUnicodeMap.h, 
-    src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h, src/VFReader.cpp, 
-    src/VectorStream.h, src/XMLDocument.h, src/XMLNode.h, src/XMLString.cpp, 
-    src/XMLString.h, src/dvisvgm.cpp, src/types.h: 
-  replaced leading spaces by tabs; removed trailing whitespace 
-
-2014-06-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/DVIReader.h: 
-  removed redundant variable DVIReader::_prevBop 
-
-  * rpm/Makefile.am: 
-  removed outdated project folder 'rpm' 
-
-  * src/PsSpecialHandler.cpp: 
-  fixed incorrect extent values shown when applying a preview bbox 
-  (bp->pt) 
-
-2014-06-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/EPSFile.cpp, src/GFReader.cpp: 
-  replaced relative variant of seekg() by absolute one where possible 
-
-  * src/DVIReader.cpp, src/DVIReader.h: 
-  removed redundant code from DVIReader::evalCommand() 
-
-2014-05-31  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/VFReader.cpp: 
-  few code adjustments 
-
-  * src/DVIReader.cpp, src/StreamReader.cpp, src/StreamReader.h, 
-    src/VFReader.cpp: 
-  removed StreamReader::in() 
-
-  * src/DVIReader.cpp, src/StreamReader.h, src/VFReader.cpp: 
-  renamed some methods of class StreamReader 
-
-2014-05-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/DVIReader.h, src/StreamReader.h: 
-  collect all DVI BOP offsets to reach them quickly 
-
-  * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h: 
-  removed DVIReader::_totalPages; use number of BOP offsets instead 
-
-  * src/DVIReader.cpp, src/DVIReader.h, src/dvisvgm.cpp: 
-  simplified computation of progress ratio 
-
-  * src/DVIReader.cpp, src/DVIReader.h: 
-  simplified DVIReader::executePage; removed DVIReader::executePages 
-
-2014-05-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CharMap.cpp, src/CharMap.h, src/Font.cpp, src/FontEngine.cpp, 
-    src/FontEngine.h: 
-  removed redundant method CharMap::invert() 
-
-  * src/CMap.cpp, src/CMap.h, src/Makefile.am, src/RangeMap.cpp, 
-    src/RangeMap.h, tests/Makefile.am, tests/RangeMapTest.cpp: 
-  extracted class RangeMap previously implemented as part of SegmentedCMap 
-
-  * src/RangeMap.cpp: 
-  fixed right joins of touching ranges in a RangeMap 
-
-  * src/CharMap.cpp, src/CharMap.h, src/Font.cpp, src/Font.h, 
-    src/FontEngine.cpp, src/FontEngine.h, src/Makefile.am: 
-  replaced class CharMap with more generic class RangeMap 
-
-  * src/DVIToSVG.cpp, src/Makefile.am, src/NumericRanges.h, 
-    src/PageRanges.cpp, src/PageRanges.h, tests/PageRagesTest.cpp: 
-  extracted functionality of class PageRanges to separate class 
-  NumericRanges 
-
-  * src/Makefile.am, src/RangeMap.h, src/ToUnicodeMap.cpp, 
-    src/ToUnicodeMap.h, tests/Makefile.am, tests/ToUnicodeMapTest.cpp: 
-  added class ToUnicodeMap to handle mappings from character indexes to 
-  unicode points 
-
-  * src/Makefile.am: 
-  Makefiles: put source files on separate lines 
-
-2014-04-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CharMapID.cpp, src/CharMapID.h, src/DVIReader.cpp, src/Font.cpp, 
-    src/Font.h, src/FontEngine.cpp, src/FontEngine.h: 
-  try to add unicode mappings missing in a font's cmap table 
-
-2014-04-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/SVGTree.cpp: 
-  don't add unnecessary element 'missing-glyph' to SVG files 
-
-2014-04-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/options.xml: 
-  renamed argument of option --linkmark from 'type' to 'style' 
-
-2014-04-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.6 
-
-2014-04-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/DVIToSVG.cpp, src/EPSToSVG.cpp: 
-  removed date and machine triplet from generated SVG files 
-
-2014-04-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/HtmlSpecialHandler.cpp, 
-    src/HtmlSpecialHandler.h: 
-  added optional selection of line/box colors to option --linkmark 
-
-2014-04-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CommandLine.h, src/DVIToSVG.cpp, src/EPSToSVG.cpp: 
-  don't link GS messages unnecessarily if HAVE_LIBGS is defined 
-
-  * src/DVIReader.h, src/DVIToSVGActions.h, src/HtmlSpecialHandler.cpp, 
-    src/HtmlSpecialHandler.h, src/SpecialActions.h: 
-  only split hyperlink boxes on line breaks 
-
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/options.xml: 
-  changed default argument of option --linkmark to 'box' 
-
-2014-04-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DLLoader.cpp: 
-  prevent calling dlopen() if the length of the string argument is 0 
-
-  * doc/dvisvgm.txt.in, src/Ghostscript.cpp: 
-  if libgs is loaded during runtime, look for libgs.so.X instead of 
-  libgs.so 
-
-  * src/Ghostscript.cpp, src/dvisvgm.cpp: 
-  moved lookup of MiKTeX's GS DLL to get_libgs() 
-
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, 
-    src/SVGTree.cpp, src/SVGTree.h, src/dvisvgm.cpp, src/options.xml: 
-  added command-line option --zoom 
-
-2014-04-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CMap.cpp, src/CmdLineParserBase.cpp, src/ColorSpecialHandler.cpp, 
-    src/DVIReader.cpp, src/DVIToSVGActions.cpp, src/Doxyfile, 
-    src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h, 
-    src/EPSFile.cpp, src/EmSpecialHandler.cpp, src/FileFinder.cpp, 
-    src/FileSystem.cpp, src/Font.cpp, src/FontCache.cpp, src/FontEncoding.h, 
-    src/FontEngine.cpp, src/FontMap.cpp, src/GraphicPath.h, 
-    src/PSInterpreter.cpp, src/PageRanges.cpp, src/PsSpecialHandler.cpp, 
-    src/SVGTree.cpp, src/SVGTree.h, src/SpecialManager.cpp, src/Subfont.cpp, 
-    src/TFM.cpp, src/TpicSpecialHandler.cpp, src/XMLDocument.cpp, 
-    src/XMLNode.cpp, src/dvisvgm.cpp: 
-  fixed issues in the doxygen documentation 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.5.3 
-
-  * NEWS: 
-  updated NEWS 
-
-2014-04-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVGActions.cpp: 
-  equalize implementations of moveToX and moveToY 
-
-  * src/BoundingBox.h, src/DVIActions.cpp, src/DVIActions.h, 
-    src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, 
-    src/DvisvgmSpecialHandler.cpp, src/EPSToSVG.cpp, 
-    src/EmSpecialHandler.cpp, src/Font.h, src/FontManager.cpp, 
-    src/GFGlyphTracer.cpp, src/GFReader.cpp, src/GFTracer.cpp, 
-    src/GFTracer.h, src/GraphicPath.h, src/HtmlSpecialHandler.h, 
-    src/Makefile.am, src/PSPattern.cpp, src/PSPreviewFilter.cpp, 
-    src/PSPreviewFilter.h, src/PageSize.cpp, src/PageSize.h, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SVGTree.cpp, 
-    src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h, 
-    src/TFM.cpp, src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h, 
-    src/VFReader.cpp: 
-  switched internal computations from TeX points (pt) to PS points (bp) 
-
-2014-02-05  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/DVIReader.h: 
-  ensure updating the SVG cursor position when executing DVI command 
-  set_rule 
-
-2014-01-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Ghostscript.cpp: 
-  check if library given by --libgs is actually a GS library 
-
-2014-01-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS: 
-  updated NEWS 
-
-2014-01-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp: 
-  catch exceptions thrown by MiKTeXCom object 
-
-  * src/Directory.cpp: 
-  initialize Directory member variables (Win only) 
-
-  * src/FileFinder.cpp: 
-  return 'unknown' if MiKTeX version can't be retrieved 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.5.2 
-
-2014-01-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * Makefile.am, README, configure.ac, doc/Makefile.am, doc/dvisvgm.txt.in, 
-    src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h, 
-    src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h, 
-    src/CMap.cpp, src/CMap.h, src/CMapManager.cpp, src/CMapManager.h, 
-    src/CMapReader.cpp, src/CMapReader.h, src/CRC32.cpp, src/CRC32.h, 
-    src/Calculator.cpp, src/Calculator.h, src/CharMap.cpp, src/CharMap.h, 
-    src/CharMapID.cpp, src/CharMapID.h, src/Character.h, 
-    src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/Color.cpp, 
-    src/Color.h, src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, 
-    src/CommandLine.cpp, src/CommandLine.h, src/DLLoader.cpp, src/DLLoader.h, 
-    src/DVIActions.cpp, src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h, 
-    src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h, src/Directory.cpp, src/Directory.h, 
-    src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h, 
-    src/EPSFile.cpp, src/EPSFile.h, src/EPSToSVG.cpp, src/EPSToSVG.h, 
-    src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, src/EncFile.cpp, 
-    src/EncFile.h, src/FileFinder.cpp, src/FileFinder.h, src/FilePath.cpp, 
-    src/FilePath.h, src/FileSystem.cpp, src/FileSystem.h, src/Font.cpp, 
-    src/Font.h, src/FontCache.cpp, src/FontCache.h, src/FontEncoding.cpp, 
-    src/FontEncoding.h, src/FontEngine.cpp, src/FontEngine.h, 
-    src/FontManager.cpp, src/FontManager.h, src/FontMap.cpp, src/FontMap.h, 
-    src/FontMetrics.cpp, src/FontMetrics.h, src/GFGlyphTracer.cpp, 
-    src/GFGlyphTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp, 
-    src/GFTracer.h, src/Ghostscript.cpp, src/Ghostscript.h, src/Glyph.h, 
-    src/GlyphTracerMessages.h, src/GraphicPath.h, src/HtmlSpecialHandler.cpp, 
-    src/HtmlSpecialHandler.h, src/InputBuffer.cpp, src/InputBuffer.h, 
-    src/InputReader.cpp, src/InputReader.h, src/JFM.cpp, src/JFM.h, 
-    src/Length.cpp, src/Length.h, src/Makefile.am, src/Makefile.old, 
-    src/MapLine.cpp, src/MapLine.h, src/Matrix.cpp, src/Matrix.h, 
-    src/Message.cpp, src/Message.h, src/MessageException.h, 
-    src/MetafontWrapper.cpp, src/MetafontWrapper.h, src/MiKTeXCom.cpp, 
-    src/MiKTeXCom.h, src/NoPsSpecialHandler.cpp, src/NoPsSpecialHandler.h, 
-    src/PSFilter.h, src/PSInterpreter.cpp, src/PSInterpreter.h, 
-    src/PSPattern.cpp, src/PSPattern.h, src/PSPreviewFilter.cpp, 
-    src/PSPreviewFilter.h, src/PageRanges.cpp, src/PageRanges.h, 
-    src/PageSize.cpp, src/PageSize.h, src/Pair.h, src/PdfSpecialHandler.cpp, 
-    src/PdfSpecialHandler.h, src/Process.cpp, src/Process.h, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SVGOutputBase.h, 
-    src/SVGTree.cpp, src/SVGTree.h, src/SWFWriter.cpp, src/SWFWriter.h, 
-    src/SignalHandler.cpp, src/SignalHandler.h, src/SpecialActions.h, 
-    src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h, 
-    src/StreamReader.cpp, src/StreamReader.h, src/StreamWriter.cpp, 
-    src/StreamWriter.h, src/Subfont.cpp, src/Subfont.h, src/System.cpp, 
-    src/System.h, src/TFM.cpp, src/TFM.h, src/Terminal.cpp, src/Terminal.h, 
-    src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h, src/VFActions.h, 
-    src/VFReader.cpp, src/VFReader.h, src/VectorStream.h, 
-    src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h, 
-    src/XMLString.cpp, src/XMLString.h, src/dvisvgm.cpp, src/macros.h, 
-    src/options.dtd, src/options.xml, src/psdefs.cpp, src/psdefs.ps, 
-    src/types.h, tests/BoundingBoxTest.cpp, tests/CMapReaderTest.cpp, 
-    tests/CMapTest.cpp, tests/CRC32Test.cpp, tests/CalculatorTest.cpp, 
-    tests/ColorSpecialTest.cpp, tests/ColorTest.cpp, 
-    tests/CommandLineTest.cpp, tests/DirectoryTest.cpp, 
-    tests/FileFinderTest.cpp, tests/FilePathTest.cpp, 
-    tests/FileSystemTest.cpp, tests/FontManagerTest.cpp, 
-    tests/FontMapTest.cpp, tests/GFReaderTest.cpp, tests/GraphicPathTest.cpp, 
-    tests/LengthTest.cpp, tests/Makefile.am, tests/MapLineTest.cpp, 
-    tests/MatrixTest.cpp, tests/MessageExceptionTest.cpp, 
-    tests/PSInterpreterTest.cpp, tests/PageRagesTest.cpp, 
-    tests/PageSizeTest.cpp, tests/PairTest.cpp, 
-    tests/SplittedCharInputBufferTest.cpp, tests/StreamInputBufferTest.cpp, 
-    tests/StreamReaderTest.cpp, tests/StreamWriterTest.cpp, 
-    tests/SubfontTest.cpp, tests/TypesTest.cpp, tests/VectorStreamTest.cpp, 
-    tests/check-conv, tests/create-makefile, tests/normalize.xsl: 
-  updated year in copyright statements to 2014 
-
-2013-12-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Font.cpp: 
-  check if units per EM are not 0 to prevent divisions by zero 
-
-  * src/Directory.cpp, src/Directory.h, src/FontMap.cpp, 
-    tests/DirectoryTest.cpp: 
-  changed directory entry types from char to enums 
-
-  * src/FontCache.cpp: 
-  catch potential StreamReaderException 
-
-2013-12-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BoundingBox.cpp: 
-  explicitely initialize BoundingBox fields 
-
-  * src/FontCache.cpp: 
-  avoid accessing strings constructed from temporaries 
-
-  * src/Matrix.cpp: 
-  ensure return value of istream::get() is assigned to int vars 
-
-  * src/DVIReader.cpp: 
-  check if denominator of DVI unit is non-zero 
-
-  * src/DvisvgmSpecialHandler.cpp, src/FontCache.cpp: 
-  ensure null pointer checks before dereferencing 
-
-  * src/FontCache.cpp, src/SpecialManager.cpp: 
-  restore stream format flags 
-
-  * src/DVIReader.cpp, src/Directory.cpp, src/GFReader.cpp: 
-  added missing initializations of member variables 
-
-2013-11-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/SVGTree.cpp, src/SVGTree.h: 
-  don't let global font colors interfere with color specials 
-
-2013-10-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS: 
-  updated NEWS 
-
-2013-10-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Bitmap.cpp, src/Color.cpp, src/JFM.cpp, src/Matrix.cpp: 
-  added missing #includes of header file <algorithm> 
-
-  * src/FileSystem.cpp, src/MetafontWrapper.cpp: 
-  added explicit casts from ifstream to bool 
-
-  * src/DVIReader.cpp: 
-  temporarily reactivated processing of font definitions located in the 
-  postamble 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.5.1 
-
-2013-10-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp: 
-  suppress output of logical page number if it equals physical page number 
-
-2013-10-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PSPreviewFilter.cpp, src/PsSpecialHandler.cpp: 
-  ensure proper evaluation of tightpage data if multiple pages are 
-  processed 
-
-2013-10-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/InputBuffer.h: 
-  don't check unsigned variables for negative values 
-
-  * src/Color.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h: 
-  added 'const' to read-only methods 
-
-2013-09-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontCache.cpp, src/FontCache.h: 
-  renamed FontCache::VERSION to FontCache::FORMAT_VERSION 
-
-  * src/DVIToSVG.cpp, src/Ghostscript.h, src/dvisvgm.cpp: 
-  added missing guards and functions to prevent compilation errors if 
-  DISABLE_GS is set 
-
-  * src/DVIToSVG.cpp: 
-  changed warning message that appears if PS support has been disabled 
-  permanently 
-
-2013-09-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BgColorSpecialHandler.cpp, src/Bitmap.cpp, src/BoundingBox.cpp, 
-    src/CMap.cpp, src/CMapManager.cpp, src/CMapReader.cpp, src/CRC32.cpp, 
-    src/Calculator.cpp, src/CharMap.cpp, src/CmdLineParserBase.cpp, 
-    src/Color.cpp, src/ColorSpecialHandler.cpp, src/CommandLine.cpp, 
-    src/CommandLine.h, src/DLLoader.cpp, src/DVIActions.cpp, 
-    src/DVIReader.cpp, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, 
-    src/Directory.cpp, src/DvisvgmSpecialHandler.cpp, src/EPSFile.cpp, 
-    src/EPSToSVG.cpp, src/EmSpecialHandler.cpp, src/EncFile.cpp, 
-    src/FileFinder.cpp, src/FilePath.cpp, src/FileSystem.cpp, src/Font.cpp, 
-    src/FontCache.cpp, src/FontEncoding.cpp, src/FontEngine.cpp, 
-    src/FontManager.cpp, src/FontMap.cpp, src/FontMetrics.cpp, 
-    src/GFGlyphTracer.cpp, src/GFReader.cpp, src/GFTracer.cpp, 
-    src/Ghostscript.cpp, src/Ghostscript.h, src/HtmlSpecialHandler.cpp, 
-    src/InputBuffer.cpp, src/InputReader.cpp, src/JFM.cpp, src/Length.cpp, 
-    src/MapLine.cpp, src/Matrix.cpp, src/Message.cpp, 
-    src/MetafontWrapper.cpp, src/MiKTeXCom.cpp, src/NoPsSpecialHandler.cpp, 
-    src/PSInterpreter.cpp, src/PSPattern.cpp, src/PSPreviewFilter.cpp, 
-    src/PageRanges.cpp, src/PageSize.cpp, src/PdfSpecialHandler.cpp, 
-    src/Process.cpp, src/PsSpecialHandler.cpp, src/SVGTree.cpp, 
-    src/SignalHandler.cpp, src/SpecialManager.cpp, src/StreamReader.cpp, 
-    src/StreamWriter.cpp, src/Subfont.cpp, src/System.cpp, src/TFM.cpp, 
-    src/Terminal.cpp, src/TpicSpecialHandler.cpp, src/VFReader.cpp, 
-    src/XMLDocument.cpp, src/XMLNode.cpp, src/XMLString.cpp, src/dvisvgm.cpp: 
-  include config.h at the top of every translation unit 
-
-  * src/DLLoader.h, src/Directory.h: 
-  moved #define NOMINMAX to Windows config.h 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.5 
-
-  * NEWS: 
-  updated NEWS 
-
-2013-08-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontMetrics.h, src/JFM.cpp, src/JFM.h, src/TFM.h: 
-  added retrieval of vertical mode flag to class FontMetrics 
-
-  * src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Font.cpp, src/Font.h, 
-    src/FontEngine.cpp, src/FontEngine.h, src/FontMetrics.h, src/JFM.h, 
-    src/SVGTree.cpp, src/SVGTree.h, src/TFM.h, src/dvisvgm.cpp: 
-  added support for DVI format 3 (pTeX, vertical mode) 
-
-  * src/DVIReader.cpp, src/DVIReader.h, src/Font.cpp, src/Font.h, 
-    src/FontEngine.cpp, src/FontEngine.h, src/FontManager.cpp, 
-    src/FontManager.h, src/FontStyle.h, src/SVGTree.cpp, src/dvisvgm.cpp: 
-  added support for XDV (DVI format 5) files 
-
-  * src/Font.cpp, src/Font.h, src/XMLString.cpp: 
-  replaced entity references by corresponding UTF-8 characters; use 
-  correct unicode points rather than DVI charcodes 
-
-  * doc/dvisvgm.txt.in: 
-  updated manpage 
-
-2013-08-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CharMap.cpp, src/CharMap.h, src/Font.cpp, src/Font.h, 
-    src/FontEncoding.h, src/FontEngine.cpp, src/FontEngine.h, 
-    src/FontManager.cpp, src/Makefile.am: 
-  replaced local std::map tables used in Font classes with new class 
-  CharMap 
-
-2013-08-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/XMLString.cpp: 
-  replace very small floating point numbers by 0 
-
-2013-08-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp: 
-  suppress error messages from makeFOO tools 
-
-2013-08-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CMap.cpp, src/CMap.h, src/CMapManager.cpp, src/CMapManager.h, 
-    src/EncFile.h, src/Font.cpp, src/Font.h, src/FontEncoding.cpp, 
-    src/FontEncoding.h, src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h: 
-  derive EncodingPair from FontEncoding 
-
-  * src/Font.cpp, src/Font.h, src/FontEncoding.cpp, src/FontEncoding.h, 
-    src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h: 
-  moved assignment of base font map to Font class 
-
-2013-08-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, src/FileFinder.cpp: 
-  check if the kpathsea library is C++-safe (patch by Peter Breitenlohner) 
-
-  * src/dvisvgm.cpp: 
-  fix number of dashes printed by -V1 
-
-2013-08-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Matrix.cpp, src/Matrix.h: 
-  renamed Matrix skewing methods 
-
-2013-08-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Font.cpp, src/Font.h, src/FontEngine.cpp, src/FontManager.cpp, 
-    src/FontMap.cpp, src/FontMap.h, src/FontStyle.h, src/Makefile.am: 
-  store pointers to font map and encoding in Font objects to speed up 
-  looking them up 
-
-  * src/Ghostscript.h, src/PSPreviewFilter.cpp, src/PsSpecialHandler.cpp: 
-  added missing variable initializations 
-
-2013-08-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CMapManager.cpp, src/CMapManager.h, src/FontManager.cpp: 
-  avoid const_cast in CMapManager 
-
-2013-08-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIActions.h, src/DVIReader.cpp, src/DVIToSVG.cpp: 
-  disable font processing while scanning PS header specials 
-
-  * src/CMap.h, src/CMapManager.cpp: 
-  properly handle 'unicode' encoding entries set in font map 
-
-2013-08-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/XMLDocument.cpp, src/XMLString.cpp: 
-  changed encoding of SVG files from ISO-8859-1 to UTF-8 
-
-  * src/DVIToSVG.cpp, src/Makefile.am, src/SVGTree.cpp, 
-    src/XMLDocTypeNode.h: 
-  removed DOCTYPE declaration from generated files as suggested by the SVG 
-  specification 
-
-  * src/DVIToSVG.cpp: 
-  removed redundant #include statements 
-
-  * src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.h, src/EPSToSVG.h, 
-    src/Matrix.cpp, src/Matrix.h, src/PsSpecialHandler.cpp, 
-    src/SpecialActions.h, src/dvisvgm.cpp: 
-  apply page transformations to width, height, and depth of preview bbox 
-
-  * NEWS: 
-  updated NEWS 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.4 
-
-2013-07-31  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CMap.cpp, src/CMap.h, src/CMapManager.cpp, src/CMapManager.h, 
-    src/CMapReader.cpp, src/CMapReader.h, src/FontManager.cpp, 
-    src/Makefile.am, tests/CMapTest.cpp, tests/Makefile.am: 
-  added classes to handle CMap files 
-
-  * src/CMap.cpp, src/CMap.h, src/CMapManager.h, src/EncFile.cpp, 
-    src/EncFile.h, src/FileFinder.cpp, src/Font.cpp, src/Font.h, 
-    src/FontEncoding.cpp, src/FontEncoding.h, src/FontEngine.cpp, 
-    src/FontEngine.h, src/FontManager.cpp, src/Makefile.am, 
-    tests/CMapTest.cpp: 
-  derive .enc encoding vectors and CMaps from common base class 
-  FontEncoding 
-
-  * src/CMap.cpp, src/CMap.h, src/Character.h, src/EncFile.h, src/Font.cpp, 
-    src/Font.h, src/FontEncoding.h, src/FontEngine.cpp, src/FontEngine.h, 
-    src/Makefile.am, tests/CMapTest.cpp: 
-  added Character class to handle character names, codes, and indexes 
-  consistently 
-
-  * src/FileFinder.cpp, src/Font.cpp, src/Font.h, src/FontManager.cpp: 
-  added support for OTF fonts 
-
-  * src/Font.cpp, src/Font.h, src/FontMetric.cpp, src/FontMetric.h, 
-    src/FontMetrics.cpp, src/FontMetrics.h, src/Makefile.am, src/TFM.h: 
-  renamed class FontMetric to FontMetrics 
-
-  * src/CMap.cpp, src/CMap.h, src/CMapReader.cpp, src/CMapReader.h, 
-    tests/CMapReaderTest.cpp, tests/CMapTest.cpp, tests/Makefile.am: 
-  added evaluation of base font (bf) sections in CMap files 
-
-  * src/CMap.h, src/CMapManager.cpp, src/CMapManager.h, src/CMapReader.cpp, 
-    src/CharMapID.cpp, src/CharMapID.h, src/Font.cpp, src/Font.h, 
-    src/FontEngine.cpp, src/FontEngine.h, src/FontManager.cpp, 
-    src/FontMap.cpp, src/FontMap.h, src/Makefile.am: 
-  try to decode characters of non-CID fonts that have a CMap assigned in 
-  the fontmap 
-
-2013-07-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/JFM.cpp: 
-  fixed retrieval of char indexes if a JFM contains entries of chartype 0 
-  only 
-
-  * src/BgColorSpecialHandler.h, src/DVIToSVG.cpp, src/PSInterpreter.cpp, 
-    src/PSInterpreter.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, 
-    src/SpecialManager.cpp, src/SpecialManager.h: 
-  ensure that PS header code is evaluated before the page/body code; also 
-  execute bop-hook and eop-hook 
-
-  * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp: 
-  added funtion to execute PS code snippets and retrieve their results 
-
-  * doc/dvisvgm.txt.in, src/DVIActions.h, src/DVIReader.cpp, 
-    src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, 
-    src/EPSToSVG.cpp, src/Makefile.am, src/PSFilter.h, src/PSInterpreter.cpp, 
-    src/PSInterpreter.h, src/PSPreviewFilter.cpp, src/PSPreviewFilter.h, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SpecialActions.h, 
-    src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h: 
-  added evaluation of bounding box information created by preview package 
-
-2013-07-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/EPSToSVG.cpp: 
-  print warning message if height or width of EPS bbox is 0 
-
-  * src/psdefs.cpp, src/psdefs.ps: 
-  PS handler: call newpath before executing charpath in operator show 
-
-  * src/FontMap.cpp: 
-  check for EOF prior to try to parse another mapline 
-
-2013-07-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/psdefs.cpp, src/psdefs.ps: 
-  replaced PS operator prval with =only in psdefs 
-
-2013-07-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp: 
-  ensure catching PSExceptions while processing PS header specials to 
-  prevent segfaults 
-
-  * src/psdefs.cpp, src/psdefs.ps: 
-  properly store PS operator applyscalevals in systemdict 
-
-2013-07-14  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Process.cpp, src/Process.h: 
-  extended Process::run() to grab the output written to stdout 
-
-  * src/FileFinder.cpp, src/FileFinder.h: 
-  FileFinder: added lookup of cmap files 
-
-2013-07-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/CommandLine.cpp: 
-  command-line parser: changed type of argument mode from char to enum 
-
-2013-06-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp: 
-  removed redundant 'using namespace std' 
-
-2013-06-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/HtmlSpecialHandler.cpp, 
-    src/HtmlSpecialHandler.h, src/dvisvgm.cpp: 
-  extend option --linkmark to highlight linked areas by a given background 
-  color 
-
-2013-06-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Color.cpp, src/Color.h, src/ColorSpecialHandler.cpp, 
-    src/ColorSpecialHandler.h, src/SpecialActions.h, 
-    tests/ColorSpecialTest.cpp, tests/ColorTest.cpp, tests/Makefile.am: 
-  use Color class in ColorSpecialHandler rather than local code; added 
-  ColorTest 
-
-2013-05-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/dvisvgm.cpp: 
-  added a missing (underlining) hyphen to the output of -V1 
-
-2013-05-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Font.cpp, src/Font.h, src/FontManager.h, src/FontMetric.cpp, 
-    src/FontMetric.h, src/Makefile.am, src/TFM.cpp, src/TFM.h: 
-  handle invalid TFM files properly 
-
-  * src/Font.cpp, src/FontMetric.cpp, src/FontMetric.h, src/JFM.cpp, 
-    src/JFM.h, src/Makefile.am, src/StreamReader.h, src/TFM.cpp, src/TFM.h: 
-  added support for Japanese font metric (JFM) files 
-
-  * src/FileFinder.cpp, src/MiKTeXCom.cpp, src/MiKTeXCom.h, src/dvisvgm.cpp: 
-  try to load the Ghostscript library that comes with MiKTeX 
-
-  * doc/dvisvgm.txt.in, src/DVIToSVG.cpp, src/HtmlSpecialHandler.cpp, 
-    src/HtmlSpecialHandler.h, src/Makefile.am, src/SpecialManager.cpp: 
-  added support of hyperref specials 
-
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, 
-    src/HtmlSpecialHandler.cpp, src/dvisvgm.cpp, src/options.xml: 
-  added option --linkmark to select the highlighing variant for hyperlinks 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.3 
-
-  * NEWS: 
-  updated NEWS 
-
-2013-05-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * AUTHORS, Makefile.am, README, configure.ac, potracelib/Makefile.am, 
-    potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c, 
-    potracelib/curve.h, potracelib/decompose.c, potracelib/decompose.h, 
-    potracelib/lists.h, potracelib/potracelib.c, potracelib/potracelib.h, 
-    potracelib/progress.h, potracelib/trace.c, potracelib/trace.h: 
-  removed bundled potrace library 
-
-  * src/SVGTree.cpp, src/SVGTree.h: 
-  added methods to push and pop 'context elements' to a page that wrap 
-  parts of the page contents 
-
-  * src/DVIToSVGActions.h, src/EPSToSVG.h, src/SpecialActions.h: 
-  provide the context push/pop methods of class SVGTree to special 
-  handlers 
-
-  * src/InputReader.cpp, src/InputReader.h: 
-  added optional parameter 'quotechar' to InputReader::parseAttributes() 
-
-  * src/HtmlSpecialHandler.h: 
-  dropped old HtmlSpecialHandler.h that should had been removed long time 
-  ago 
-
-  * src/EmSpecialHandler.h, src/NoPsSpecialHandler.h, src/SpecialHandler.h, 
-    src/SpecialManager.cpp, src/SpecialManager.h, src/TpicSpecialHandler.h: 
-  moved DVI listener methods to dedicated listener interface classes 
-
-  * src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, 
-    src/DVIToSVG.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, 
-    src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, 
-    src/NoPsSpecialHandler.cpp, src/NoPsSpecialHandler.h, 
-    src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h, 
-    src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h: 
-  added page number parameter to DVIEndPageListener::dviEndPage() 
-
-2013-05-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVGActions.cpp, src/Terminal.cpp, src/Terminal.h: 
-  disable cursor when showing the progress indicator (Windows only) 
-
-2013-04-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp: 
-  don't link NoPsSpecialHandler if HAVE_LIBGS 
-
-2013-04-25  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontEncoding.cpp: 
-  fixed bracketing bug that prevented lookup of fontmap files 
-
-2013-04-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BoundingBox.cpp, src/BoundingBox.h, src/Calculator.cpp, 
-    src/Calculator.h, src/Matrix.cpp, src/Matrix.h, src/MessageException.h, 
-    src/PageSize.cpp, src/PageSize.h, src/StreamReader.cpp, 
-    src/StreamReader.h, src/VFReader.cpp, src/VFReader.h, src/VectorStream.h, 
-    src/XMLDocument.cpp, src/XMLDocument.h: 
-  added missing underscores to private member variables 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.2.2 
-
-  * NEWS: 
-  updated NEWS 
-
-2013-04-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp, src/EPSToSVG.cpp, src/dvisvgm.cpp: 
-  avoid output of empty parentheses if TARGET_SYSTEM is not set 
-
-  * src/BoundingBox.cpp, src/BoundingBox.h, src/Calculator.h, 
-    src/CmdLineParserBase.h, src/DVIToSVGActions.cpp, src/Message.cpp, 
-    src/VFReader.cpp: 
-  added missing member initializations to some classes 
-
-2013-04-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp, src/Makefile.am, src/NoPsSpecialHandler.cpp, 
-    src/NoPsSpecialHandler.h, src/SpecialManager.cpp: 
-  print a warning message if PS specials are found but ignored 
-
-2013-04-15  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp, src/dvisvgm.cpp: 
-  catch MessageException if MiKTeX version can't be obtained 
-
-2013-04-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/Makefile.am, tests/create-makefile: 
-  updated tests/Makefile.am to honor system potracelib if present 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.2.1 
-
-  * NEWS: 
-  updated NEWS 
-
-2013-04-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/Color.cpp, src/Color.h, src/DVIToSVGActions.cpp: 
-  allow the background color special to insert white rectancles 
-
-  * src/CmdLineParserBase.h, src/InputReader.h: 
-  changed 'struct InputReader' to 'class InputReader' 
-
-  * src/PageRanges.h: 
-  dropped unused variable PageRanges::_max 
-
-2013-04-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/XMLNode.cpp, src/XMLNode.h: 
-  unhide derived method XMLDeclarationNode::append 
-
-2013-03-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * Makefile.am, configure.ac: 
-  don't build bundled potracelib if system library is used (patch by 
-  Alexis Ballier) 
-
-2013-03-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c, 
-    potracelib/curve.h, potracelib/decompose.c, potracelib/decompose.h, 
-    potracelib/lists.h, potracelib/potracelib.c, potracelib/potracelib.h, 
-    potracelib/progress.h, potracelib/trace.c, potracelib/trace.h: 
-  updated bundled potrace library to version 1.11 
-
-2013-03-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c, 
-    potracelib/decompose.h, potracelib/lists.h, potracelib/progress.h, 
-    potracelib/trace.c, potracelib/trace.h, src/EPSFile.cpp, 
-    src/EPSToSVG.cpp, src/EPSToSVG.h, src/PSPattern.cpp, src/PSPattern.h, 
-    src/SVGOutputBase.h: 
-  converted DOS line endings 
-
-2013-02-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Makefile.am, src/PSInterpreter.cpp, src/PSInterpreter.h, 
-    src/PSPattern.cpp, src/PSPattern.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h, src/psdefs.ps, src/psdefs.psc, 
-    tests/PSInterpreterTest.cpp: 
-  PS handler: added support of tiling patterns 
-
-  * src/Makefile.am, src/PSInterpreter.cpp, src/psdefs.cpp, src/psdefs.ps, 
-    src/psdefs.psc: 
-  make psdefs a separate compilation unit 
-
-  * tests/MapLineTest.cpp: 
-  prevent MapLineTest from failing if file UGBK.sfd is not available 
-
-  * src/psdefs.cpp, src/psdefs.ps: 
-  improved processing of PS operator "show" 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.2 
-
-  * NEWS: 
-  updated NEWS 
-
-2013-02-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/XMLNode.cpp, src/XMLNode.h: 
-  added methods to lookup attribute values and selected descendant XML 
-  nodes 
-
-2013-02-19  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PSInterpreter.cpp, src/PSInterpreter.h: 
-  added PSInterpreter::limit() to limit the number of bytes to be 
-  processed 
-
-  * src/FilePath.cpp: 
-  adapt path separators on Windows systems to get the  correct output path 
-
-2013-02-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/CommandLine.cpp, 
-    src/CommandLine.h: 
-  applied a few refactorings to the command-line parser 
-
-2013-02-07  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, 
-    src/CommandLine.cpp, src/CommandLine.h, src/dvisvgm.cpp, src/options.xml: 
-  added optional parameter to option --help to specify output format 
-
-2013-02-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/BoundingBox.cpp, src/CommandLine.cpp, 
-    src/CommandLine.h, src/EmSpecialHandler.cpp, src/GraphicPath.h, 
-    src/Matrix.cpp, src/PsSpecialHandler.cpp, src/TpicSpecialHandler.cpp, 
-    src/XMLString.cpp, src/XMLString.h, src/dvisvgm.cpp, src/options.xml: 
-  added option --precision to set the number of decimal places applied to 
-  attribute values 
-
-2013-01-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CommandLine.cpp: 
-  fixed alignment of --help text 
-
-2013-01-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/DVIToSVG.cpp, src/FileFinder.cpp, src/Font.cpp, 
-    src/Font.h, src/FontEncoding.cpp, src/FontEngine.cpp, src/FontEngine.h, 
-    src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h, src/Makefile.am, 
-    src/MapLine.cpp, src/MapLine.h, src/Subfont.cpp, src/Subfont.h, 
-    tests/FontMapTest.cpp, tests/Makefile.am, tests/MapLineTest.cpp, 
-    tests/SubfontTest.cpp, tests/create-makefile, tests/sample.sfd: 
-  added support for subfont definitions and multi-font (.ttc) files 
-
-  * src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h, src/MapLine.h: 
-  replaced FontMap entries by pointers; initialize entries with MapLine 
-  objects 
-
-  * src/CommandLine.cpp, src/Font.cpp, src/Font.h, src/FontEngine.cpp, 
-    src/FontEngine.h, src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h, 
-    src/MapLine.cpp, src/MapLine.h, tests/MapLineTest.cpp: 
-  implemented evaluation of font style options given in a mapline 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.1 
-
-  * NEWS, README: 
-  updated NEWS and README 
-
-2013-01-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontEngine.cpp, src/FontEngine.h: 
-  removed unneeded code related to font sizes from class FontEngine 
-
-2013-01-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, 
-    src/FontMap.cpp, src/FontMap.h, src/dvisvgm.cpp, src/options.xml: 
-  renamed option --map-file to --fontmap; allow multiple mapfiles and 
-  modes 
-
-  * doc/dvisvgm.txt.in, src/DVIToSVG.cpp, src/FontMap.cpp, src/FontMap.h, 
-    src/Makefile.am, src/PdfSpecialHandler.cpp, src/PdfSpecialHandler.h: 
-  added PdfSpecialHandler to evaluate pdf:mapline and pdf:mapfile specials 
-
-2013-01-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Font.cpp, src/FontEncoding.cpp: 
-  fixed a string exception that occurred when an encoding file or an entry 
-  in the encoding table is unavailable 
-
-2013-01-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp, src/FileFinder.h, src/FontEncoding.cpp, 
-    src/FontEncoding.h: 
-  removed font encoding methods from FileFinder 
-
-2013-01-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * Makefile.am, README, configure.ac, doc/Makefile.am, doc/dvisvgm.txt.in, 
-    src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h, 
-    src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h, 
-    src/CRC32.cpp, src/CRC32.h, src/Calculator.cpp, src/Calculator.h, 
-    src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/Color.cpp, 
-    src/Color.h, src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, 
-    src/CommandLine.cpp, src/CommandLine.h, src/DLLoader.cpp, src/DLLoader.h, 
-    src/DVIActions.cpp, src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h, 
-    src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h, src/Directory.cpp, src/Directory.h, 
-    src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h, 
-    src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, src/FileFinder.cpp, 
-    src/FileFinder.h, src/FilePath.cpp, src/FilePath.h, src/FileSystem.cpp, 
-    src/FileSystem.h, src/Font.cpp, src/Font.h, src/FontCache.cpp, 
-    src/FontCache.h, src/FontEncoding.cpp, src/FontEncoding.h, 
-    src/FontEngine.cpp, src/FontEngine.h, src/FontManager.cpp, 
-    src/FontManager.h, src/FontMap.cpp, src/FontMap.h, src/GFGlyphTracer.cpp, 
-    src/GFGlyphTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp, 
-    src/GFTracer.h, src/Ghostscript.cpp, src/Ghostscript.h, src/Glyph.h, 
-    src/GlyphTracerMessages.h, src/GraphicPath.h, src/HtmlSpecialHandler.h, 
-    src/InputBuffer.cpp, src/InputBuffer.h, src/InputReader.cpp, 
-    src/InputReader.h, src/Length.cpp, src/Length.h, src/Makefile.am, 
-    src/Matrix.cpp, src/Matrix.h, src/Message.cpp, src/Message.h, 
-    src/MessageException.h, src/MetafontWrapper.cpp, src/MetafontWrapper.h, 
-    src/MiKTeXCom.cpp, src/MiKTeXCom.h, src/PSInterpreter.cpp, 
-    src/PSInterpreter.h, src/PageRanges.cpp, src/PageRanges.h, 
-    src/PageSize.cpp, src/PageSize.h, src/Pair.h, src/Process.cpp, 
-    src/Process.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, 
-    src/SVGTree.cpp, src/SVGTree.h, src/SWFWriter.cpp, src/SWFWriter.h, 
-    src/SignalHandler.cpp, src/SignalHandler.h, src/SpecialActions.h, 
-    src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h, 
-    src/StreamReader.cpp, src/StreamReader.h, src/StreamWriter.cpp, 
-    src/StreamWriter.h, src/System.cpp, src/System.h, src/TFM.cpp, src/TFM.h, 
-    src/Terminal.cpp, src/Terminal.h, src/TpicSpecialHandler.cpp, 
-    src/TpicSpecialHandler.h, src/VFActions.h, src/VFReader.cpp, 
-    src/VFReader.h, src/VectorStream.h, src/XMLDocTypeNode.h, 
-    src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h, 
-    src/XMLString.cpp, src/XMLString.h, src/dvisvgm.cpp, src/macros.h, 
-    src/options.dtd, src/options.xml, src/psdefs.ps, src/psdefs.psc, 
-    src/types.h, tests/BoundingBoxTest.cpp, tests/CRC32Test.cpp, 
-    tests/CalculatorTest.cpp, tests/ColorSpecialTest.cpp, 
-    tests/CommandLineTest.cpp, tests/DirectoryTest.cpp, 
-    tests/FileFinderTest.cpp, tests/FilePathTest.cpp, 
-    tests/FileSystemTest.cpp, tests/FontManagerTest.cpp, 
-    tests/FontMapTest.cpp, tests/GFReaderTest.cpp, tests/GraphicPathTest.cpp, 
-    tests/LengthTest.cpp, tests/Makefile.am, tests/MatrixTest.cpp, 
-    tests/MessageExceptionTest.cpp, tests/PSInterpreterTest.cpp, 
-    tests/PageRagesTest.cpp, tests/PageSizeTest.cpp, tests/PairTest.cpp, 
-    tests/SplittedCharInputBufferTest.cpp, tests/StreamInputBufferTest.cpp, 
-    tests/StreamReaderTest.cpp, tests/StreamWriterTest.cpp, 
-    tests/TypesTest.cpp, tests/VectorStreamTest.cpp, tests/create-makefile: 
-  updated year in copyright statements to 2013 
-
-2012-12-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontCache.cpp, src/PsSpecialHandler.cpp, src/TpicSpecialHandler.cpp: 
-  check emptiness of containers with empty() instead of size() 
-
-  * src/FileFinder.cpp, src/MiKTeXCom.cpp, src/Process.cpp: 
-  avoid creating copies of exception objects 
-
-  * src/CmdLineParserBase.h, src/Directory.cpp, src/GFReader.cpp, 
-    src/PsSpecialHandler.cpp: 
-  initialize uninitialized member variables 
-
-  * src/FileFinder.cpp, src/Message.cpp, src/dvisvgm.cpp: 
-  reduced scope of some variables 
-
-2012-12-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontCache.cpp: 
-  replaced 'char' with 'glyph' in font cache listing 
-
-  * src/SpecialManager.cpp: 
-  clear all corresponding containers when calling 
-  SpecialHandler::unregisterHandlers() 
-
-2012-12-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Ghostscript.cpp: 
-  added explicit cast to avoid signed/unsigned comparison warning 
-
-2012-12-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FilePath.cpp, tests/FilePathTest.cpp: 
-  strip drive letter if it's not set (Windows only) 
-
-  * tests/FileSystemTest.cpp, tests/GFReaderTest.cpp: 
-  ensure that tests work properly on Windows 
-
-  * src/macros.h: 
-  removed SHOW() from macros.h 
-
-  * src/MiKTeX209-session_i.c: 
-  add additiona files required to build dvisvgm with MinGW 
-
-  * src/FileFinder.cpp, src/FontEngine.cpp, src/Makefile.am, 
-    src/MiKTeXCom.cpp, src/MiKTeXCom.h: 
-  moved MiKTeX COM code to separate class 
-
-  * doc/dvisvgm.txt.in, src/Ghostscript.cpp: 
-  use gsdll64.dll for 64-bit builds; added info about gsdll64.dll to 
-  manpage 
-
-2012-11-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Ghostscript.cpp, src/Ghostscript.h, src/PSInterpreter.cpp, 
-    src/PSInterpreter.h, src/dvisvgm.cpp: 
-  print an error message if the execution of PS code fails 
-
-  * src/PSInterpreter.cpp, src/psdefs.ps, src/psdefs.psc: 
-  print operand stack in case of a PS error 
-
-2012-11-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Message.cpp: 
-  handle wrapping of messages containing newlines correctly 
-
-2012-11-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DLLoader.cpp, src/DLLoader.h, src/Ghostscript.cpp: 
-  renamed DLLoader::loadFunction() to DLLoader::loadSymbol() 
-
-2012-11-19  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontEngine.cpp, src/FontEngine.h: 
-  renamed FontEngine::fname to FontEngine::_fontname 
-
-  * src/Font.cpp, src/Font.h, src/FontManager.cpp: 
-  print warning if font checksums don't match 
-
-2012-11-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Directory.h: 
-  undefine macro max() to avoid compilation problems on Windows 
-
-2012-11-15  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp, src/FileFinder.h, src/FontMap.cpp, src/FontMap.h, 
-    tests/FontMapTest.cpp: 
-  made class FontMap a singleton 
-
-  * src/FileFinder.cpp, src/FileFinder.h, src/dvisvgm.cpp: 
-  moved initialization of FontMap from FileFinder to dvisvgm.cpp 
-
-  * src/Makefile.am, src/MapLine.cpp, src/MapLine.h, tests/Makefile.am, 
-    tests/MapLineTest.cpp: 
-  added new class MapLine to parse and evaluate a single line of a map 
-  file 
-
-  * src/FileFinder.cpp, src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h, 
-    tests/FontMapTest.cpp: 
-  adapted code to use new MapLine class; introduced support of map line 
-  modes 
-
-2012-11-14  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp: 
-  initialize Ghostscript when compiled for TeX Live Win32 (patch by Peter 
-  Breitenlohner) 
-
-  * src/FileFinder.cpp, src/FileFinder.h, src/dvisvgm.cpp, 
-    tests/FileFinderTest.cpp, tests/FontManagerTest.cpp: 
-  initialize second parameter of kpse_set_program_name() correctly 
-
-  * src/DVIToSVG.cpp: 
-  prevent compilation error when using a C++11 compiler (patch by Peter 
-  Breitenlohner) 
-
-2012-11-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/InputBuffer.cpp, src/InputBuffer.h, src/InputReader.cpp, 
-    src/InputReader.h, src/PsSpecialHandler.cpp, 
-    tests/StreamInputBufferTest.cpp: 
-  some refactorings of class InputReader; added InputReader::find() 
-
-2012-10-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp, src/DVIToSVG.h, src/dvisvgm.cpp: 
-  don't show warning about disabled PS support in list of special handlers 
-
-2012-09-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.0.12 
-
-  * NEWS: 
-  updated NEWS 
-
-  * doc/Makefile.am: 
-  remove manpage when calling 'make distclean' 
-
-2012-09-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp: 
-  show warning if processing of PS specials is disabled 
-
-  * src/PsSpecialHandler.cpp, src/PsSpecialHandler.h: 
-  removed Ghostscript info from ps entry in list of special handlers 
-
-2012-06-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/gfprint.mak: 
-  fixed bugs in gfprint, and added gfprint.mak for easier builds 
-
-2012-04-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/Makefile.am: 
-  keep manpage when calling 'make clean' or 'make distclean' 
-
-2012-04-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVGActions.cpp, src/SVGTree.cpp, src/SVGTree.h, 
-    tests/frktest-nf-cmp.svg, tests/frktest-wf-cmp.svg, 
-    tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg: 
-  scale point units in the SVG files to big points (bp) 
-
-2012-04-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Matrix.cpp, src/Matrix.h, tests/MatrixTest.cpp: 
-  added Matrix::invert() and det() 
-
-2012-03-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Matrix.cpp, src/Matrix.h, tests/MatrixTest.cpp: 
-  added start index parameter to Matrix::set(vector<>) 
-
-2012-03-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/psdefs.ps, src/psdefs.psc: 
-  evaluate PS operators rectclip, rectfill, and rectstroke 
-
-2012-03-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Ghostscript.cpp, src/Ghostscript.h: 
-  added optional parameter to Ghostscript::revision() to retrieve the 
-  revision number only 
-
-  * src/dvisvgm.cpp: 
-  added Ghostscript to library list printed by --version=yes 
-
-  * NEWS: 
-  updated NEWS 
-
-2012-03-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.0.11 
-
-2012-03-07  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVGActions.cpp: 
-  correct location of a rule's bounding box (lp bug #948713) 
-
-2012-02-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in: 
-  fixed a couple of mistakes and formatting flaws in the manpage 
-
-2012-02-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * README: 
-  updated information about bug reporting 
-
-2012-01-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CmdLineParserBase.h, src/DVIActions.h, src/DVIReader.h, 
-    src/DVIToSVGActions.h, src/FontEngine.h, src/FontManager.h, 
-    src/MetafontWrapper.h, src/SVGTree.h, src/SpecialActions.h, 
-    src/SpecialHandler.h, src/SpecialManager.h, src/TFM.h, src/VFReader.h: 
-  adapt forward declarations of classes and structs to their corresponding 
-  definition (SF bug #3480013) 
-
-2012-01-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/InputReader.cpp, tests/StreamInputBufferTest.cpp: 
-  fixed parsing of negative floating point numbers starting with '-0.' (SF 
-  bug #3471097) 
-
-  * src/TpicSpecialHandler.cpp: 
-  added some more comments to methods of class TpicSpecialHandler 
-
-2012-01-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * Makefile.am, README, configure.ac, doc/Makefile.am, doc/dvisvgm.txt.in, 
-    src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h, 
-    src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h, 
-    src/CRC32.cpp, src/CRC32.h, src/Calculator.cpp, src/Calculator.h, 
-    src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/Color.cpp, 
-    src/Color.h, src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, 
-    src/CommandLine.cpp, src/CommandLine.h, src/DLLoader.cpp, src/DLLoader.h, 
-    src/DVIActions.cpp, src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h, 
-    src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h, src/Directory.cpp, src/Directory.h, 
-    src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h, 
-    src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, src/FileFinder.cpp, 
-    src/FileFinder.h, src/FilePath.cpp, src/FilePath.h, src/FileSystem.cpp, 
-    src/FileSystem.h, src/Font.cpp, src/Font.h, src/FontCache.cpp, 
-    src/FontCache.h, src/FontEncoding.cpp, src/FontEncoding.h, 
-    src/FontEngine.cpp, src/FontEngine.h, src/FontManager.cpp, 
-    src/FontManager.h, src/FontMap.cpp, src/FontMap.h, src/GFGlyphTracer.cpp, 
-    src/GFGlyphTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp, 
-    src/GFTracer.h, src/Ghostscript.cpp, src/Ghostscript.h, src/Glyph.h, 
-    src/GlyphTracerMessages.h, src/GraphicPath.h, src/HtmlSpecialHandler.h, 
-    src/InputBuffer.cpp, src/InputBuffer.h, src/InputReader.cpp, 
-    src/InputReader.h, src/Length.cpp, src/Length.h, src/Makefile.am, 
-    src/Matrix.cpp, src/Matrix.h, src/Message.cpp, src/Message.h, 
-    src/MessageException.h, src/MetafontWrapper.cpp, src/MetafontWrapper.h, 
-    src/PSInterpreter.cpp, src/PSInterpreter.h, src/PageRanges.cpp, 
-    src/PageRanges.h, src/PageSize.cpp, src/PageSize.h, src/Pair.h, 
-    src/Process.cpp, src/Process.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h, src/SVGTree.cpp, src/SVGTree.h, 
-    src/SWFWriter.cpp, src/SWFWriter.h, src/SignalHandler.cpp, 
-    src/SignalHandler.h, src/SpecialActions.h, src/SpecialHandler.h, 
-    src/SpecialManager.cpp, src/SpecialManager.h, src/StreamReader.cpp, 
-    src/StreamReader.h, src/StreamWriter.cpp, src/StreamWriter.h, 
-    src/System.cpp, src/System.h, src/TFM.cpp, src/TFM.h, src/Terminal.cpp, 
-    src/Terminal.h, src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h, 
-    src/VFActions.h, src/VFReader.cpp, src/VFReader.h, src/VectorStream.h, 
-    src/XMLDocTypeNode.h, src/XMLDocument.cpp, src/XMLDocument.h, 
-    src/XMLNode.cpp, src/XMLNode.h, src/XMLString.cpp, src/XMLString.h, 
-    src/dvisvgm.cpp, src/macros.h, src/options.dtd, src/options.xml, 
-    src/psdefs.ps, src/psdefs.psc, src/types.h, tests/BoundingBoxTest.cpp, 
-    tests/CRC32Test.cpp, tests/CalculatorTest.cpp, 
-    tests/ColorSpecialTest.cpp, tests/CommandLineTest.cpp, 
-    tests/DirectoryTest.cpp, tests/FileFinderTest.cpp, 
-    tests/FilePathTest.cpp, tests/FileSystemTest.cpp, 
-    tests/FontManagerTest.cpp, tests/FontMapTest.cpp, tests/GFReaderTest.cpp, 
-    tests/GraphicPathTest.cpp, tests/LengthTest.cpp, tests/Makefile.am, 
-    tests/MatrixTest.cpp, tests/MessageExceptionTest.cpp, 
-    tests/PSInterpreterTest.cpp, tests/PageRagesTest.cpp, 
-    tests/PageSizeTest.cpp, tests/PairTest.cpp, 
-    tests/SplittedCharInputBufferTest.cpp, tests/StreamInputBufferTest.cpp, 
-    tests/StreamReaderTest.cpp, tests/StreamWriterTest.cpp, 
-    tests/TypesTest.cpp, tests/VectorStreamTest.cpp, tests/check-conv, 
-    tests/create-makefile: 
-  updated year in copyright statements 
-
-2011-12-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/Makefile.am, tests/create-makefile: 
-  link tests with -lpthread (required by gtest on Ubuntu) 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.0.10 
-
-  * NEWS: 
-  updated NEWS 
-
-2011-12-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/GlyphTracerMessages.h, 
-    src/Message.cpp, src/Message.h, src/MetafontWrapper.cpp, 
-    src/Terminal.cpp, src/Terminal.h, src/dvisvgm.cpp: 
-  allow users to customize the message colors 
-
-  * doc/dvisvgm.txt.in: 
-  added documentation on environment variable DVISVGM_COLORS to manpage 
-
-2011-11-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/GraphicPath.h: 
-  added some more comments to the methods of GraphicPath 
-
-2011-11-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac: 
-  move linker flag -lfreetype from LDFLAGS to LIBS to avoid linking 
-  problems 
-
-2011-10-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontMap.cpp: 
-  removed unused variable eval_prefix in helper function read_entry() 
-
-  * src/SVGTree.cpp: 
-  avoid possible collisions of glyph IDs 
-
-2011-10-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS: 
-  updated NEWS 
-
-2011-10-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FilePath.cpp: 
-  added some missing comments to methods of class FilePath 
-
-  * src/Directory.h: 
-  dropped method Directory::getEntry() 
-
-2011-10-07  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Process.cpp: 
-  added missing include <signal.h> to Process.cpp 
-
-  * src/Process.cpp: 
-  exclude definition of split_paramstr() from Windows builds as it's not 
-  used there 
-
-2011-10-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/Makefile.am: 
-  add metadata/pdfmarks to pdf version of manpage 
-
-2011-09-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c, 
-    potracelib/curve.h, potracelib/decompose.c, potracelib/decompose.h, 
-    potracelib/lists.h, potracelib/potracelib.c, potracelib/potracelib.h, 
-    potracelib/progress.h, potracelib/trace.c, potracelib/trace.h: 
-  updated bundled potrace library to version 1.10 
-
-2011-06-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.0.9dev 
-
-  * src/FileFinder.cpp, src/MetafontWrapper.cpp: 
-  fixed segfault occured in TeX Live Win32 caused by mf.exe being 
-  unavailable (SF bug #3308473) 
-
-2011-05-31  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, configure.ac, src/Doxyfile: 
-  set version to 1.0.8; updated NEWS 
-
-  * src/PsSpecialHandler.cpp: 
-  explicitly cast double to int in call of ClippingStack::dup()/pop() 
-
-2011-05-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/check-conv, tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg: 
-  updated conversion tests 
-
-2011-05-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Font.cpp, src/Makefile.am, src/MetafontWrapper.cpp, 
-    src/MetafontWrapper.h, src/Process.cpp, src/Process.h, 
-    src/SignalHandler.cpp: 
-  replaced call of system() with Process::run() and kill child process if 
-  necessary 
-
-2011-05-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp: 
-  MiKTeX: maketfm and makemf have been renamed to miktex-maketfm and 
-  miktex-makemf 
-
-  * src/MetafontWrapper.cpp: 
-  dropped '--halt-on-error' in Metafont call to process buggy mf files 
-  completely 
-
-2011-05-19  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DLLoader.h: 
-  added #undef NOMINMAX before (re)defining it 
-
-2011-05-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h, src/psdefs.ps, src/psdefs.psc, 
-    tests/PSInterpreterTest.cpp: 
-  PS handler: implemented evaluation of save, restore, and grestoreall 
-
-2011-05-07  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.0.8dev 
-
-  * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVGActions.h, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SpecialActions.h: 
-  fixed interaction between PS and DVI drawing position 
-
-  * src/PsSpecialHandler.cpp: 
-  add definitions in literal PS headers to dictionary TeXDict 
-
-  * src/PsSpecialHandler.cpp: 
-  fixed potential segfault caused by invisible zero-length paths 
-
-2011-05-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, README, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.7; updated NEWS and README 
-
-  * fedora/dvisvgm-gs.patch, fedora/dvisvgm-potrace.patch, 
-    fedora/dvisvgm.spec: 
-  removed directories 'fedora' and 'homepage' 
-
-2011-05-05  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PSInterpreter.cpp, src/PsSpecialHandler.cpp: 
-  separate PS snippets by newline characters to leave preceding comments 
-
-  * src/PsSpecialHandler.h: 
-  corrected scaling formula applied to PS line properties 
-
-  * src/DVIToSVGActions.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, 
-    src/psdefs.ps, src/psdefs.psc: 
-  PS handler: added missing unit conversions (pt vs. bp) 
-
-  * doc/dvisvgm.txt.in: 
-  added info about dvips rounding issues to manpage 
-
-2011-05-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp: 
-  don't call Ghostscript::revision() in initialization of static variable 
-
-  * src/Ghostscript.cpp, src/Ghostscript.h, src/PSInterpreter.cpp, 
-    src/PSInterpreter.h: 
-  avoid 'this' pointer in initialazation list of 
-  PSInterpreter::PSInterpreter() 
-
-  * src/Length.h: 
-  undefine macro IN 
-
-2011-05-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h, src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, 
-    src/PSInterpreter.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, 
-    src/SpecialActions.h, src/SpecialHandler.h, src/SpecialManager.cpp, 
-    src/SpecialManager.h, src/TpicSpecialHandler.cpp, 
-    src/TpicSpecialHandler.h: 
-  replaced methods for DVI position alterations with translation semantics 
-
-  * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h, src/macros.h, src/psdefs.ps, src/psdefs.psc, 
-    tests/PSInterpreterTest.cpp: 
-  improved handling of pure PostScript specials 
-
-  * src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h: 
-  tpic special 'ip' must not draw the outline of the polygon but only fill 
-  its interior 
-
-2011-05-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/psdefs.ps, src/psdefs.psc: 
-  PS handler: recognize save/restore operators 
-
-2011-04-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.7dev 
-
-  * src/SpecialManager.cpp: 
-  register special prefix ps:: properly 
-
-  * src/psdefs.ps, src/psdefs.psc: 
-  catch PS error /nocurrentpoint in operator 'setpos' properly 
-
-2011-04-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, README, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.6; updated NEWS and README 
-
-2011-04-14  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVGActions.cpp, src/MessageException.h, src/dvisvgm.cpp, 
-    tests/Makefile.am, tests/MessageExceptionTest.cpp: 
-  derived MessageException from std::exception and replaced getMessage() 
-  with what() 
-
-  * src/DVIReader.cpp, src/Font.cpp, src/GFReader.cpp, src/Makefile.am, 
-    src/MetafontWrapper.cpp, src/PSInterpreter.cpp, src/SignalHandler.cpp, 
-    src/SignalHandler.h, src/TFM.cpp, src/dvisvgm.cpp: 
-  added class SignalHandler for CTRL-C signals 
-
-2011-04-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/XMLNode.cpp, src/XMLNode.h: 
-  prepended member variables of the XMLNode classes with underscore 
-
-2011-04-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp, src/FileFinder.h, src/dvisvgm.cpp, 
-    tests/FileFinderTest.cpp: 
-  dropped class FileFinder::Impl and simplified FileFinder interface 
-
-2011-03-15  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp: 
-  throw DVI exception if set_char/put_char is executed without preceding 
-  font selection 
-
-2011-03-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * pull-wiki: 
-  updated rsync parameters in 'pull-wiki' 
-
-2011-03-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.6dev 
-
-  * potracelib/potracelib.c, potracelib/potracelib.h: 
-  changed return type of potrace_version() to 'const char *' in order to 
-  avoid compiler warning 
-
-  * src/CRC32.cpp, src/StreamWriter.cpp: 
-  added missing 'const' to type casts (Peter Breitenlohner) 
-
-2011-02-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/FontCache.cpp, src/FontCache.h, src/dvisvgm.cpp: 
-  added code to remove outdated and corrupted cache files 
-
-  * src/Ghostscript.cpp: 
-  fixed formatting of GS version number 
-
-  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.5, updated NEWS 
-
-2011-02-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, 
-    src/GraphicPath.h, src/SVGTree.cpp, src/SVGTree.h, src/dvisvgm.cpp, 
-    src/options.xml, tests/CommandLineTest.cpp: 
-  added option to replace use elements with paths 
-
-  * src/SVGTree.cpp: 
-  added missing unit in height/width attribute of svg root element 
-
-  * tests/frktest-nf-cmp.svg, tests/frktest-wf-cmp.svg, 
-    tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg: 
-  updated conversion test files 
-
-2011-02-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/InputBuffer.h: 
-  reference to scanned string in StringInputBuffer is constant now 
-
-2011-02-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileSystem.cpp, src/FileSystem.h, src/dvisvgm.cpp, 
-    tests/FileSystemTest.cpp: 
-  merged FileSystem::move() into FileSystem::copy() 
-
-  * src/CRC32.cpp, src/CRC32.h, src/Makefile.am, tests/CRC32Test.cpp, 
-    tests/Makefile.am: 
-  added class CRC32 and corresponding tests 
-
-  * src/StreamReader.cpp, src/StreamReader.h, src/StreamWriter.cpp, 
-    src/StreamWriter.h, tests/Makefile.am, tests/StreamReaderTest.cpp, 
-    tests/StreamWriterTest.cpp: 
-  added CRC32 computation methods to StreamReader and StreamWriter 
-
-  * src/FontCache.cpp, src/FontCache.h: 
-  added CRC32 checks to cache files 
-
-2011-01-31  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CmdLineParserBase.cpp: 
-  print character instead of ascii value in message of command-line parser 
-
-2011-01-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, 
-    src/FileFinder.cpp, src/FileFinder.h, src/FontEngine.cpp, 
-    src/FontEngine.h, src/dvisvgm.cpp, src/options.xml: 
-  added optional argument to --version 
-
-2011-01-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c, 
-    potracelib/curve.h, potracelib/decompose.c, potracelib/decompose.h, 
-    potracelib/lists.h, potracelib/potracelib.c, potracelib/potracelib.h, 
-    potracelib/progress.h, potracelib/trace.c, potracelib/trace.h: 
-  updated bundled potrace library to version 1.9 
-
-2011-01-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/dvisvgm.cpp: 
-  moved cache files to subfolder ($HOME/.dvisvgm/cache) 
-
-2011-01-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * Makefile.am, README, configure.ac, doc/Makefile.am, doc/dvisvgm.txt.in, 
-    src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h, 
-    src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h, 
-    src/Calculator.cpp, src/Calculator.h, src/CmdLineParserBase.cpp, 
-    src/CmdLineParserBase.h, src/Color.cpp, src/Color.h, 
-    src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, 
-    src/CommandLine.cpp, src/CommandLine.h, src/DLLoader.cpp, src/DLLoader.h, 
-    src/DVIActions.cpp, src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h, 
-    src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h, src/Directory.cpp, src/Directory.h, 
-    src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h, 
-    src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, src/FileFinder.cpp, 
-    src/FileFinder.h, src/FilePath.cpp, src/FilePath.h, src/FileSystem.cpp, 
-    src/FileSystem.h, src/Font.cpp, src/Font.h, src/FontCache.cpp, 
-    src/FontCache.h, src/FontEncoding.cpp, src/FontEncoding.h, 
-    src/FontEngine.cpp, src/FontEngine.h, src/FontManager.cpp, 
-    src/FontManager.h, src/FontMap.cpp, src/FontMap.h, src/GFGlyphTracer.cpp, 
-    src/GFGlyphTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp, 
-    src/GFTracer.h, src/Ghostscript.cpp, src/Ghostscript.h, src/Glyph.h, 
-    src/GlyphTracerMessages.h, src/GraphicPath.h, src/HtmlSpecialHandler.h, 
-    src/InputBuffer.cpp, src/InputBuffer.h, src/InputReader.cpp, 
-    src/InputReader.h, src/Length.cpp, src/Length.h, src/Makefile.am, 
-    src/Matrix.cpp, src/Matrix.h, src/Message.cpp, src/Message.h, 
-    src/MessageException.h, src/MetafontWrapper.cpp, src/MetafontWrapper.h, 
-    src/PSInterpreter.cpp, src/PSInterpreter.h, src/PageRanges.cpp, 
-    src/PageRanges.h, src/PageSize.cpp, src/PageSize.h, src/Pair.h, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SVGTree.cpp, 
-    src/SVGTree.h, src/SWFWriter.cpp, src/SWFWriter.h, src/SpecialActions.h, 
-    src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h, 
-    src/StreamReader.cpp, src/StreamReader.h, src/StreamWriter.cpp, 
-    src/StreamWriter.h, src/System.cpp, src/System.h, src/TFM.cpp, src/TFM.h, 
-    src/Terminal.cpp, src/Terminal.h, src/TpicSpecialHandler.cpp, 
-    src/TpicSpecialHandler.h, src/VFActions.h, src/VFReader.cpp, 
-    src/VFReader.h, src/VectorStream.h, src/XMLDocTypeNode.h, 
-    src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h, 
-    src/XMLString.cpp, src/XMLString.h, src/dvisvgm.cpp, src/macros.h, 
-    src/options.dtd, src/options.xml, src/psdefs.ps, src/psdefs.psc, 
-    src/types.h, tests/BoundingBoxTest.cpp, tests/CalculatorTest.cpp, 
-    tests/ColorSpecialTest.cpp, tests/CommandLineTest.cpp, 
-    tests/DirectoryTest.cpp, tests/FileFinderTest.cpp, 
-    tests/FilePathTest.cpp, tests/FontManagerTest.cpp, tests/FontMapTest.cpp, 
-    tests/GFReaderTest.cpp, tests/GraphicPathTest.cpp, tests/LengthTest.cpp, 
-    tests/Makefile.am, tests/MatrixTest.cpp, tests/PageRagesTest.cpp, 
-    tests/PageSizeTest.cpp, tests/PairTest.cpp, 
-    tests/SplittedCharInputBufferTest.cpp, tests/StreamInputBufferTest.cpp, 
-    tests/TypesTest.cpp, tests/VectorStreamTest.cpp, tests/check-conv, 
-    tests/create-makefile: 
-  updated year in copyright info 
-
-  * tests/Makefile.am, tests/PSInterpreterTest.cpp: 
-  added basic tests for class PSInterpreter 
-
-2010-12-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp: 
-  fixed scaling issue in PS positioning 
-
-  * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h, src/psdefs.ps, src/psdefs.psc: 
-  PS handler: added missing scaling of linewidths and dash distances 
-
-  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.4; updated NEWS 
-
-  * doc/dvisvgm.txt.in: 
-  minor update to the manpage 
-
-2010-12-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp: 
-  updated to MiKTeX 2.8 SDK 
-
-2010-08-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontEngine.cpp: 
-  fixed FreeType version check (patch by Paul Vojta) 
-
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.4dev 
-
-2010-08-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/Makefile.am, tests/PairTest.cpp: 
-  added PairTest 
-
-2010-08-05  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.3 
-
-  * NEWS, doc/dvisvgm.txt.in: 
-  updated manpage and NEWS 
-
-2010-08-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BoundingBox.cpp, src/BoundingBox.h, src/Matrix.cpp, src/Matrix.h, 
-    src/PsSpecialHandler.cpp: 
-  revamped PsSpecialHandler::psfile() to fix a transformation issue (SF 
-  bug #3037372) 
-
-2010-07-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp: 
-  added check of DVI format version 
-
-2010-07-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp, src/PsSpecialHandler.h: 
-  restore transformation matrix after execution of psfile 
-
-2010-07-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.3dev 
-
-  * src/InputBuffer.h: 
-  added missing namespace prefix 
-
-  * src/Terminal.cpp: 
-  replaced \e with \x1B 
-
-  * src/GraphicPath.h, src/PsSpecialHandler.h: 
-  fixed missing initialization of GraphicPath iterator 
-
-  * src/Directory.cpp, src/Directory.h, src/GFReader.cpp, src/GFReader.h: 
-  added leading underscore to variables of GFReader 
-
-2010-06-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/gzstream.cpp, src/gzstream.h: 
-  fixed class variable issue introduced by previous AIX patch 
-
-  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.2 
-
-2010-06-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Bitmap.cpp, tests/DirectoryTest.cpp, tests/GFReaderTest.cpp, 
-    tests/Makefile.am, tests/cmr10.600gf, tests/create-makefile: 
-  added GFReaderTest; updated DirectoryTest 
-
-2010-06-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Bitmap.cpp, src/Calculator.cpp, src/CmdLineParserBase.cpp, 
-    src/Color.cpp, src/ColorSpecialHandler.cpp, src/DVIReader.cpp, 
-    src/DVIReader.h, src/DVIToSVGActions.cpp, src/DvisvgmSpecialHandler.cpp, 
-    src/EmSpecialHandler.cpp, src/FontCache.cpp, src/FontEncoding.cpp, 
-    src/GFGlyphTracer.cpp, src/Pair.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h, src/TFM.cpp, src/TFM.h: 
-  fixed some type conversion warnings 
-
-  * src/Message.cpp, src/Message.h: 
-  renamed MessageStream::putchar() to MessageStream::putChar() to avoid 
-  name clashes 
-
-  * src/types.h, tests/Makefile.am, tests/TypesTest.cpp: 
-  added TypesTest 
-
-2010-06-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, src/CmdLineParserBase.h, src/FileFinder.h, 
-    src/FontCache.cpp, src/FontCache.h, src/FontEncoding.cpp, 
-    src/FontEngine.cpp, src/GFGlyphTracer.h, src/MetafontWrapper.cpp, 
-    src/gzstream.cpp: 
-  applied latest TL patches from Peter Breitenlohner and Karl Berry 
-
-  * potracelib/curve.c, potracelib/curve.h, potracelib/decompose.c: 
-  renamed internal potrace functions path_new() and path_free() to prevent 
-  linker conflicts on OS X 
-
-2010-06-14  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.2dev 
-
-2010-06-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Message.cpp: 
-  suppress ANSI color code by default 
-
-  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.1 
-
-2010-06-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.1dev 
-
-  * src/psdefs.ps, src/psdefs.psc: 
-  fixed recursion issue in PS operator charpath 
-
-2010-06-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, doc/Makefile.am, src/Makefile.am: 
-  cleaned up configuration scripts 
-
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0dev 
-
-  * doc/dvisvgm.txt.in, src/BoundingBox.cpp, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h, src/DvisvgmSpecialHandler.cpp, 
-    src/EmSpecialHandler.cpp, src/PsSpecialHandler.cpp, src/SpecialActions.h, 
-    src/SpecialManager.cpp, src/TpicSpecialHandler.cpp: 
-  added special for creating local bounding boxes 
-
-  * src/FilePath.cpp, src/FilePath.h, src/FileSystem.cpp, src/FileSystem.h, 
-    src/Makefile.am, tests/FilePathTest.cpp, tests/Makefile.am: 
-  added class FilePath 
-
-  * src/InputBuffer.h, tests/ColorSpecialTest.cpp, 
-    tests/StreamInputBufferTest.cpp: 
-  added InputBuffer::invalidate() 
-
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, 
-    src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Makefile.am, 
-    src/PageRanges.cpp, src/PageRanges.h, src/StreamCounter.h, 
-    src/dvisvgm.cpp, src/options.xml, tests/BoundingBoxTest.cpp, 
-    tests/CommandLineTest.cpp, tests/Makefile.am, tests/PageRagesTest.cpp, 
-    tests/StreamCounterTest.cpp: 
-  added conversion of multiple pages 
-
-  * configure.ac, doc/Makefile.am, doc/dvisvgm.txt.in, src/CommandLine.cpp, 
-    src/CommandLine.h, src/DVIActions.h, src/DVIToSVG.cpp, src/GFTracer.cpp, 
-    src/GlyphTracerMessages.h, src/Makefile.am, src/Message.cpp, 
-    src/Message.h, src/MetafontWrapper.cpp, src/Terminal.cpp, src/Terminal.h, 
-    src/dvisvgm.cpp, src/options.xml: 
-  improved output of messages including optional colorization 
-
-  * src/Font.cpp: 
-  print error message if Metafont failed 
-
-  * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h, src/psdefs.ps, src/psdefs.psc: 
-  evaluate Ghostscript operator .setopacityalpha 
-
-  * src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h: 
-  added method to compute length of DVI command 
-
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, 
-    src/DVIActions.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, 
-    src/Makefile.am, src/Message.cpp, src/Message.h, src/PSInterpreter.cpp, 
-    src/PSInterpreter.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, 
-    src/SpecialActions.h, src/System.cpp, src/System.h, src/dvisvgm.cpp, 
-    src/options.xml: 
-  added percentage-based progress indicator 
-
-  * doc/Makefile.am, doc/dvisvgm.txt.in: 
-  documented option --help and --version in manpage 
-
-  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0 
-
-  * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h: 
-  fixed PS destructor issue (SF bug #3013392) 
-
-2010-05-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac: 
-  fixed whitespace issue in CPPFLAGS and LDFLAGS 
-
-2010-05-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac: 
-  fixed kpathsea check; use pkg-config to check freetype availability 
-
-  * tests/FileFinderTest.cpp, tests/FontManagerTest.cpp, tests/check-conv: 
-  fixed segfaults in tests 
-
-2010-04-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CommandLine.cpp, src/options.xml: 
-  output of option --help: replaced '(default: FOO)' by '[FOO]' 
-
-  * src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, 
-    src/SVGTree.cpp, src/SVGTree.h, src/XMLNode.cpp, src/XMLNode.h: 
-  ignore unused fonts in CSS styles list 
-
-  * src/SVGTree.cpp: 
-  fixed broken validity when using SVG fonts 
-
-  * src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, 
-    src/DVIToSVG.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h: 
-  print page count and page number of DVI page being processed 
-
-  * tests/check-conv, tests/frktest-wf-cmp.svg, tests/sample-wf-cmp.svg: 
-  adapted conversion tests to new output format 
-
-  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 0.9.1 
-
-2010-04-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontEncoding.cpp: 
-  fixed memory bug in FontEncoding::encoding() 
-
-2010-04-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 0.9.1dev 
-
-  * src/DVIToSVGActions.cpp: 
-  replaced wrong font pointer that could lead to segfaults 
-
-2010-03-25  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * fedora/dvisvgm.spec: 
-  updated spec file 
-
-2010-03-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Font.cpp, src/Font.h, src/dvisvgm.cpp: 
-  moved some methods from PhysicalFontImpl to PysicalFont 
-
-  * doc/dvisvgm.txt.in, src/BoundingBox.cpp, src/BoundingBox.h, 
-    src/CommandLine.cpp, src/CommandLine.h, src/DVIToSVG.cpp, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Font.cpp, src/Font.h, 
-    src/GlyphTracerMessages.h, src/Makefile.am, src/dvisvgm.cpp, 
-    src/options.xml: 
-  added command-line option --exact 
-
-  * src/FontCache.cpp, src/Makefile.am, src/StreamWriter.cpp, 
-    src/StreamWriter.h, src/TFM.cpp: 
-  replaced local stream IO functions by StreamReader/StreamWriter methods 
-
-  * src/CmdLineParserBase.cpp, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, 
-    src/FontEngine.cpp, src/GlyphTracerMessages.h, src/Message.cpp, 
-    src/Message.h, src/MetafontWrapper.cpp, src/dvisvgm.cpp: 
-  added class MessageStream, updated message output 
-
-  * src/FontCache.cpp, src/GFGlyphTracer.cpp, src/GFReader.cpp: 
-  variable _fontname is now correctly set in class FontCache 
-
-  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 0.9 
-
-  * tests/frktest-nf-cmp.svg, tests/frktest-wf-cmp.svg, 
-    tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg: 
-  updated conversion tests 
-
-  * transfer-cs: 
-  added extension .patch to exported changesets 
-
-2010-03-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp, src/SVGTree.cpp: 
-  moved creation of SVG 'use' elements from class DVIToSVG to class 
-  SVGTree 
-
-  * src/DVIToSVG.cpp, src/Font.cpp, src/Font.h, src/GFGlyphTracer.cpp, 
-    src/GFGlyphTracer.h, src/SVGTree.cpp, src/SVGTree.h: 
-  added class GFGlyphTracer::Callback providing an interface used to print 
-  status information about the tracer 
-
-  * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h: 
-  added evaluation of boolean and char arguments to the command-line 
-  parser 
-
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, 
-    src/DVIToSVG.cpp, src/DVIToSVG.h, src/Font.cpp, src/Font.h, 
-    src/dvisvgm.cpp, src/options.xml, tests/CommandLineTest.cpp: 
-  reactivated option --trace-all, and added optional argument 'retrace' to 
-  it 
-
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, 
-    src/Font.cpp, src/Font.h, src/dvisvgm.cpp, src/options.xml: 
-  added command-line option --keep 
-
-2010-03-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/GFReader.cpp, src/GFReader.h: 
-  replaced GFReader messages by exceptions 
-
-  * src/CharmapTranslator.cpp, src/CharmapTranslator.h, src/DVIToSVG.cpp, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Font.cpp, src/Font.h, 
-    src/Makefile.am, src/SVGFontEmitter.cpp, src/SVGFontEmitter.h, 
-    src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/SVGTree.cpp, 
-    src/SVGTree.h: 
-  removed class CharmapTranslator 
-
-  * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, 
-    src/DVIToSVGActions.cpp, src/FontManager.cpp, src/FontManager.h, 
-    src/SVGFontEmitter.cpp, src/SVGFontEmitter.h, 
-    src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/SVGTree.cpp, 
-    src/SVGTree.h, src/VFReader.h, tests/FontManagerTest.cpp: 
-  made FontManager a singleton 
-
-  * src/FontCache.cpp, src/FontCache.h: 
-  added method FontCache::write(const char *dir) that updates the cache 
-  file of the current font 
-
-  * src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp, src/Font.cpp, 
-    src/Font.h, src/FontEmitter.h, src/GFGlyphTracer.h, src/Makefile.am, 
-    src/SVGFontEmitter.cpp, src/SVGFontEmitter.h, 
-    src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/SVGTree.cpp, 
-    src/SVGTree.h, src/dvisvgm.cpp, tests/Makefile.am, tests/check-conv, 
-    tests/create-makefile: 
-  removed emitter classes; incorporated their functionality into SVGTree 
-  and PhysicalFontImpl 
-
-  * src/BoundingBox.cpp, src/Calculator.cpp, src/Matrix.cpp, 
-    src/PSInterpreter.cpp, src/PSInterpreter.h: 
-  fixed a couple of comments 
-
-2010-02-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Font.cpp, src/FontCache.cpp, src/FontCache.h, src/GFGlyphTracer.cpp, 
-    src/GFGlyphTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.h, 
-    src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h: 
-  refactorings of GF tracer class; removed transferGlyph() 
-
-2010-02-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CharmapTranslator.cpp, src/CharmapTranslator.h, src/Font.cpp, 
-    src/Font.h, src/FontCache.cpp, src/FontCache.h, src/FontEngine.cpp, 
-    src/FontEngine.h, src/Glyph.cpp, src/Glyph.h, src/Makefile.am, 
-    src/SVGFontEmitter.cpp, src/SVGFontEmitter.h: 
-  removed class Glyph and incorporated its functionality into Font class 
-
-2010-02-05  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp: 
-  added evaluation of literal PS headers to PSHeaderActions 
-
-2010-02-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/psdefs.ps, src/psdefs.psc: 
-  removed PS error handler nocurrentpoint 
-
-2010-02-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  version updated to 0.8.8 
-
-  * fedora/dvisvgm.spec: 
-  updated homepage and spec file 
-
-2010-02-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/check-conv: 
-  skip conversion checks by default 
-
-2010-01-31  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/Makefile.am, tests/check-conv, tests/create-makefile, 
-    tests/frktest-nf-cmp.svg, tests/frktest-wf-cmp.svg, tests/frktest.dvi, 
-    tests/normalize.xsl, tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg, 
-    tests/sample.dvi: 
-  added tests to check conversion results 
-
-  * tests/normalize.xsl: 
-  some improvements to normalize.xsl 
-
-2010-01-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/CommandLine.cpp, 
-    src/CommandLine.h: 
-  removed CmdLineParserBase::numOptions() 
-
-  * src/GraphicPath.h: 
-  fixed scaling bug in computation of glyph paths when using -n 
-
-2010-01-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, 
-    src/FontCache.h, src/dvisvgm.cpp, src/options.dtd, src/options.xml: 
-  added command-line option --libgs 
-
-2010-01-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CommandLine.cpp, src/options.dtd, src/options.xml: 
-  added DTD for options.xml 
-
-2010-01-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac: 
-  updated type of kpathsea_version_string (patch by lomov_vl) 
-
-  * doc/dvisvgm.txt.in, src/BoundingBox.cpp, src/BoundingBox.h, 
-    src/DVIToSVG.cpp, tests/BoundingBoxTest.cpp, tests/Makefile.am: 
-  added support for enlarging the minimal bbox by a given amount. 
-
-  * Makefile.am, README, configure.ac, doc/dvisvgm.txt.in, 
-    src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h, 
-    src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h, 
-    src/Calculator.cpp, src/Calculator.h, src/CharmapTranslator.cpp, 
-    src/CharmapTranslator.h, src/CmdLineParserBase.cpp, 
-    src/CmdLineParserBase.h, src/Color.cpp, src/Color.h, 
-    src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, 
-    src/CommandLine.cpp, src/CommandLine.h, src/DLLoader.cpp, src/DLLoader.h, 
-    src/DVIActions.cpp, src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h, 
-    src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h, src/Directory.cpp, src/Directory.h, 
-    src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h, 
-    src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, src/FileFinder.cpp, 
-    src/FileFinder.h, src/FileSystem.cpp, src/FileSystem.h, src/Font.cpp, 
-    src/Font.h, src/FontCache.cpp, src/FontCache.h, src/FontEmitter.h, 
-    src/FontEncoding.cpp, src/FontEncoding.h, src/FontEngine.cpp, 
-    src/FontEngine.h, src/FontManager.cpp, src/FontManager.h, 
-    src/FontMap.cpp, src/FontMap.h, src/GFGlyphTracer.cpp, 
-    src/GFGlyphTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp, 
-    src/GFTracer.h, src/Ghostscript.cpp, src/Ghostscript.h, src/Glyph.cpp, 
-    src/Glyph.h, src/GraphicPath.h, src/HtmlSpecialHandler.h, 
-    src/InputBuffer.cpp, src/InputBuffer.h, src/InputReader.cpp, 
-    src/InputReader.h, src/Length.cpp, src/Length.h, src/Makefile.am, 
-    src/Matrix.cpp, src/Matrix.h, src/Message.cpp, src/Message.h, 
-    src/MessageException.h, src/MetafontWrapper.cpp, src/MetafontWrapper.h, 
-    src/PSInterpreter.cpp, src/PSInterpreter.h, src/PageSize.cpp, 
-    src/PageSize.h, src/Pair.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h, src/SVGFontEmitter.cpp, src/SVGFontEmitter.h, 
-    src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/SVGTree.cpp, 
-    src/SVGTree.h, src/SWFWriter.cpp, src/SWFWriter.h, src/SpecialActions.h, 
-    src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h, 
-    src/StreamCounter.h, src/StreamReader.cpp, src/StreamReader.h, 
-    src/TFM.cpp, src/TFM.h, src/TpicSpecialHandler.cpp, 
-    src/TpicSpecialHandler.h, src/VFActions.h, src/VFReader.cpp, 
-    src/VFReader.h, src/VectorStream.h, src/XMLDocTypeNode.h, 
-    src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h, 
-    src/XMLString.cpp, src/XMLString.h, src/dvisvgm.cpp, src/macros.h, 
-    src/options.xml, src/psdefs.ps, src/psdefs.psc, src/types.h, 
-    tests/BoundingBoxTest.cpp, tests/CalculatorTest.cpp, 
-    tests/ColorSpecialTest.cpp, tests/CommandLineTest.cpp, 
-    tests/DirectoryTest.cpp, tests/FileFinderTest.cpp, 
-    tests/FontManagerTest.cpp, tests/FontMapTest.cpp, 
-    tests/GraphicPathTest.cpp, tests/LengthTest.cpp, tests/Makefile.am, 
-    tests/MatrixTest.cpp, tests/PageSizeTest.cpp, 
-    tests/SplittedCharInputBufferTest.cpp, tests/StreamCounterTest.cpp, 
-    tests/StreamInputBufferTest.cpp, tests/VectorStreamTest.cpp, 
-    tests/create-makefile: 
-  updated boilerplates 
-
-  * doc/dvisvgm.txt.in, src/FileFinder.cpp, src/Ghostscript.cpp, 
-    src/Ghostscript.h, src/dvisvgm.cpp: 
-  environment variable LIBGS can now be used to set the name of the GS 
-  shared library 
-
-  * NEWS: 
-  updated NEWS 
-
-  * src/Ghostscript.cpp: 
-  fixed typo in variable name 
-
-2009-12-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/InputReader.cpp: 
-  fixed bug in InputReader::parseUInt() 
-
-2009-12-15  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, src/dvisvgm.cpp: 
-  appied get_time patch sent by Peter Breitenlohner 
-
-2009-12-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BoundingBox.h, src/Calculator.h, src/CharmapTranslator.h, 
-    src/DVIReader.h, src/DVIToSVG.h, src/DVIToSVGActions.h, src/Font.h, 
-    src/FontEngine.h, src/FontManager.h, src/FontMap.h, src/GFGlyphTracer.h, 
-    src/GFReader.h, src/MessageException.h, src/MetafontWrapper.h, 
-    src/PageSize.h, src/SVGTree.cpp, src/SVGTree.h, src/StreamReader.h, 
-    src/VFActions.h, src/VFReader.h, src/XMLDocTypeNode.h, src/XMLDocument.h, 
-    src/XMLNode.h, src/XMLString.h: 
-  removed using statements from header files 
-
-2009-11-25  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontCache.cpp, src/FontCache.h, src/FontEngine.cpp, 
-    src/FontEngine.h, src/FontGlyph.cpp, src/FontGlyph.h, 
-    src/GFGlyphTracer.cpp, src/GFGlyphTracer.h, src/GFTracer.cpp, 
-    src/Glyph.cpp, src/Glyph.h, src/GraphicPath.h, src/Makefile.am, 
-    src/Pair.h, src/SVGFontEmitter.cpp, src/SVGFontTraceEmitter.cpp, 
-    tests/GraphicPathTest.cpp: 
-  removed FEGlyphCommands and replaced separate glyph class implementation 
-  by class GraphicPath 
-
-2009-11-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp: 
-  avoid scaling by 1 in use elements 
-
-2009-11-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp, src/Ghostscript.cpp, src/Ghostscript.h: 
-  replaced #if !DISABLE_GS by #if !defined(DISABLE_GS) (Peter 
-  Breitenlohner) 
-
-  * src/Ghostscript.cpp, src/Ghostscript.h: 
-  replaced #if HAVE_LIBGS by #if defined(HAVE_LIBGS) 
-
-  * src/DLLoader.cpp, src/DLLoader.h: 
-  fixed line endings 
-
-2009-11-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 0.8.8dev 
-
-  * potracelib/potracelib.c, potracelib/potracelib.h: 
-  replaced outdated string constant type char* by const char* in 
-  potrace_version() 
-
-  * src/Color.cpp, src/ColorSpecialHandler.cpp, src/FontManager.cpp, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, 
-    src/TpicSpecialHandler.cpp: 
-  added explicit casts to avoid compiler warnings (Peter Breitenlohner) 
-
-  * src/InputReader.cpp: 
-  added missing initialization value (Peter Breitenlohner) 
-
-  * src/CmdLineParserBase.h, src/GraphicPath.h, src/InputReader.h, 
-    src/Makefile.am, src/PSInterpreter.h, src/SpecialManager.h: 
-  added missing virtual destructors to avoid warnings 
-
-  * src/dvisvgm.cpp: 
-  don't use email adress PACKAGE_BUGREPORT for copyright notice 
-
-  * NEWS: 
-  updated NEWS 
-
-2009-11-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * fedora/dvisvgm.spec: 
-  updated spec file 
-
-2009-11-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp, src/dvisvgm.cpp: 
-  added total number of pages to message text 
-
-  * NEWS, src/Color.cpp, src/Color.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h, src/SVGTree.cpp: 
-  PS handler: colors set by color specials are now considered properly 
-
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 0.8.7 
-
-2009-11-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/GraphicPath.h, src/PsSpecialHandler.cpp: 
-  PS handler: replace zero-length paths by dots 
-
-  * NEWS, doc/dvisvgm.txt.in: 
-  updated NEWS and manpage 
-
-  * NEWS, src/PsSpecialHandler.cpp: 
-  fixed path scaling issue in PS handler 
-
-2009-10-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVGActions.cpp, src/Font.cpp, src/Font.h: 
-  fixed positioning of italic characters 
-
-2009-10-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Font.cpp, src/TFM.cpp, src/TFM.h: 
-  added italic correction values to character widths 
-
-2009-10-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/Makefile.am, tests/create-makefile: 
-  added script to create tests/Makefile.am 
-
-  * configure.ac, src/Doxyfile: 
-  increased version to 0.8.7dev 
-
-2009-10-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/Makefile.am, doc/dvisvgm.txt.in: 
-  removed outdated post-processing of manpage 
-
-  * fedora/dvisvgm.spec: 
-  updated spec file 
-
-  * doc/Makefile.am: 
-  added missing dvi suffix in Makefile target dvi-pdf 
-
-  * README, tests/CalculatorTest.cpp, tests/CalculatorTest.h, 
-    tests/ColorSpecialTest.cpp, tests/ColorSpecialTest.h, 
-    tests/CommandLineTest.cpp, tests/CommandLineTest.h, 
-    tests/DirectoryTest.cpp, tests/DirectoryTest.h, tests/FileFinderTest.cpp, 
-    tests/FileFinderTest.h, tests/FontManagerTest.cpp, 
-    tests/FontManagerTest.h, tests/FontMapTest.cpp, tests/FontMapTest.h, 
-    tests/GraphicPathTest.cpp, tests/GraphicPathTest.h, tests/LengthTest.cpp, 
-    tests/LengthTest.h, tests/Makefile.am, tests/MatrixTest.cpp, 
-    tests/MatrixTest.h, tests/PageSizeTest.cpp, tests/PageSizeTest.h, 
-    tests/SplittedCharInputBufferTest.cpp, 
-    tests/SplittedCharInputBufferTest.h, tests/StreamCounterTest.cpp, 
-    tests/StreamCounterTest.h, tests/StreamInputBufferTest.cpp, 
-    tests/StreamInputBufferTest.h, tests/VectorStreamTest.cpp, 
-    tests/VectorStreamTest.h: 
-  replaced cxxtest by googletest 
-
-2009-10-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h, 
-    src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h, 
-    src/Calculator.cpp, src/Calculator.h, src/CharmapTranslator.cpp, 
-    src/CharmapTranslator.h, src/CmdLineParserBase.cpp, 
-    src/CmdLineParserBase.h, src/Color.cpp, src/Color.h, 
-    src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/DLLoader.cpp, 
-    src/DLLoader.h, src/DVIActions.cpp, src/DVIActions.h, src/DVIReader.cpp, 
-    src/DVIReader.h, src/DVIToSVG.h, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h, src/Directory.cpp, src/Directory.h, 
-    src/DvisvgmSpecialHandler.h, src/EmSpecialHandler.cpp, 
-    src/EmSpecialHandler.h, src/FileFinder.cpp, src/FileFinder.h, 
-    src/FileSystem.cpp, src/FileSystem.h, src/Font.cpp, src/Font.h, 
-    src/FontCache.cpp, src/FontCache.h, src/FontEmitter.h, 
-    src/FontEncoding.cpp, src/FontEncoding.h, src/FontEngine.cpp, 
-    src/FontEngine.h, src/FontGlyph.cpp, src/FontGlyph.h, 
-    src/FontManager.cpp, src/FontManager.h, src/FontMap.cpp, src/FontMap.h, 
-    src/GFGlyphTracer.cpp, src/GFGlyphTracer.h, src/GFReader.cpp, 
-    src/GFReader.h, src/GFTracer.cpp, src/GFTracer.h, src/Ghostscript.cpp, 
-    src/Ghostscript.h, src/GraphicPath.h, src/InputBuffer.cpp, 
-    src/InputBuffer.h, src/InputReader.cpp, src/InputReader.h, 
-    src/Matrix.cpp, src/Matrix.h, src/Message.cpp, src/Message.h, 
-    src/MessageException.h, src/MetafontWrapper.cpp, src/MetafontWrapper.h, 
-    src/PSInterpreter.cpp, src/PSInterpreter.h, src/PageSize.cpp, 
-    src/PageSize.h, src/Pair.h, src/SVGFontEmitter.cpp, src/SVGFontEmitter.h, 
-    src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, 
-    src/SpecialActions.h, src/SpecialHandler.h, src/SpecialManager.cpp, 
-    src/SpecialManager.h, src/StreamCounter.h, src/StreamReader.cpp, 
-    src/StreamReader.h, src/TFM.cpp, src/TFM.h, src/TpicSpecialHandler.cpp, 
-    src/TpicSpecialHandler.h, src/VFActions.h, src/VFReader.cpp, 
-    src/VFReader.h, src/VectorStream.h, src/XMLDocTypeNode.h, 
-    src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h, 
-    src/XMLString.cpp, src/XMLString.h, src/macros.h, src/types.h: 
-  code cleanup 
-
-  * src/FontInfo.cpp, src/FontInfo.h, src/FontTracer.h, src/PSObject.cpp, 
-    src/PSObject.h, src/PSState.cpp, src/PSState.h, src/global.cpp, 
-    src/global.h: 
-  removed unused source files 
-
-2009-10-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * transfer-cs: 
-  improved transfer-cs 
-
-  * src/DVIToSVG.cpp, src/DvisvgmSpecialHandler.cpp, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SVGTree.cpp, 
-    src/SVGTree.h: 
-  suppress empty style and transformation elements 
-
-  * NEWS: 
-  NEWS updated 
-
-2009-10-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp: 
-  scale clipping paths by 72.27/72 
-
-2009-10-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Bitmap.h: 
-  fixed bit shift overflow in Bitmap class occured on 64-bit systems 
-
-  * autogen.sh, prepare: 
-  prepare script replaced by autogen.sh 
-
-  * transfer-cs: 
-  added script to transfer changesets to dvisvgm-pub 
-
-  * doc/dvisvgm.txt.in: 
-  fixed formatting of manual page 
-
-  * src/Length.cpp, src/Length.h, tests/LengthTest.h: 
-  fixed unit conversion bug 
-
-  * src/Makefile.am: 
-  fixed Makefile 
-
-2009-10-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, doc/dvisvgm.txt.in, src/BoundingBox.cpp, src/CommandLine.cpp, 
-    src/CommandLine.h, src/DVIToSVG.cpp, src/DVIToSVG.h, src/dvisvgm.cpp, 
-    src/options.xml, tests/CommandLineTest.h, tests/Makefile.am: 
-  cmdline parameter --bbox can now be used to set the absolute bounding 
-  box 
-
-  * NEWS, src/GraphicPath.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h: 
-  PS clipping path sequences and intersections are now handled correctly 
-
-  * src/MetafontWrapper.cpp: 
-  fixed file permissions 
-
-  * src/dvisvgm.cpp: 
-  fixed uncaught PageSizeException 
-
-2009-10-07  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, doc/dvisvgm.txt.in, src/BoundingBox.cpp, src/BoundingBox.h, 
-    src/DvisvgmSpecialHandler.cpp: 
-  added the special variant 'dvisvgm:bbox abs' and 'dvisvgm:bbox fix' 
-
-  * src/BoundingBox.cpp, src/BoundingBox.h, src/Length.cpp, src/Length.h, 
-    src/Makefile.am, tests/LengthTest.h: 
-  class Length provides length unit calculations 
-
-2009-10-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BoundingBox.cpp, src/BoundingBox.h, src/GraphicPath.h, 
-    src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h, src/psdefs.ps, src/psdefs.psc: 
-  fixed some PS bounding box and positioning issues introduced by previous 
-  changesets 
-
-  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 0.8.6 
-
-2009-10-05  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp: 
-  convert PS path coordinated to TeX point units 
-
-  * NEWS, src/PsSpecialHandler.cpp: 
-  fixed another positioning bug reported by John Bowman 
-
-2009-10-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/GraphicPath.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h: 
-  corrected positioning bug introduced with previous PS positioning fix 
-
-2009-10-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/Makefile.am, doc/dvisvgm.txt.in: 
-  generate pdf manpage directly with groff; adapted manpage source to work 
-  with latest asciidoc 
-
-2009-10-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/Makefile.am, doc/dvisvgm.txt.in: 
-  replaced backticks in manpage by apostrophes; updated date on homepage 
-
-2009-09-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in: 
-  added dvisvgm:raw example to man page 
-
-  * LGPL-2.1.txt, NEWS, README: 
-  updated README and NEWS, and added file with LGPL license text 
-
-  * Makefile.am, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  increased version number to 0.8.5 
-
-2009-09-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS: 
-  added cretdit to John Bowman for sending a patch for the already fixed 
-  clipping bug 
-
-  * src/PsSpecialHandler.h: 
-  increased the default linewidth to 0.5 
-
-  * fedora/dvisvgm.spec: 
-  updated spec file and fixed typo on website 
-
-  * doc/dvisvgm.txt.in: 
-  minor changes of the documentation 
-
-2009-09-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, src/CmdLineParserBase.cpp, src/FontCache.cpp, 
-    src/SVGFontTraceEmitter.cpp: 
-  fixed memory bug in tracer module (issue #21) 
-
-  * NEWS, doc/dvisvgm.txt.in, src/CommandLine.cpp, src/CommandLine.h, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/SpecialManager.cpp, 
-    src/SpecialManager.h, src/dvisvgm.cpp, src/options.xml: 
-  added option --progress for enabling a progress indicator (feature #22) 
-
-  * src/FileSystem.cpp, src/MetafontWrapper.cpp: 
-  Windows: Metafont is now called via CreateProcess() 
-
-2009-09-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h, 
-    src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/DVIToSVG.cpp, 
-    src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h, 
-    src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SpecialHandler.h, 
-    src/SpecialManager.cpp, src/TpicSpecialHandler.cpp, 
-    src/TpicSpecialHandler.h: 
-  refactored prefixes methods of the SpecialHandlers (ticket #20) 
-
-  * NEWS, doc/dvisvgm.txt.in, src/FileSystem.cpp, src/FileSystem.h, 
-    src/FontCache.cpp, src/FontCache.h, src/dvisvgm.cpp: 
-  option --cache prints additional information about the cached fonts 
-  (feature #7) 
-
-  * src/FileSystem.cpp, src/FontCache.cpp: 
-  fixed Windows-related bug in FileSystem::collect 
-
-2009-09-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, README: 
-  updated NEWS and README 
-
-2009-09-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  increased version number to 0.8.4 
-
-  * src/BoundingBox.cpp, src/BoundingBox.h, src/PsSpecialHandler.cpp: 
-  linewidths are now considered properly in computation of bounding box 
-  (issue #13) 
-
-  * src/dvisvgm.cpp: 
-  fixed evaluation of option --help 
-
-  * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/CommandLine.cpp, 
-    src/InputBuffer.h, src/InputReader.h, src/psdefs.psc, 
-    tests/CommandLineTest.h: 
-  improved the command line parser to make it more POSIX-compliant 
-  (feature #17) 
-
-2009-09-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp, src/psdefs.ps, src/psdefs.psc: 
-  fixed flattened clipping path bug (issue #11) 
-
-2009-08-31  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Makefile.am: 
-  added error checks; disallow numeric optional arguments w/o default 
-  value 
-
-2009-08-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, src/PSInterpreter.cpp, src/PsSpecialHandler.cpp, src/dvisvgm.cpp, 
-    src/psdefs.ps, src/psdefs.psc: 
-  added evaluation of PS 'show' operator in order to evaluate PSTricks 
-  Type 3 fonts properly 
-
-2009-08-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, configure.ac, doc/dvisvgm.txt.in, src/CmdLineParserBase.cpp, 
-    src/CommandLine.cpp, src/Doxyfile, src/dvisvgm.cpp, src/getopt.c, 
-    src/getopt.h, src/getopt1.c, src/options.xml: 
-  replaced option --cache=? by --cache; increased version number to 0.8.3 
-
-2009-08-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * fedora/dvisvgm-0.8.1-potrace.patch, fedora/dvisvgm-gs.patch, 
-    fedora/dvisvgm-potrace.patch, fedora/dvisvgm.spec: 
-  updated Fedora files 
-
-  * configure.ac, fedora/dvisvgm.spec, src/Ghostscript.cpp, 
-    src/Ghostscript.h, src/Makefile.am: 
-  improved Ghostscript and potrace linking checks to simplify usage of 
-  external devel files 
-
-  * NEWS, configure.ac, src/DVIToSVG.cpp, src/DVIToSVG.h, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/PsSpecialHandler.cpp, 
-    src/SpecialManager.cpp, src/SpecialManager.h: 
-  PS prologue files referenced in first page are now always loaded 
-
-2009-08-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CommandLine.cpp, src/CommandLine.h: 
-  speed up printing help by using puts() instead of C++ streams 
-
-2009-08-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontMap.cpp: 
-  fixed memory bug in FontMap 
-
-  * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/Makefile.am, 
-    src/dvisvgm.cpp, src/options.xml, tests/CommandLineTest.h, 
-    tests/Makefile.am: 
-  improved CmdLineParserBase and replaced gengetopt-based parser 
-
-  * NEWS, configure.ac, src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, 
-    src/Doxyfile: 
-  increased version number to 0.8.2 
-
-2009-08-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/InputReader.cpp, src/InputReader.h: 
-  added method parseUInt() 
-
-  * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/options.xml: 
-  added files for replacement of gengetopt (not active yet) 
-
-  * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h: 
-  finished cmdline parser 
-
-  * COPYING: 
-  added copy of file COPYING 
-
-2009-08-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * tests/Makefile.am: 
-  added include path to fix broken distcheck 
-
-  * COPYING, LICENSE, Makefile.am, README, doc/dvisvgm.txt.in, 
-    src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h, 
-    src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h, 
-    src/Calculator.cpp, src/Calculator.h, src/CharmapTranslator.cpp, 
-    src/CharmapTranslator.h, src/Color.cpp, src/Color.h, 
-    src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/DLLoader.cpp, 
-    src/DLLoader.h, src/DVIActions.cpp, src/DVIActions.h, src/DVIReader.cpp, 
-    src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Directory.cpp, 
-    src/Directory.h, src/DvisvgmSpecialHandler.cpp, 
-    src/DvisvgmSpecialHandler.h, src/EmSpecialHandler.cpp, 
-    src/EmSpecialHandler.h, src/FileFinder.cpp, src/FileFinder.h, 
-    src/FileSystem.cpp, src/FileSystem.h, src/Font.cpp, src/Font.h, 
-    src/FontCache.cpp, src/FontCache.h, src/FontEmitter.h, 
-    src/FontEncoding.cpp, src/FontEncoding.h, src/FontEngine.cpp, 
-    src/FontEngine.h, src/FontGlyph.cpp, src/FontGlyph.h, src/FontInfo.cpp, 
-    src/FontInfo.h, src/FontManager.cpp, src/FontManager.h, src/FontMap.cpp, 
-    src/FontMap.h, src/FontTracer.h, src/GFGlyphTracer.cpp, 
-    src/GFGlyphTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp, 
-    src/GFTracer.h, src/Ghostscript.cpp, src/Ghostscript.h, 
-    src/GraphicPath.h, src/HtmlSpecialHandler.h, src/InputBuffer.cpp, 
-    src/InputBuffer.h, src/InputReader.cpp, src/InputReader.h, 
-    src/Matrix.cpp, src/Matrix.h, src/Message.cpp, src/Message.h, 
-    src/MessageException.h, src/MetafontWrapper.cpp, src/MetafontWrapper.h, 
-    src/PSInterpreter.cpp, src/PSInterpreter.h, src/PSObject.cpp, 
-    src/PSObject.h, src/PSState.cpp, src/PSState.h, src/PageSize.cpp, 
-    src/PageSize.h, src/Pair.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h, src/SVGFontEmitter.cpp, src/SVGFontEmitter.h, 
-    src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/SVGTree.cpp, 
-    src/SVGTree.h, src/SWFWriter.cpp, src/SWFWriter.h, src/SpecialActions.h, 
-    src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h, 
-    src/StreamCounter.h, src/StreamReader.cpp, src/StreamReader.h, 
-    src/TFM.cpp, src/TFM.h, src/TpicSpecialHandler.cpp, 
-    src/TpicSpecialHandler.h, src/VFActions.h, src/VFReader.cpp, 
-    src/VFReader.h, src/VectorStream.h, src/XMLDocTypeNode.h, 
-    src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h, 
-    src/XMLString.cpp, src/XMLString.h, src/dvisvgm.cpp, src/global.cpp, 
-    src/global.h, src/inttypes.h, src/macros.h, src/psdefs.ps, 
-    src/psdefs.psc, src/types.h, tests/CalculatorTest.h, 
-    tests/ColorSpecialTest.h, tests/DirectoryTest.h, tests/FileFinderTest.h, 
-    tests/FontManagerTest.h, tests/FontMapTest.h, tests/GraphicPathTest.h, 
-    tests/MatrixTest.h, tests/PageSizeTest.h, 
-    tests/SplittedCharInputBufferTest.h, tests/StreamCounterTest.h, 
-    tests/StreamInputBufferTest.h, tests/VectorStreamTest.h: 
-  changed license to GPL version 3 or later 
-
-2009-08-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * fedora/dvisvgm-0.8.1-potrace.patch, fedora/dvisvgm.spec, 
-    rpm/dvisvgm.spec: 
-  added spec file and patch for Fedora builds 
-
-  * Makefile.am, configure.ac, src/Makefile.am, src/tests/CalculatorTest.h, 
-    src/tests/ColorSpecialTest.h, src/tests/DirectoryTest.h, 
-    src/tests/FileFinderTest.h, src/tests/FontManagerTest.h, 
-    src/tests/FontMapTest.h, src/tests/GraphicPathTest.h, 
-    src/tests/MatrixTest.h, src/tests/PageSizeTest.h, 
-    src/tests/SplittedCharInputBufferTest.h, src/tests/StreamCounterTest.h, 
-    src/tests/StreamInputBufferTest.h, src/tests/VectorStreamTest.h, 
-    src/tests/dvipdfm_test.map, src/tests/dvips_test.map, 
-    tests/CalculatorTest.h, tests/ColorSpecialTest.h, tests/DirectoryTest.h, 
-    tests/FileFinderTest.h, tests/FontManagerTest.h, tests/FontMapTest.h, 
-    tests/GraphicPathTest.h, tests/Makefile.am, tests/MatrixTest.h, 
-    tests/PageSizeTest.h, tests/SplittedCharInputBufferTest.h, 
-    tests/StreamCounterTest.h, tests/StreamInputBufferTest.h, 
-    tests/VectorStreamTest.h, tests/dvipdfm_test.map, tests/dvips_test.map: 
-  moved tests from src/tests to ./tests 
-
-  * tests/Makefile.am: 
-  added generated file test-all.cpp to CLEANFILES 
-
-2009-08-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * LICENSE, Makefile.am, rpm/dvisvgm.spec, rpm/dvisvgm.spec.in, 
-    src/Ghostscript.cpp: 
-  modified package to be compatible with prerequisites of Fedora 
-
-2009-07-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, src/DVIToSVG.cpp: 
-  added target triplet to version string in SVG output 
-
-  * src/DVIToSVGActions.cpp, src/Ghostscript.cpp, src/Ghostscript.h, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h: 
-  added Ghostscript revision info to output of dvisvgm -l 
-
-2009-07-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/psdefs.psc: 
-  added vim tag to psdefs.psc 
-
-2009-07-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PsSpecialHandler.cpp: 
-  added evaluation of more psfile parameters; fixed psfile bounding box 
-  bug 
-
-  * NEWS, configure.ac, src/Doxyfile: 
-  updated version number to 0.8.1 
-
-  * NEWS, src/FileSystem.cpp, src/FontEngine.cpp, src/FontManager.cpp, 
-    src/Ghostscript.cpp, src/PageSize.cpp, src/dvisvgm.cpp: 
-  fixed bug related to unsigned/size_t mismatch on x64 systems 
-
-  * src/psdefs.psc: 
-  cleaned up VC++ build files; added batch file to generate cmdline.c; 
-  added generated file psdefs.psc for convenience 
-
-2009-07-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DLLoader.cpp, src/InputReader.cpp, src/PSInterpreter.cpp: 
-  changes to make VC happy; fixed potential memory bug 
-
-  * NEWS, README: 
-  fixed typos; updated homepage/manpage 
-
-  * src/DVIReader.h, src/InputBuffer.cpp, src/InputBuffer.h, 
-    src/InputReader.cpp, src/InputReader.h, src/Matrix.cpp, src/Matrix.h, 
-    src/PSInterpreter.h: 
-  replaced size_t parameters by unsigned 
-
-2009-07-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/PSInterpreter.cpp: 
-  some clean-ups 
-
-2009-07-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, README, doc/dvisvgm.txt.in, src/BoundingBox.cpp, 
-    src/BoundingBox.h, src/GraphicPath.h, src/PSInterpreter.cpp, 
-    src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/psdefs.ps: 
-  fixed clipping bug; updated homepage, README, NEWS 
-
-  * src/TpicSpecialHandler.cpp: 
-  fixed reintroduced bug in TPIC handler 
-
-2009-07-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DvisvgmSpecialHandler.cpp, src/InputBuffer.cpp, src/InputReader.cpp, 
-    src/InputReader.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, 
-    src/psdefs.ps, src/tests/StreamInputBufferTest.h: 
-  implemented psfile special; fixed some bugs 
-
-  * src/PsSpecialHandler.cpp, src/SVGTree.cpp: 
-  fixed bbox bug; added missing file 
-
-2009-06-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/InputBuffer.cpp, src/InputBuffer.h, src/Makefile.am: 
-  transplanted changes to InputBuffer from branch 'pages' 
-
-  * src/Bitmap.cpp, src/Bitmap.h: 
-  transplanted changes to Bitmap from branch 'pages' 
-
-  * src/DVIReader.cpp, src/DVIReader.h: 
-  transplanted changes to DVIReader from branch 'pages' 
-
-  * src/FileSystem.cpp, src/FileSystem.h: 
-  transplanted changes to FileSystem from branch 'pages' 
-
-  * src/VFReader.cpp: 
-  transplanted changes to VFReader from branch 'pages' 
-
-  * src/GFTracer.cpp: 
-  transplanted changes to GFTracer from branch 'pages' 
-
-  * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h, 
-    src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, 
-    src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h, 
-    src/EmSpecialHandler.cpp, src/EmSpecialHandler.h, src/SpecialHandler.h, 
-    src/SpecialManager.cpp, src/SpecialManager.h, src/TpicSpecialHandler.cpp, 
-    src/TpicSpecialHandler.h: 
-  transplanted changes to SpecialHandlers from branch 'pages' 
-
-2009-04-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/TpicSpecialHandler.cpp: 
-  fixed TPIC handler bug that could caused unwanted color fills of 
-  ellipses due to a missing call of reset() 
-
-  * NEWS, configure.ac, src/Doxyfile: 
-  increased version number to 0.7.3 
-
-  * src/FontCache.h: 
-  increased version of font cache files to ensure their recreation due to 
-  the previously fixed shorthand path command bug 
-
-2009-04-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * configure.ac, doc/dvisvgm.txt.in, src/MetafontWrapper.cpp, 
-    src/dvisvgm.cpp: 
-  prepared release 0.7.2 (removed inclusions of debug.h, adapted homepage 
-  and manpage) 
-
-2009-03-25  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVG.cpp, src/DVIToSVG.h, src/FontGlyph.cpp, 
-    src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/dvisvgm.cpp: 
-  replaced Metafont magnification variable and its setters by a public 
-  class variable 
-
-  * src/Doxyfile: 
-  added doxygen files 
-
-2009-03-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, src/FontCache.cpp, src/FontGlyph.cpp, src/FontGlyph.h, 
-    src/GFGlyphTracer.cpp, src/Pair.h, src/SVGFontEmitter.cpp: 
-  use of shorthand path commands has been implemented 
-
-  * src/FontGlyph.cpp: 
-  fixed potential bug in Glyph::optimizeCommands() 
-
-  * src/FontGlyph.cpp: 
-  fixed memory bug in Glyph::optimizeCommands() 
-
-2009-03-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontCache.cpp: 
-  cache files are being compressed now to reduce the file size 
-
-2009-03-19  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, doc/dvisvgm.txt.in, src/FontEmitter.h, src/GFGlyphTracer.cpp, 
-    src/SVGFontEmitter.cpp, src/SVGFontEmitter.h, 
-    src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/dvisvgm.cpp, 
-    src/options.ggo: 
-  added option --trace-all that forces tracing of all glyphs of all 
-  currently used bitmap fonts 
-
-  * src/FontCache.cpp, src/SVGFontTraceEmitter.cpp: 
-  don't read existing cache file if --trace-all is given (trace complete 
-  font and then write cache file instead) 
-
-2009-03-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontCache.cpp: 
-  fixed bug in read/write functions of FontCache 
-
-  * src/DVIToSVG.cpp, src/TFM.cpp, src/TFM.h: 
-  added firstChar()/lastChar() to TFM class, removed unnecessary mag 
-  member variable and its setter 
-
-2009-03-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.txt.in, src/DVIToSVG.cpp, src/FileSystem.cpp, 
-    src/FileSystem.h, src/FontCache.cpp, src/FontCache.h, src/FontGlyph.h, 
-    src/GFGlyphTracer.cpp, src/GFGlyphTracer.h, src/Makefile.am, 
-    src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/dvisvgm.cpp: 
-  completed font caching support 
-
-  * doc/dvisvgm.txt.in, src/dvisvgm.cpp: 
-  added option variant --cache=? to display the default cache directory 
-
-  * src/FontCache.cpp: 
-  reduced size of cache file format by using variable integer sizes 
-
-2009-03-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, configure.ac, doc/dvisvgm.txt.in, src/DVIToSVG.cpp, 
-    src/FileSystem.cpp, src/FileSystem.h, src/FontCache.cpp, src/FontCache.h, 
-    src/FontGlyph.cpp, src/FontGlyph.h, src/GFGlyphTracer.cpp, 
-    src/GFGlyphTracer.h, src/GFTracer.cpp, src/options.ggo: 
-  first additions to support font caching; not working yet 
-
-2009-03-11  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h, src/FontEmitter.h, src/SVGFontEmitter.cpp, 
-    src/SVGFontEmitter.h, src/SVGFontTraceEmitter.cpp, 
-    src/SVGFontTraceEmitter.h: 
-  improved font embedding algorithm in case of --no-fonts (identical 
-  glyphs in different sizes are now referenced rather than duplicated) 
-
-2009-03-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/Font.h, 
-    src/SVGFontEmitter.cpp, src/SVGFontTraceEmitter.cpp: 
-  all glyph sizes are now computed correctly in conjuction with option 
-  --no-fonts 
-
-2009-03-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BgColorSpecialHandler.cpp, src/SpecialManager.cpp, 
-    src/TpicSpecialHandler.cpp: 
-  adapted Code to make VC happy 
-
-  * src/types.h: 
-  minor changes to homepage and .hgignore 
-
-  * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h, 
-    src/DVIToSVGActions.cpp: 
-  fixed transformation bug (transformations are now applied properly to 
-  the page) 
-
-2009-03-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, README, src/Color.cpp, src/Color.h, src/ColorSpecialHandler.cpp, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, 
-    src/DvisvgmSpecialHandler.cpp, src/EmSpecialHandler.cpp, src/Makefile.am, 
-    src/TpicSpecialHandler.cpp: 
-  added bgcolor support, updated homepage, fixed color handler bug 
-
-  * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h: 
-  added missing background color handler 
-
-2009-03-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h: 
-  implemented arc drawing of tpic special set 
-
-  * src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h: 
-  implemented splines of tpic specials 
-
-2009-03-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/BoundingBox.cpp, src/BoundingBox.h, src/Color.cpp, 
-    src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/DVIActions.h, 
-    src/DVIBBoxActions.h, src/DVIToSVG.cpp, src/DVIToSVG.h, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/EmSpecialHandler.cpp, 
-    src/Makefile.am, src/SpecialActions.h, src/SpecialHandler.h, 
-    src/TpicSpecialHandler.cpp: 
-  improved computation of the bounding box (works with specials now); 
-  added dummy function for background color assignments 
-
-  * doc/Makefile.am, doc/dvisvgm.txt.in, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h, src/DvisvgmSpecialHandler.cpp, 
-    src/DvisvgmSpecialHandler.h, src/InputBuffer.cpp, src/InputBuffer.h, 
-    src/SpecialActions.h: 
-  implemented the dvisvgm specials raw, image, and bbox 
-
-  * doc/dvisvgm.txt.in, src/DvisvgmSpecialHandler.cpp, 
-    src/DvisvgmSpecialHandler.h: 
-  minor code improvements; comments added 
-
-2009-02-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/Makefile.am, doc/dvisvgm.txt, doc/dvisvgm.txt.in: 
-  removed generated file, added dvisvgm.txt.in 
-
-  * doc/Makefile.am, doc/dvisvgm.txt.in: 
-  improved manpage 
-
-2009-02-25  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, 
-    src/DvisvgmSpecialHandler.cpp, src/EmSpecialHandler.cpp, 
-    src/SpecialActions.h, src/TpicSpecialHandler.cpp: 
-  renamed appendInPage() to appendToPage 
-
-2009-02-24  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, 
-    src/DVIToSVGActions.cpp, src/DvisvgmSpecialHandler.cpp, 
-    src/DvisvgmSpecialHandler.h, src/EmSpecialHandler.cpp, 
-    src/EmSpecialHandler.h, src/HtmlSpecialHandler.h, src/Makefile.am, 
-    src/SpecialColorHandler.cpp, src/SpecialColorHandler.h, 
-    src/SpecialDvisvgmHandler.cpp, src/SpecialDvisvgmHandler.h, 
-    src/SpecialEmHandler.cpp, src/SpecialEmHandler.h, src/SpecialHandler.h, 
-    src/SpecialHtmlHandler.h, src/SpecialManager.cpp, src/SpecialManager.h, 
-    src/tests/ColorSpecialTest.h: 
-  improved SpecialHandler is now able to handle unprefixed specials 
-
-  * NEWS, src/Color.cpp, src/Color.h, src/DVIToSVGActions.cpp, 
-    src/Makefile.am, src/Pair.h, src/SpecialHandler.h, 
-    src/SpecialManager.cpp, src/SpecialManager.h, src/TpicSpecialHandler.cpp, 
-    src/TpicSpecialHandler.h: 
-  first tpic implementations; not complete yet 
-
-  * NEWS, doc/dvisvgm.1.in, src/TpicSpecialHandler.cpp: 
-  few additions to tpic handler 
-
-2009-02-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, configure.ac, doc/dvisvgm.1.in, src/DVIBBoxActions.h, 
-    src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h, 
-    src/DVIToSVGActions.cpp, src/FontEmitter.h, src/FontEngine.cpp, 
-    src/FontEngine.h, src/FontGlyph.cpp, src/FontGlyph.h, 
-    src/SVGFontEmitter.cpp, src/SVGFontEmitter.h, 
-    src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, src/XMLNode.cpp, 
-    src/XMLNode.h, src/dvisvgm.cpp, src/options.ggo, 
-    src/tests/ColorSpecialTest.h: 
-  added option --no-fonts wich uses path elements instead of fonts 
-
-2009-02-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, doc/dvisvgm.1.in, src/Color.cpp, src/Color.h, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Makefile.am, 
-    src/SpecialActions.h, src/SpecialColorHandler.cpp, 
-    src/SpecialDvisvgmHandler.cpp, src/SpecialDvisvgmHandler.h, 
-    src/SpecialEmHandler.cpp, src/SpecialEmHandler.h, 
-    src/SpecialHtmlHandler.h, src/VerbSpecialHandler.cpp, 
-    src/VerbSpecialHandler.h: 
-  fixed bug in color handler, added skeletons of dvisvgm/hyperref special 
-  handlers 
-
-2009-02-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Color.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, 
-    src/Makefile.am, src/SpecialActions.h, src/SpecialColorHandler.cpp, 
-    src/SpecialEmHandler.cpp: 
-  added color support to emTeX specials, removed Color class 
-
-  * NEWS, src/SpecialActions.h, src/tests/ColorSpecialTest.h: 
-  adapted color test to new interface, added emtex info 
-
-2009-02-17  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp: 
-  made DVICommand local to executeCommand, removed unnecessary if 
-  statement 
-
-2009-02-15  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Makefile.am, 
-    src/SpecialActions.h, src/SpecialManager.cpp, src/VerbSpecialHandler.cpp, 
-    src/VerbSpecialHandler.h, src/XMLString.cpp, src/XMLString.h: 
-  added special handler for verbatim output 
-
-2009-02-14  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Color.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h: 
-  finished color support 
-
-  * src/dvisvgm.cpp: 
-  fixed incorrect behavior of option -V/--version 
-
-  * NEWS, configure.ac: 
-  increased version number to 0.6.2, updated NEWS 
-
-  * doc/dvisvgm.1.in, src/DVIToSVG.cpp, src/DVIToSVG.h, 
-    src/DVIToSVGActions.cpp, src/dvisvgm.cpp, src/options.ggo: 
-  added option --no-style 
-
-  * NEWS, configure.ac: 
-  prepared release of version 0.7 
-
-2009-02-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/types.h: 
-  replaced static definition of sized integers by template program 
-
-  * Makefile.am, configure.ac, src/tests/DirectoryTest.h: 
-  removed rpm support 
-
-  * hgauthors, prepare: 
-  added administrative files 
-
-  * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h: 
-  reverted to previous version, removed dependency on Color class 
-
-  * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Makefile.am, 
-    src/SpecialActions.h, src/SpecialHandler.h, src/SpecialManager.cpp, 
-    src/SpecialManager.h: 
-  color specials are now processed by DVIToSVGActions, but don't create 
-  any results yet 
-
-  * prepare: 
-  updated administrative files 
-
-  * src/ColorSpecialHandler.cpp, src/Makefile.am, 
-    src/tests/ColorSpecialTest.h: 
-  added tests for ColorSpecialHandler 
-
-2009-02-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Color.h, src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, 
-    src/Makefile.am: 
-  replaced RGB arrays by Color class 
-
-2009-02-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/TransformationMatrix.cpp: 
-  made y-coordinate of cmdline-option -t optional 
-
-2009-02-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/dvisvgm.1.in, src/ColorSpecialHandler.h, src/DVIToSVG.cpp, 
-    src/DVIToSVG.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, 
-    src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h, 
-    src/dvisvgm.cpp, src/options.ggo: 
-  added option --list-specials that lists all registered special handlers 
-
-  * src/FileFinder.cpp: 
-  changed lookup order of font maps 
-
-2009-02-05  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/extract-colors.php: 
-  added php-script that extracts color definitions from color.pro 
-
-  * src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h, src/dvisvgm.cpp, src/options.ggo: 
-  added optional prefix list to commandline option --no-specials 
-
-  * src/DVIToSVGActions.cpp: 
-  replaced special ignore list evaluation algorithm 
-
-2009-02-04  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp: 
-  added option for additional loading of user maps 
-
-  * src/FontMap.cpp: 
-  added output of font encoding in write method 
-
-2009-02-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/SpecialHandler.h, 
-    src/SpecialManager.cpp, src/SpecialManager.h, src/options.ggo: 
-  more color special implementation (color constants), still not ready 
-
-  * src/FileFinder.cpp, src/FileFinder.h, src/dvisvgm.cpp: 
-  option -m/--map-file is now evaluated properly 
-
-  * map/cork-lm.map: 
-  removed deprecated map subdirectory 
-
-2009-02-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, src/FileFinder.cpp: 
-  fixed buggy call of maketfm/makemf in Windows version 
-
-  * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/Makefile.am, 
-    src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h: 
-  added special support skeletons; not working yet 
-
-  * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h: 
-  some refactorings in color handler 
-
-2009-01-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/dvisvgm.cpp: 
-  prevented writing zero-length svg files; simplified main code by using 
-  auto pointers 
-
-  * NEWS, src/DVIReader.cpp, src/DVIReader.h: 
-  fixed magnification bug 
-
-2009-01-29  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp: 
-  adapted Windows version to new release 
-
-2009-01-28  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FileFinder.cpp, src/FileFinder.h, src/Makefile.am, 
-    src/tests/DirectoryTest.h, src/tests/FileFinderTest.h, 
-    src/tests/FontManagerTest.h, src/tests/KPSFileFinderTest.h: 
-  refactored FileFinder (implementation as singleton) 
-
-  * src/dvisvgm.cpp: 
-  use new initialisation of FileFinder 
-
-  * src/GFReader.h, src/GFTracer.cpp, src/GFTracer.h: 
-  improved GFTracer to support unscaled results 
-
-  * src/FontMap.cpp, src/Makefile.am, src/tests/FontMapTest.h, 
-    src/tests/dvipdfm_test.map, src/tests/dvips_test.map: 
-  extensions to FontMap almost complete but not finished yet 
-
-  * src/Calculator.cpp, src/DVIToSVG.cpp, src/FontEncoding.cpp, 
-    src/FontMap.cpp, src/SVGFontEmitter.cpp, src/SVGFontTraceEmitter.cpp: 
-  replaced comparisions with "" with calls of empty() 
-
-  * src/FileFinder.cpp, src/FontMap.cpp, src/FontMap.h, 
-    src/tests/FontMapTest.h, src/tests/dvips_test.map: 
-  FontMap now supports dvips and dvipdfm maps 
-
-  * NEWS, configure.ac, doc/dvisvgm.1.in: 
-  adapted configuration and documentation to new dvips map file support 
-
-2009-01-27  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/GFGlyphTracer.cpp, src/GFGlyphTracer.h, src/GFTracer.cpp, 
-    src/GFTracer.h, src/Makefile.am, src/SVGFontTraceEmitter.cpp, 
-    src/SVGFontTraceEmitter.h: 
-  made GFTracer a generic class with template methods 
-
-2009-01-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Bitmap.cpp, src/Bitmap.h, src/GFReader.cpp, src/GFReader.h, 
-    src/GFTracer.cpp, src/Makefile.am: 
-  improvements to GF handling, first skeletton of gf->metapost (gfprint) 
-
-  * src/InputBuffer.h: 
-  fixed incompatible types bug 
-
-2009-01-25  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/InputBuffer.cpp, src/InputBuffer.h: 
-  added missing include 
-
-  * src/FontMap.cpp, src/FontMap.h: 
-  started redesign of FontMap, not complete yet 
-
-  * src/CharmapTranslator.cpp, src/DVIToSVG.cpp, src/FileFinder.cpp, 
-    src/FileFinder.h, src/Font.cpp, src/FontEncoding.cpp, 
-    src/FontManager.cpp, src/KPSFileFinder.cpp, src/KPSFileFinder.h, 
-    src/Makefile.am, src/MetafontWrapper.cpp, src/TFM.cpp, src/dvisvgm.cpp: 
-  renamed KPSFileFinder to FileFinder 
-
-  * src/FontMap.cpp: 
-  basic dvips font map support, not complete yet 
-
-2009-01-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * doc/Makefile.am, doc/dvisvgm.1.in: 
-  manpage updates 
-
-2009-01-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontMap.cpp: 
-  forgot to remove address operator 
-
-  * src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/dvisvgm.cpp: 
-  added support for MiKTeX' new COM interface 
-
-  * src/DVIReader.cpp, src/FontManager.cpp, src/KPSFileFinder.cpp: 
-  memory leak fixed 
-
-  * src/KPSFileFinder.cpp: 
-  fixed throwing of COM exception 
-
-  * Makefile.am, NEWS, README, configure.ac, potracelib/Makefile.am: 
-  updated version info to 0.6 
-
-  * src/tests/CalculatorTest.h, src/tests/DirectoryTest.h, 
-    src/tests/FontManagerTest.h, src/tests/FontMapTest.h, 
-    src/tests/KPSFileFinderTest.h, src/tests/PageSizeTest.h, 
-    src/tests/StreamCounterTest.h, src/tests/VectorStreamTest.h: 
-  updated tests 
-
-  * doc/dvisvgm.1.in, rpm/dvisvgm.spec.in, src/Bitmap.cpp, src/Bitmap.h, 
-    src/BoundingBox.cpp, src/BoundingBox.h, src/Calculator.cpp, 
-    src/Calculator.h, src/CharmapTranslator.cpp, src/CharmapTranslator.h, 
-    src/DVIActions.cpp, src/DVIActions.h, src/DVIBBoxActions.h, 
-    src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Directory.cpp, 
-    src/Directory.h, src/FileFinder.cpp, src/FileFinder.h, 
-    src/FileSystem.cpp, src/FileSystem.h, src/Font.cpp, src/Font.h, 
-    src/FontEmitter.h, src/FontEncoding.cpp, src/FontEncoding.h, 
-    src/FontEngine.cpp, src/FontEngine.h, src/FontGlyph.cpp, src/FontGlyph.h, 
-    src/FontInfo.cpp, src/FontInfo.h, src/FontManager.cpp, src/FontManager.h, 
-    src/FontMap.cpp, src/FontMap.h, src/FontTracer.h, src/GFReader.cpp, 
-    src/GFReader.h, src/GFTracer.cpp, src/GFTracer.h, src/InputBuffer.cpp, 
-    src/InputBuffer.h, src/KPSFileFinder.cpp, src/KPSFileFinder.h, 
-    src/Makefile.am, src/Makefile.orig, src/Matrix.cpp, src/Matrix.h, 
-    src/Message.cpp, src/Message.h, src/MessageException.h, 
-    src/MetafontWrapper.cpp, src/MetafontWrapper.h, src/PSInterpreter.cpp, 
-    src/PSInterpreter.h, src/PSObject.cpp, src/PSObject.h, src/PSState.cpp, 
-    src/PSState.h, src/PageSize.cpp, src/PageSize.h, src/Pair.h, 
-    src/SVGFontEmitter.cpp, src/SVGFontEmitter.h, 
-    src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, 
-    src/StreamCounter.h, src/StreamReader.cpp, src/StreamReader.h, 
-    src/TFM.cpp, src/TFM.h, src/TransformationMatrix.cpp, 
-    src/TransformationMatrix.h, src/VFActions.h, src/VFReader.cpp, 
-    src/VFReader.h, src/VectorStream.h, src/XMLDocTypeNode.h, 
-    src/XMLDocument.cpp, src/XMLDocument.h, src/XMLNode.cpp, src/XMLNode.h, 
-    src/XMLString.cpp, src/XMLString.h, src/dvisvgm.cpp, src/global.cpp, 
-    src/global.h, src/macros.h, src/options.ggo, src/types.h: 
-  updated file header comments 
-
-  * configure.ac: 
-  added test whether dvipdfm.map is available 
-
-2009-01-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, 
-    src/FontEncoding.cpp, src/FontGlyph.cpp: 
-  fixed bugs in handling of font encodings and virtual fonts 
-
-  * src/Calculator.cpp, src/DVIReader.cpp, src/DVIToSVGActions.cpp, 
-    src/Directory.cpp, src/FontEncoding.cpp, src/FontEngine.cpp, 
-    src/FontManager.cpp, src/FontMap.cpp, src/KPSFileFinder.cpp, 
-    src/MetafontWrapper.cpp, src/PageSize.cpp, src/StreamReader.cpp, 
-    src/TFM.cpp, src/TransformationMatrix.cpp, src/VFReader.cpp, 
-    src/XMLDocument.cpp, src/XMLNode.cpp: 
-  added in/out attributes to parameter documentation 
-
-2009-01-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/DVIToSVG.cpp, src/Font.h, src/FontEncoding.cpp, 
-    src/FontEncoding.h, src/FontEngine.cpp, src/FontEngine.h, 
-    src/FontGlyph.cpp, src/FontGlyph.h, src/FontManager.cpp, 
-    src/FontManager.h, src/InputBuffer.cpp, src/InputBuffer.h, 
-    src/SVGFontEmitter.cpp, src/SVGFontEmitter.h: 
-  first working version with font encoding support 
-
-  * src/FontEngine.cpp, src/FontEngine.h, src/SVGFontEmitter.cpp: 
-  fixed glyph positioning bug occured in conjunction with font encoding 
-
-  * src/SVGFontEmitter.cpp: 
-  fixed memory bug 
-
-2009-01-19  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/FontEncoding.cpp, src/FontEncoding.h, src/FontEngine.cpp, 
-    src/FontEngine.h, src/FontManager.cpp, src/FontManager.h, 
-    src/FontMap.cpp, src/FontMap.h, src/KPSFileFinder.cpp, 
-    src/KPSFileFinder.h: 
-  more encoding implementations, not complete yet 
-
-  * src/DVIReader.cpp, src/FontEncoding.cpp, src/FontEncoding.h, 
-    src/FontEngine.cpp, src/FontEngine.h, src/FontManager.cpp, 
-    src/FontManager.h, src/FontMap.cpp: 
-  partly working mapping support, but yet too slow 
-
-2009-01-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/TransformationMatrix.cpp: 
-  fixed bug in argument assignment of transformation command M 
-
-2009-01-15  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/TransformationMatrix.cpp: 
-  removed a dangerous loop remained from previous code 
-
-2009-01-14  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c, 
-    potracelib/curve.h, potracelib/decompose.c, potracelib/decompose.h, 
-    potracelib/lists.h, potracelib/potracelib.c, potracelib/potracelib.h, 
-    potracelib/progress.h, potracelib/trace.c, potracelib/trace.h: 
-  updated libpotrace to version 1.8 
-
-  * src/FontEncoding.cpp, src/FontEncoding.h, src/InputBuffer.cpp, 
-    src/InputBuffer.h, src/Makefile.am: 
-  added basic skeleton for handling of font encodings 
-
-  * src/FileSystem.cpp, src/FileSystem.h: 
-  const string parameters 
-
-  * src/dvisvgm.cpp: 
-  updated copyright string 
-
-  * src/KPSFileFinder.cpp: 
-  added enc-file support 
-
-2009-01-13  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CharmapTranslator.cpp: 
-  fixed crash on loading corrupt pfb-files 
-
-2008-06-18  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Makefile.am: 
-  adapted to latest gengetopt version 
-
-2008-04-07  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp: 
-  minor change 
-
-2007-03-26  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, src/CharmapTranslator.cpp, src/CharmapTranslator.h, 
-    src/DVIActions.h, src/DVIReader.cpp, src/DVIToSVG.cpp, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Font.h, 
-    src/FontManager.cpp, src/Makefile.am, src/SVGFontTraceEmitter.cpp, 
-    src/SVGFontTraceEmitter.h: 
-  redesigned DVIActions and CharmapTranslator 
-
-  * src/DVIActions.cpp, src/DVIReader.cpp, src/DVIReader.h, 
-    src/FontManager.cpp, src/tests/FontManagerTest.h: 
-  few minor changes 
-
-2007-03-25  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIActions.cpp, src/DVIActions.h, src/DVIBBoxActions.h, 
-    src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/Font.cpp, src/Font.h, 
-    src/FontManager.cpp, src/FontManager.h, src/StreamReader.cpp, 
-    src/StreamReader.h, src/VFActions.h, src/VFReader.cpp, src/VFReader.h, 
-    src/VectorStream.h: 
-  first working version 0.5, release candidate 1 
-
-  * src/DVIReader.cpp, src/DVIReader.h, src/VFActions.h: 
-  minor fixes 
-
-2007-03-23  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/FontManager.cpp, src/FontManager.h, 
-    src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/VFReader.cpp: 
-  more vf implementations, not complete yet 
-
-2007-03-22  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, doc/Makefile.in, src/DVIReader.cpp, src/DVIReader.h, 
-    src/DVIToSVG.cpp, src/DVIToSVG.h, src/FileSystem.cpp, src/FileSystem.h, 
-    src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/Makefile.am, 
-    src/dvisvgm.cpp, src/tests/DirectoryTest.h, src/tests/FontManagerTest.h: 
-  reintegrated font map initialization into KPSFileFinderm adapted some 
-  tests 
-
-  * src/DVIReader.cpp, src/Font.cpp, src/Font.h, src/FontManager.cpp, 
-    src/VFActions.h, src/VFReader.cpp, src/VFReader.h: 
-  more vf implementations 
-
-2007-03-21  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * AUTHORS, Makefile.am, README, potracelib/Makefile.am, 
-    rpm/dvisvgm.spec.in, src/Directory.cpp, src/Directory.h, 
-    src/KPSFileFinder.cpp, src/Makefile, src/Makefile.am, src/Makefile.in, 
-    src/SVGFontTraceEmitter.cpp, src/test-all.cpp, src/tests/DirectoryTest.h: 
-  implemented Directory class for Linux, added DirectoryTest 
-
-  * src/Calculator.cpp, src/DVIReader.cpp, src/Directory.cpp, src/Font.h, 
-    src/FontManager.cpp, src/Makefile, src/Makefile.am, src/Makefile.in, 
-    src/MetafontWrapper.cpp, src/VFReader.cpp, src/VectorStream.h, 
-    src/test-all.cpp, src/tests/VectorStreamTest.h: 
-  removed redundant code and commented code fragments, added 
-  VectorInputStream class 
-
-  * src/Directory.cpp, src/Directory.h, src/KPSFileFinder.cpp, 
-    src/KPSFileFinder.h, src/dvisvgm.cpp: 
-  completed MiKTeX font map file look-up, fixed bug in Directory class 
-
-  * src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/dvisvgm.cpp: 
-  implemented options -n and -m 
-
-2007-03-20  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, doc/Makefile, doc/Makefile.in, doc/dvisvgm.1.in, 
-    src/DVIReader.cpp, src/DVIToSVG.cpp, src/Font.cpp, src/Font.h, 
-    src/FontManager.cpp, src/KPSFileFinder.cpp, src/Makefile, 
-    src/Makefile.am, src/Makefile.in, src/VFReader.cpp, src/dvisvgm.cpp, 
-    src/test-all.cpp, src/tests/KPSFileFinderTest.h: 
-  added KPSFileFinderTest, added EmptyFont, fixed compilation error 
-
-  * src/Directory.cpp, src/Directory.h, src/FileSystem.cpp, src/FontMap.cpp, 
-    src/FontMap.h, src/KPSFileFinder.cpp: 
-  more changes for MiKTeX support 
-
-2007-03-19  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CharmapTranslator.cpp, src/DVIToSVG.cpp, src/FontManager.cpp, 
-    src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/Makefile, 
-    src/Makefile.am, src/Makefile.in, src/MetafontWrapper.cpp, src/TFM.cpp: 
-  added mktexFOO support and font map lookups to KPSFileFinder 
-
-  * src/KPSFileFinder.cpp: 
-  bug fixed, font maps work now 
-
-  * src/Font.cpp, src/Font.h, src/FontManager.cpp, src/FontMap.cpp, 
-    src/FontMap.h, src/KPSFileFinder.cpp: 
-  made sources comaptible with MikTeX 
-
-2007-03-16  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Font.cpp, src/Font.h, src/FontManager.cpp, src/FontMap.cpp, 
-    src/FontMap.h, src/KPSFileFinder.cpp, src/Makefile, src/Makefile.am, 
-    src/Makefile.in, src/StreamReader.cpp, src/TFM.cpp, src/options.ggo, 
-    src/tests/FontMapTest.h: 
-  more coding in the font department, not finished yet 
-
-2007-03-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/CharmapTranslator.cpp, src/CharmapTranslator.h, src/DVIReader.cpp, 
-    src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/Font.cpp, 
-    src/FontInfo.cpp, src/FontManager.cpp, src/GFTracer.cpp, 
-    src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/Makefile, 
-    src/Makefile.am, src/Makefile.in, src/MetafontWrapper.cpp, 
-    src/MetafontWrapper.h, src/SVGFontTraceEmitter.cpp, 
-    src/SVGFontTraceEmitter.h, src/StreamReader.cpp, src/StreamReader.h, 
-    src/TFM.cpp, src/TFM.h, src/VFReader.cpp, src/VFReader.h, 
-    src/dvisvgm.cpp, src/options.ggo, src/test-all.cpp: 
-  refactorings: extracted StreamReader class, replaced generic FileFinder 
-  support by KPSFileFinder calls 
-
-2007-03-08  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIActions.h, src/DVIBBoxActions.h, src/DVIReader.cpp, 
-    src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h, src/Font.cpp, src/Font.h, src/FontManager.cpp, 
-    src/FontManager.h, src/KPSFileFinder.cpp, src/KPSFileFinder.h, 
-    src/Makefile, src/Makefile.am, src/Makefile.in, src/Message.cpp, 
-    src/dvisvgm.cpp, src/macros.h, src/test-all.cpp: 
-  first unstable version with redesigned font handling 
-
-  * COPYING, Makefile, Makefile.am, Makefile.in, Martins_svg_neu.svg, NEWS, 
-    aclocal.m4, cmdline.c, config.guess, config.h, config.h.in, 
-    config.status, config.sub, configure.ac, depcomp, doc/Makefile, 
-    doc/dvisvgm.1, doc/dvisvgm.1.in, gpl.txt, install-sh, missing, 
-    src/FontManager.cpp, src/FontManager.h, src/Makefile.am, 
-    src/VFReader.cpp, src/tests/FontManagerTest.h, stamp-h1, table.txt: 
-  removed some garbage from the repository, added initial FontManagerTest 
-
-  * doc/dvisvgm.1, src/FontEngine.h, src/Makefile.orig, src/dvisvgm.cpp, 
-    src/tests/FontManagerTest.h: 
-  minor changes 
-
-  * src/DVIBBoxReader.cpp, src/DVIBBoxReader.h, src/Font.cpp, src/Font.h, 
-    src/Makefile.orig, src/StreamCounter.h, src/dvisvgm.cpp: 
-  fixed memory bug 
-
-  * src/DVIReader.cpp, src/DVIToSVGActions.cpp, src/Font.h, src/Makefile, 
-    src/Makefile.am, src/Makefile.in, src/Makefile.orig, src/VFActions.h, 
-    src/VFReader.cpp, src/VFReader.h, src/dvisvgm.cpp: 
-  plugged VFReader and its actions into the code (not usable yet) 
-
-2007-03-07  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Font.cpp, src/Font.h: 
-  added Font classes (not yet error-free) 
-
-2007-03-06  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.h, src/DVIToSVG.cpp, src/FontManager.cpp, 
-    src/FontManager.h: 
-  added FontManager skeleton, fixed bug in makehead 
-
-2007-03-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/FontManager.cpp, src/VFReader.cpp: 
-  added some more skeleton code 
-
-2007-03-02  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/DVIReader.cpp, src/Makefile, src/Makefile.in, src/VFReader.cpp, 
-    src/VFReader.h, src/options.ggo: 
-  added skeleton of VFReader 
-
-2007-01-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * INSTALL, Makefile.am, NEWS, README, configure.ac, doc/Makefile, 
-    doc/Makefile.am, doc/Makefile.in, doc/dvisvgm.1, doc/dvisvgm.1.in, 
-    gzstream/COPYING.LIB, gzstream/Makefile, gzstream/README, 
-    gzstream/gzstream.cpp, gzstream/gzstream.h, gzstream/index.html, 
-    gzstream/logo.gif, gzstream/test_gunzip.C, gzstream/test_gzip.C, 
-    gzstream/version, map/cork-lm.map, mkwindist.pl, potracelib/Makefile.am, 
-    potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c, 
-    potracelib/curve.h, potracelib/decompose.c, potracelib/decompose.h, 
-    potracelib/lists.h, potracelib/potracelib.c, potracelib/potracelib.h, 
-    potracelib/progress.h, potracelib/trace.c, potracelib/trace.h, 
-    rpm/Makefile, rpm/Makefile.am, rpm/Makefile.in, rpm/dvisvgm.spec, 
-    rpm/dvisvgm.spec.in: 
-  moved sources 
-
-2007-01-09  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * INSTALL, Makefile.am, NEWS, README, configure.ac, doc/Makefile, 
-    doc/Makefile.am, doc/Makefile.in, doc/dvisvgm.1, doc/dvisvgm.1.in, 
-    gzstream/COPYING.LIB, gzstream/Makefile, gzstream/README, 
-    gzstream/gzstream.cpp, gzstream/gzstream.h, gzstream/index.html, 
-    gzstream/logo.gif, gzstream/test_gunzip.C, gzstream/test_gzip.C, 
-    gzstream/version, mkwindist.pl, potracelib/Makefile.am, 
-    potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c, 
-    potracelib/curve.h, potracelib/decompose.c, potracelib/decompose.h, 
-    potracelib/lists.h, potracelib/potracelib.c, potracelib/potracelib.h, 
-    potracelib/progress.h, potracelib/trace.c, potracelib/trace.h, 
-    rpm/Makefile, rpm/Makefile.am, rpm/Makefile.in, rpm/dvisvgm.spec, 
-    rpm/dvisvgm.spec.in, src/A, src/Bitmap.cpp, src/Bitmap.h, 
-    src/BoundingBox.cpp, src/BoundingBox.h, src/Calculator.cpp, 
-    src/Calculator.h, src/CharmapTranslator.cpp, src/CharmapTranslator.h, 
-    src/DVIActions.h, src/DVIBBoxActions.h, src/DVIBBoxReader.cpp, 
-    src/DVIBBoxReader.h, src/DVIReader.cpp, src/DVIReader.h, 
-    src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h, src/FileFinder.cpp, src/FileFinder.h, 
-    src/FileSystem.cpp, src/FileSystem.h, src/FontEmitter.h, 
-    src/FontEngine.cpp, src/FontEngine.h, src/FontGlyph.cpp, src/FontGlyph.h, 
-    src/FontInfo.cpp, src/FontInfo.h, src/FontMap.cpp, src/FontMap.h, 
-    src/FontTracer.h, src/GFReader.cpp, src/GFReader.h, src/GFTracer.cpp, 
-    src/GFTracer.h, src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/Makefile, 
-    src/Makefile.am, src/Makefile.in, src/Makefile.orig, src/Matrix.cpp, 
-    src/Matrix.h, src/Message.cpp, src/Message.h, src/MessageException.h, 
-    src/MetafontWrapper.cpp, src/MetafontWrapper.h, src/PSInterpreter.cpp, 
-    src/PSInterpreter.h, src/PSObject.cpp, src/PSObject.h, src/PSState.cpp, 
-    src/PSState.h, src/PageSize.cpp, src/PageSize.h, src/Pair.h, 
-    src/SVGFontEmitter.cpp, src/SVGFontEmitter.h, 
-    src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, 
-    src/StreamCounter.h, src/TFM.cpp, src/TFM.h, 
-    src/TransformationMatrix.cpp, src/TransformationMatrix.h, 
-    src/XMLDocTypeNode.h, src/XMLDocument.cpp, src/XMLDocument.h, 
-    src/XMLNode.cpp, src/XMLNode.h, src/XMLString.cpp, src/XMLString.h, 
-    src/cmdline.c, src/cmdline.h, src/dvisvgm.cpp, src/getopt.c, 
-    src/getopt.h, src/getopt1.c, src/global.cpp, src/global.h, 
-    src/gzstream.cpp, src/gzstream.h, src/macros.h, src/miktex-core.def, 
-    src/miktex-kps.def, src/miktex-kps.h, src/options.ggo, src/test-all.cpp, 
-    src/tests/CalculatorTest.h, src/tests/PageSizeTest.h, 
-    src/tests/StreamCounterTest.h, src/types.h: 
-  moved files to trunk subfolder 
-
-  * map/cork-lm.map, rpm/Makefile, rpm/Makefile.am, rpm/Makefile.in, 
-    rpm/dvisvgm.spec, rpm/dvisvgm.spec.in: 
-  moved files to trunk 
-
-2007-01-05  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * Makefile, Makefile.am, Makefile.in, README, config.status, configure.ac, 
-    potracelib/Makefile.am, potracelib/bitops.h, potracelib/flate.c, 
-    potracelib/flate.h, src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, 
-    src/BoundingBox.h, src/Calculator.cpp, src/Calculator.h, 
-    src/CharmapTranslator.cpp, src/CharmapTranslator.h, src/DVIActions.h, 
-    src/DVIBBoxActions.h, src/DVIBBoxReader.cpp, src/DVIBBoxReader.h, 
-    src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/FileFinder.cpp, 
-    src/FileFinder.h, src/FileSystem.cpp, src/FileSystem.h, 
-    src/FontEmitter.h, src/FontEngine.cpp, src/FontEngine.h, 
-    src/FontGlyph.cpp, src/FontGlyph.h, src/FontInfo.cpp, src/FontInfo.h, 
-    src/FontMap.cpp, src/FontMap.h, src/FontTracer.h, src/GFReader.cpp, 
-    src/GFReader.h, src/GFTracer.cpp, src/GFTracer.h, src/KPSFileFinder.cpp, 
-    src/KPSFileFinder.h, src/Makefile.am, src/Matrix.cpp, src/Matrix.h, 
-    src/Message.cpp, src/Message.h, src/MessageException.h, 
-    src/MetafontWrapper.cpp, src/MetafontWrapper.h, src/PSInterpreter.cpp, 
-    src/PSInterpreter.h, src/PSObject.cpp, src/PSObject.h, src/PSState.cpp, 
-    src/PSState.h, src/PageSize.cpp, src/PageSize.h, src/Pair.h, 
-    src/SVGFontEmitter.cpp, src/SVGFontEmitter.h, 
-    src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, 
-    src/StreamCounter.h, src/TFM.cpp, src/TFM.h, 
-    src/TransformationMatrix.cpp, src/TransformationMatrix.h, 
-    src/XMLDocTypeNode.h, src/XMLDocument.cpp, src/XMLDocument.h, 
-    src/XMLNode.cpp, src/XMLNode.h, src/XMLString.cpp, src/XMLString.h, 
-    src/dvisvgm.cpp, src/global.cpp, src/global.h, src/macros.h, 
-    src/test-all.cpp, src/types.h: 
-  minor modifications 
-
-2007-01-03  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, mkwindist.pl, src/KPSFileFinder.cpp: 
-  updated homepage 
-
-  * Makefile, Makefile.am, Makefile.in, config.h, config.h.in, 
-    config.status, configure, configure.ac, doc/Makefile, 
-    potracelib/Makefile.am, potracelib/auxiliary.h, potracelib/bitmap.h, 
-    potracelib/bitops.h, potracelib/curve.c, potracelib/curve.h, 
-    potracelib/decompose.c, potracelib/decompose.h, potracelib/flate.c, 
-    potracelib/flate.h, potracelib/lists.h, potracelib/potracelib.c, 
-    potracelib/potracelib.h, potracelib/progress.h, potracelib/trace.c, 
-    potracelib/trace.h, src/Makefile, src/Makefile.am, src/Makefile.in: 
-  added potracelib to distribution 
-
-  * configure: 
-  removed configure from repository 
-
-2006-12-31  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * NEWS, configure.ac, src/DVIToSVG.cpp, src/FileSystem.cpp, 
-    src/FontEngine.cpp, src/GFTracer.cpp, src/KPSFileFinder.cpp, 
-    src/Makefile.orig, src/Matrix.h, src/Message.cpp, src/PageSize.cpp, 
-    src/TransformationMatrix.cpp, src/dvisvgm.cpp: 
-  updated to MikTeX 2.5 support 
-
-  * Makefile, config.status, configure, configure.ac, doc/Makefile, 
-    doc/dvisvgm.1, src/FileSystem.cpp, src/FontEngine.cpp, 
-    src/KPSFileFinder.cpp, src/Makefile, src/dvisvgm.cpp, src/test-all.cpp: 
-  some minor fixes 
-
-  * src/KPSFileFinder.cpp: 
-  fixed namepsace bug 
-
-2006-08-01  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * Makefile, Makefile.in, NEWS, aclocal.m4, autom4te.cache/output.0, 
-    autom4te.cache/requests, autom4te.cache/traces.0, config.h, config.log, 
-    config.status, configure, configure.ac, doc/Makefile, doc/Makefile.in, 
-    doc/dvisvgm.1, src/FontEngine.cpp, src/Makefile, src/Makefile.in, 
-    src/cmdline.c, src/cmdline.h, src/dvisvgm.cpp: 
-  added support for freetype version >= 2.1.1 
-
-  * configure.ac: 
-  enabled svn keyword expansion 
-
-2006-04-12  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * COPYING, INSTALL, Makefile, Makefile.am, Makefile.in, 
-    Martins_svg_neu.svg, NEWS, README, aclocal.m4, autom4te.cache/output.0, 
-    autom4te.cache/requests, autom4te.cache/traces.0, cmdline.c, 
-    config.guess, config.h, config.h.in, config.log, config.status, 
-    config.sub, configure, configure.ac, depcomp, doc/Makefile, 
-    doc/Makefile.am, doc/Makefile.in, doc/dvisvgm.1, doc/dvisvgm.1.in, 
-    gpl.txt, gzstream/COPYING.LIB, gzstream/Makefile, gzstream/README, 
-    gzstream/gzstream.cpp, gzstream/gzstream.h, gzstream/index.html, 
-    gzstream/logo.gif, gzstream/test_gunzip.C, gzstream/test_gzip.C, 
-    gzstream/version, install-sh, map/cork-lm.map, missing, mkwindist.pl, 
-    src/A, src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, 
-    src/BoundingBox.h, src/Calculator.cpp, src/Calculator.h, 
-    src/CharmapTranslator.cpp, src/CharmapTranslator.h, src/DVIActions.h, 
-    src/DVIBBoxActions.h, src/DVIBBoxReader.cpp, src/DVIBBoxReader.h, 
-    src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/FileFinder.cpp, 
-    src/FileFinder.h, src/FileSystem.cpp, src/FileSystem.h, 
-    src/FontEmitter.h, src/FontEngine.cpp, src/FontEngine.h, 
-    src/FontGlyph.cpp, src/FontGlyph.h, src/FontInfo.cpp, src/FontInfo.h, 
-    src/FontMap.cpp, src/FontMap.h, src/FontTracer.h, src/GFReader.cpp, 
-    src/GFReader.h, src/GFTracer.cpp, src/GFTracer.h, src/KPSFileFinder.cpp, 
-    src/KPSFileFinder.h, src/Makefile, src/Makefile.am, src/Makefile.in, 
-    src/Makefile.orig, src/Matrix.cpp, src/Matrix.h, src/Message.cpp, 
-    src/Message.h, src/MessageException.h, src/MetafontWrapper.cpp, 
-    src/MetafontWrapper.h, src/PSInterpreter.cpp, src/PSInterpreter.h, 
-    src/PSObject.cpp, src/PSObject.h, src/PSState.cpp, src/PSState.h, 
-    src/PageSize.cpp, src/PageSize.h, src/Pair.h, src/SVGFontEmitter.cpp, 
-    src/SVGFontEmitter.h, src/SVGFontTraceEmitter.cpp, 
-    src/SVGFontTraceEmitter.h, src/StreamCounter.h, src/TFM.cpp, src/TFM.h, 
-    src/TransformationMatrix.cpp, src/TransformationMatrix.h, 
-    src/XMLDocTypeNode.h, src/XMLDocument.cpp, src/XMLDocument.h, 
-    src/XMLNode.cpp, src/XMLNode.h, src/XMLString.cpp, src/XMLString.h, 
-    src/cmdline.c, src/cmdline.h, src/dvisvgm.cpp, src/getopt.c, 
-    src/getopt.h, src/getopt1.c, src/global.cpp, src/global.h, 
-    src/gzstream.cpp, src/gzstream.h, src/lshort-cm.dvi, src/lshort-cm.svg, 
-    src/lshort-cm.svgz, src/lshort.dvi, src/lshort.svg, src/lshort.svgz, 
-    src/macros.h, src/miktex-core.def, src/miktex-kps.def, src/miktex-kps.h, 
-    src/options.ggo, src/test-all.cpp, src/tests/CalculatorTest.h, 
-    src/tests/PageSizeTest.h, src/tests/StreamCounterTest.h, src/types.h, 
-    stamp-h1, table.txt: 
-  initial import 
-
-  * src/Bitmap.cpp, src/Bitmap.h, src/BoundingBox.cpp, src/BoundingBox.h, 
-    src/Calculator.cpp, src/Calculator.h, src/CharmapTranslator.cpp, 
-    src/CharmapTranslator.h, src/DVIActions.h, src/DVIBBoxActions.h, 
-    src/DVIBBoxReader.cpp, src/DVIBBoxReader.h, src/DVIReader.cpp, 
-    src/DVIReader.h, src/DVIToSVG.cpp, src/DVIToSVG.h, 
-    src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, src/FileFinder.cpp, 
-    src/FileFinder.h, src/FileSystem.cpp, src/FileSystem.h, 
-    src/FontEmitter.h, src/FontEngine.cpp, src/FontEngine.h, 
-    src/FontGlyph.cpp, src/FontGlyph.h, src/FontInfo.cpp, src/FontInfo.h, 
-    src/FontMap.cpp, src/FontMap.h, src/FontTracer.h, src/GFReader.cpp, 
-    src/GFReader.h, src/GFTracer.cpp, src/GFTracer.h, src/KPSFileFinder.cpp, 
-    src/KPSFileFinder.h, src/Message.cpp, src/Message.h, 
-    src/MessageException.h, src/MetafontWrapper.cpp, src/MetafontWrapper.h, 
-    src/PSObject.cpp, src/PSObject.h, src/PageSize.cpp, src/PageSize.h, 
-    src/Pair.h, src/SVGFontEmitter.cpp, src/SVGFontEmitter.h, 
-    src/SVGFontTraceEmitter.cpp, src/SVGFontTraceEmitter.h, 
-    src/StreamCounter.h, src/TFM.cpp, src/TFM.h, 
-    src/TransformationMatrix.cpp, src/TransformationMatrix.h, 
-    src/XMLDocTypeNode.h, src/XMLDocument.cpp, src/XMLDocument.h, 
-    src/XMLNode.cpp, src/XMLNode.h, src/XMLString.cpp, src/XMLString.h, 
-    src/dvisvgm.cpp, src/global.cpp, src/global.h, src/macros.h, 
-    src/test-all.cpp, src/tests/CalculatorTest.h, src/tests/PageSizeTest.h, 
-    src/tests/StreamCounterTest.h, src/types.h: 
-  changed keyword tags 
-
-  * src/lshort-cm.dvi, src/lshort-cm.svg, src/lshort-cm.svgz, 
-    src/lshort.dvi, src/lshort.svg, src/lshort.svgz: 
-  removed files that need not be version controlled 
-

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/Makefile.in	2018-05-04 04:54:00 UTC (rev 47608)
@@ -166,8 +166,8 @@
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
-am__DIST_COMMON = $(srcdir)/Makefile.in AUTHORS COPYING ChangeLog \
-	INSTALL NEWS README
+am__DIST_COMMON = $(srcdir)/Makefile.in AUTHORS COPYING INSTALL NEWS \
+	README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/NEWS
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/NEWS	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/NEWS	2018-05-04 04:54:00 UTC (rev 47608)
@@ -1,3 +1,14 @@
+dvisvgm-2.4 (2018-05-03)
+- added special 'pdffile' similar to 'psfile' to embed PDF graphics
+- added option --pdf to convert single-page PDF documents to SVG
+- reassigned short option -P from --progress to --pdf
+- added option --stdin to receive input from stdin
+- option --stdout can now be combined with option --zip
+- added processing of GS operators '.setshapealpha' and '.setblendmode'
+- fixed outer transformations applied to psfile specials
+- fixed computation of bounding boxes triggered by psfile specials
+- several code refactorings
+
 dvisvgm-2.3.5 (2018-03-23)
 - added evaluation of PS operator 'setpagedevice' in psfile specials
 - fixed evaluation of dvips color names

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/README
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/README	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/README	2018-05-04 04:54:00 UTC (rev 47608)
@@ -2,8 +2,8 @@
 
 DESCRIPTION
 
- dvisvgm is a utility for TeX/LaTeX users. It converts DVI and EPS files to
- the XML-based scalable vector graphics format SVG.
+ dvisvgm is a utility for TeX/LaTeX users. It converts DVI, EPS, and
+ singe-page PDF files to the XML-based scalable vector graphics format SVG.
 
 
 DEPENDENCIES

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac	2018-05-04 04:54:00 UTC (rev 47608)
@@ -4,8 +4,8 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.59)
-AC_INIT([dvisvgm],[2.3.5],[martin.gieseking at uos.de])
-DATE="March 2018"
+AC_INIT([dvisvgm],[2.4],[martin.gieseking at uos.de])
+DATE="April 2018"
 AC_CONFIG_SRCDIR(src)
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_MACRO_DIR([m4])

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1	2018-05-04 04:54:00 UTC (rev 47608)
@@ -2,12 +2,12 @@
 .\"     Title: dvisvgm
 .\"    Author: Martin Gieseking <martin.gieseking at uos.de>
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 03/23/2018
+.\"      Date: 05/03/2018
 .\"    Manual: dvisvgm Manual
-.\"    Source: dvisvgm 2.3.5
+.\"    Source: dvisvgm 2.4
 .\"  Language: English
 .\"
-.TH "DVISVGM" "1" "03/23/2018" "dvisvgm 2\&.3\&.5" "dvisvgm Manual"
+.TH "DVISVGM" "1" "05/03/2018" "dvisvgm 2\&.4" "dvisvgm Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -33,7 +33,9 @@
 .sp
 \fBdvisvgm\fR [ \fIoptions\fR ] \fIfile\fR [\&.dvi]
 .sp
-\fBdvisvgm\fR \-E [ \fIoptions\fR ] \fIfile\fR [\&.eps]
+\fBdvisvgm\fR \-\-eps [ \fIoptions\fR ] \fIfile\fR [\&.eps]
+.sp
+\fBdvisvgm\fR \-\-pdf [ \fIoptions\fR ] \fIfile\fR [\&.pdf]
 .SH "DESCRIPTION"
 .sp
 The command\-line utility \fBdvisvgm\fR converts DVI files, as generated by TeX/LaTeX, to the XML\-based scalable vector graphics format SVG\&. It supports the classic DVI version 2 as well as version 3 (created by pTeX in vertical mode), and the XeTeX versions 5 to 7 which are also known as XDV\&. Besides the basic DVI commands, dvisvgm also evaluates many so\-called \fIspecials\fR which heavily extend the capabilities of the plain DVI format\&. For a more detailed overview, see section \fBSupported Specials\fR below\&.
@@ -554,6 +556,15 @@
 converts all pages starting with page 10\&. Please consider that the page values don\(cqt refer to the page numbers printed on the corresponding page\&. Instead, the physical page count is expected, where the first page always gets number 1\&.
 .RE
 .PP
+\fB\-P, \-\-pdf\fR
+.RS 4
+If this option is given, dvisvgm does not expect a DVI but a PDF input file, and tries to convert it to SVG\&. In order to do so, a single
+\fIpdffile\fR
+special command is created and forwarded to the PostScript special handler\&. This option is only available if dvisvgm was built with PostScript support enabled, and requires Ghostscript to be available\&. See option
+\fB\-\-libgs\fR
+for further information\&.
+.RE
+.PP
 \fB\-d, \-\-precision\fR=\fIdigits\fR
 .RS 4
 Specifies the maximal number of decimal places applied to floating\-point attribute values\&. All attribute values written to the generated SVG file(s) are rounded accordingly\&. The parameter
@@ -562,7 +573,7 @@
 \fB\-\-precision\fR\&.
 .RE
 .PP
-\fB\-P, \-\-progress\fR[=\fIdelay\fR]
+\fB\-\-progress\fR[=\fIdelay\fR]
 .RS 4
 Enables a simple progress indicator shown when time\-consuming operations like PostScript specials are processed\&. The indicator doesn\(cqt appear before the given delay (in seconds) has elapsed\&. The default delay value is 0\&.5 seconds\&.
 .RE
@@ -582,6 +593,17 @@
 is given, relative commands are created instead\&. This slightly reduces the size of the SVG files in most cases\&.
 .RE
 .PP
+\fB\-\-stdin\fR
+.RS 4
+Tells dvisvgm to read the DVI or EPS input data from
+\fBstdin\fR
+instead from a file\&. Alternatively to option
+\fB\-\-stdin\fR, a single dash (\-) can be given\&. The default name of the generated SVG file is
+\fIstdin\&.svg\fR
+which can be changed with option
+\fB\-\-output\fR\&.
+.RE
+.PP
 \fB\-s, \-\-stdout\fR
 .RS 4
 Don\(cqt write the SVG output to a file but redirect it to
@@ -835,23 +857,7 @@
 \fB\-z, \-\-zip\fR[=\fIlevel\fR]
 .RS 4
 Creates a compressed SVG file with suffix \&.svgz\&. The optional argument specifies the compression level\&. Valid values are in the range of 1 to 9 (default value is 9)\&. Larger values cause better compression results but may take slightly more computation time\&.
-.if n \{\
-.sp
-.\}
-.RS 4
-.it 1 an-trap
-.nr an-no-space-flag 1
-.nr an-break-flag 1
-.br
-.ps +1
-\fBCaution\fR
-.ps -1
-.br
-This option cannot be combined with
-\fB\-s, \-\-stdout\fR\&.
-.sp .5v
 .RE
-.RE
 .PP
 \fB\-Z, \-\-zoom\fR[=\fIfactor\fR]
 .RS 4
@@ -1137,6 +1143,18 @@
 .RS 4
 .\}
 .nf
+dvisvgm \- < file\&.dvi
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+Converts the first page of \fIfile\&.dvi\fR to \fIstdin\&.svg\fR where the contents of \fIfile\&.dvi\fR is read from \fBstdin\fR\&.
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
 dvisvgm \-z file
 .fi
 .if n \{\

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.txt.in	2018-05-04 04:54:00 UTC (rev 47608)
@@ -32,9 +32,11 @@
 --------
 *dvisvgm* [ 'options' ] 'file' [.dvi]
 
-*dvisvgm* -E [ 'options' ] 'file' [.eps]
+*dvisvgm* --eps [ 'options' ] 'file' [.eps]
 
+*dvisvgm* --pdf [ 'options' ] 'file' [.pdf]
 
+
 Description
 -----------
 The command-line utility *dvisvgm* converts DVI files, as generated by TeX/LaTeX, to the
@@ -395,6 +397,13 @@
 corresponding page. Instead, the physical page count is expected, where the first page always
 gets number 1.
 
+*-P, --pdf*::
+If this option is given, dvisvgm does not expect a DVI but a PDF input file, and tries to convert
+it to SVG. In order to do so, a single 'pdffile' special command is created and forwarded to the
+PostScript special handler.
+This option is only available if dvisvgm was built with PostScript support enabled, and requires
+Ghostscript to be available. See option *--libgs* for further information.
+
 *-d, --precision*='digits'::
 Specifies the maximal number of decimal places applied to floating-point attribute values.
 All attribute values written to the generated SVG file(s) are rounded accordingly. The
@@ -402,7 +411,7 @@
 of significant decimal places. This is also the default value if dvisvgm is called without
 option *--precision*.
 
-*-P, --progress*[='delay']::
+*--progress*[='delay']::
 Enables a simple progress indicator shown when time-consuming operations like PostScript specials
 are processed. The indicator doesn't appear before the given delay (in seconds) has elapsed.
 The default delay value is 0.5 seconds.
@@ -418,6 +427,11 @@
 If option *--relative* is given, relative commands are created instead. This slightly reduces
 the size of the SVG files in most cases.
 
+*--stdin*::
+Tells dvisvgm to read the DVI or EPS input data from *stdin* instead from a file. Alternatively
+to option *--stdin*, a single dash (-) can be given. The default name of the generated SVG file
+is 'stdin.svg' which can be changed with option *--output*.
+
 *-s, --stdout*::
 Don't write the SVG output to a file but redirect it to *stdout*.
 
@@ -529,8 +543,6 @@
 Creates a compressed SVG file with suffix .svgz. The optional argument specifies the compression
 level. Valid values are in the range of 1 to 9 (default value is 9). Larger values cause better
 compression results but may take slightly more computation time.
-+
-CAUTION: This option cannot be combined with *-s, --stdout*.
 
 *-Z, --zoom*[='factor']::
 Multiplies the 'width' and 'height' attributes of the SVG root element by argument 'factor' while
@@ -710,11 +722,17 @@
 
 Examples
 --------
---------------
+------------
 dvisvgm file
---------------
+------------
 Converts the first page of 'file.dvi' to 'file.svg'.
 
+--------------------
+dvisvgm - < file.dvi
+--------------------
+Converts the first page of 'file.dvi' to 'stdin.svg' where the contents of 'file.dvi'
+is read from *stdin*.
+
 ---------------
 dvisvgm -z file
 ---------------

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.am
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.am	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.am	2018-05-04 04:54:00 UTC (rev 47608)
@@ -29,7 +29,6 @@
 	enc/compress_fragment.h \
 	enc/compress_fragment_two_pass.c \
 	enc/compress_fragment_two_pass.h \
-	enc/context.h \
 	enc/dictionary_hash.c \
 	enc/dictionary_hash.h \
 	enc/encode.c \
@@ -57,7 +56,6 @@
 	enc/metablock.h \
 	enc/metablock_inc.h \
 	enc/params.h \
-	enc/port.h \
 	enc/prefix.h \
 	enc/quality.h \
 	enc/ringbuffer.h \

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.in
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.in	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.in	2018-05-04 04:54:00 UTC (rev 47608)
@@ -375,7 +375,6 @@
 	enc/compress_fragment.h \
 	enc/compress_fragment_two_pass.c \
 	enc/compress_fragment_two_pass.h \
-	enc/context.h \
 	enc/dictionary_hash.c \
 	enc/dictionary_hash.h \
 	enc/encode.c \
@@ -403,7 +402,6 @@
 	enc/metablock.h \
 	enc/metablock_inc.h \
 	enc/params.h \
-	enc/port.h \
 	enc/prefix.h \
 	enc/quality.h \
 	enc/ringbuffer.h \

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/constants.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/constants.h	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/constants.h	2018-05-04 04:54:00 UTC (rev 47608)
@@ -38,7 +38,7 @@
 #define BROTLI_MAX_NPOSTFIX 3
 #define BROTLI_MAX_NDIRECT 120
 #define BROTLI_MAX_DISTANCE_BITS 24U
-#define BROTLI_DISTANCE_ALPHABET_SIZE(NDIRECT, NPOSTFIX, MAXNBITS) ( \
+#define BROTLI_DISTANCE_ALPHABET_SIZE(NPOSTFIX, NDIRECT, MAXNBITS) ( \
     BROTLI_NUM_DISTANCE_SHORT_CODES + (NDIRECT) +                    \
     ((MAXNBITS) << ((NPOSTFIX) + 1)))
 /* BROTLI_NUM_DISTANCE_SYMBOLS == 1128 */

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/platform.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/platform.h	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/platform.h	2018-05-04 04:54:00 UTC (rev 47608)
@@ -99,17 +99,15 @@
 #define BROTLI_NOINLINE
 #endif
 
-#if defined(__arm__) || defined(__thumb__) || \
-    defined(_M_ARM) || defined(_M_ARMT) || defined(__ARM64_ARCH_8__)
-#define BROTLI_TARGET_ARM
 #if (defined(__ARM_ARCH) && (__ARM_ARCH == 7)) || \
     (defined(M_ARM) && (M_ARM == 7))
 #define BROTLI_TARGET_ARMV7
 #endif  /* ARMv7 */
-#if defined(__aarch64__) || defined(__ARM64_ARCH_8__)
+
+#if (defined(__ARM_ARCH) && (__ARM_ARCH == 8)) || \
+    defined(__aarch64__) || defined(__ARM64_ARCH_8__)
 #define BROTLI_TARGET_ARMV8
 #endif  /* ARMv8 */
-#endif  /* ARM */
 
 #if defined(__i386) || defined(_M_IX86)
 #define BROTLI_TARGET_X86
@@ -213,6 +211,7 @@
 static BROTLI_INLINE uint32_t BrotliUnalignedRead32(const void* p) {
   return *(const uint32_t*)p;
 }
+#if (BROTLI_64_BITS)
 static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) {
   return *(const uint64_t*)p;
 }
@@ -219,6 +218,18 @@
 static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) {
   *(uint64_t*)p = v;
 }
+#else  /* BROTLI_64_BITS */
+/* Avoid emitting LDRD / STRD, which require properly aligned address. */
+static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) {
+  const uint32_t* dwords = (const uint32_t*)p;
+  return dwords[0] | ((uint64_t)dwords[1] << 32);
+}
+static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) {
+  uint32_t* dwords = (uint32_t *)p;
+  dwords[0] = (uint32_t)v;
+  dwords[1] = (uint32_t)(v >> 32);
+}
+#endif  /* BROTLI_64_BITS */
 #endif  /* BROTLI_ALIGNED_READ */
 
 #if BROTLI_LITTLE_ENDIAN
@@ -328,7 +339,7 @@
 #define BROTLI_IS_CONSTANT(x) (!!0)
 #endif
 
-#if defined(BROTLI_TARGET_ARM)
+#if defined(BROTLI_TARGET_ARMV7) || defined(BROTLI_TARGET_ARMV8)
 #define BROTLI_HAS_UBFX (!!1)
 #else
 #define BROTLI_HAS_UBFX (!!0)
@@ -362,7 +373,7 @@
   return output;
 }
 #define BROTLI_RBIT(x) BrotliRBit(x)
-#endif  /* armv7 */
+#endif  /* armv7 / armv8 */
 #endif  /* gcc || clang */
 #if !defined(BROTLI_RBIT)
 static BROTLI_INLINE void BrotliRBit(void) { /* Should break build if used. */ }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/version.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/version.h	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/version.h	2018-05-04 04:54:00 UTC (rev 47608)
@@ -14,7 +14,7 @@
    BrotliEncoderVersion methods. */
 
 /* Semantic version, calculated as (MAJOR << 24) | (MINOR << 12) | PATCH */
-#define BROTLI_VERSION 0x1000003
+#define BROTLI_VERSION 0x1000004
 
 /* This macro is used by build system to produce Libtool-friendly soname. See
    https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
@@ -21,6 +21,6 @@
  */
 
 /* ABI version, calculated as (CURRENT << 24) | (REVISION << 12) | AGE */
-#define BROTLI_ABI_VERSION 0x1003000
+#define BROTLI_ABI_VERSION 0x1004000
 
 #endif  /* BROTLI_COMMON_VERSION_H_ */

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references.c	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references.c	2018-05-04 04:54:00 UTC (rev 47608)
@@ -49,6 +49,7 @@
 #define CAT(a, b) a ## b
 #define FN(X) EXPAND_CAT(X, HASHER())
 #define EXPORT_FN(X) EXPAND_CAT(X, EXPAND_CAT(PREFIX(), HASHER()))
+
 #define PREFIX() N
 
 #define HASHER() H2
@@ -97,6 +98,7 @@
 #undef HASHER
 
 #undef PREFIX
+
 #undef EXPORT_FN
 #undef FN
 #undef CAT

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_hq.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_hq.c	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_hq.c	2018-05-04 04:54:00 UTC (rev 47608)
@@ -76,7 +76,7 @@
   /* The insert and copy length symbols. */
   float cost_cmd_[BROTLI_NUM_COMMAND_SYMBOLS];
   float* cost_dist_;
-  uint32_t distance_alphabet_size;
+  uint32_t distance_histogram_size;
   /* Cumulative costs of literals per position in the stream. */
   float* literal_costs_;
   float min_cost_cmd_;
@@ -86,10 +86,14 @@
 static void InitZopfliCostModel(
     MemoryManager* m, ZopfliCostModel* self, const BrotliDistanceParams* dist,
     size_t num_bytes) {
+  uint32_t distance_histogram_size = dist->alphabet_size;
+  if (distance_histogram_size > BROTLI_MAX_EFFECTIVE_DISTANCE_ALPHABET_SIZE) {
+    distance_histogram_size = BROTLI_MAX_EFFECTIVE_DISTANCE_ALPHABET_SIZE;
+  }
   self->num_bytes_ = num_bytes;
   self->literal_costs_ = BROTLI_ALLOC(m, float, num_bytes + 2);
   self->cost_dist_ = BROTLI_ALLOC(m, float, dist->alphabet_size);
-  self->distance_alphabet_size = dist->alphabet_size;
+  self->distance_histogram_size = distance_histogram_size;
   if (BROTLI_IS_OOM(m)) return;
 }
 
@@ -171,7 +175,7 @@
           cost_literal);
   SetCost(histogram_cmd, BROTLI_NUM_COMMAND_SYMBOLS, BROTLI_FALSE,
           cost_cmd);
-  SetCost(histogram_dist, self->distance_alphabet_size, BROTLI_FALSE,
+  SetCost(histogram_dist, self->distance_histogram_size, BROTLI_FALSE,
           self->cost_dist_);
 
   for (i = 0; i < BROTLI_NUM_COMMAND_SYMBOLS; ++i) {
@@ -214,7 +218,7 @@
   for (i = 0; i < BROTLI_NUM_COMMAND_SYMBOLS; ++i) {
     cost_cmd[i] = (float)FastLog2(11 + (uint32_t)i);
   }
-  for (i = 0; i < self->distance_alphabet_size; ++i) {
+  for (i = 0; i < self->distance_histogram_size; ++i) {
     cost_dist[i] = (float)FastLog2(20 + (uint32_t)i);
   }
   self->min_cost_cmd_ = (float)FastLog2(11);

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/command.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/command.h	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/command.h	2018-05-04 04:54:00 UTC (rev 47608)
@@ -145,11 +145,11 @@
 
 static BROTLI_INLINE uint32_t CommandRestoreDistanceCode(
     const Command* self, const BrotliDistanceParams* dist) {
-  if ((self->dist_prefix_ & 0x3FF) <
+  if ((self->dist_prefix_ & 0x3FFu) <
       BROTLI_NUM_DISTANCE_SHORT_CODES + dist->num_direct_distance_codes) {
-    return self->dist_prefix_ & 0x3FF;
+    return self->dist_prefix_ & 0x3FFu;
   } else {
-    uint32_t dcode = self->dist_prefix_ & 0x3FF;
+    uint32_t dcode = self->dist_prefix_ & 0x3FFu;
     uint32_t nbits = self->dist_prefix_ >> 10;
     uint32_t extra = self->dist_extra_;
     uint32_t postfix_mask = (1U << dist->distance_postfix_bits) - 1U;

Deleted: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/context.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/context.h	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/context.h	2018-05-04 04:54:00 UTC (rev 47608)
@@ -1,184 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.
-
-   Distributed under MIT license.
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
-*/
-
-/* Functions to map previous bytes into a context id. */
-
-#ifndef BROTLI_ENC_CONTEXT_H_
-#define BROTLI_ENC_CONTEXT_H_
-
-#include <brotli/port.h>
-#include <brotli/types.h>
-
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
-/* Second-order context lookup table for UTF8 byte streams.
-
-   If p1 and p2 are the previous two bytes, we calculate the context as
-
-     context = kUTF8ContextLookup[p1] | kUTF8ContextLookup[p2 + 256].
-
-   If the previous two bytes are ASCII characters (i.e. < 128), this will be
-   equivalent to
-
-     context = 4 * context1(p1) + context2(p2),
-
-   where context1 is based on the previous byte in the following way:
-
-     0  : non-ASCII control
-     1  : \t, \n, \r
-     2  : space
-     3  : other punctuation
-     4  : " '
-     5  : %
-     6  : ( < [ {
-     7  : ) > ] }
-     8  : , ; :
-     9  : .
-     10 : =
-     11 : number
-     12 : upper-case vowel
-     13 : upper-case consonant
-     14 : lower-case vowel
-     15 : lower-case consonant
-
-   and context2 is based on the second last byte:
-
-     0 : control, space
-     1 : punctuation
-     2 : upper-case letter, number
-     3 : lower-case letter
-
-   If the last byte is ASCII, and the second last byte is not (in a valid UTF8
-   stream it will be a continuation byte, value between 128 and 191), the
-   context is the same as if the second last byte was an ASCII control or space.
-
-   If the last byte is a UTF8 lead byte (value >= 192), then the next byte will
-   be a continuation byte and the context id is 2 or 3 depending on the LSB of
-   the last byte and to a lesser extent on the second last byte if it is ASCII.
-
-   If the last byte is a UTF8 continuation byte, the second last byte can be:
-     - continuation byte: the next byte is probably ASCII or lead byte (assuming
-       4-byte UTF8 characters are rare) and the context id is 0 or 1.
-     - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1
-     - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3
-
-   The possible value combinations of the previous two bytes, the range of
-   context ids and the type of the next byte is summarized in the table below:
-
-   |--------\-----------------------------------------------------------------|
-   |         \                         Last byte                              |
-   | Second   \---------------------------------------------------------------|
-   | last byte \    ASCII            |   cont. byte        |   lead byte      |
-   |            \   (0-127)          |   (128-191)         |   (192-)         |
-   |=============|===================|=====================|==================|
-   |  ASCII      | next: ASCII/lead  |  not valid          |  next: cont.     |
-   |  (0-127)    | context: 4 - 63   |                     |  context: 2 - 3  |
-   |-------------|-------------------|---------------------|------------------|
-   |  cont. byte | next: ASCII/lead  |  next: ASCII/lead   |  next: cont.     |
-   |  (128-191)  | context: 4 - 63   |  context: 0 - 1     |  context: 2 - 3  |
-   |-------------|-------------------|---------------------|------------------|
-   |  lead byte  | not valid         |  next: ASCII/lead   |  not valid       |
-   |  (192-207)  |                   |  context: 0 - 1     |                  |
-   |-------------|-------------------|---------------------|------------------|
-   |  lead byte  | not valid         |  next: cont.        |  not valid       |
-   |  (208-)     |                   |  context: 2 - 3     |                  |
-   |-------------|-------------------|---------------------|------------------|
-*/
-static const uint8_t kUTF8ContextLookup[512] = {
-  /* Last byte. */
-  /* */
-  /* ASCII range. */
-   0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,  0,  4,  0,  0,
-   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-   8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,
-  44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,
-  12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,
-  52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,
-  12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,
-  60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12,  0,
-  /* UTF8 continuation byte range. */
-  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
-  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
-  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
-  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
-  /* UTF8 lead byte range. */
-  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
-  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
-  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
-  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
-  /* Second last byte. */
-  /* */
-  /* ASCII range. */
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
-  1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
-  1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,
-  /* UTF8 continuation byte range. */
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  /* UTF8 lead byte range. */
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-};
-
-/* Context lookup table for small signed integers. */
-static const uint8_t kSigned3BitContextLookup[] = {
-  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
-};
-
-typedef enum ContextType {
-  CONTEXT_LSB6         = 0,
-  CONTEXT_MSB6         = 1,
-  CONTEXT_UTF8         = 2,
-  CONTEXT_SIGNED       = 3
-} ContextType;
-
-static BROTLI_INLINE uint8_t Context(uint8_t p1, uint8_t p2, ContextType mode) {
-  switch (mode) {
-    case CONTEXT_LSB6:
-      return p1 & 0x3f;
-    case CONTEXT_MSB6:
-      return (uint8_t)(p1 >> 2);
-    case CONTEXT_UTF8:
-      return kUTF8ContextLookup[p1] | kUTF8ContextLookup[p2 + 256];
-    case CONTEXT_SIGNED:
-      return (uint8_t)((kSigned3BitContextLookup[p1] << 3) +
-                       kSigned3BitContextLookup[p2]);
-    default:
-      return 0;
-  }
-}
-
-#if defined(__cplusplus) || defined(c_plusplus)
-}  /* extern "C" */
-#endif
-
-#endif  /* BROTLI_ENC_CONTEXT_H_ */

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encode.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encode.c	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encode.c	2018-05-04 04:54:00 UTC (rev 47608)
@@ -167,6 +167,14 @@
       state->params.large_window = TO_BROTLI_BOOL(!!value);
       return BROTLI_TRUE;
 
+    case BROTLI_PARAM_NPOSTFIX:
+      state->params.dist.distance_postfix_bits = value;
+      return BROTLI_TRUE;
+
+    case BROTLI_PARAM_NDIRECT:
+      state->params.dist.num_direct_distance_codes = value;
+      return BROTLI_TRUE;
+
     default: return BROTLI_FALSE;
   }
 }
@@ -545,6 +553,7 @@
   uint16_t last_bytes;
   uint8_t last_bytes_bits;
   ContextLut literal_context_lut = BROTLI_CONTEXT_LUT(literal_context_mode);
+  BrotliEncoderParams block_params = *params;
 
   if (bytes == 0) {
     /* Write the ISLAST and ISEMPTY bits. */
@@ -596,7 +605,7 @@
           literal_context_map, commands, num_commands, &mb);
       if (BROTLI_IS_OOM(m)) return;
     } else {
-      BrotliBuildMetaBlock(m, data, wrapped_last_flush_pos, mask, params,
+      BrotliBuildMetaBlock(m, data, wrapped_last_flush_pos, mask, &block_params,
                            prev_byte, prev_byte2,
                            commands, num_commands,
                            literal_context_mode,
@@ -604,9 +613,10 @@
       if (BROTLI_IS_OOM(m)) return;
     }
     if (params->quality >= MIN_QUALITY_FOR_OPTIMIZE_HISTOGRAMS) {
-      /* The number of distance symbols effectively used by
-         "Large Window Brotli" (32-bit). */
-      uint32_t num_effective_dist_codes = params->dist.alphabet_size;
+      /* The number of distance symbols effectively used for distance
+         histograms. It might be less than distance alphabet size
+         for "Large Window Brotli" (32-bit). */
+      uint32_t num_effective_dist_codes = block_params.dist.alphabet_size;
       if (num_effective_dist_codes > BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS) {
         num_effective_dist_codes = BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS;
       }
@@ -615,7 +625,7 @@
     BrotliStoreMetaBlock(m, data, wrapped_last_flush_pos, bytes, mask,
                          prev_byte, prev_byte2,
                          is_last,
-                         params,
+                         &block_params,
                          literal_context_mode,
                          commands, num_commands,
                          &mb,
@@ -636,37 +646,29 @@
 }
 
 static void ChooseDistanceParams(BrotliEncoderParams* params) {
-  /* NDIRECT, NPOSTFIX must be both zero for qualities
-     up to MIN_QUALITY_FOR_BLOCK_SPLIT == 3. */
+  uint32_t distance_postfix_bits = 0;
   uint32_t num_direct_distance_codes = 0;
-  uint32_t distance_postfix_bits = 0;
-  uint32_t alphabet_size;
-  size_t max_distance = BROTLI_MAX_DISTANCE;
 
-  if (params->quality >= MIN_QUALITY_FOR_RECOMPUTE_DISTANCE_PREFIXES &&
-      params->mode == BROTLI_MODE_FONT) {
-    num_direct_distance_codes = 12;
-    distance_postfix_bits = 1;
-    max_distance = (1U << 27) + 4;
-  }
-
-  alphabet_size = BROTLI_DISTANCE_ALPHABET_SIZE(
-      num_direct_distance_codes, distance_postfix_bits,
-      BROTLI_MAX_DISTANCE_BITS);
-  if (params->large_window) {
-    max_distance = BROTLI_MAX_ALLOWED_DISTANCE;
-    if (num_direct_distance_codes != 0 || distance_postfix_bits != 0) {
-      max_distance = (3U << 29) - 4;
+  if (params->quality >= MIN_QUALITY_FOR_NONZERO_DISTANCE_PARAMS) {
+    uint32_t ndirect_msb;
+    if (params->mode == BROTLI_MODE_FONT) {
+      distance_postfix_bits = 1;
+      num_direct_distance_codes = 12;
+    } else {
+      distance_postfix_bits = params->dist.distance_postfix_bits;
+      num_direct_distance_codes = params->dist.num_direct_distance_codes;
     }
-    alphabet_size = BROTLI_DISTANCE_ALPHABET_SIZE(
-        num_direct_distance_codes, distance_postfix_bits,
-        BROTLI_LARGE_MAX_DISTANCE_BITS);
+    ndirect_msb = (num_direct_distance_codes >> distance_postfix_bits) & 0x0F;
+    if (distance_postfix_bits > BROTLI_MAX_NPOSTFIX ||
+        num_direct_distance_codes > BROTLI_MAX_NDIRECT ||
+        (ndirect_msb << distance_postfix_bits) != num_direct_distance_codes) {
+      distance_postfix_bits = 0;
+      num_direct_distance_codes = 0;
+    }
   }
 
-  params->dist.num_direct_distance_codes = num_direct_distance_codes;
-  params->dist.distance_postfix_bits = distance_postfix_bits;
-  params->dist.alphabet_size = alphabet_size;
-  params->dist.max_distance = max_distance;
+  BrotliInitDistanceParams(
+      params, distance_postfix_bits, num_direct_distance_codes);
 }
 
 static BROTLI_BOOL EnsureInitialized(BrotliEncoderState* s) {
@@ -710,8 +712,8 @@
   params->size_hint = 0;
   params->disable_literal_context_modeling = BROTLI_FALSE;
   BrotliInitEncoderDictionary(&params->dictionary);
+  params->dist.distance_postfix_bits = 0;
   params->dist.num_direct_distance_codes = 0;
-  params->dist.distance_postfix_bits = 0;
   params->dist.alphabet_size =
       BROTLI_DISTANCE_ALPHABET_SIZE(0, 0, BROTLI_MAX_DISTANCE_BITS);
   params->dist.max_distance = BROTLI_MAX_DISTANCE;
@@ -1307,20 +1309,25 @@
                                        &storage_ix, storage);
     } else {
       MetaBlockSplit mb;
-      /* The number of distance symbols effectively used by
-         "Large Window Brotli" (32-bit). */
-      uint32_t num_effective_dist_codes = params.dist.alphabet_size;
-      if (num_effective_dist_codes > BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS) {
-        num_effective_dist_codes = BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS;
-      }
+      BrotliEncoderParams block_params = params;
       InitMetaBlockSplit(&mb);
-      BrotliBuildMetaBlock(m, input_buffer, metablock_start, mask, &params,
+      BrotliBuildMetaBlock(m, input_buffer, metablock_start, mask,
+                           &block_params,
                            prev_byte, prev_byte2,
                            commands, num_commands,
                            literal_context_mode,
                            &mb);
       if (BROTLI_IS_OOM(m)) goto oom;
-      BrotliOptimizeHistograms(num_effective_dist_codes, &mb);
+      {
+        /* The number of distance symbols effectively used for distance
+           histograms. It might be less than distance alphabet size
+           for "Large Window Brotli" (32-bit). */
+        uint32_t num_effective_dist_codes = block_params.dist.alphabet_size;
+        if (num_effective_dist_codes > BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS) {
+          num_effective_dist_codes = BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS;
+        }
+        BrotliOptimizeHistograms(num_effective_dist_codes, &mb);
+      }
       storage = BROTLI_ALLOC(m, uint8_t, 2 * metablock_size + 503);
       if (BROTLI_IS_OOM(m)) goto oom;
       storage[0] = (uint8_t)last_bytes;
@@ -1328,7 +1335,7 @@
       BrotliStoreMetaBlock(m, input_buffer, metablock_start, metablock_size,
                            mask, prev_byte, prev_byte2,
                            is_last,
-                           &params,
+                           &block_params,
                            literal_context_mode,
                            commands, num_commands,
                            &mb,

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.h	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.h	2018-05-04 04:54:00 UTC (rev 47608)
@@ -80,6 +80,21 @@
   }                                              \
 }
 
+/*
+Appends value and dynamically grows array capacity when needed
+M: MemoryManager
+T: data type
+A: array
+C: array capacity
+S: array size
+V: value to append
+*/
+#define BROTLI_ENSURE_CAPACITY_APPEND(M, T, A, C, S, V) { \
+  (S)++;                                                  \
+  BROTLI_ENSURE_CAPACITY(M, T, A, C, S);                  \
+  A[(S) - 1] = (V);                                       \
+}
+
 #if defined(__cplusplus) || defined(c_plusplus)
 }  /* extern "C" */
 #endif

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.c	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.c	2018-05-04 04:54:00 UTC (rev 47608)
@@ -25,14 +25,116 @@
 extern "C" {
 #endif
 
+void BrotliInitDistanceParams(BrotliEncoderParams* params,
+    uint32_t npostfix, uint32_t ndirect) {
+  BrotliDistanceParams* dist_params = &params->dist;
+  uint32_t alphabet_size, max_distance;
+
+  dist_params->distance_postfix_bits = npostfix;
+  dist_params->num_direct_distance_codes = ndirect;
+
+  alphabet_size = BROTLI_DISTANCE_ALPHABET_SIZE(
+      npostfix, ndirect, BROTLI_MAX_DISTANCE_BITS);
+  max_distance = ndirect + (1U << (BROTLI_MAX_DISTANCE_BITS + npostfix + 2)) -
+      (1U << (npostfix + 2));
+
+  if (params->large_window) {
+    static const uint32_t bound[BROTLI_MAX_NPOSTFIX + 1] = {0, 4, 12, 28};
+    uint32_t postfix = 1U << npostfix;
+    alphabet_size = BROTLI_DISTANCE_ALPHABET_SIZE(
+        npostfix, ndirect, BROTLI_LARGE_MAX_DISTANCE_BITS);
+    /* The maximum distance is set so that no distance symbol used can encode
+       a distance larger than BROTLI_MAX_ALLOWED_DISTANCE with all
+       its extra bits set. */
+    if (ndirect < bound[npostfix]) {
+      max_distance = BROTLI_MAX_ALLOWED_DISTANCE - (bound[npostfix] - ndirect);
+    } else if (ndirect >= bound[npostfix] + postfix) {
+      max_distance = (3U << 29) - 4 + (ndirect - bound[npostfix]);
+    } else {
+      max_distance = BROTLI_MAX_ALLOWED_DISTANCE;
+    }
+  }
+
+  dist_params->alphabet_size = alphabet_size;
+  dist_params->max_distance = max_distance;
+}
+
+static void RecomputeDistancePrefixes(Command* cmds,
+                                      size_t num_commands,
+                                      const BrotliDistanceParams* orig_params,
+                                      const BrotliDistanceParams* new_params) {
+  size_t i;
+
+  if (orig_params->distance_postfix_bits == new_params->distance_postfix_bits &&
+      orig_params->num_direct_distance_codes ==
+      new_params->num_direct_distance_codes) {
+    return;
+  }
+
+  for (i = 0; i < num_commands; ++i) {
+    Command* cmd = &cmds[i];
+    if (CommandCopyLen(cmd) && cmd->cmd_prefix_ >= 128) {
+      PrefixEncodeCopyDistance(CommandRestoreDistanceCode(cmd, orig_params),
+                               new_params->num_direct_distance_codes,
+                               new_params->distance_postfix_bits,
+                               &cmd->dist_prefix_,
+                               &cmd->dist_extra_);
+    }
+  }
+}
+
+static BROTLI_BOOL ComputeDistanceCost(const Command* cmds,
+                                       size_t num_commands,
+                                       const BrotliDistanceParams* orig_params,
+                                       const BrotliDistanceParams* new_params,
+                                       double* cost) {
+  size_t i;
+  BROTLI_BOOL equal_params = BROTLI_FALSE;
+  uint16_t dist_prefix;
+  uint32_t dist_extra;
+  double extra_bits = 0.0;
+  HistogramDistance histo;
+  HistogramClearDistance(&histo);
+
+  if (orig_params->distance_postfix_bits == new_params->distance_postfix_bits &&
+      orig_params->num_direct_distance_codes ==
+      new_params->num_direct_distance_codes) {
+    equal_params = BROTLI_TRUE;
+  }
+
+  for (i = 0; i < num_commands; i++) {
+    const Command* cmd = &cmds[i];
+    if (CommandCopyLen(cmd) && cmd->cmd_prefix_ >= 128) {
+      if (equal_params) {
+        dist_prefix = cmd->dist_prefix_;
+      } else {
+        uint32_t distance = CommandRestoreDistanceCode(cmd, orig_params);
+        if (distance > new_params->max_distance) {
+          return BROTLI_FALSE;
+        }
+        PrefixEncodeCopyDistance(distance,
+                                 new_params->num_direct_distance_codes,
+                                 new_params->distance_postfix_bits,
+                                 &dist_prefix,
+                                 &dist_extra);
+      }
+      HistogramAddDistance(&histo, dist_prefix & 0x3FF);
+      extra_bits += dist_prefix >> 10;
+    }
+  }
+
+  *cost = BrotliPopulationCostDistance(&histo) + extra_bits;
+  return BROTLI_TRUE;
+}
+
 void BrotliBuildMetaBlock(MemoryManager* m,
                           const uint8_t* ringbuffer,
                           const size_t pos,
                           const size_t mask,
-                          const BrotliEncoderParams* params,
+                          BrotliEncoderParams* params,
                           uint8_t prev_byte,
                           uint8_t prev_byte2,
-                          const Command* cmds,
+                          Command* cmds,
                           size_t num_commands,
                           ContextType literal_context_mode,
                           MetaBlockSplit* mb) {
@@ -45,7 +147,47 @@
   size_t distance_histograms_size;
   size_t i;
   size_t literal_context_multiplier = 1;
+  uint32_t npostfix;
+  uint32_t ndirect_msb = 0;
+  BROTLI_BOOL check_orig = BROTLI_TRUE;
+  double best_dist_cost = 1e99;
+  BrotliEncoderParams orig_params = *params;
+  BrotliEncoderParams new_params = *params;
 
+  for (npostfix = 0; npostfix <= BROTLI_MAX_NPOSTFIX; npostfix++) {
+    for (; ndirect_msb < 16; ndirect_msb++) {
+      uint32_t ndirect = ndirect_msb << npostfix;
+      BROTLI_BOOL skip;
+      double dist_cost;
+      BrotliInitDistanceParams(&new_params, npostfix, ndirect);
+      if (npostfix == orig_params.dist.distance_postfix_bits &&
+          ndirect == orig_params.dist.num_direct_distance_codes) {
+        check_orig = BROTLI_FALSE;
+      }
+      skip = !ComputeDistanceCost(
+          cmds, num_commands,
+          &orig_params.dist, &new_params.dist, &dist_cost);
+      if (skip || (dist_cost > best_dist_cost)) {
+        break;
+      }
+      best_dist_cost = dist_cost;
+      params->dist = new_params.dist;
+    }
+    if (ndirect_msb > 0) ndirect_msb--;
+    ndirect_msb /= 2;
+  }
+  if (check_orig) {
+    double dist_cost;
+    ComputeDistanceCost(cmds, num_commands,
+                        &orig_params.dist, &orig_params.dist, &dist_cost);
+    if (dist_cost < best_dist_cost) {
+      best_dist_cost = dist_cost;
+      params->dist = orig_params.dist;
+    }
+  }
+  RecomputeDistancePrefixes(cmds, num_commands,
+                            &orig_params.dist, &params->dist);
+
   BrotliSplitBlock(m, cmds, num_commands,
                    ringbuffer, pos, mask, params,
                    &mb->literal_split,

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.h	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.h	2018-05-04 04:54:00 UTC (rev 47608)
@@ -67,15 +67,18 @@
   BROTLI_FREE(m, mb->distance_histograms);
 }
 
-/* Uses the slow shortest-path block splitter and does context clustering. */
+/* Uses the slow shortest-path block splitter and does context clustering.
+   The distance parameters are dynamically selected based on the commands
+   which get recomputed under the new distance parameters. The new distance
+   parameters are stored into *params. */
 BROTLI_INTERNAL void BrotliBuildMetaBlock(MemoryManager* m,
                                           const uint8_t* ringbuffer,
                                           const size_t pos,
                                           const size_t mask,
-                                          const BrotliEncoderParams* params,
+                                          BrotliEncoderParams* params,
                                           uint8_t prev_byte,
                                           uint8_t prev_byte2,
-                                          const Command* cmds,
+                                          Command* cmds,
                                           size_t num_commands,
                                           ContextType literal_context_mode,
                                           MetaBlockSplit* mb);
@@ -92,6 +95,9 @@
 BROTLI_INTERNAL void BrotliOptimizeHistograms(uint32_t num_distance_codes,
                                               MetaBlockSplit* mb);
 
+BROTLI_INTERNAL void BrotliInitDistanceParams(BrotliEncoderParams* params,
+    uint32_t npostfix, uint32_t ndirect);
+
 #if defined(__cplusplus) || defined(c_plusplus)
 }  /* extern "C" */
 #endif

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/params.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/params.h	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/params.h	2018-05-04 04:54:00 UTC (rev 47608)
@@ -21,8 +21,8 @@
 } BrotliHasherParams;
 
 typedef struct BrotliDistanceParams {
+  uint32_t distance_postfix_bits;
   uint32_t num_direct_distance_codes;
-  uint32_t distance_postfix_bits;
   uint32_t alphabet_size;
   size_t max_distance;
 } BrotliDistanceParams;

Deleted: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/port.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/port.h	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/port.h	2018-05-04 04:54:00 UTC (rev 47608)
@@ -1,192 +0,0 @@
-/* Copyright 2013 Google Inc. All Rights Reserved.
-
-   Distributed under MIT license.
-   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
-*/
-
-/* Macros for endianness, branch prediction and unaligned loads and stores. */
-
-#ifndef BROTLI_ENC_PORT_H_
-#define BROTLI_ENC_PORT_H_
-
-#include <assert.h>
-#include <string.h>  /* memcpy */
-
-#include <brotli/port.h>
-#include <brotli/types.h>
-
-#if defined OS_LINUX || defined OS_CYGWIN
-#include <endian.h>
-#elif defined OS_FREEBSD
-#include <machine/endian.h>
-#elif defined OS_MACOSX
-#include <machine/endian.h>
-/* Let's try and follow the Linux convention */
-#define __BYTE_ORDER  BYTE_ORDER
-#define __LITTLE_ENDIAN LITTLE_ENDIAN
-#endif
-
-/* define the macro BROTLI_LITTLE_ENDIAN
-   using the above endian definitions from endian.h if
-   endian.h was included */
-#ifdef __BYTE_ORDER
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-#define BROTLI_LITTLE_ENDIAN
-#endif
-
-#else
-
-#if defined(__LITTLE_ENDIAN__)
-#define BROTLI_LITTLE_ENDIAN
-#endif
-#endif  /* __BYTE_ORDER */
-
-#if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
-#define BROTLI_LITTLE_ENDIAN
-#endif
-
-/* Enable little-endian optimization for x64 architecture on Windows. */
-#if (defined(_WIN32) || defined(_WIN64)) && defined(_M_X64)
-#define BROTLI_LITTLE_ENDIAN
-#endif
-
-/* Portable handling of unaligned loads, stores, and copies.
-   On some platforms, like ARM, the copy functions can be more efficient
-   then a load and a store. */
-
-#if defined(BROTLI_LITTLE_ENDIAN) && (\
-    defined(ARCH_PIII) || defined(ARCH_ATHLON) || \
-    defined(ARCH_K8) || defined(_ARCH_PPC))
-
-/* x86 and x86-64 can perform unaligned loads/stores directly;
-   modern PowerPC hardware can also do unaligned integer loads and stores;
-   but note: the FPU still sends unaligned loads and stores to a trap handler!
-*/
-
-#define BROTLI_UNALIGNED_LOAD32(_p) (*(const uint32_t *)(_p))
-#define BROTLI_UNALIGNED_LOAD64LE(_p) (*(const uint64_t *)(_p))
-
-#define BROTLI_UNALIGNED_STORE64LE(_p, _val) \
-  (*(uint64_t *)(_p) = (_val))
-
-#elif defined(BROTLI_LITTLE_ENDIAN) && defined(__arm__) && \
-  !defined(__ARM_ARCH_5__) && \
-  !defined(__ARM_ARCH_5T__) && \
-  !defined(__ARM_ARCH_5TE__) && \
-  !defined(__ARM_ARCH_5TEJ__) && \
-  !defined(__ARM_ARCH_6__) && \
-  !defined(__ARM_ARCH_6J__) && \
-  !defined(__ARM_ARCH_6K__) && \
-  !defined(__ARM_ARCH_6Z__) && \
-  !defined(__ARM_ARCH_6ZK__) && \
-  !defined(__ARM_ARCH_6T2__)
-
-/* ARMv7 and newer support native unaligned accesses, but only of 16-bit
-   and 32-bit values (not 64-bit); older versions either raise a fatal signal,
-   do an unaligned read and rotate the words around a bit, or do the reads very
-   slowly (trip through kernel mode). */
-
-#define BROTLI_UNALIGNED_LOAD32(_p) (*(const uint32_t *)(_p))
-
-static BROTLI_INLINE uint64_t BROTLI_UNALIGNED_LOAD64LE(const void *p) {
-  uint64_t t;
-  memcpy(&t, p, sizeof t);
-  return t;
-}
-
-static BROTLI_INLINE void BROTLI_UNALIGNED_STORE64LE(void *p, uint64_t v) {
-  memcpy(p, &v, sizeof v);
-}
-
-#else
-
-/* These functions are provided for architectures that don't support */
-/* unaligned loads and stores. */
-
-static BROTLI_INLINE uint32_t BROTLI_UNALIGNED_LOAD32(const void *p) {
-  uint32_t t;
-  memcpy(&t, p, sizeof t);
-  return t;
-}
-
-#if defined(BROTLI_LITTLE_ENDIAN)
-
-static BROTLI_INLINE uint64_t BROTLI_UNALIGNED_LOAD64LE(const void *p) {
-  uint64_t t;
-  memcpy(&t, p, sizeof t);
-  return t;
-}
-
-static BROTLI_INLINE void BROTLI_UNALIGNED_STORE64LE(void *p, uint64_t v) {
-  memcpy(p, &v, sizeof v);
-}
-
-#else  /* BROTLI_LITTLE_ENDIAN */
-
-static BROTLI_INLINE uint64_t BROTLI_UNALIGNED_LOAD64LE(const void *p) {
-  const uint8_t* in = (const uint8_t*)p;
-  uint64_t value = (uint64_t)(in[0]);
-  value |= (uint64_t)(in[1]) << 8;
-  value |= (uint64_t)(in[2]) << 16;
-  value |= (uint64_t)(in[3]) << 24;
-  value |= (uint64_t)(in[4]) << 32;
-  value |= (uint64_t)(in[5]) << 40;
-  value |= (uint64_t)(in[6]) << 48;
-  value |= (uint64_t)(in[7]) << 56;
-  return value;
-}
-
-static BROTLI_INLINE void BROTLI_UNALIGNED_STORE64LE(void *p, uint64_t v) {
-  uint8_t* out = (uint8_t*)p;
-  out[0] = (uint8_t)v;
-  out[1] = (uint8_t)(v >> 8);
-  out[2] = (uint8_t)(v >> 16);
-  out[3] = (uint8_t)(v >> 24);
-  out[4] = (uint8_t)(v >> 32);
-  out[5] = (uint8_t)(v >> 40);
-  out[6] = (uint8_t)(v >> 48);
-  out[7] = (uint8_t)(v >> 56);
-}
-
-#endif  /* BROTLI_LITTLE_ENDIAN */
-
-#endif
-
-#define TEMPLATE_(T)                                                           \
-  static BROTLI_INLINE T brotli_min_ ## T (T a, T b) { return a < b ? a : b; } \
-  static BROTLI_INLINE T brotli_max_ ## T (T a, T b) { return a > b ? a : b; }
-TEMPLATE_(double) TEMPLATE_(float) TEMPLATE_(int)
-TEMPLATE_(size_t) TEMPLATE_(uint32_t) TEMPLATE_(uint8_t)
-#undef TEMPLATE_
-#define BROTLI_MIN(T, A, B) (brotli_min_ ## T((A), (B)))
-#define BROTLI_MAX(T, A, B) (brotli_max_ ## T((A), (B)))
-
-#define BROTLI_SWAP(T, A, I, J) { \
-  T __brotli_swap_tmp = (A)[(I)]; \
-  (A)[(I)] = (A)[(J)];            \
-  (A)[(J)] = __brotli_swap_tmp;   \
-}
-
-/*
-Dynamically grows array capacity to at least the requested size
-M: MemoryManager
-T: data type
-A: array
-C: capacity
-R: requested size
-*/
-#define BROTLI_ENSURE_CAPACITY(M, T, A, C, R) {  \
-  if (C < (R)) {                                 \
-    size_t _new_size = (C == 0) ? (R) : C;       \
-    T* new_array;                                \
-    while (_new_size < (R)) _new_size *= 2;      \
-    new_array = BROTLI_ALLOC((M), T, _new_size); \
-    if (!BROTLI_IS_OOM(M) && C != 0)             \
-      memcpy(new_array, A, C * sizeof(T));       \
-    BROTLI_FREE((M), A);                         \
-    A = new_array;                               \
-    C = _new_size;                               \
-  }                                              \
-}
-
-#endif  /* BROTLI_ENC_PORT_H_ */

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/quality.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/quality.h	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/quality.h	2018-05-04 04:54:00 UTC (rev 47608)
@@ -21,13 +21,12 @@
 
 #define MAX_QUALITY_FOR_STATIC_ENTROPY_CODES 2
 #define MIN_QUALITY_FOR_BLOCK_SPLIT 4
+#define MIN_QUALITY_FOR_NONZERO_DISTANCE_PARAMS 4
 #define MIN_QUALITY_FOR_OPTIMIZE_HISTOGRAMS 4
 #define MIN_QUALITY_FOR_EXTENSIVE_REFERENCE_SEARCH 5
 #define MIN_QUALITY_FOR_CONTEXT_MODELING 5
 #define MIN_QUALITY_FOR_HQ_CONTEXT_MODELING 7
 #define MIN_QUALITY_FOR_HQ_BLOCK_SPLITTING 10
-/* Only for "font" mode. */
-#define MIN_QUALITY_FOR_RECOMPUTE_DISTANCE_PREFIXES 10
 
 /* For quality below MIN_QUALITY_FOR_BLOCK_SPLIT there is no block splitting,
    so we buffer at most this much literals and commands. */

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/write_bits.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/write_bits.h	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/write_bits.h	2018-05-04 04:54:00 UTC (rev 47608)
@@ -44,7 +44,7 @@
      bits are in *p and we write 57 bits, then the next write will
      access a byte that was never initialized). */
   uint8_t* p = &array[*pos >> 3];
-  uint64_t v = *p;
+  uint64_t v = (uint64_t)(*p);  /* Zero-extend 8 to 64 bits. */
   BROTLI_LOG(("WriteBits  %2d  0x%08x%08x  %10d\n", (int)n_bits,
       (uint32_t)(bits >> 32), (uint32_t)(bits & 0xFFFFFFFF),
       (int)*pos));

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/decode.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/decode.h	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/decode.h	2018-05-04 04:54:00 UTC (rev 47608)
@@ -85,9 +85,8 @@
   BROTLI_ERROR_CODE(_ERROR_FORMAT_, PADDING_2, -15) SEPARATOR              \
   BROTLI_ERROR_CODE(_ERROR_FORMAT_, DISTANCE, -16) SEPARATOR               \
                                                                            \
-  /* -17 code is reserved */                                               \
+  /* -17..-18 codes are reserved */                                        \
                                                                            \
-  BROTLI_ERROR_CODE(_ERROR_, COMPOUND_DICTIONARY, -18) SEPARATOR           \
   BROTLI_ERROR_CODE(_ERROR_, DICTIONARY_NOT_SET, -19) SEPARATOR            \
   BROTLI_ERROR_CODE(_ERROR_, INVALID_ARGUMENTS, -20) SEPARATOR             \
                                                                            \

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/encode.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/encode.h	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/encode.h	2018-05-04 04:54:00 UTC (rev 47608)
@@ -185,7 +185,23 @@
   /**
    * Flag that determines if "Large Window Brotli" is used.
    */
-  BROTLI_PARAM_LARGE_WINDOW = 6
+  BROTLI_PARAM_LARGE_WINDOW = 6,
+  /**
+   * Recommended number of postfix bits (NPOSTFIX).
+   *
+   * Encoder may change this value.
+   *
+   * Range is from 0 to ::BROTLI_MAX_NPOSTFIX.
+   */
+  BROTLI_PARAM_NPOSTFIX = 7,
+  /**
+   * Recommended number of direct distance codes (NDIRECT).
+   *
+   * Encoder may change this value.
+   *
+   * Range is from 0 to (15 << NPOSTFIX) in steps of (1 << NPOSTFIX).
+   */
+  BROTLI_PARAM_NDIRECT = 8
 } BrotliEncoderParameter;
 
 /**

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/xxhash.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/xxhash.c	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/xxhash.c	2018-05-04 04:54:00 UTC (rev 47608)
@@ -54,7 +54,7 @@
                         || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) \
                         || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) )
 #    define XXH_FORCE_MEMORY_ACCESS 2
-#  elif defined(__INTEL_COMPILER) || \
+#  elif (defined(__INTEL_COMPILER) && !defined(_WIN32)) || \
   (defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \
                     || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \
                     || defined(__ARM_ARCH_7S__) ))
@@ -111,6 +111,8 @@
 #include <string.h>
 static void* XXH_memcpy(void* dest, const void* src, size_t size) { return memcpy(dest,src,size); }
 
+#include <assert.h>   /* assert */
+
 #define XXH_STATIC_LINKING_ONLY
 #include "xxhash.h"
 
@@ -215,8 +217,12 @@
 
 /* XXH_CPU_LITTLE_ENDIAN can be defined externally, for example on the compiler command line */
 #ifndef XXH_CPU_LITTLE_ENDIAN
-    static const int g_one = 1;
-#   define XXH_CPU_LITTLE_ENDIAN   (*(const char*)(&g_one))
+static int XXH_isLittleEndian(void)
+{
+    const union { U32 u; BYTE c[4]; } one = { 1 };   /* don't use static : performance detrimental  */
+    return one.c[0];
+}
+#   define XXH_CPU_LITTLE_ENDIAN   XXH_isLittleEndian()
 #endif
 
 
@@ -252,7 +258,7 @@
 
 
 /* *******************************************************************
-*  32-bits hash functions
+*  32-bit hash functions
 *********************************************************************/
 static const U32 PRIME32_1 = 2654435761U;
 static const U32 PRIME32_2 = 2246822519U;
@@ -268,12 +274,87 @@
     return seed;
 }
 
-FORCE_INLINE U32 XXH32_endian_align(const void* input, size_t len, U32 seed, XXH_endianess endian, XXH_alignment align)
+/* mix all bits */
+static U32 XXH32_avalanche(U32 h32)
 {
+    h32 ^= h32 >> 15;
+    h32 *= PRIME32_2;
+    h32 ^= h32 >> 13;
+    h32 *= PRIME32_3;
+    h32 ^= h32 >> 16;
+    return(h32);
+}
+
+#define XXH_get32bits(p) XXH_readLE32_align(p, endian, align)
+
+static U32
+XXH32_finalize(U32 h32, const void* ptr, size_t len,
+                XXH_endianess endian, XXH_alignment align)
+
+{
+    const BYTE* p = (const BYTE*)ptr;
+#define PROCESS1             \
+    h32 += (*p) * PRIME32_5; \
+    p++;                     \
+    h32 = XXH_rotl32(h32, 11) * PRIME32_1 ;
+
+#define PROCESS4                         \
+    h32 += XXH_get32bits(p) * PRIME32_3; \
+    p+=4;                                \
+    h32  = XXH_rotl32(h32, 17) * PRIME32_4 ;
+
+    switch(len&15)  /* or switch(bEnd - p) */
+    {
+      case 12:      PROCESS4;
+                    /* fallthrough */
+      case 8:       PROCESS4;
+                    /* fallthrough */
+      case 4:       PROCESS4;
+                    return XXH32_avalanche(h32);
+
+      case 13:      PROCESS4;
+                    /* fallthrough */
+      case 9:       PROCESS4;
+                    /* fallthrough */
+      case 5:       PROCESS4;
+                    PROCESS1;
+                    return XXH32_avalanche(h32);
+
+      case 14:      PROCESS4;
+                    /* fallthrough */
+      case 10:      PROCESS4;
+                    /* fallthrough */
+      case 6:       PROCESS4;
+                    PROCESS1;
+                    PROCESS1;
+                    return XXH32_avalanche(h32);
+
+      case 15:      PROCESS4;
+                    /* fallthrough */
+      case 11:      PROCESS4;
+                    /* fallthrough */
+      case 7:       PROCESS4;
+                    /* fallthrough */
+      case 3:       PROCESS1;
+                    /* fallthrough */
+      case 2:       PROCESS1;
+                    /* fallthrough */
+      case 1:       PROCESS1;
+                    /* fallthrough */
+      case 0:       return XXH32_avalanche(h32);
+    }
+    assert(0);
+    return h32;   /* reaching this point is deemed impossible */
+}
+
+
+FORCE_INLINE U32
+XXH32_endian_align(const void* input, size_t len, U32 seed,
+                    XXH_endianess endian, XXH_alignment align)
+{
     const BYTE* p = (const BYTE*)input;
     const BYTE* bEnd = p + len;
     U32 h32;
-#define XXH_get32bits(p) XXH_readLE32_align(p, endian, align)
 
 #if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1)
     if (p==NULL) {
@@ -283,7 +364,7 @@
 #endif
 
     if (len>=16) {
-        const BYTE* const limit = bEnd - 16;
+        const BYTE* const limit = bEnd - 15;
         U32 v1 = seed + PRIME32_1 + PRIME32_2;
         U32 v2 = seed + PRIME32_2;
         U32 v3 = seed + 0;
@@ -294,34 +375,17 @@
             v2 = XXH32_round(v2, XXH_get32bits(p)); p+=4;
             v3 = XXH32_round(v3, XXH_get32bits(p)); p+=4;
             v4 = XXH32_round(v4, XXH_get32bits(p)); p+=4;
-        } while (p<=limit);
+        } while (p < limit);
 
-        h32 = XXH_rotl32(v1, 1) + XXH_rotl32(v2, 7) + XXH_rotl32(v3, 12) + XXH_rotl32(v4, 18);
+        h32 = XXH_rotl32(v1, 1)  + XXH_rotl32(v2, 7)
+            + XXH_rotl32(v3, 12) + XXH_rotl32(v4, 18);
     } else {
         h32  = seed + PRIME32_5;
     }
 
-    h32 += (U32) len;
+    h32 += (U32)len;
 
-    while (p+4<=bEnd) {
-        h32 += XXH_get32bits(p) * PRIME32_3;
-        h32  = XXH_rotl32(h32, 17) * PRIME32_4 ;
-        p+=4;
-    }
-
-    while (p<bEnd) {
-        h32 += (*p) * PRIME32_5;
-        h32 = XXH_rotl32(h32, 11) * PRIME32_1 ;
-        p++;
-    }
-
-    h32 ^= h32 >> 15;
-    h32 *= PRIME32_2;
-    h32 ^= h32 >> 13;
-    h32 *= PRIME32_3;
-    h32 ^= h32 >> 16;
-
-    return h32;
+    return XXH32_finalize(h32, p, len&15, endian, align);
 }
 
 
@@ -446,6 +510,7 @@
     return XXH_OK;
 }
 
+
 XXH_PUBLIC_API XXH_errorcode XXH32_update (XXH32_state_t* state_in, const void* input, size_t len)
 {
     XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN;
@@ -457,11 +522,9 @@
 }
 
 
-
-FORCE_INLINE U32 XXH32_digest_endian (const XXH32_state_t* state, XXH_endianess endian)
+FORCE_INLINE U32
+XXH32_digest_endian (const XXH32_state_t* state, XXH_endianess endian)
 {
-    const BYTE * p = (const BYTE*)state->mem32;
-    const BYTE* const bEnd = (const BYTE*)(state->mem32) + state->memsize;
     U32 h32;
 
     if (state->large_len) {
@@ -475,25 +538,7 @@
 
     h32 += state->total_len_32;
 
-    while (p+4<=bEnd) {
-        h32 += XXH_readLE32(p, endian) * PRIME32_3;
-        h32  = XXH_rotl32(h32, 17) * PRIME32_4;
-        p+=4;
-    }
-
-    while (p<bEnd) {
-        h32 += (*p) * PRIME32_5;
-        h32  = XXH_rotl32(h32, 11) * PRIME32_1;
-        p++;
-    }
-
-    h32 ^= h32 >> 15;
-    h32 *= PRIME32_2;
-    h32 ^= h32 >> 13;
-    h32 *= PRIME32_3;
-    h32 ^= h32 >> 16;
-
-    return h32;
+    return XXH32_finalize(h32, state->mem32, state->memsize, endian, XXH_aligned);
 }
 
 
@@ -532,7 +577,7 @@
 #ifndef XXH_NO_LONG_LONG
 
 /* *******************************************************************
-*  64-bits hash functions
+*  64-bit hash functions
 *********************************************************************/
 
 /*======   Memory access   ======*/
@@ -639,12 +684,136 @@
     return acc;
 }
 
-FORCE_INLINE U64 XXH64_endian_align(const void* input, size_t len, U64 seed, XXH_endianess endian, XXH_alignment align)
+static U64 XXH64_avalanche(U64 h64)
 {
+    h64 ^= h64 >> 33;
+    h64 *= PRIME64_2;
+    h64 ^= h64 >> 29;
+    h64 *= PRIME64_3;
+    h64 ^= h64 >> 32;
+    return h64;
+}
+
+
+#define XXH_get64bits(p) XXH_readLE64_align(p, endian, align)
+
+static U64
+XXH64_finalize(U64 h64, const void* ptr, size_t len,
+               XXH_endianess endian, XXH_alignment align)
+{
+    const BYTE* p = (const BYTE*)ptr;
+
+#define PROCESS1_64          \
+    h64 ^= (*p) * PRIME64_5; \
+    p++;                     \
+    h64 = XXH_rotl64(h64, 11) * PRIME64_1;
+
+#define PROCESS4_64          \
+    h64 ^= (U64)(XXH_get32bits(p)) * PRIME64_1; \
+    p+=4;                    \
+    h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3;
+
+#define PROCESS8_64 {        \
+    U64 const k1 = XXH64_round(0, XXH_get64bits(p)); \
+    p+=8;                    \
+    h64 ^= k1;               \
+    h64  = XXH_rotl64(h64,27) * PRIME64_1 + PRIME64_4; \
+}
+
+    switch(len&31) {
+      case 24: PROCESS8_64;
+                    /* fallthrough */
+      case 16: PROCESS8_64;
+                    /* fallthrough */
+      case  8: PROCESS8_64;
+               return XXH64_avalanche(h64);
+
+      case 28: PROCESS8_64;
+                    /* fallthrough */
+      case 20: PROCESS8_64;
+                    /* fallthrough */
+      case 12: PROCESS8_64;
+                    /* fallthrough */
+      case  4: PROCESS4_64;
+               return XXH64_avalanche(h64);
+
+      case 25: PROCESS8_64;
+                    /* fallthrough */
+      case 17: PROCESS8_64;
+                    /* fallthrough */
+      case  9: PROCESS8_64;
+               PROCESS1_64;
+               return XXH64_avalanche(h64);
+
+      case 29: PROCESS8_64;
+                    /* fallthrough */
+      case 21: PROCESS8_64;
+                    /* fallthrough */
+      case 13: PROCESS8_64;
+                    /* fallthrough */
+      case  5: PROCESS4_64;
+               PROCESS1_64;
+               return XXH64_avalanche(h64);
+
+      case 26: PROCESS8_64;
+                    /* fallthrough */
+      case 18: PROCESS8_64;
+                    /* fallthrough */
+      case 10: PROCESS8_64;
+               PROCESS1_64;
+               PROCESS1_64;
+               return XXH64_avalanche(h64);
+
+      case 30: PROCESS8_64;
+                    /* fallthrough */
+      case 22: PROCESS8_64;
+                    /* fallthrough */
+      case 14: PROCESS8_64;
+                    /* fallthrough */
+      case  6: PROCESS4_64;
+               PROCESS1_64;
+               PROCESS1_64;
+               return XXH64_avalanche(h64);
+
+      case 27: PROCESS8_64;
+                    /* fallthrough */
+      case 19: PROCESS8_64;
+                    /* fallthrough */
+      case 11: PROCESS8_64;
+               PROCESS1_64;
+               PROCESS1_64;
+               PROCESS1_64;
+               return XXH64_avalanche(h64);
+
+      case 31: PROCESS8_64;
+                    /* fallthrough */
+      case 23: PROCESS8_64;
+                    /* fallthrough */
+      case 15: PROCESS8_64;
+                    /* fallthrough */
+      case  7: PROCESS4_64;
+                    /* fallthrough */
+      case  3: PROCESS1_64;
+                    /* fallthrough */
+      case  2: PROCESS1_64;
+                    /* fallthrough */
+      case  1: PROCESS1_64;
+                    /* fallthrough */
+      case  0: return XXH64_avalanche(h64);
+    }
+
+    /* impossible to reach */
+    assert(0);
+    return 0;  /* unreachable, but some compilers complain without it */
+}
+
+FORCE_INLINE U64
+XXH64_endian_align(const void* input, size_t len, U64 seed,
+                XXH_endianess endian, XXH_alignment align)
+{
     const BYTE* p = (const BYTE*)input;
     const BYTE* bEnd = p + len;
     U64 h64;
-#define XXH_get64bits(p) XXH_readLE64_align(p, endian, align)
 
 #if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1)
     if (p==NULL) {
@@ -679,32 +848,7 @@
 
     h64 += (U64) len;
 
-    while (p+8<=bEnd) {
-        U64 const k1 = XXH64_round(0, XXH_get64bits(p));
-        h64 ^= k1;
-        h64  = XXH_rotl64(h64,27) * PRIME64_1 + PRIME64_4;
-        p+=8;
-    }
-
-    if (p+4<=bEnd) {
-        h64 ^= (U64)(XXH_get32bits(p)) * PRIME64_1;
-        h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3;
-        p+=4;
-    }
-
-    while (p<bEnd) {
-        h64 ^= (*p) * PRIME64_5;
-        h64 = XXH_rotl64(h64, 11) * PRIME64_1;
-        p++;
-    }
-
-    h64 ^= h64 >> 33;
-    h64 *= PRIME64_2;
-    h64 ^= h64 >> 29;
-    h64 *= PRIME64_3;
-    h64 ^= h64 >> 32;
-
-    return h64;
+    return XXH64_finalize(h64, p, len, endian, align);
 }
 
 
@@ -835,8 +979,6 @@
 
 FORCE_INLINE U64 XXH64_digest_endian (const XXH64_state_t* state, XXH_endianess endian)
 {
-    const BYTE * p = (const BYTE*)state->mem64;
-    const BYTE* const bEnd = (const BYTE*)state->mem64 + state->memsize;
     U64 h64;
 
     if (state->total_len >= 32) {
@@ -851,37 +993,12 @@
         h64 = XXH64_mergeRound(h64, v3);
         h64 = XXH64_mergeRound(h64, v4);
     } else {
-        h64  = state->v3 + PRIME64_5;
+        h64  = state->v3 /*seed*/ + PRIME64_5;
     }
 
     h64 += (U64) state->total_len;
 
-    while (p+8<=bEnd) {
-        U64 const k1 = XXH64_round(0, XXH_readLE64(p, endian));
-        h64 ^= k1;
-        h64  = XXH_rotl64(h64,27) * PRIME64_1 + PRIME64_4;
-        p+=8;
-    }
-
-    if (p+4<=bEnd) {
-        h64 ^= (U64)(XXH_readLE32(p, endian)) * PRIME64_1;
-        h64  = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3;
-        p+=4;
-    }
-
-    while (p<bEnd) {
-        h64 ^= (*p) * PRIME64_5;
-        h64  = XXH_rotl64(h64, 11) * PRIME64_1;
-        p++;
-    }
-
-    h64 ^= h64 >> 33;
-    h64 *= PRIME64_2;
-    h64 ^= h64 >> 29;
-    h64 *= PRIME64_3;
-    h64 ^= h64 >> 32;
-
-    return h64;
+    return XXH64_finalize(h64, state->mem64, (size_t)state->total_len, endian, XXH_aligned);
 }
 
 XXH_PUBLIC_API unsigned long long XXH64_digest (const XXH64_state_t* state_in)

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/xxhash.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/xxhash.h	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/xxHash/xxhash.h	2018-05-04 04:54:00 UTC (rev 47608)
@@ -57,8 +57,8 @@
 It depends on successfully passing SMHasher test set.
 10 is a perfect score.
 
-A 64-bits version, named XXH64, is available since r35.
-It offers much better speed, but for 64-bits applications only.
+A 64-bit version, named XXH64, is available since r35.
+It offers much better speed, but for 64-bit applications only.
 Name     Speed on 64 bits    Speed on 32 bits
 XXH64       13.8 GB/s            1.9 GB/s
 XXH32        6.8 GB/s            6.0 GB/s
@@ -80,18 +80,19 @@
 
 
 /* ****************************
-*  API modifier
-******************************/
-/** XXH_PRIVATE_API
-*   This is useful to include xxhash functions in `static` mode
-*   in order to inline them, and remove their symbol from the public list.
-*   Methodology :
-*     #define XXH_PRIVATE_API
-*     #include "xxhash.h"
-*   `xxhash.c` is automatically included.
-*   It's not useful to compile and link it as a separate module.
-*/
-#ifdef XXH_PRIVATE_API
+ *  API modifier
+ ******************************/
+/** XXH_INLINE_ALL (and XXH_PRIVATE_API)
+ *  This is useful to include xxhash functions in `static` mode
+ *  in order to inline them, and remove their symbol from the public list.
+ *  Inlining can offer dramatic performance improvement on small keys.
+ *  Methodology :
+ *     #define XXH_INLINE_ALL
+ *     #include "xxhash.h"
+ * `xxhash.c` is automatically included.
+ *  It's not useful to compile and link it as a separate module.
+ */
+#if defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API)
 #  ifndef XXH_STATIC_LINKING_ONLY
 #    define XXH_STATIC_LINKING_ONLY
 #  endif
@@ -107,19 +108,19 @@
 #  endif
 #else
 #  define XXH_PUBLIC_API   /* do nothing */
-#endif /* XXH_PRIVATE_API */
+#endif /* XXH_INLINE_ALL || XXH_PRIVATE_API */
 
-/*!XXH_NAMESPACE, aka Namespace Emulation :
-
-If you want to include _and expose_ xxHash functions from within your own library,
-but also want to avoid symbol collisions with other libraries which may also include xxHash,
-
-you can use XXH_NAMESPACE, to automatically prefix any public symbol from xxhash library
-with the value of XXH_NAMESPACE (therefore, avoid NULL and numeric values).
-
-Note that no change is required within the calling program as long as it includes `xxhash.h` :
-regular symbol name will be automatically translated by this header.
-*/
+/*! XXH_NAMESPACE, aka Namespace Emulation :
+ *
+ * If you want to include _and expose_ xxHash functions from within your own library,
+ * but also want to avoid symbol collisions with other libraries which may also include xxHash,
+ *
+ * you can use XXH_NAMESPACE, to automatically prefix any public symbol from xxhash library
+ * with the value of XXH_NAMESPACE (therefore, avoid NULL and numeric values).
+ *
+ * Note that no change is required within the calling program as long as it includes `xxhash.h` :
+ * regular symbol name will be automatically translated by this header.
+ */
 #ifdef XXH_NAMESPACE
 #  define XXH_CAT(A,B) A##B
 #  define XXH_NAME2(A,B) XXH_CAT(A,B)
@@ -150,18 +151,18 @@
 ***************************************/
 #define XXH_VERSION_MAJOR    0
 #define XXH_VERSION_MINOR    6
-#define XXH_VERSION_RELEASE  4
+#define XXH_VERSION_RELEASE  5
 #define XXH_VERSION_NUMBER  (XXH_VERSION_MAJOR *100*100 + XXH_VERSION_MINOR *100 + XXH_VERSION_RELEASE)
 XXH_PUBLIC_API unsigned XXH_versionNumber (void);
 
 
 /*-**********************************************************************
-*  32-bits hash
+*  32-bit hash
 ************************************************************************/
 typedef unsigned int XXH32_hash_t;
 
 /*! XXH32() :
-    Calculate the 32-bits hash of sequence "length" bytes stored at memory address "input".
+    Calculate the 32-bit hash of sequence "length" bytes stored at memory address "input".
     The memory between input & input+length must be valid (allocated and read-accessible).
     "seed" can be used to alter the result predictably.
     Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark) : 5.4 GB/s */
@@ -178,27 +179,26 @@
 XXH_PUBLIC_API XXH32_hash_t  XXH32_digest (const XXH32_state_t* statePtr);
 
 /*
-These functions generate the xxHash of an input provided in multiple segments.
-Note that, for small input, they are slower than single-call functions, due to state management.
-For small input, prefer `XXH32()` and `XXH64()` .
+ * Streaming functions generate the xxHash of an input provided in multiple segments.
+ * Note that, for small input, they are slower than single-call functions, due to state management.
+ * For small inputs, prefer `XXH32()` and `XXH64()`, which are better optimized.
+ *
+ * XXH state must first be allocated, using XXH*_createState() .
+ *
+ * Start a new hash by initializing state with a seed, using XXH*_reset().
+ *
+ * Then, feed the hash state by calling XXH*_update() as many times as necessary.
+ * The function returns an error code, with 0 meaning OK, and any other value meaning there is an error.
+ *
+ * Finally, a hash value can be produced anytime, by using XXH*_digest().
+ * This function returns the nn-bits hash as an int or long long.
+ *
+ * It's still possible to continue inserting input into the hash state after a digest,
+ * and generate some new hashes later on, by calling again XXH*_digest().
+ *
+ * When done, free XXH state space if it was allocated dynamically.
+ */
 
-XXH state must first be allocated, using XXH*_createState() .
-
-Start a new hash by initializing state with a seed, using XXH*_reset().
-
-Then, feed the hash state by calling XXH*_update() as many times as necessary.
-Obviously, input must be allocated and read accessible.
-The function returns an error code, with 0 meaning OK, and any other value meaning there is an error.
-
-Finally, a hash value can be produced anytime, by using XXH*_digest().
-This function returns the nn-bits hash as an int or long long.
-
-It's still possible to continue inserting input into the hash state after a digest,
-and generate some new hashes later on, by calling again XXH*_digest().
-
-When done, free XXH state space if it was allocated dynamically.
-*/
-
 /*======   Canonical representation   ======*/
 
 typedef struct { unsigned char digest[4]; } XXH32_canonical_t;
@@ -206,22 +206,22 @@
 XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src);
 
 /* Default result type for XXH functions are primitive unsigned 32 and 64 bits.
-*  The canonical representation uses human-readable write convention, aka big-endian (large digits first).
-*  These functions allow transformation of hash result into and from its canonical format.
-*  This way, hash values can be written into a file / memory, and remain comparable on different systems and programs.
-*/
+ * The canonical representation uses human-readable write convention, aka big-endian (large digits first).
+ * These functions allow transformation of hash result into and from its canonical format.
+ * This way, hash values can be written into a file / memory, and remain comparable on different systems and programs.
+ */
 
 
 #ifndef XXH_NO_LONG_LONG
 /*-**********************************************************************
-*  64-bits hash
+*  64-bit hash
 ************************************************************************/
 typedef unsigned long long XXH64_hash_t;
 
 /*! XXH64() :
-    Calculate the 64-bits hash of sequence of length "len" stored at memory address "input".
+    Calculate the 64-bit hash of sequence of length "len" stored at memory address "input".
     "seed" can be used to alter the result predictably.
-    This function runs faster on 64-bits systems, but slower on 32-bits systems (see benchmark).
+    This function runs faster on 64-bit systems, but slower on 32-bit systems (see benchmark).
 */
 XXH_PUBLIC_API XXH64_hash_t XXH64 (const void* input, size_t length, unsigned long long seed);
 
@@ -242,6 +242,7 @@
 #endif  /* XXH_NO_LONG_LONG */
 
 
+
 #ifdef XXH_STATIC_LINKING_ONLY
 
 /* ================================================================================================
@@ -251,11 +252,41 @@
    Never use them in association with dynamic linking !
 =================================================================================================== */
 
-/* These definitions are only meant to make possible
-   static allocation of XXH state, on stack or in a struct for example.
-   Never use members directly. */
+/* These definitions are only present to allow
+ * static allocation of XXH state, on stack or in a struct for example.
+ * Never **ever** use members directly. */
 
+#if !defined (__VMS) \
+  && (defined (__cplusplus) \
+  || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) )
+#   include <stdint.h>
+
 struct XXH32_state_s {
+   uint32_t total_len_32;
+   uint32_t large_len;
+   uint32_t v1;
+   uint32_t v2;
+   uint32_t v3;
+   uint32_t v4;
+   uint32_t mem32[4];
+   uint32_t memsize;
+   uint32_t reserved;   /* never read nor write, might be removed in a future version */
+};   /* typedef'd to XXH32_state_t */
+
+struct XXH64_state_s {
+   uint64_t total_len;
+   uint64_t v1;
+   uint64_t v2;
+   uint64_t v3;
+   uint64_t v4;
+   uint64_t mem64[4];
+   uint32_t memsize;
+   uint32_t reserved[2];          /* never read nor write, might be removed in a future version */
+};   /* typedef'd to XXH64_state_t */
+
+# else
+
+struct XXH32_state_s {
    unsigned total_len_32;
    unsigned large_len;
    unsigned v1;
@@ -262,12 +293,12 @@
    unsigned v2;
    unsigned v3;
    unsigned v4;
-   unsigned mem32[4];   /* buffer defined as U32 for alignment */
+   unsigned mem32[4];
    unsigned memsize;
-   unsigned reserved;   /* never read nor write, will be removed in a future version */
+   unsigned reserved;   /* never read nor write, might be removed in a future version */
 };   /* typedef'd to XXH32_state_t */
 
-#ifndef XXH_NO_LONG_LONG   /* remove 64-bits support */
+#   ifndef XXH_NO_LONG_LONG  /* remove 64-bit support */
 struct XXH64_state_s {
    unsigned long long total_len;
    unsigned long long v1;
@@ -274,13 +305,16 @@
    unsigned long long v2;
    unsigned long long v3;
    unsigned long long v4;
-   unsigned long long mem64[4];   /* buffer defined as U64 for alignment */
+   unsigned long long mem64[4];
    unsigned memsize;
-   unsigned reserved[2];          /* never read nor write, will be removed in a future version */
+   unsigned reserved[2];     /* never read nor write, might be removed in a future version */
 };   /* typedef'd to XXH64_state_t */
-#endif
+#    endif
 
-#ifdef XXH_PRIVATE_API
+# endif
+
+
+#if defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API)
 #  include "xxhash.c"   /* include xxhash function bodies as `static`, for inlining */
 #endif
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/m4/ax_cxx_compile_stdcxx.m4
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/m4/ax_cxx_compile_stdcxx.m4	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/m4/ax_cxx_compile_stdcxx.m4	2018-05-04 04:54:00 UTC (rev 47608)
@@ -40,12 +40,11 @@
 #   and this notice are preserved.  This file is offered as-is, without any
 #   warranty.
 
-#serial 7
+#serial 8
 
 dnl  This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
 dnl  (serial version number 13).
 
-AX_REQUIRE_DEFINED([AC_MSG_WARN])
 AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
   m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"],
         [$1], [14], [ax_cxx_compile_alternatives="14 1y"],
@@ -139,7 +138,6 @@
               [define if the compiler supports basic C++$1 syntax])
   fi
   AC_SUBST(HAVE_CXX$1)
-  m4_if([$1], [17], [AC_MSG_WARN([C++17 is not yet standardized, so the checks may change in incompatible ways anytime])])
 ])
 
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -29,7 +29,7 @@
 /** Collect all background color changes while preprocessing the DVI file.
  *  We need them in order to apply the correct background colors even if
  *  not all but only selected DVI pages are converted. */
-void BgColorSpecialHandler::preprocess (const char*, std::istream &is, SpecialActions &actions) {
+void BgColorSpecialHandler::preprocess (const string&, std::istream &is, SpecialActions &actions) {
 	Color color = ColorSpecialHandler::readColor(is);
 	unsigned pageno = actions.getCurrentPageNumber();
 	if (_pageColors.empty() || _pageColors.back().second != color) {
@@ -41,7 +41,7 @@
 }
 
 
-bool BgColorSpecialHandler::process (const char*, istream &, SpecialActions&) {
+bool BgColorSpecialHandler::process (const string&, istream&, SpecialActions&) {
 	return true;
 }
 
@@ -62,7 +62,7 @@
 }
 
 
-const vector<const char*> BgColorSpecialHandler::prefixes () const {
-	const vector<const char*> pfx {"background"};
+vector<const char*> BgColorSpecialHandler::prefixes() const {
+	vector<const char*> pfx {"background"};
 	return pfx;
 }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/BgColorSpecialHandler.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -26,14 +26,13 @@
 #include "SpecialHandler.hpp"
 
 
-class BgColorSpecialHandler : public SpecialHandler, public DVIBeginPageListener
-{
+class BgColorSpecialHandler : public SpecialHandler {
 	public:
-		void preprocess (const char *prefix, std::istream &is, SpecialActions &actions) override;
-		bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
+		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* info () const override {return "background color special";}
 		const char* name () const override {return "bgcolor";}
-		const std::vector<const char*> prefixes () const override;
+		std::vector<const char*> prefixes() const override;
 
 	protected:
 		void dviBeginPage (unsigned pageno, SpecialActions &actions) override;

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/BoundingBox.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/BoundingBox.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/BoundingBox.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -234,8 +234,8 @@
 
 void BoundingBox::transform (const Matrix &tm) {
 	if (!_locked) {
-		DPair ul = tm * DPair(_lrx, _lry);
-		DPair lr = tm * DPair(_ulx, _uly);
+		DPair ul = tm * DPair(_ulx, _uly);
+		DPair lr = tm * DPair(_lrx, _lry);
 		DPair ll = tm * DPair(_ulx, _lry);
 		DPair ur = tm * DPair(_lrx, _uly);
 		_ulx = min(min(ul.x(), lr.x()), min(ur.x(), ll.x()));

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -42,7 +42,9 @@
 			_files.push_back(argv[i]);
 		else {
 			iss.get();  // skip dash
-			if (iss.peek() != '-')
+			if (iss.peek() < 0)
+				_singleDashParsed = true;
+			else if (iss.peek() != '-')
 				parseShortOption(iss, argc, argv, i);
 			else {
 				iss.get();             // skip dash
@@ -94,8 +96,6 @@
 void CommandLine::parseShortOption (istringstream &iss, int argc, char **argv, int &argn) {
 	bool combined = false;
 	do {
-		if (iss.peek() < 0)
-			throw CommandLineException("missing character after '-'");
 		char shortname = static_cast<char>(iss.get());
 		if (!isalnum(shortname))
 			throw CommandLineException(string("syntax error: -")+shortname);
@@ -184,11 +184,15 @@
 	os << PROGRAM_NAME << ' '<< PROGRAM_VERSION << "\n\n";
 	os << _summary << "\n\n";
 	// print usage info
-	size_t start=0, pos=0;
 	string usage = _usage;
-	while ((pos = usage.find('\n', start)) != string::npos || start < usage.length()) {
-		os << (start == 0 ? "Usage: " : "       ") << PROGRAM_NAME << ' ' << usage.substr(start, pos) << '\n';
-		start = (pos != string::npos ? pos+1 : string::npos);
+	int count=0;
+	while (!usage.empty()) {
+		size_t pos = usage.find('\n');
+		os << (count++ == 0 ? "Usage: " : "       ") << PROGRAM_NAME << ' ' << usage.substr(0, pos) << '\n';
+		if (pos != string::npos)
+			usage = usage.substr(pos+1);
+		else
+			usage.clear();
 	}
 	if (mode > 0)
 		os << '\n';
@@ -197,6 +201,7 @@
 	unordered_map<Option*, pair<string,string>> linecols;
 	size_t col1width=0;
 	for (const OptSectPair &ospair : options()) {
+		size_t pos;
 		string line = ospair.first->helpline();
 		if ((pos = line.find('\t')) != string::npos) {
 			linecols.emplace(ospair.first, pair<string,string>(line.substr(0, pos), line.substr(pos+1)));

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -37,6 +37,8 @@
 		virtual ~CommandLine () =default;
 		void parse (int argc, char **argv);
 		void help (std::ostream &os, int mode=0) const;
+		void addFilename (std::string fname) {_files.emplace_back(fname);}
+		bool singleDashGiven () const {return _singleDashParsed;}
 		const std::vector<std::string>& filenames () const {return _files;}
 
 	protected:
@@ -52,12 +54,12 @@
 		const char *_summary;
 		const char *_usage;
 		const char *_copyright;
+		bool _singleDashParsed=false; ///< true if a single '-' w/o a following char was parsed
 		std::vector<std::string> _files;
 };
 
 
-struct CommandLineException : public MessageException
-{
+struct CommandLineException : public MessageException {
 	CommandLineException (const std::string &msg) : MessageException(msg) {}
 };
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Calculator.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -154,7 +154,7 @@
 			try {
 				_numValue = stod(str);
 			}
-			catch (exception) {
+			catch (const exception&) {
 				throw CalculatorException("invalid number: "+str);
 			}
 			break;

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -91,7 +91,7 @@
 }
 
 
-bool ColorSpecialHandler::process (const char *, istream &is, SpecialActions &actions) {
+bool ColorSpecialHandler::process (const string&, istream &is, SpecialActions &actions) {
 	string cmd;
 	is >> cmd;
 	if (cmd == "push")               // color push <model> <params>
@@ -113,8 +113,8 @@
 }
 
 
-const vector<const char*> ColorSpecialHandler::prefixes () const {
-	const vector<const char*> pfx {"color"};
+vector<const char*> ColorSpecialHandler::prefixes() const {
+	vector<const char*> pfx {"color"};
 	return pfx;
 }
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ColorSpecialHandler.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -28,15 +28,14 @@
 #include "SpecialHandler.hpp"
 
 
-class ColorSpecialHandler : public SpecialHandler
-{
+class ColorSpecialHandler : public SpecialHandler {
 	public:
-		bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
+		bool process (const std::string &prefix, std::istream &is, SpecialActions &actions) override;
 		static Color readColor (std::istream &is);
 		static Color readColor (const std::string &model, std::istream &is);
 		const char* name () const override {return "color";}
 		const char* info () const override {return "complete support of color specials";}
-		const std::vector<const char*> prefixes () const override;
+		std::vector<const char*> prefixes() const override;
 
 	private:
 		std::stack<Color> _colorStack;

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/CommandLine.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/CommandLine.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/CommandLine.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -15,12 +15,11 @@
 using CL::Option;
 using CL::TypedOption;
 
-class CommandLine : public CL::CommandLine
-{
+class CommandLine : public CL::CommandLine {
 	public:
 		CommandLine () : CL::CommandLine(
 			"This program converts DVI files, as created by TeX/LaTeX, to\nthe XML-based scalable vector graphics format SVG.",
-			"[options] dvifile\n-E [options] epsfile",
+			"[options] dvifile\n--eps [options] epsfile\n--pdf [options] pdffile",
 			"Copyright (C) 2005-2018 Martin Gieseking <martin.gieseking at uos.de>"
 		) {}
 
@@ -35,7 +34,7 @@
 		Option colorOpt {"color", '\0', "colorize messages"};
 		Option colornamesOpt {"colornames", '\0', "prefer color names to RGB values if possible"};
 		Option commentsOpt {"comments", '\0', "add comments with additional information"};
-		Option epsOpt {"eps", 'E', "convert an EPS file to SVG"};
+		Option epsOpt {"eps", 'E', "convert EPS file to SVG"};
 		Option exactOpt {"exact", 'e', "compute exact glyph boxes"};
 		TypedOption<std::string, Option::ArgMode::REQUIRED> fontFormatOpt {"font-format", 'f', "format", "svg", "select file format of embedded fonts"};
 		TypedOption<std::string, Option::ArgMode::REQUIRED> fontmapOpt {"fontmap", 'm', "filenames", "evaluate (additional) font map files"};
@@ -55,11 +54,13 @@
 		Option noStylesOpt {"no-styles", '\0', "don't use CSS styles to reference fonts"};
 		TypedOption<std::string, Option::ArgMode::REQUIRED> outputOpt {"output", 'o', "pattern", "set name pattern of output files"};
 		TypedOption<std::string, Option::ArgMode::REQUIRED> pageOpt {"page", 'p', "ranges", "1", "choose page(s) to convert"};
+		Option pdfOpt {"pdf", 'P', "convert PDF file to SVG"};
 		TypedOption<int, Option::ArgMode::REQUIRED> precisionOpt {"precision", 'd', "number", 0, "set number of decimal points (0-6)"};
-		TypedOption<double, Option::ArgMode::OPTIONAL> progressOpt {"progress", 'P', "delay", 0.5, "enable progress indicator"};
+		TypedOption<double, Option::ArgMode::OPTIONAL> progressOpt {"progress", '\0', "delay", 0.5, "enable progress indicator"};
 		Option relativeOpt {"relative", 'R', "create relative path commands"};
 		TypedOption<double, Option::ArgMode::REQUIRED> rotateOpt {"rotate", 'r', "angle", "rotate page content clockwise"};
 		TypedOption<std::string, Option::ArgMode::REQUIRED> scaleOpt {"scale", 'c', "sx[,sy]", "scale page content"};
+		Option stdinOpt {"stdin", '\0', "read input file from stdin"};
 		Option stdoutOpt {"stdout", 's', "write SVG output to stdout"};
 		TypedOption<std::string, Option::ArgMode::OPTIONAL> tmpdirOpt {"tmpdir", '\0', "path", "set/print the directory for temporary files"};
 		TypedOption<bool, Option::ArgMode::OPTIONAL> traceAllOpt {"trace-all", 'a', "retrace", false, "trace all glyphs of bitmap fonts"};
@@ -89,6 +90,10 @@
 #if !defined(DISABLE_GS)
 			{&epsOpt, 0},
 #endif
+#if !defined(DISABLE_GS)
+			{&pdfOpt, 0},
+#endif
+			{&stdinOpt, 0},
 			{&bboxOpt, 1},
 #if !defined(DISABLE_GS)
 			{&clipjoinOpt, 1},

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -39,7 +39,7 @@
 }
 
 
-void DvisvgmSpecialHandler::preprocess (const char*, istream &is, SpecialActions&) {
+void DvisvgmSpecialHandler::preprocess (const string&, istream &is, SpecialActions&) {
 	struct Command {
 		const char *name;
 		void (DvisvgmSpecialHandler::*handler)(InputReader&);
@@ -53,7 +53,7 @@
 	}};
 
 	StreamInputReader ir(is);
-	string cmdstr = ir.getWord();
+	const string cmdstr = ir.getWord();
 	for (const Command &command : commands) {
 		if (command.name == cmdstr) {
 			ir.skipSpace();
@@ -117,7 +117,7 @@
  *  @param[in] prefix special prefix read by the SpecialManager
  *  @param[in] is the special statement is read from this stream
  *  @param[in] actions object providing the actions that can be performed by the SpecialHandler */
-bool DvisvgmSpecialHandler::process (const char *prefix, istream &is, SpecialActions &actions) {
+bool DvisvgmSpecialHandler::process (const string &prefix, istream &is, SpecialActions &actions) {
 	struct Command {
 		const char *name;
 		void (DvisvgmSpecialHandler::*handler)(InputReader&, SpecialActions&);
@@ -132,7 +132,7 @@
 		{"img",       &DvisvgmSpecialHandler::processImg}
 	}};
 	StreamInputReader ir(is);
-	string cmdstr = ir.getWord();
+	const string cmdstr = ir.getWord();
 	for (const Command &command : commands) {
 		if (command.name == cmdstr) {
 			ir.skipSpace();
@@ -362,7 +362,7 @@
 }
 
 
-const vector<const char*> DvisvgmSpecialHandler::prefixes () const {
-	const vector<const char*> pfx {"dvisvgm:"};
+vector<const char*> DvisvgmSpecialHandler::prefixes() const {
+	vector<const char*> pfx {"dvisvgm:"};
 	return pfx;
 }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/DvisvgmSpecialHandler.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -29,8 +29,7 @@
 class InputReader;
 class SpecialActions;
 
-class DvisvgmSpecialHandler : public SpecialHandler, public DVIPreprocessingListener, public DVIEndPageListener
-{
+class DvisvgmSpecialHandler : public SpecialHandler {
 	using StringVector = std::vector<std::string>;
 	using MacroMap = std::unordered_map<std::string, StringVector>;
 
@@ -38,9 +37,9 @@
 		DvisvgmSpecialHandler ();
 		const char* name () const override {return "dvisvgm";}
 		const char* info () const override {return "special set for embedding raw SVG snippets";}
-		const std::vector<const char*> prefixes () const override;
-		void preprocess (const char *prefix, std::istream &is, SpecialActions &actions) override;
-		bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
+		std::vector<const char*> prefixes() const override;
+		void preprocess (const std::string &prefix, std::istream &is, SpecialActions &actions) override;
+		bool process (const std::string &prefix, std::istream &is, SpecialActions &actions) override;
 
 	protected:
 		void preprocessRaw (InputReader &ir);

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -56,8 +56,7 @@
 }
 
 
-EPSFile::EPSFile (const std::string& fname) : _ifs(fname.c_str(), ios::binary), _headerValid(false), _offset(0), _pslength(0)
-{
+EPSFile::EPSFile (const string &fname) : _ifs(fname, ios::binary) {
 	if (_ifs) {
 		if (getUInt32(_ifs) != 0xC6D3D0C5)  // no binary header present?
 			_ifs.seekg(0);                   // go back to the first byte
@@ -84,10 +83,10 @@
 }
 
 
-/** Extracts the bounding box information from the DSC header/footer (if present)
- *  @param[out] box the extracted bounding box
- *  @return true if %%BoundingBox data could be read successfully */
-bool EPSFile::bbox (BoundingBox &box) const {
+/** Extracts the bounding box information from the DSC header/footer (if present).
+ *  @return the extracted bounding box */
+BoundingBox EPSFile::bbox () const {
+	BoundingBox box;
 	std::istream &is = EPSFile::istream();
 	if (is) {
 		char buf[64];
@@ -105,10 +104,10 @@
 						ir.parseInt(val[i]);
 					}
 					box = BoundingBox(val[0], val[1], val[2], val[3]);
-					return true;
+					break;
 				}
 			}
 		}
 	}
-	return false;
+	return box;
 }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSFile.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -22,23 +22,23 @@
 #define EPSFILE_HPP
 
 #include <fstream>
+#include <istream>
 #include <string>
 #include "BoundingBox.hpp"
 
-class EPSFile
-{
+class EPSFile {
 	public:
 		EPSFile (const std::string &fname);
 		std::istream& istream () const;
 		bool hasValidHeader () const {return _headerValid;}
-		bool bbox (BoundingBox &box) const;
+		BoundingBox bbox () const;
 		uint32_t pslength () const {return _pslength;}
 
 	private:
 		mutable std::ifstream _ifs;
-		bool _headerValid;   ///< true if file has a valid header
-		uint32_t _offset;    ///< stream offset where ASCII part of the file begins
-		uint32_t _pslength;  ///< length of PS section (in bytes)
+		bool _headerValid=false; ///< true if file has a valid header
+		uint32_t _offset=0;      ///< stream offset where ASCII part of the file begins
+		uint32_t _pslength=0;    ///< length of PS section (in bytes)
 };
 
 #endif

Deleted: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -1,121 +0,0 @@
-/*************************************************************************
-** EPSToSVG.cpp                                                         **
-**                                                                      **
-** This file is part of dvisvgm -- a fast DVI to SVG converter          **
-** Copyright (C) 2005-2018 Martin Gieseking <martin.gieseking at 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 <fstream>
-#include <sstream>
-#include "EPSFile.hpp"
-#include "EPSToSVG.hpp"
-#include "Message.hpp"
-#include "MessageException.hpp"
-#include "PsSpecialHandler.hpp"
-#include "SVGOutput.hpp"
-#include "System.hpp"
-#include "utility.hpp"
-#include "version.hpp"
-
-using namespace std;
-
-
-void EPSToSVG::convert () {
-#ifndef HAVE_LIBGS
-	if (!Ghostscript().available())
-		throw MessageException("Ghostscript is required to process the EPS file");
-#endif
-	EPSFile epsfile(_fname);
-	if (!epsfile.hasValidHeader())
-		throw PSException("invalid EPS file");
-
-	BoundingBox bbox;
-	epsfile.bbox(bbox);
-	if (bbox.width() == 0 || bbox.height() == 0)
-		Message::wstream(true) << "bounding box of file " << _fname << " is empty\n";
-	Message::mstream(false, Message::MC_PAGE_NUMBER) << "processing file " << _fname << '\n';
-	Message::mstream().indent(1);
-	_svg.newPage(1);
-	// create a psfile special and forward it to the PsSpecialHandler
-	stringstream ss;
-	ss << "\"" << _fname << "\" "
-			"llx=" << bbox.minX() << " "
-			"lly=" << bbox.minY() << " "
-			"urx=" << bbox.maxX() << " "
-			"ury=" << bbox.maxY();
-	try {
-		PsSpecialHandler pshandler;
-		pshandler.process("psfile=", ss, *this);
-	}
-	catch (...) {
-		progress(0);  // remove progress message
-		throw;
-	}
-	progress(0);
-	// output SVG file
-	_svg.removeRedundantElements();
-	_svg.setBBox(_bbox);
-	_svg.appendToDoc(util::make_unique<XMLCommentNode>(" This file was generated by dvisvgm " + string(PROGRAM_VERSION) + " "));
-	bool success = _svg.write(_out.getPageStream(1, 1));
-	string svgfname = _out.filename(1, 1);
-	if (svgfname.empty())
-		svgfname = "<stdout>";
-	if (!success)
-		Message::wstream() << "failed to write output to " << svgfname << '\n';
-	else {
-		const double bp2pt = 72.27/72;
-		const double bp2mm = 25.4/72;
-		Message::mstream(false, Message::MC_PAGE_SIZE) << "graphic size: " << XMLString(bbox.width()*bp2pt) << "pt"
-			" x " << XMLString(bbox.height()*bp2pt) << "pt"
-			" (" << XMLString(bbox.width()*bp2mm) << "mm"
-			" x " << XMLString(bbox.height()*bp2mm) << "mm)\n";
-		Message::mstream(false, Message::MC_PAGE_WRITTEN) << "output written to " << svgfname << '\n';
-	}
-}
-
-
-string EPSToSVG::getSVGFilename (unsigned pageno) const {
-	if (pageno == 1)
-		return _out.filename(1, 1);
-	return "";
-}
-
-
-void EPSToSVG::progress (const char *id) {
-	static double time=0;
-	static bool draw=false; // show progress indicator?
-	static size_t count=0;
-	count++;
-	// don't show the progress indicator before the given time has elapsed
-	if (!draw && System::time()-time > PROGRESSBAR_DELAY) {
-		draw = true;
-		Terminal::cursor(false);
-		Message::mstream(false) << "\n";
-	}
-	if (draw && ((System::time() - time > 0.05) || id == 0)) {
-		const size_t DIGITS=6;
-		Message::mstream(false, Message::MC_PROGRESS)
-			<< string(DIGITS-min(DIGITS, static_cast<size_t>(log10(count))), ' ')
-			<< count << " PostScript instructions processed\r";
-		// overprint indicator when finished
-		if (id == 0) {
-			Message::estream().clearline();
-			Terminal::cursor(true);
-		}
-		time = System::time();
-	}
-}

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EPSToSVG.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -21,53 +21,19 @@
 #ifndef EPSTOSVG_HPP
 #define EPSTOSVG_HPP
 
-#include <memory>
-#include <string>
-#include "SpecialActions.hpp"
-#include "SVGTree.hpp"
+#include "EPSFile.hpp"
+#include "ImageToSVG.hpp"
 
-struct SVGOutputBase;
-
-class EPSToSVG : protected SpecialActions {
+class EPSToSVG : public ImageToSVG {
 	public:
-		EPSToSVG (const std::string &fname, SVGOutputBase &out) : _fname(fname), _out(out), _x(0), _y(0) {}
-		void convert ();
-		void setTransformation (const Matrix &m);
-		void setPageSize (const std::string &name);
+		EPSToSVG (const std::string &fname, SVGOutputBase &out) : ImageToSVG(fname, out) {}
 
 	protected:
-		// implement abstract base class SpecialActions
-		double getX () const override                           {return _x;}
-		double getY () const override                           {return _y;}
-		void setX (double x) override                           {_x = x; _svg.setX(x);}
-		void setY (double y) override                           {_y = y; _svg.setY(y);}
-		void finishLine () override                             {}
-		void setColor (const Color &color) override             {_svg.setColor(color);}
-		Color getColor () const override                        {return _svg.getColor();}
-		void setMatrix (const Matrix &m) override               {_svg.setMatrix(m);}
-		const Matrix& getMatrix () const override               {return _svg.getMatrix();}
-		void getPageTransform (Matrix &matrix) const override   {}
-		void setBgColor (const Color &color) override           {}
-		void appendToPage(std::unique_ptr<XMLNode> &&node) override  {_svg.appendToPage(std::move(node));}
-		void appendToDefs(std::unique_ptr<XMLNode> &&node) override  {_svg.appendToDefs(std::move(node));}
-		void prependToPage(std::unique_ptr<XMLNode> &&node) override {_svg.prependToPage(std::move(node));}
-		void pushContextElement (std::unique_ptr<XMLElementNode> &&node) override {_svg.pushContextElement(std::move(node));}
-		void popContextElement () override                      {_svg.popContextElement();}
-		void embed (const BoundingBox &bbox) override           {_bbox.embed(bbox);}
-		void embed (const DPair &p, double r=0) override        {if (r==0) _bbox.embed(p); else _bbox.embed(p, r);}
-		void progress (const char *id) override;
-		unsigned getCurrentPageNumber() const override          {return 0;}
-		BoundingBox& bbox () override                           {return _bbox;}
-		BoundingBox& bbox (const std::string &name, bool reset=false) override {return _bbox;}
-		std::string getSVGFilename (unsigned pageno) const override;
-		std::string getBBoxFormatString () const override {return "";}
-
-	private:
-		std::string _fname;   ///< name of EPS file
-		SVGTree _svg;
-		SVGOutputBase &_out;
-		double _x, _y;
-		BoundingBox _bbox;
+		std::string imageFormat () const override {return "EPS";}
+		bool imageIsValid () const override {return EPSFile(filename()).hasValidHeader();}
+		BoundingBox imageBBox () const override {return EPSFile(filename()).bbox();}
+		std::string psSpecialCmd () const override {return "psfile=";}
 };
 
 #endif
+

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -138,7 +138,7 @@
 }
 
 
-bool EmSpecialHandler::process (const char *prefix, istream &is, SpecialActions &actions) {
+bool EmSpecialHandler::process (const string &prefix, istream &is, SpecialActions &actions) {
 	// em:moveto => move graphic cursor to dvi position
 	// em:lineto => draw line from graphic cursor to dvi cursor, then move graphic cursor to dvi position
 	// em:linewidth <w> => set line width to <w>
@@ -167,7 +167,7 @@
 	};
 
 	StreamInputReader ir(is);
-	string cmdstr = ir.getWord();
+	const string cmdstr = ir.getWord();
 	for (Command *cmd=commands; cmd->name; cmd++) {
 		if (cmdstr == cmd->name) {
 			(this->*cmd->handler)(ir, actions);
@@ -258,7 +258,7 @@
 }
 
 
-const vector<const char*> EmSpecialHandler::prefixes () const {
-	const vector<const char*> pfx {"em:"};
+vector<const char*> EmSpecialHandler::prefixes() const {
+	vector<const char*> pfx {"em:"};
 	return pfx;
 }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -29,7 +29,7 @@
 class InputReader;
 class SpecialActions;
 
-class EmSpecialHandler : public SpecialHandler, public DVIEndPageListener {
+class EmSpecialHandler : public SpecialHandler {
 	struct Line {
 		Line (int pp1, int pp2, char cc1, char cc2, double w) : p1(pp1), p2(pp2), c1(cc1), c2(cc2), width(w) {}
 		int p1, p2;   ///< point numbers of line ends
@@ -41,8 +41,8 @@
 		EmSpecialHandler ();
 		const char* name () const override {return "em";}
 		const char* info () const override {return "line drawing statements of the emTeX special set";}
-		const std::vector<const char*> prefixes () const override;
-		bool process (const char *prefix, std::istream &in, SpecialActions &actions) override;
+		std::vector<const char*> prefixes() const override;
+		bool process (const std::string &prefix, std::istream &in, SpecialActions &actions) override;
 
 	protected:
 		void dviEndPage (unsigned pageno, SpecialActions &actions) override;

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/FileFinder.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -142,6 +142,7 @@
 		// to work around this, we try to lookup the files by calling kpsewhich.
 		Process process("kpsewhich", "-format=cmap "+fname);
 		process.run(&buf);
+		buf = util::trim(buf);
 		return buf.empty() ? nullptr : buf.c_str();
 	}
 	try {

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/FileSystem.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -310,7 +310,8 @@
 bool FileSystem::isDirectory (const string &fname) {
 	if (const char *cfname = fname.c_str()) {
 #ifdef _WIN32
-		return GetFileAttributes(cfname) & FILE_ATTRIBUTE_DIRECTORY;
+		auto attr = GetFileAttributes(cfname);
+		return attr != INVALID_FILE_ATTRIBUTES && (attr & FILE_ATTRIBUTE_DIRECTORY);
 #else
 		struct stat attr;
 		return stat(cfname, &attr) == 0 && S_ISDIR(attr.st_mode);

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -203,21 +203,24 @@
 }
 
 
-/** Returns product name and revision number of the GS library.
- *  @param[in] revonly if true, only the revision number is returned */
-string Ghostscript::revision (bool revonly) {
+/** Returns the revision number of the GS library. */
+int Ghostscript::revision () {
 	gsapi_revision_t r;
-	if (revision(&r)) {
-		ostringstream oss;
-		if (!revonly)
-			oss << r.product << ' ';
-		oss << (r.revision/100) << '.' << setfill('0') << setw(2) << (r.revision%100);
-		return oss.str();
-	}
-	return "";
+	if (revision(&r))
+		return static_cast<int>(r.revision);
+	return 0;
 }
 
 
+/** Returns the revision of the GS library as a string of the form "MAJOR.MINOR". */
+string Ghostscript::revisionstr () {
+	string revstr;
+	if (int rev = revision())
+		revstr = to_string(rev/100) + "." + to_string(rev%100);
+	return revstr;
+}
+
+
 /** Creates a new instance of Ghostscript. This method is called by the constructor and
  *  should not be used elsewhere.
  *  @param[out] psinst handle of newly created instance (or 0 on error)

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Ghostscript.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -38,8 +38,7 @@
 #endif
 
 #if defined(DISABLE_GS)
-struct Ghostscript
-{
+struct Ghostscript {
 	using Stdin  = int (GSDLLCALLPTR)(void *caller, char *buf, int len);
 	using Stdout = int (GSDLLCALLPTR)(void *caller, const char *str, int len);
 	using Stderr = int (GSDLLCALLPTR)(void *caller, const char *str, int len);
@@ -49,7 +48,8 @@
 	bool init (int argc, const char **argv, void *caller=0) {return false;}
 	bool available () {return false;}
 	bool revision (gsapi_revision_t *r) {return false;}
-	std::string revision (bool revonly=false) {return "";}
+	int revision () {return 0;}
+	std::string revisionstr () {return "";}
 	int set_stdio (Stdin in, Stdout out, Stderr err) {return 0;}
 	int run_string_begin (int user_errors, int *pexit_code) {return 0;}
 	int run_string_continue (const char *str, unsigned int length, int user_errors, int *pexit_code) {return 0;}
@@ -79,7 +79,8 @@
 		bool init (int argc, const char **argv, void *caller=0);
 		bool available ();
 		bool revision (gsapi_revision_t *r);
-		std::string revision (bool revonly=false);
+		int revision ();
+		std::string revisionstr ();
 		int set_stdio (Stdin in, Stdout out, Stderr err);
 		int run_string_begin (int user_errors, int *pexit_code);
 		int run_string_continue (const char *str, unsigned int length, int user_errors, int *pexit_code);

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -26,7 +26,7 @@
 using namespace std;
 
 
-void HtmlSpecialHandler::preprocess (const char *, istream &is, SpecialActions &actions) {
+void HtmlSpecialHandler::preprocess (const string&, istream &is, SpecialActions &actions) {
 	StreamInputReader ir(is);
 	ir.skipSpace();
 	// collect page number and ID of named anchors
@@ -41,7 +41,7 @@
 }
 
 
-bool HtmlSpecialHandler::process (const char *, istream &is, SpecialActions &actions) {
+bool HtmlSpecialHandler::process (const string&, istream &is, SpecialActions &actions) {
 	_active = true;
 	StreamInputReader ir(is);
 	ir.skipSpace();
@@ -80,7 +80,7 @@
 }
 
 
-const vector<const char*> HtmlSpecialHandler::prefixes () const {
-	const vector<const char*> pfx {"html:"};
+vector<const char*> HtmlSpecialHandler::prefixes() const {
+	vector<const char*> pfx {"html:"};
 	return pfx;
 }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/HtmlSpecialHandler.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -28,14 +28,14 @@
 
 class SpecialActions;
 
-class HtmlSpecialHandler : public SpecialHandler, public DVIEndPageListener, public DVIPositionListener {
+class HtmlSpecialHandler : public SpecialHandler {
 	public:
 		HtmlSpecialHandler () : _active(false) {}
-		void preprocess (const char *prefix, std::istream &is, SpecialActions &actions) override;
-		bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
+		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 "html";}
 		const char* info () const override {return "hyperref specials";}
-		const std::vector<const char*> prefixes () const override;
+		std::vector<const char*> prefixes() const override;
 
 	protected:
 		void dviEndPage (unsigned pageno, SpecialActions &actions) override;

Added: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ImageToSVG.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ImageToSVG.cpp	                        (rev 0)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ImageToSVG.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -0,0 +1,118 @@
+/*************************************************************************
+** ImageToSVG.cpp                                                       **
+**                                                                      **
+** This file is part of dvisvgm -- a fast DVI to SVG converter          **
+** Copyright (C) 2005-2018 Martin Gieseking <martin.gieseking at 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 <fstream>
+#include <sstream>
+#include "ImageToSVG.hpp"
+#include "Message.hpp"
+#include "MessageException.hpp"
+#include "PsSpecialHandler.hpp"
+#include "SVGOutput.hpp"
+#include "System.hpp"
+#include "utility.hpp"
+#include "version.hpp"
+
+using namespace std;
+
+
+void ImageToSVG::convert () {
+#ifndef HAVE_LIBGS
+	if (!Ghostscript().available())
+		throw MessageException("Ghostscript is required to process "+imageFormat()+" files");
+#endif
+	if (!imageIsValid())
+		throw PSException("invalid "+imageFormat()+" file");
+
+	BoundingBox bbox = imageBBox();
+	if (bbox.valid() && (bbox.width() == 0 || bbox.height() == 0))
+		Message::wstream(true) << "bounding box of " << imageFormat() << " file is empty\n";
+	Message::mstream(false, Message::MC_PAGE_NUMBER) << "processing " << imageFormat() << " file\n";
+	Message::mstream().indent(1);
+	_svg.newPage(1);
+	// create a psfile special and forward it to the PsSpecialHandler
+	stringstream ss;
+	ss << "\"" << _fname << "\" "
+			"llx=" << bbox.minX() << " "
+			"lly=" << bbox.minY() << " "
+			"urx=" << bbox.maxX() << " "
+			"ury=" << bbox.maxY();
+	try {
+		PsSpecialHandler pshandler;
+		pshandler.process(psSpecialCmd(), ss, *this);
+	}
+	catch (...) {
+		progress(0);  // remove progress message
+		throw;
+	}
+	progress(0);
+	// output SVG file
+	_svg.removeRedundantElements();
+	_svg.setBBox(_bbox);
+	_svg.appendToDoc(util::make_unique<XMLCommentNode>(" This file was generated by dvisvgm " + string(PROGRAM_VERSION) + " "));
+	bool success = _svg.write(_out.getPageStream(1, 1));
+	string svgfname = _out.filename(1, 1);
+	if (svgfname.empty())
+		svgfname = "<stdout>";
+	if (!success)
+		Message::wstream() << "failed to write output to " << svgfname << '\n';
+	else {
+		const double bp2pt = 72.27/72;
+		const double bp2mm = 25.4/72;
+		Message::mstream(false, Message::MC_PAGE_SIZE) << "graphic size: " << XMLString(_bbox.width()*bp2pt) << "pt"
+			" x " << XMLString(_bbox.height()*bp2pt) << "pt"
+			" (" << XMLString(_bbox.width()*bp2mm) << "mm"
+			" x " << XMLString(_bbox.height()*bp2mm) << "mm)\n";
+		Message::mstream(false, Message::MC_PAGE_WRITTEN) << "output written to " << svgfname << '\n';
+	}
+}
+
+
+string ImageToSVG::getSVGFilename (unsigned pageno) const {
+	if (pageno == 1)
+		return _out.filename(1, 1);
+	return "";
+}
+
+
+void ImageToSVG::progress (const char *id) {
+	static double time=0;
+	static bool draw=false; // show progress indicator?
+	static size_t count=0;
+	count++;
+	// don't show the progress indicator before the given time has elapsed
+	if (!draw && System::time()-time > PROGRESSBAR_DELAY) {
+		draw = true;
+		Terminal::cursor(false);
+		Message::mstream(false) << "\n";
+	}
+	if (draw && ((System::time() - time > 0.05) || id == 0)) {
+		const size_t DIGITS=6;
+		Message::mstream(false, Message::MC_PROGRESS)
+			<< string(DIGITS-min(DIGITS, static_cast<size_t>(log10(count))), ' ')
+			<< count << " PostScript instructions processed\r";
+		// overprint indicator when finished
+		if (id == 0) {
+			Message::estream().clearline();
+			Terminal::cursor(true);
+		}
+		time = System::time();
+	}
+}


Property changes on: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ImageToSVG.cpp
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ImageToSVG.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ImageToSVG.hpp	                        (rev 0)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ImageToSVG.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -0,0 +1,80 @@
+/*************************************************************************
+** ImageToSVG.hpp                                                       **
+**                                                                      **
+** This file is part of dvisvgm -- a fast DVI to SVG converter          **
+** Copyright (C) 2005-2018 Martin Gieseking <martin.gieseking at 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 IMAGETOSVG_HPP
+#define IMAGETOSVG_HPP
+
+#include <istream>
+#include <memory>
+#include <string>
+#include "SpecialActions.hpp"
+#include "SVGTree.hpp"
+
+struct SVGOutputBase;
+
+class ImageToSVG : protected SpecialActions {
+	public:
+		ImageToSVG (const std::string &fname, SVGOutputBase &out) : _fname(fname), _out(out) {}
+		virtual ~ImageToSVG () =default;
+		void convert ();
+		void setTransformation (const Matrix &m);
+		void setPageSize (const std::string &name);
+		std::string filename () const {return _fname;}
+
+	protected:
+		virtual std::string imageFormat () const =0;
+		virtual bool imageIsValid () const =0;
+		virtual BoundingBox imageBBox () const =0;
+		virtual std::string psSpecialCmd () const =0;
+		// implement abstract base class SpecialActions
+		double getX () const override                           {return _x;}
+		double getY () const override                           {return _y;}
+		void setX (double x) override                           {_x = x; _svg.setX(x);}
+		void setY (double y) override                           {_y = y; _svg.setY(y);}
+		void finishLine () override                             {}
+		void setColor (const Color &color) override             {_svg.setColor(color);}
+		Color getColor () const override                        {return _svg.getColor();}
+		void setMatrix (const Matrix &m) override               {_svg.setMatrix(m);}
+		const Matrix& getMatrix () const override               {return _svg.getMatrix();}
+		void getPageTransform (Matrix &matrix) const override   {}
+		void setBgColor (const Color &color) override           {}
+		void appendToPage(std::unique_ptr<XMLNode> &&node) override  {_svg.appendToPage(std::move(node));}
+		void appendToDefs(std::unique_ptr<XMLNode> &&node) override  {_svg.appendToDefs(std::move(node));}
+		void prependToPage(std::unique_ptr<XMLNode> &&node) override {_svg.prependToPage(std::move(node));}
+		void pushContextElement (std::unique_ptr<XMLElementNode> &&node) override {_svg.pushContextElement(std::move(node));}
+		void popContextElement () override                      {_svg.popContextElement();}
+		void embed (const BoundingBox &bbox) override           {_bbox.embed(bbox);}
+		void embed (const DPair &p, double r=0) override        {if (r==0) _bbox.embed(p); else _bbox.embed(p, r);}
+		void progress (const char *id) override;
+		unsigned getCurrentPageNumber() const override          {return 0;}
+		BoundingBox& bbox () override                           {return _bbox;}
+		BoundingBox& bbox (const std::string &name, bool reset=false) override {return _bbox;}
+		std::string getSVGFilename (unsigned pageno) const override;
+		std::string getBBoxFormatString () const override {return "";}
+
+	private:
+		std::string _fname;   ///< name of image file
+		SVGTree _svg;
+		SVGOutputBase &_out;
+		double _x=0, _y=0;
+		BoundingBox _bbox;
+};
+
+#endif

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.am
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.am	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.am	2018-05-04 04:54:00 UTC (rev 47608)
@@ -85,7 +85,6 @@
 	EncFile.hpp \
 	EPSFile.cpp \
 	EPSFile.hpp \
-	EPSToSVG.cpp \
 	EPSToSVG.hpp \
 	FileFinder.cpp \
 	FileFinder.hpp \
@@ -126,6 +125,8 @@
 	HtmlSpecialHandler.hpp \
 	HyperlinkManager.cpp \
 	HyperlinkManager.hpp \
+	ImageToSVG.cpp \
+	ImageToSVG.hpp \
 	InputBuffer.cpp \
 	InputBuffer.hpp \
 	InputReader.cpp \
@@ -158,6 +159,7 @@
 	PathClipper.hpp \
 	PDFParser.cpp \
 	PDFParser.hpp \
+	PDFToSVG.hpp \
 	PdfSpecialHandler.cpp \
 	PdfSpecialHandler.hpp \
 	PreScanDVIReader.cpp \
@@ -180,6 +182,8 @@
 	ShadingPatch.hpp \
 	SignalHandler.cpp \
 	SignalHandler.hpp \
+	SourceInput.cpp \
+	SourceInput.hpp \
 	SpecialActions.hpp \
 	SpecialHandler.hpp \
 	SpecialManager.cpp \

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.in
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.in	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Makefile.in	2018-05-04 04:54:00 UTC (rev 47608)
@@ -153,45 +153,47 @@
 	DvisvgmSpecialHandler.cpp DvisvgmSpecialHandler.hpp \
 	DVIToSVG.cpp DVIToSVG.hpp DVIToSVGActions.cpp \
 	DVIToSVGActions.hpp EmSpecialHandler.cpp EmSpecialHandler.hpp \
-	EncFile.cpp EncFile.hpp EPSFile.cpp EPSFile.hpp EPSToSVG.cpp \
-	EPSToSVG.hpp FileFinder.cpp FileFinder.hpp FilePath.cpp \
-	FilePath.hpp FileSystem.cpp FileSystem.hpp FixWord.hpp \
-	Font.cpp Font.hpp FontCache.cpp FontCache.hpp FontEncoding.cpp \
-	FontEncoding.hpp FontEngine.cpp FontEngine.hpp FontManager.cpp \
-	FontManager.hpp FontMap.cpp FontMap.hpp FontMetrics.cpp \
-	FontMetrics.hpp FontStyle.hpp FontWriter.cpp FontWriter.hpp \
-	GFGlyphTracer.cpp GFGlyphTracer.hpp GFReader.cpp GFReader.hpp \
-	GFTracer.cpp GFTracer.hpp Ghostscript.cpp Ghostscript.hpp \
-	Glyph.hpp GlyphTracerMessages.hpp GraphicsPath.hpp \
+	EncFile.cpp EncFile.hpp EPSFile.cpp EPSFile.hpp EPSToSVG.hpp \
+	FileFinder.cpp FileFinder.hpp FilePath.cpp FilePath.hpp \
+	FileSystem.cpp FileSystem.hpp FixWord.hpp Font.cpp Font.hpp \
+	FontCache.cpp FontCache.hpp FontEncoding.cpp FontEncoding.hpp \
+	FontEngine.cpp FontEngine.hpp FontManager.cpp FontManager.hpp \
+	FontMap.cpp FontMap.hpp FontMetrics.cpp FontMetrics.hpp \
+	FontStyle.hpp FontWriter.cpp FontWriter.hpp GFGlyphTracer.cpp \
+	GFGlyphTracer.hpp GFReader.cpp GFReader.hpp GFTracer.cpp \
+	GFTracer.hpp Ghostscript.cpp Ghostscript.hpp Glyph.hpp \
+	GlyphTracerMessages.hpp GraphicsPath.hpp \
 	HtmlSpecialHandler.cpp HtmlSpecialHandler.hpp \
-	HyperlinkManager.cpp HyperlinkManager.hpp InputBuffer.cpp \
-	InputBuffer.hpp InputReader.cpp InputReader.hpp JFM.cpp \
-	JFM.hpp Length.cpp Length.hpp macros.hpp MapLine.cpp \
-	MapLine.hpp Matrix.cpp Matrix.hpp Message.cpp Message.hpp \
-	MessageException.hpp MetafontWrapper.cpp MetafontWrapper.hpp \
-	NoPsSpecialHandler.cpp NoPsSpecialHandler.hpp \
-	NumericRanges.hpp PageRanges.cpp PageRanges.hpp PageSize.cpp \
-	PageSize.hpp Pair.hpp PapersizeSpecialHandler.cpp \
-	PapersizeSpecialHandler.hpp PathClipper.cpp PathClipper.hpp \
-	PDFParser.cpp PDFParser.hpp PdfSpecialHandler.cpp \
-	PdfSpecialHandler.hpp PreScanDVIReader.cpp \
-	PreScanDVIReader.hpp Process.cpp Process.hpp psdefs.cpp \
-	PSFilter.hpp PSInterpreter.cpp PSInterpreter.hpp PSPattern.cpp \
-	PSPattern.hpp PSPreviewFilter.cpp PSPreviewFilter.hpp \
-	PsSpecialHandler.cpp PsSpecialHandler.hpp RangeMap.cpp \
-	RangeMap.hpp ShadingPatch.cpp ShadingPatch.hpp \
-	SignalHandler.cpp SignalHandler.hpp SpecialActions.hpp \
-	SpecialHandler.hpp SpecialManager.cpp SpecialManager.hpp \
-	StreamReader.cpp StreamReader.hpp StreamWriter.cpp \
-	StreamWriter.hpp Subfont.cpp Subfont.hpp SVGCharHandler.cpp \
-	SVGCharHandler.hpp SVGCharHandlerFactory.cpp \
-	SVGCharHandlerFactory.hpp SVGCharPathHandler.cpp \
-	SVGCharPathHandler.hpp SVGCharTspanTextHandler.cpp \
-	SVGCharTspanTextHandler.hpp SVGOutput.cpp SVGOutput.hpp \
-	SVGSingleCharTextHandler.cpp SVGSingleCharTextHandler.hpp \
-	SVGTree.cpp SVGTree.hpp System.cpp System.hpp \
-	TensorProductPatch.cpp TensorProductPatch.hpp Terminal.cpp \
-	Terminal.hpp TFM.cpp TFM.hpp ToUnicodeMap.cpp ToUnicodeMap.hpp \
+	HyperlinkManager.cpp HyperlinkManager.hpp ImageToSVG.cpp \
+	ImageToSVG.hpp InputBuffer.cpp InputBuffer.hpp InputReader.cpp \
+	InputReader.hpp JFM.cpp JFM.hpp Length.cpp Length.hpp \
+	macros.hpp MapLine.cpp MapLine.hpp Matrix.cpp Matrix.hpp \
+	Message.cpp Message.hpp MessageException.hpp \
+	MetafontWrapper.cpp MetafontWrapper.hpp NoPsSpecialHandler.cpp \
+	NoPsSpecialHandler.hpp NumericRanges.hpp PageRanges.cpp \
+	PageRanges.hpp PageSize.cpp PageSize.hpp Pair.hpp \
+	PapersizeSpecialHandler.cpp PapersizeSpecialHandler.hpp \
+	PathClipper.cpp PathClipper.hpp PDFParser.cpp PDFParser.hpp \
+	PDFToSVG.hpp PdfSpecialHandler.cpp PdfSpecialHandler.hpp \
+	PreScanDVIReader.cpp PreScanDVIReader.hpp Process.cpp \
+	Process.hpp psdefs.cpp PSFilter.hpp PSInterpreter.cpp \
+	PSInterpreter.hpp PSPattern.cpp PSPattern.hpp \
+	PSPreviewFilter.cpp PSPreviewFilter.hpp PsSpecialHandler.cpp \
+	PsSpecialHandler.hpp RangeMap.cpp RangeMap.hpp \
+	ShadingPatch.cpp ShadingPatch.hpp SignalHandler.cpp \
+	SignalHandler.hpp SourceInput.cpp SourceInput.hpp \
+	SpecialActions.hpp SpecialHandler.hpp SpecialManager.cpp \
+	SpecialManager.hpp StreamReader.cpp StreamReader.hpp \
+	StreamWriter.cpp StreamWriter.hpp Subfont.cpp Subfont.hpp \
+	SVGCharHandler.cpp SVGCharHandler.hpp \
+	SVGCharHandlerFactory.cpp SVGCharHandlerFactory.hpp \
+	SVGCharPathHandler.cpp SVGCharPathHandler.hpp \
+	SVGCharTspanTextHandler.cpp SVGCharTspanTextHandler.hpp \
+	SVGOutput.cpp SVGOutput.hpp SVGSingleCharTextHandler.cpp \
+	SVGSingleCharTextHandler.hpp SVGTree.cpp SVGTree.hpp \
+	System.cpp System.hpp TensorProductPatch.cpp \
+	TensorProductPatch.hpp Terminal.cpp Terminal.hpp TFM.cpp \
+	TFM.hpp ToUnicodeMap.cpp ToUnicodeMap.hpp \
 	TpicSpecialHandler.cpp TpicSpecialHandler.hpp \
 	TriangularPatch.cpp TriangularPatch.hpp TrueTypeFont.cpp \
 	TrueTypeFont.hpp TTFAutohint.cpp TTFAutohint.hpp Unicode.cpp \
@@ -210,25 +212,26 @@
 	Directory.$(OBJEXT) DLLoader.$(OBJEXT) DVIReader.$(OBJEXT) \
 	DvisvgmSpecialHandler.$(OBJEXT) DVIToSVG.$(OBJEXT) \
 	DVIToSVGActions.$(OBJEXT) EmSpecialHandler.$(OBJEXT) \
-	EncFile.$(OBJEXT) EPSFile.$(OBJEXT) EPSToSVG.$(OBJEXT) \
-	FileFinder.$(OBJEXT) FilePath.$(OBJEXT) FileSystem.$(OBJEXT) \
-	Font.$(OBJEXT) FontCache.$(OBJEXT) FontEncoding.$(OBJEXT) \
+	EncFile.$(OBJEXT) EPSFile.$(OBJEXT) FileFinder.$(OBJEXT) \
+	FilePath.$(OBJEXT) FileSystem.$(OBJEXT) Font.$(OBJEXT) \
+	FontCache.$(OBJEXT) FontEncoding.$(OBJEXT) \
 	FontEngine.$(OBJEXT) FontManager.$(OBJEXT) FontMap.$(OBJEXT) \
 	FontMetrics.$(OBJEXT) FontWriter.$(OBJEXT) \
 	GFGlyphTracer.$(OBJEXT) GFReader.$(OBJEXT) GFTracer.$(OBJEXT) \
 	Ghostscript.$(OBJEXT) HtmlSpecialHandler.$(OBJEXT) \
-	HyperlinkManager.$(OBJEXT) InputBuffer.$(OBJEXT) \
-	InputReader.$(OBJEXT) JFM.$(OBJEXT) Length.$(OBJEXT) \
-	MapLine.$(OBJEXT) Matrix.$(OBJEXT) Message.$(OBJEXT) \
-	MetafontWrapper.$(OBJEXT) NoPsSpecialHandler.$(OBJEXT) \
-	PageRanges.$(OBJEXT) PageSize.$(OBJEXT) \
-	PapersizeSpecialHandler.$(OBJEXT) PathClipper.$(OBJEXT) \
-	PDFParser.$(OBJEXT) PdfSpecialHandler.$(OBJEXT) \
-	PreScanDVIReader.$(OBJEXT) Process.$(OBJEXT) psdefs.$(OBJEXT) \
-	PSInterpreter.$(OBJEXT) PSPattern.$(OBJEXT) \
-	PSPreviewFilter.$(OBJEXT) PsSpecialHandler.$(OBJEXT) \
-	RangeMap.$(OBJEXT) ShadingPatch.$(OBJEXT) \
-	SignalHandler.$(OBJEXT) SpecialManager.$(OBJEXT) \
+	HyperlinkManager.$(OBJEXT) ImageToSVG.$(OBJEXT) \
+	InputBuffer.$(OBJEXT) InputReader.$(OBJEXT) JFM.$(OBJEXT) \
+	Length.$(OBJEXT) MapLine.$(OBJEXT) Matrix.$(OBJEXT) \
+	Message.$(OBJEXT) MetafontWrapper.$(OBJEXT) \
+	NoPsSpecialHandler.$(OBJEXT) PageRanges.$(OBJEXT) \
+	PageSize.$(OBJEXT) PapersizeSpecialHandler.$(OBJEXT) \
+	PathClipper.$(OBJEXT) PDFParser.$(OBJEXT) \
+	PdfSpecialHandler.$(OBJEXT) PreScanDVIReader.$(OBJEXT) \
+	Process.$(OBJEXT) psdefs.$(OBJEXT) PSInterpreter.$(OBJEXT) \
+	PSPattern.$(OBJEXT) PSPreviewFilter.$(OBJEXT) \
+	PsSpecialHandler.$(OBJEXT) RangeMap.$(OBJEXT) \
+	ShadingPatch.$(OBJEXT) SignalHandler.$(OBJEXT) \
+	SourceInput.$(OBJEXT) SpecialManager.$(OBJEXT) \
 	StreamReader.$(OBJEXT) StreamWriter.$(OBJEXT) \
 	Subfont.$(OBJEXT) SVGCharHandler.$(OBJEXT) \
 	SVGCharHandlerFactory.$(OBJEXT) SVGCharPathHandler.$(OBJEXT) \
@@ -499,45 +502,47 @@
 	DvisvgmSpecialHandler.cpp DvisvgmSpecialHandler.hpp \
 	DVIToSVG.cpp DVIToSVG.hpp DVIToSVGActions.cpp \
 	DVIToSVGActions.hpp EmSpecialHandler.cpp EmSpecialHandler.hpp \
-	EncFile.cpp EncFile.hpp EPSFile.cpp EPSFile.hpp EPSToSVG.cpp \
-	EPSToSVG.hpp FileFinder.cpp FileFinder.hpp FilePath.cpp \
-	FilePath.hpp FileSystem.cpp FileSystem.hpp FixWord.hpp \
-	Font.cpp Font.hpp FontCache.cpp FontCache.hpp FontEncoding.cpp \
-	FontEncoding.hpp FontEngine.cpp FontEngine.hpp FontManager.cpp \
-	FontManager.hpp FontMap.cpp FontMap.hpp FontMetrics.cpp \
-	FontMetrics.hpp FontStyle.hpp FontWriter.cpp FontWriter.hpp \
-	GFGlyphTracer.cpp GFGlyphTracer.hpp GFReader.cpp GFReader.hpp \
-	GFTracer.cpp GFTracer.hpp Ghostscript.cpp Ghostscript.hpp \
-	Glyph.hpp GlyphTracerMessages.hpp GraphicsPath.hpp \
+	EncFile.cpp EncFile.hpp EPSFile.cpp EPSFile.hpp EPSToSVG.hpp \
+	FileFinder.cpp FileFinder.hpp FilePath.cpp FilePath.hpp \
+	FileSystem.cpp FileSystem.hpp FixWord.hpp Font.cpp Font.hpp \
+	FontCache.cpp FontCache.hpp FontEncoding.cpp FontEncoding.hpp \
+	FontEngine.cpp FontEngine.hpp FontManager.cpp FontManager.hpp \
+	FontMap.cpp FontMap.hpp FontMetrics.cpp FontMetrics.hpp \
+	FontStyle.hpp FontWriter.cpp FontWriter.hpp GFGlyphTracer.cpp \
+	GFGlyphTracer.hpp GFReader.cpp GFReader.hpp GFTracer.cpp \
+	GFTracer.hpp Ghostscript.cpp Ghostscript.hpp Glyph.hpp \
+	GlyphTracerMessages.hpp GraphicsPath.hpp \
 	HtmlSpecialHandler.cpp HtmlSpecialHandler.hpp \
-	HyperlinkManager.cpp HyperlinkManager.hpp InputBuffer.cpp \
-	InputBuffer.hpp InputReader.cpp InputReader.hpp JFM.cpp \
-	JFM.hpp Length.cpp Length.hpp macros.hpp MapLine.cpp \
-	MapLine.hpp Matrix.cpp Matrix.hpp Message.cpp Message.hpp \
-	MessageException.hpp MetafontWrapper.cpp MetafontWrapper.hpp \
-	NoPsSpecialHandler.cpp NoPsSpecialHandler.hpp \
-	NumericRanges.hpp PageRanges.cpp PageRanges.hpp PageSize.cpp \
-	PageSize.hpp Pair.hpp PapersizeSpecialHandler.cpp \
-	PapersizeSpecialHandler.hpp PathClipper.cpp PathClipper.hpp \
-	PDFParser.cpp PDFParser.hpp PdfSpecialHandler.cpp \
-	PdfSpecialHandler.hpp PreScanDVIReader.cpp \
-	PreScanDVIReader.hpp Process.cpp Process.hpp psdefs.cpp \
-	PSFilter.hpp PSInterpreter.cpp PSInterpreter.hpp PSPattern.cpp \
-	PSPattern.hpp PSPreviewFilter.cpp PSPreviewFilter.hpp \
-	PsSpecialHandler.cpp PsSpecialHandler.hpp RangeMap.cpp \
-	RangeMap.hpp ShadingPatch.cpp ShadingPatch.hpp \
-	SignalHandler.cpp SignalHandler.hpp SpecialActions.hpp \
-	SpecialHandler.hpp SpecialManager.cpp SpecialManager.hpp \
-	StreamReader.cpp StreamReader.hpp StreamWriter.cpp \
-	StreamWriter.hpp Subfont.cpp Subfont.hpp SVGCharHandler.cpp \
-	SVGCharHandler.hpp SVGCharHandlerFactory.cpp \
-	SVGCharHandlerFactory.hpp SVGCharPathHandler.cpp \
-	SVGCharPathHandler.hpp SVGCharTspanTextHandler.cpp \
-	SVGCharTspanTextHandler.hpp SVGOutput.cpp SVGOutput.hpp \
-	SVGSingleCharTextHandler.cpp SVGSingleCharTextHandler.hpp \
-	SVGTree.cpp SVGTree.hpp System.cpp System.hpp \
-	TensorProductPatch.cpp TensorProductPatch.hpp Terminal.cpp \
-	Terminal.hpp TFM.cpp TFM.hpp ToUnicodeMap.cpp ToUnicodeMap.hpp \
+	HyperlinkManager.cpp HyperlinkManager.hpp ImageToSVG.cpp \
+	ImageToSVG.hpp InputBuffer.cpp InputBuffer.hpp InputReader.cpp \
+	InputReader.hpp JFM.cpp JFM.hpp Length.cpp Length.hpp \
+	macros.hpp MapLine.cpp MapLine.hpp Matrix.cpp Matrix.hpp \
+	Message.cpp Message.hpp MessageException.hpp \
+	MetafontWrapper.cpp MetafontWrapper.hpp NoPsSpecialHandler.cpp \
+	NoPsSpecialHandler.hpp NumericRanges.hpp PageRanges.cpp \
+	PageRanges.hpp PageSize.cpp PageSize.hpp Pair.hpp \
+	PapersizeSpecialHandler.cpp PapersizeSpecialHandler.hpp \
+	PathClipper.cpp PathClipper.hpp PDFParser.cpp PDFParser.hpp \
+	PDFToSVG.hpp PdfSpecialHandler.cpp PdfSpecialHandler.hpp \
+	PreScanDVIReader.cpp PreScanDVIReader.hpp Process.cpp \
+	Process.hpp psdefs.cpp PSFilter.hpp PSInterpreter.cpp \
+	PSInterpreter.hpp PSPattern.cpp PSPattern.hpp \
+	PSPreviewFilter.cpp PSPreviewFilter.hpp PsSpecialHandler.cpp \
+	PsSpecialHandler.hpp RangeMap.cpp RangeMap.hpp \
+	ShadingPatch.cpp ShadingPatch.hpp SignalHandler.cpp \
+	SignalHandler.hpp SourceInput.cpp SourceInput.hpp \
+	SpecialActions.hpp SpecialHandler.hpp SpecialManager.cpp \
+	SpecialManager.hpp StreamReader.cpp StreamReader.hpp \
+	StreamWriter.cpp StreamWriter.hpp Subfont.cpp Subfont.hpp \
+	SVGCharHandler.cpp SVGCharHandler.hpp \
+	SVGCharHandlerFactory.cpp SVGCharHandlerFactory.hpp \
+	SVGCharPathHandler.cpp SVGCharPathHandler.hpp \
+	SVGCharTspanTextHandler.cpp SVGCharTspanTextHandler.hpp \
+	SVGOutput.cpp SVGOutput.hpp SVGSingleCharTextHandler.cpp \
+	SVGSingleCharTextHandler.hpp SVGTree.cpp SVGTree.hpp \
+	System.cpp System.hpp TensorProductPatch.cpp \
+	TensorProductPatch.hpp Terminal.cpp Terminal.hpp TFM.cpp \
+	TFM.hpp ToUnicodeMap.cpp ToUnicodeMap.hpp \
 	TpicSpecialHandler.cpp TpicSpecialHandler.hpp \
 	TriangularPatch.cpp TriangularPatch.hpp TrueTypeFont.cpp \
 	TrueTypeFont.hpp TTFAutohint.cpp TTFAutohint.hpp Unicode.cpp \
@@ -683,7 +688,6 @@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Directory.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DvisvgmSpecialHandler.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EPSFile.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EPSToSVG.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EmSpecialHandler.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EncFile.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/FileFinder.Po at am__quote@
@@ -703,6 +707,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Ghostscript.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HtmlSpecialHandler.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HyperlinkManager.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImageToSVG.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/InputBuffer.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/InputReader.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/JFM.Po at am__quote@
@@ -734,6 +739,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SVGTree.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ShadingPatch.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SignalHandler.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SourceInput.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SpecialManager.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/StreamReader.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/StreamWriter.Po at am__quote@

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -18,7 +18,6 @@
 ** along with this program; if not, see <http://www.gnu.org/licenses/>. **
 *************************************************************************/
 
-#include <stdio.h>
 #include <comdef.h>
 #include <string>
 #include "MessageException.hpp"

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -24,7 +24,7 @@
 using namespace std;
 
 
-bool NoPsSpecialHandler::process (const char *prefix, istream &is, SpecialActions &actions) {
+bool NoPsSpecialHandler::process (const string&, istream&, SpecialActions&) {
 	_count++;
 	return true;
 }
@@ -39,7 +39,7 @@
 }
 
 
-const vector<const char*> NoPsSpecialHandler::prefixes () const {
-	const vector<const char*> pfx {"header=", "psfile=", "PSfile=", "ps:", "ps::", "!", "\""};
+vector<const char*> NoPsSpecialHandler::prefixes() const {
+	vector<const char*> pfx {"header=", "psfile=", "PSfile=", "ps:", "ps::", "!", "\""};
 	return pfx;
 }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/NoPsSpecialHandler.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -23,14 +23,13 @@
 
 #include "SpecialHandler.hpp"
 
-class NoPsSpecialHandler : public SpecialHandler, public DVIEndPageListener
-{
+class NoPsSpecialHandler : public SpecialHandler {
 	public:
 		NoPsSpecialHandler () : _count(0) {}
-		bool process (const char *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 0;}
 		const char* info () const override {return 0;}
-		const std::vector<const char*> prefixes () const override;
+		std::vector<const char*> prefixes() const override;
 
 	protected:
 		void dviEndPage (unsigned pageno, SpecialActions &actions) override;

Added: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PDFToSVG.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PDFToSVG.hpp	                        (rev 0)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PDFToSVG.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -0,0 +1,47 @@
+/*************************************************************************
+** PDFToSVG.hpp                                                         **
+**                                                                      **
+** This file is part of dvisvgm -- a fast DVI to SVG converter          **
+** Copyright (C) 2005-2018 Martin Gieseking <martin.gieseking at 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 PDFTOSVG_HPP
+#define PDFTOSVG_HPP
+
+#include <fstream>
+#include "ImageToSVG.hpp"
+
+class PDFToSVG : public ImageToSVG {
+	public:
+		PDFToSVG (const std::string &fname, SVGOutputBase &out) : ImageToSVG(fname, out) {}
+
+	protected:
+		bool imageIsValid () const override {
+			std::ifstream ifs(filename());
+			if (ifs) {
+				char buf[16];
+				ifs.getline(buf, 16);
+				return std::strncmp(buf, "%PDF-1.", 7) == 0;
+			}
+			return false;
+		}
+		std::string imageFormat () const override {return "PDF";}
+		BoundingBox imageBBox () const override {return BoundingBox();}
+		std::string psSpecialCmd () const override {return "pdffile=";}
+};
+
+#endif
+

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -33,22 +33,10 @@
 using namespace std;
 
 
-const char *PSInterpreter::GSARGS[] = {
-	"gs",                // dummy name
-	"-q",                // be quiet, suppress gs banner
-//	"-dSAFER",           // disallow writing of files
-	"-dNODISPLAY",       // we don't need a display device
-	"-dNOPAUSE",         // keep going
-	"-dWRITESYSTEMDICT", // leave systemdict writable as some operators must be replaced
-	"-dNOPROMPT",
-//	"-dNOBIND",
-};
-
-
 /** Constructs a new PSInterpreter object.
  *  @param[in] actions template methods to be executed after recognizing the corresponding PS operator. */
 PSInterpreter::PSInterpreter (PSActions *actions)
-	: _mode(PS_NONE), _actions(actions), _filter(0), _bytesToRead(0), _inError(false), _initialized(false)
+	: _mode(PS_NONE), _actions(actions)
 {
 }
 
@@ -55,7 +43,17 @@
 
 void PSInterpreter::init () {
 	if (!_initialized) {
-		_gs.init(sizeof(GSARGS)/sizeof(char*), GSARGS, this);
+		vector<const char*> gsargs {
+			"gs",                // dummy name
+			"-q",                // be quiet, suppress gs banner
+			"-dNODISPLAY",       // we don't need a display device
+			"-dNOPAUSE",         // keep going
+			"-dWRITESYSTEMDICT", // leave systemdict writable as some operators must be replaced
+			"-dNOPROMPT"
+		};
+		if (int gsrev = _gs.revision())
+			gsargs.emplace_back(gsrev == 922 ? "-dREALLYDELAYBIND" : "-dDELAYBIND");
+		_gs.init(gsargs.size(), gsargs.data(), this);
 		_gs.set_stdio(input, output, error);
 		_initialized = true;
 		// Before executing any random PS code redefine some operators and run
@@ -265,6 +263,7 @@
 		{"makepattern",    {-1, &PSActions::makepattern}},
 		{"moveto",         { 2, &PSActions::moveto}},
 		{"newpath",        { 1, &PSActions::newpath}},
+		{"pdfpagebox",     { 4, &PSActions::pdfpagebox}},
 		{"querypos",       { 2, &PSActions::querypos}},
 		{"raw",            {-1, nullptr}},
 		{"restore",        { 1, &PSActions::restore}},
@@ -271,6 +270,7 @@
 		{"rotate",         { 1, &PSActions::rotate}},
 		{"save",           { 1, &PSActions::save}},
 		{"scale",          { 2, &PSActions::scale}},
+		{"setblendmode",   { 1, &PSActions::setblendmode}},
 		{"setcmykcolor",   { 4, &PSActions::setcmykcolor}},
 		{"setdash",        {-1, &PSActions::setdash}},
 		{"setgray",        { 1, &PSActions::setgray}},
@@ -281,6 +281,7 @@
 		{"setmatrix",      { 6, &PSActions::setmatrix}},
 		{"setmiterlimit",  { 1, &PSActions::setmiterlimit}},
 		{"setopacityalpha",{ 1, &PSActions::setopacityalpha}},
+		{"setshapealpha",  { 1, &PSActions::setshapealpha}},
 		{"setpagedevice",  { 0, &PSActions::setpagedevice}},
 		{"setpattern",     {-1, &PSActions::setpattern}},
 		{"setrgbcolor",    { 3, &PSActions::setrgbcolor}},

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PSInterpreter.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -55,11 +55,13 @@
 	virtual void makepattern (std::vector<double> &p) =0;
 	virtual void moveto (std::vector<double> &p) =0;
 	virtual void newpath (std::vector<double> &p) =0;
+	virtual void pdfpagebox (std::vector<double> &p) =0;
 	virtual void querypos (std::vector<double> &p) =0;
 	virtual void restore (std::vector<double> &p) =0;
 	virtual void rotate (std::vector<double> &p) =0;
 	virtual void save (std::vector<double> &p) =0;
 	virtual void scale (std::vector<double> &p) =0;
+	virtual void setblendmode (std::vector<double> &p) =0;
 	virtual void setcmykcolor (std::vector<double> &cmyk) =0;
 	virtual void setdash (std::vector<double> &p) =0;
 	virtual void setgray (std::vector<double> &p) =0;
@@ -70,10 +72,11 @@
 	virtual void setmatrix (std::vector<double> &p) =0;
 	virtual void setmiterlimit (std::vector<double> &p) =0;
 	virtual void setopacityalpha (std::vector<double> &p) =0;
+	virtual void setshapealpha (std::vector<double> &p) =0;
 	virtual void setpagedevice (std::vector<double> &p) =0;
 	virtual void setpattern (std::vector<double> &p) =0;
 	virtual void setrgbcolor (std::vector<double> &rgb) =0;
-	virtual void shfill (std::vector<double> &rgb) =0;
+	virtual void shfill (std::vector<double> &p) =0;
 	virtual void stroke (std::vector<double> &p) =0;
 	virtual void translate (std::vector<double> &p) =0;
 	virtual void executed () {}  // triggered if one of the above PS operators has been executed
@@ -113,15 +116,14 @@
 	private:
 		Ghostscript _gs;
 		Mode _mode;                        ///< current execution mode
-		PSActions *_actions;               ///< actions to be performed
-		PSFilter *_filter;                 ///< active filter used to process PS code
-		size_t _bytesToRead;               ///< if > 0, maximal number of bytes to be processed by following calls of execute()
+		PSActions *_actions=nullptr;       ///< actions to be performed
+		PSFilter *_filter=nullptr;         ///< active filter used to process PS code
+		size_t _bytesToRead=0;             ///< if > 0, maximal number of bytes to be processed by following calls of execute()
 		std::vector<char> _linebuf;
 		std::string _errorMessage;         ///< text of error message
-		bool _inError;                     ///< true if scanning error message
-		bool _initialized;                 ///< true if PSInterpreter has been completely initialized
+		bool _inError=false;               ///< true if scanning error message
+		bool _initialized=false;           ///< true if PSInterpreter has been completely initialized
 		std::vector<std::string> _rawData; ///< raw data received
-		static const char *GSARGS[];       ///< parameters passed to Ghostscript
 		static const char *PSDEFS;         ///< initial PostScript definitions
 };
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -24,11 +24,11 @@
 
 using namespace std;
 
-void PapersizeSpecialHandler::preprocess (const char*, std::istream &is, SpecialActions &actions) {
+void PapersizeSpecialHandler::preprocess (const string&, std::istream &is, SpecialActions &actions) {
 	string params;
 	is >> params;
 	Length w, h;
-	size_t splitpos = params.find(',');
+	const size_t splitpos = params.find(',');
 	try {
 		if (splitpos == string::npos) {
 			w.set(params);
@@ -45,7 +45,7 @@
 }
 
 
-bool PapersizeSpecialHandler::process (const char*, std::istream&, SpecialActions&) {
+bool PapersizeSpecialHandler::process (const string&, std::istream&, SpecialActions&) {
 	return true;
 }
 
@@ -92,7 +92,7 @@
 }
 
 
-const vector<const char*> PapersizeSpecialHandler::prefixes () const {
-	const vector<const char*> pfx {"papersize="};
+vector<const char*> PapersizeSpecialHandler::prefixes() const {
+	vector<const char*> pfx {"papersize="};
 	return pfx;
 }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PapersizeSpecialHandler.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -26,16 +26,16 @@
 #include "Length.hpp"
 #include "SpecialHandler.hpp"
 
-class PapersizeSpecialHandler : public SpecialHandler, public DVIEndPageListener {
+class PapersizeSpecialHandler : public SpecialHandler {
 	using DoublePair = std::pair<double,double>;       // (width, height)
 	using PageSize = std::pair<unsigned,DoublePair>;   // page number -> (width, height)
 
 	public:
-		void preprocess (const char *prefix, std::istream &is, SpecialActions &actions) override;
-		bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
+		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* info () const override {return "special to set the page size";}
 		const char* name () const override {return "papersize";}
-		const std::vector<const char*> prefixes () const override;
+		std::vector<const char*> prefixes() const override;
 		void storePaperSize (unsigned pageno, Length width, Length height);
 		void reset () {_pageSizes.clear();}
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -39,10 +39,10 @@
 using CmdHandler = void (PdfSpecialHandler::*)(StreamInputReader&, SpecialActions&);
 
 
-void PdfSpecialHandler::preprocess (const char*, istream &is, SpecialActions &actions) {
+void PdfSpecialHandler::preprocess (const string&, istream &is, SpecialActions &actions) {
 	StreamInputReader ir(is);
 	ir.skipSpace();
-	string cmdstr = ir.getWord();
+	const string cmdstr = ir.getWord();
 	static unordered_map<string, CmdHandler> commands = {
 		{"bann",     &PdfSpecialHandler::preprocessBeginAnn},
 		{"bannot",   &PdfSpecialHandler::preprocessBeginAnn},
@@ -56,11 +56,11 @@
 }
 
 
-bool PdfSpecialHandler::process (const char*, istream &is, SpecialActions &actions) {
+bool PdfSpecialHandler::process (const string&, istream &is, SpecialActions &actions) {
 	_active = true;
 	StreamInputReader ir(is);
 	ir.skipSpace();
-	string cmdstr = ir.getWord();
+	const string cmdstr = ir.getWord();
 	ir.skipSpace();
 	// dvipdfm(x) specials currently supported
 	static unordered_map<string, CmdHandler> commands = {
@@ -283,7 +283,7 @@
 }
 
 
-const vector<const char*> PdfSpecialHandler::prefixes () const {
-	const vector<const char*> pfx {"pdf:"};
+vector<const char*> PdfSpecialHandler::prefixes() const {
+	vector<const char*> pfx {"pdf:"};
 	return pfx;
 }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PdfSpecialHandler.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -25,13 +25,13 @@
 
 class StreamInputReader;
 
-class PdfSpecialHandler : public SpecialHandler, public DVIPositionListener, public DVIEndPageListener {
+class PdfSpecialHandler : public SpecialHandler {
 	public:
 		const char* info () const override {return "PDF hyperlink, font map, and pagesize specials";}
 		const char* name () const override {return "pdf";}
-		const std::vector<const char*> prefixes () const override;
-		void preprocess (const char *prefix, std::istream &is, SpecialActions &actions) override;
-		bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
+		std::vector<const char*> prefixes() const override;
+		void preprocess (const std::string &prefix, std::istream &is, SpecialActions &actions) override;
+		bool process (const std::string &prefix, std::istream &is, SpecialActions &actions) override;
 
 	protected:
 		// handlers for corresponding PDF specials

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Process.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Process.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/Process.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -76,8 +76,10 @@
 	if (!subprocess.run(_cmd, _paramstr))
 		return false;
 	for (;;) {
-		if (out)
+		if (out) {
+			out->clear();
 			subprocess.readFromPipe(*out);
+		}
 		Subprocess::State state = subprocess.state();
 		if (state != Subprocess::State::RUNNING)
 			return state == Subprocess::State::FINISHED;
@@ -133,12 +135,22 @@
 		return false;
 
 	bool success=false;
-	DWORD len;
-	while (PeekNamedPipe(_pipeReadHandle, NULL, 0, NULL, &len, NULL) && len > 0) {  // prevent blocking
-		char buf[4096];
-		success = ReadFile(_pipeReadHandle, buf, sizeof(buf), &len, NULL);
-		if (success && len > 0)
+	bool processExited=false;
+	DWORD len=0;
+	while (PeekNamedPipe(_pipeReadHandle, NULL, 0, NULL, &len, NULL)) {  // prevent blocking
+		if (len == 0) {
+			if (processExited)
+				break;
+			// process still busy
+			processExited = (!_childProcHandle || WaitForSingleObject(_childProcHandle, 100) != WAIT_TIMEOUT);
+		}
+		else {
+			char buf[4096];
+			success = ReadFile(_pipeReadHandle, buf, sizeof(buf), &len, NULL);
+			if (!success || len == 0)
+				break;
 			out.append(buf, len);
+		}
 	}
 	return success;
 }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -18,6 +18,7 @@
 ** along with this program; if not, see <http://www.gnu.org/licenses/>. **
 *************************************************************************/
 
+#include <array>
 #include <cmath>
 #include <fstream>
 #include <memory>
@@ -24,6 +25,7 @@
 #include <sstream>
 #include "EPSFile.hpp"
 #include "FileFinder.hpp"
+#include "FileSystem.hpp"
 #include "Message.hpp"
 #include "PathClipper.hpp"
 #include "PSPattern.hpp"
@@ -34,18 +36,9 @@
 #include "TensorProductPatch.hpp"
 #include "TriangularPatch.hpp"
 
-
 using namespace std;
 
 
-static inline double str2double (const string &str) {
-	double ret;
-	istringstream iss(str);
-	iss >> ret;
-	return ret;
-}
-
-
 bool PsSpecialHandler::COMPUTE_CLIPPATHS_INTERSECTIONS = false;
 bool PsSpecialHandler::SHADING_SEGMENT_OVERLAP = false;
 int PsSpecialHandler::SHADING_SEGMENT_SIZE = 20;
@@ -85,7 +78,8 @@
 	_linecap = _linejoin = 0;  // butt end caps and miter joins
 	_miterlimit = 4;
 	_xmlnode = _savenode = nullptr;
-	_opacityalpha = 1;  // fully opaque
+	_opacityalpha = _shapealpha = 1;  // fully opaque
+	_blendmode = 0; // "normal" mode (no blending)
 	_sx = _sy = _cos = 1.0;
 	_pattern = nullptr;
 	_currentcolor = Color::BLACK;
@@ -170,17 +164,17 @@
 }
 
 
-void PsSpecialHandler::preprocess (const char *prefix, istream &is, SpecialActions &actions) {
+void PsSpecialHandler::preprocess (const string &prefix, istream &is, SpecialActions &actions) {
 	initialize();
 	if (_psSection != PS_HEADERS)
 		return;
 
 	_actions = &actions;
-	if (*prefix == '!') {
+	if (prefix == "!") {
 		_headerCode += "\n";
 		_headerCode += string(istreambuf_iterator<char>(is), istreambuf_iterator<char>());
 	}
-	else if (strcmp(prefix, "header=") == 0) {
+	else if (prefix == "header=") {
 		// read and execute PS header file
 		string fname;
 		is >> fname;
@@ -189,9 +183,9 @@
 }
 
 
-bool PsSpecialHandler::process (const char *prefix, istream &is, SpecialActions &actions) {
+bool PsSpecialHandler::process (const string &prefix, istream &is, SpecialActions &actions) {
 	// process PS headers only once (in prescan)
-	if (*prefix == '!' || strcmp(prefix, "header=") == 0)
+	if (prefix == "!" || prefix == "header=")
 		return true;
 
 	_actions = &actions;
@@ -199,7 +193,7 @@
 	if (_psSection != PS_BODY)
 		enterBodySection();
 
-	if (*prefix == '"' || strcmp(prefix, "pst:") == 0) {
+	if (prefix == "\"" || prefix == "pst:") {
 		// read and execute literal PostScript code (isolated by a wrapping save/restore pair)
 		moveToDVIPos();
 		_psi.execute("\n at beginspecial @setspecial ");
@@ -206,16 +200,16 @@
 		executeAndSync(is, false);
 		_psi.execute("\n at endspecial ");
 	}
-	else if (strcmp(prefix, "psfile=") == 0 || strcmp(prefix, "PSfile=") == 0) {
+	else if (prefix == "psfile=" || prefix == "PSfile=" || prefix == "pdffile=") {
 		if (_actions) {
 			StreamInputReader in(is);
-			string fname = in.getQuotedString(in.peek() == '"' ? '"' : 0);
+			const string fname = in.getQuotedString(in.peek() == '"' ? '"' : 0);
 			unordered_map<string,string> attr;
 			in.parseAttributes(attr);
-			psfile(fname, attr);
+			imgfile(prefix == "pdffile=" ? FileType::PDF : FileType::EPS, fname, attr);
 		}
 	}
-	else if (strcmp(prefix, "ps::") == 0) {
+	else if (prefix == "ps::") {
 		if (_actions)
 			_actions->finishLine();  // reset DVI position on next DVI command
 		if (is.peek() == '[') {
@@ -266,46 +260,57 @@
 }
 
 
-/** Handles psfile special.
- *  @param[in] fname EPS file to be included
- *  @param[in] attr attributes given with \\special psfile */
-void PsSpecialHandler::psfile (const string &fname, const unordered_map<string,string> &attr) {
+/** Handles a psfile/pdffile special which places an external EPS/PDF graphic
+ *  at the current DVI position. The lower left corner (llx,lly) of the
+ *  given bounding box is placed at the DVI position.
+ *  @param[in] filetype type of file to process (EPS or PDF)
+ *  @param[in] fname EPS/PDF file to be included
+ *  @param[in] attr attributes given with psfile/pdffile special */
+void PsSpecialHandler::imgfile (FileType filetype, const string &fname, const unordered_map<string,string> &attr) {
 	const char *filepath = FileFinder::instance().lookup(fname, false);
+	if (!filepath && FileSystem::exists(fname))
+		filepath = fname.c_str();
 	if (!filepath) {
-		Message::wstream(true) << "file '" << fname << "' not found in special 'psfile'\n";
+		Message::wstream(true) << "file '" << fname << "' not found\n";
 		return;
 	}
 	unordered_map<string,string>::const_iterator it;
 
-	// bounding box of EPS figure (lower left and upper right corner)
-	double llx = (it = attr.find("llx")) != attr.end() ? str2double(it->second) : 0;
-	double lly = (it = attr.find("lly")) != attr.end() ? str2double(it->second) : 0;
-	double urx = (it = attr.find("urx")) != attr.end() ? str2double(it->second) : 0;
-	double ury = (it = attr.find("ury")) != attr.end() ? str2double(it->second) : 0;
+	// bounding box of EPS figure in PS point units (lower left and upper right corner)
+	double llx = (it = attr.find("llx")) != attr.end() ? stod(it->second) : 0;
+	double lly = (it = attr.find("lly")) != attr.end() ? stod(it->second) : 0;
+	double urx = (it = attr.find("urx")) != attr.end() ? stod(it->second) : 0;
+	double ury = (it = attr.find("ury")) != attr.end() ? stod(it->second) : 0;
 
-	// desired width/height of resulting figure
-	double rwi = (it = attr.find("rwi")) != attr.end() ? str2double(it->second)/10.0 : -1;
-	double rhi = (it = attr.find("rhi")) != attr.end() ? str2double(it->second)/10.0 : -1;
+	if (filetype == FileType::PDF && llx == 0 && lly == 0 && urx == 0 && ury == 0) {
+		_psi.execute("\n("+fname+")@getpdfpagebox ");
+		if (_pdfpagebox.valid()) {
+			llx = _pdfpagebox.minX();
+			lly = _pdfpagebox.minY();
+			urx = _pdfpagebox.maxX();
+			ury = _pdfpagebox.maxY();
+		}
+	}
+
+	// desired width and height of the untransformed figure in PS point units
+	double rwi = (it = attr.find("rwi")) != attr.end() ? stod(it->second)/10.0 : -1;
+	double rhi = (it = attr.find("rhi")) != attr.end() ? stod(it->second)/10.0 : -1;
 	if (rwi == 0 || rhi == 0 || urx-llx == 0 || ury-lly == 0)
 		return;
 
 	// user transformations (default values chosen according to dvips manual)
-	double hoffset = (it = attr.find("hoffset")) != attr.end() ? str2double(it->second) : 0;
-	double voffset = (it = attr.find("voffset")) != attr.end() ? str2double(it->second) : 0;
-//	double hsize   = (it = attr.find("hsize")) != attr.end() ? str2double(it->second) : 612;
-//	double vsize   = (it = attr.find("vsize")) != attr.end() ? str2double(it->second) : 792;
-	double hscale  = (it = attr.find("hscale")) != attr.end() ? str2double(it->second) : 100;
-	double vscale  = (it = attr.find("vscale")) != attr.end() ? str2double(it->second) : 100;
-	double angle   = (it = attr.find("angle")) != attr.end() ? str2double(it->second) : 0;
+	// order of transformations: rotate, scale, translate/offset
+	double hoffset = (it = attr.find("hoffset")) != attr.end() ? stod(it->second) : 0;
+	double voffset = (it = attr.find("voffset")) != attr.end() ? stod(it->second) : 0;
+//	double hsize   = (it = attr.find("hsize")) != attr.end() ? stod(it->second) : 612;
+//	double vsize   = (it = attr.find("vsize")) != attr.end() ? stod(it->second) : 792;
+	double hscale  = (it = attr.find("hscale")) != attr.end() ? stod(it->second) : 100;
+	double vscale  = (it = attr.find("vscale")) != attr.end() ? stod(it->second) : 100;
+	double angle   = (it = attr.find("angle")) != attr.end() ? stod(it->second) : 0;
 
-	Matrix m(1);
-	m.rotate(angle).scale(hscale/100, vscale/100).translate(hoffset, voffset);
-	BoundingBox bbox(llx, lly, urx, ury);
-	bbox.transform(m);
-
 	// compute factors to scale the bounding box to width rwi and height rhi
-	double sx = rwi/bbox.width();
-	double sy = rhi/bbox.height();
+	double sx = rwi/abs(llx-urx);
+	double sy = rhi/abs(lly-ury);
 	if (sx == 0 || sy == 0)
 		return;
 
@@ -314,8 +319,8 @@
 	if (sx < 0) sx = sy = 1.0;   // neither rwi nor rhi set
 
 	// save current DVI position
-	const double x = _actions->getX();
-	const double y = _actions->getY();
+	double x = _actions->getX();
+	double y = _actions->getY();
 
 	// all following drawings are relative to (0,0)
 	_actions->setX(0);
@@ -322,26 +327,24 @@
 	_actions->setY(0);
 	moveToDVIPos();
 
-	// transform current DVI position and bounding box location
-	// according to current transformation matrix
-	DPair llTrans = _actions->getMatrix()*DPair(llx, -lly);
-	DPair urTrans = _actions->getMatrix()*DPair(urx, -ury);
-	DPair dviposTrans = _actions->getMatrix()*DPair(x, y);
-
 	auto groupNode = util::make_unique<XMLElementNode>("g");  // append following elements to this group
 	_xmlnode = groupNode.get();
-	_psi.execute("\n at beginspecial @setspecial /setpagedevice{@setpagedevice}def "); // enter \special environment
-	EPSFile epsfile(filepath);
-	_psi.limit(epsfile.pslength());  // limit the number of bytes going to be processed
-	_psi.execute(epsfile.istream()); // process EPS file
-	_psi.limit(0);                   // disable limitation
-	_psi.execute("\n at endspecial ");  // leave special environment
+	_psi.execute(
+		"\n at beginspecial @setspecial"        // enter special environment
+		"/setpagedevice{@setpagedevice}def"  // activate processing of operator "setpagedevice"
+		"[1 0 0 -1 0 0] setmatrix"           // don't apply outer PS transformations
+		"(" + string(filepath) + ")run "     // execute file content
+		"@endspecial "                       // leave special environment
+	);
 	if (!groupNode->empty()) {       // has anything been drawn?
 		Matrix matrix(1);
-		matrix.rotate(angle).scale(hscale/100, vscale/100).translate(hoffset, voffset);
-		matrix.translate(-llTrans);
-		matrix.scale(sx, sy);          // resize image to width "rwi" and height "rhi"
-		matrix.translate(dviposTrans); // move image to current DVI position
+		if (filetype == FileType::PDF)
+			matrix.translate(-llx, -lly).scale(1, -1); //.translate(0, lly);  // flip vertically
+		else
+			matrix.translate(-llx, lly);
+		matrix.scale(sx, sy).rotate(-angle).scale(hscale/100, vscale/100);
+		matrix.translate(x+hoffset, y-voffset); // move image to current DVI position
+		matrix.rmultiply(_actions->getMatrix());
 		if (!matrix.isIdentity())
 			groupNode->addAttribute("transform", matrix.getSVG());
 		_actions->appendToPage(std::move(groupNode));
@@ -354,10 +357,12 @@
 	moveToDVIPos();
 
 	// update bounding box
-	m.scale(sx, -sy);
-	m.translate(dviposTrans);
-	bbox = BoundingBox(DPair(0, 0), abs(urTrans-llTrans));
-	bbox.transform(m);
+	BoundingBox bbox(0, 0, urx-llx, ury-lly);
+	Matrix matrix(1);
+	matrix.scale(sx, -sy).rotate(-angle).scale(hscale/100, vscale/100);
+	matrix.translate(x+hoffset, y-voffset);
+	matrix.rmultiply(_actions->getMatrix());
+	bbox.transform(matrix);
 	_actions->embed(bbox);
 }
 
@@ -474,7 +479,8 @@
 	_linewidth = 1;
 	_linecap = _linejoin = 0;  // butt end caps and miter joins
 	_miterlimit = 4;
-	_opacityalpha = 1;  // fully opaque
+	_opacityalpha = _shapealpha = 1;  // fully opaque
+	_blendmode = 0; // "normal" mode (no blending)
 	_sx = _sy = _cos = 1.0;
 	_pattern = nullptr;
 	_currentcolor = Color::BLACK;
@@ -529,6 +535,17 @@
 }
 
 
+static string css_blendmode_name (int mode) {
+	static const array<const char*,16> modenames = {{
+	  "normal",  "multiply",  "screen", "overlay", "soft-light", "hard-light", "color-dodge", "color-burn",
+	  "darken", "lighten", "difference", "exclusion", "hue", "saturation", "color", "luminosity"
+	}};
+	if (mode < 0 || mode > 15)
+		return "";
+	return modenames[mode];
+}
+
+
 /** Draws the current path recorded by previously executed path commands (moveto, lineto,...).
  *  @param[in] p not used */
 void PsSpecialHandler::stroke (vector<double> &p) {
@@ -578,8 +595,10 @@
 			path->addAttribute("stroke-linecap", _linecap == 1 ? "round" : "square");
 		if (_linejoin > 0)    // default value is "miter", no need to set it explicitly
 			path->addAttribute("stroke-linejoin", _linecap == 1 ? "round" : "bevel");
-		if (_opacityalpha < 1)
-			path->addAttribute("stroke-opacity", _opacityalpha);
+		if (_opacityalpha < 1 || _shapealpha < 1)
+			path->addAttribute("stroke-opacity", _opacityalpha*_shapealpha);
+		if (_blendmode > 0 && _blendmode < 16)
+			path->addAttribute("style", "mix-blend-mode:"+css_blendmode_name(_blendmode));
 		if (!_dashpattern.empty()) {
 			ostringstream oss;
 			for (size_t i=0; i < _dashpattern.size(); i++) {
@@ -647,8 +666,10 @@
 	}
 	if (evenodd)  // SVG default fill rule is "nonzero" algorithm
 		path->addAttribute("fill-rule", "evenodd");
-	if (_opacityalpha < 1)
-		path->addAttribute("fill-opacity", _opacityalpha);
+	if (_opacityalpha < 1 || _shapealpha < 1)
+		path->addAttribute("fill-opacity", _opacityalpha*_shapealpha);
+	if (_blendmode > 0 && _blendmode < 16)
+		path->addAttribute("style", "mix-blend-mode:"+css_blendmode_name(_blendmode));
 	if (_xmlnode)
 		_xmlnode->append(std::move(path));
 	else {
@@ -1246,9 +1267,10 @@
 }
 
 
-const vector<const char*> PsSpecialHandler::prefixes () const {
-	const vector<const char*> pfx {
+vector<const char*> PsSpecialHandler::prefixes() const {
+	vector<const char*> pfx {
 		"header=",    // read and execute PS header file prior to the following PS statements
+		"pdffile=",   // process PDF file
 		"psfile=",    // read and execute PS file
 		"PSfile=",    // dito
 		"ps:",        // execute literal PS code wrapped by @beginspecial and @endspecial

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/PsSpecialHandler.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -36,7 +36,7 @@
 class PSPattern;
 class XMLElementNode;
 
-class PsSpecialHandler : public SpecialHandler, public DVIEndPageListener, protected PSActions {
+class PsSpecialHandler : public SpecialHandler, protected PSActions {
 	using Path = GraphicsPath<double>;
 	using ColorSpace = Color::ColorSpace;
 
@@ -76,6 +76,7 @@
 	};
 
 	enum PsSection {PS_NONE, PS_HEADERS, PS_BODY};
+	enum class FileType {EPS, PDF};
 
 	public:
 		PsSpecialHandler ();
@@ -82,9 +83,9 @@
 		~PsSpecialHandler ();
 		const char* name () const override {return "ps";}
 		const char* info () const override {return "dvips PostScript specials";}
-		const std::vector<const char*> prefixes () const override;
-		void preprocess (const char *prefix, std::istream &is, SpecialActions &actions) override;
-		bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
+		std::vector<const char*> prefixes() const override;
+		void preprocess (const std::string &prefix, std::istream &is, SpecialActions &actions) override;
+		bool process (const std::string &prefix, std::istream &is, SpecialActions &actions) override;
 		void setDviScaleFactor (double dvi2bp) override {_previewFilter.setDviScaleFactor(dvi2bp);}
 		void enterBodySection ();
 
@@ -100,7 +101,7 @@
 		void moveToDVIPos ();
 		void executeAndSync (std::istream &is, bool updatePos);
 		void processHeaderFile (const char *fname);
-		void psfile (const std::string &fname, const std::unordered_map<std::string,std::string> &attr);
+		void imgfile (FileType type, const std::string &fname, const std::unordered_map<std::string,std::string> &attr);
 		void dviEndPage (unsigned pageno, SpecialActions &actions) override;
 		void clip (Path &path, bool evenodd);
 		void processSequentialPatchMesh (int shadingTypeID, ColorSpace cspace, VectorIterator<double> &it);
@@ -127,11 +128,13 @@
 		void makepattern (std::vector<double> &p) override;
 		void moveto (std::vector<double> &p) override;
 		void newpath (std::vector<double> &p) override;
+		void pdfpagebox (std::vector<double> &p) override      {_pdfpagebox = BoundingBox(p[0], p[1], p[2], p[3]);}
 		void querypos (std::vector<double> &p) override        {_currentpoint = DPair(p[0], p[1]);}
 		void restore (std::vector<double> &p) override;
 		void rotate (std::vector<double> &p) override;
 		void save (std::vector<double> &p) override;
 		void scale (std::vector<double> &p) override;
+		void setblendmode (std::vector<double> &p) override    {_blendmode = int(p[0]);}
 		void setcmykcolor (std::vector<double> &cmyk) override;
 		void setdash (std::vector<double> &p) override;
 		void setgray (std::vector<double> &p) override;
@@ -142,6 +145,7 @@
 		void setmatrix (std::vector<double> &p) override;
 		void setmiterlimit (std::vector<double> &p) override   {_miterlimit = p[0];}
 		void setopacityalpha (std::vector<double> &p) override {_opacityalpha = p[0];}
+		void setshapealpha (std::vector<double> &p) override   {_shapealpha = p[0];}
 		void setpagedevice (std::vector<double> &p) override;
 		void setpattern (std::vector<double> &p) override;
 		void setrgbcolor (std::vector<double> &rgb) override;
@@ -166,6 +170,8 @@
 		double _linewidth;          ///< current line width in bp units
 		double _miterlimit;         ///< current miter limit in bp units
 		double _opacityalpha;       ///< opacity level (0=fully transparent, ..., 1=opaque)
+		double _shapealpha;         ///< shape opacity level (0=fully transparent, ..., 1=opaque)
+		int _blendmode;             ///< blend mode used when overlaying colored areas
 		uint8_t _linecap  : 2;      ///< current line cap (0=butt, 1=round, 2=projecting square)
 		uint8_t _linejoin : 2;      ///< current line join (0=miter, 1=round, 2=bevel)
 		double _dashoffset;         ///< current dash offset
@@ -173,6 +179,7 @@
 		ClippingStack _clipStack;
 		std::unordered_map<int, std::unique_ptr<PSPattern>> _patterns;
 		PSTilingPattern *_pattern;  ///< current pattern
+		BoundingBox _pdfpagebox;
 };
 
 #endif

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -125,11 +125,11 @@
 void RangeMap::adaptNeighbors (Ranges::iterator it) {
 	if (it != _ranges.end()) {
 		// adapt left neighbor
-		if (it != _ranges.begin() && it->min() <= (it-1)->max()) {
-			Ranges::iterator lit = it-1;  // points to left neighbor
+		Ranges::iterator lit = it-1;    // points to left neighbor
+		if (it != _ranges.begin() && it->min() <= lit->max()) {
 			bool left_neighbor_valid = (it->min() > 0 && it->min()-1 >= lit->min());
-			if (left_neighbor_valid)      // is adapted left neighbor valid?
-				lit->max(it->min()-1);     // => assign new max value
+			if (left_neighbor_valid)     // is adapted left neighbor valid?
+				lit->max(it->min()-1);  // => assign new max value
 			if (!left_neighbor_valid || it->join(*lit))
 				it = _ranges.erase(lit);
 		}

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -33,8 +33,9 @@
 
 using namespace std;
 
-SVGOutput::SVGOutput (const char *base, const string &pattern, int zipLevel)
-	: _path(base ? base : ""), _pattern(pattern), _stdout(base == 0), _zipLevel(zipLevel), _page(-1)
+
+SVGOutput::SVGOutput (const string &base, const string &pattern, int zipLevel)
+	: _path(base), _pattern(pattern), _stdout(base.empty()), _zipLevel(zipLevel), _page(-1)
 {
 }
 
@@ -46,8 +47,15 @@
 ostream& SVGOutput::getPageStream (int page, int numPages) const {
 	string fname = filename(page, numPages);
 	if (fname.empty()) {
-		_osptr.reset();
-		return cout;
+		if (_zipLevel == 0) {
+			_osptr.reset();
+			return cout;
+		}
+#ifdef _WIN32
+		if (_setmode(_fileno(stdout), _O_BINARY) == -1)
+			throw MessageException("can't open stdout in binary mode");
+#endif
+		return *(_osptr = util::make_unique<ZLibOutputStream>(cout, ZLIB_GZIP, _zipLevel));
 	}
 	if (page == _page)
 		return *_osptr;
@@ -54,9 +62,9 @@
 
 	_page = page;
 	if (_zipLevel > 0)
-		_osptr = util::make_unique<ZLibOutputStream>(fname, _zipLevel);
+		_osptr = util::make_unique<ZLibOutputFileStream>(fname, ZLIB_GZIP, _zipLevel);
 	else
-		_osptr = util::make_unique<ofstream>(fname.c_str());
+		_osptr = util::make_unique<ofstream>(fname);
 	if (!_osptr)
 		throw MessageException("can't open file "+fname+" for writing");
 	return *_osptr;

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SVGOutput.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -31,20 +31,17 @@
 	virtual ~SVGOutputBase () =default;
 	virtual std::ostream& getPageStream (int page, int numPages) const =0;
 	virtual std::string filename (int page, int numPages) const =0;
-//	virtual std::string outpath (int page, int numPages) const =0;
 };
 
 
-class SVGOutput : public SVGOutputBase
-{
+class SVGOutput : public SVGOutputBase {
 	public:
-		SVGOutput () : SVGOutput(0, "", 0) {}
-		SVGOutput (const char *base) : SVGOutput(base, "", 0) {}
-		SVGOutput (const char *base, const std::string &pattern) : SVGOutput(base, pattern, 0) {}
-		SVGOutput (const char *base, const std::string &pattern, int zipLevel);
+		SVGOutput () : SVGOutput("", "", 0) {}
+		SVGOutput (const std::string &base) : SVGOutput(base, "", 0) {}
+		SVGOutput (const std::string &base, const std::string &pattern) : SVGOutput(base, pattern, 0) {}
+		SVGOutput (const std::string &base, const std::string &pattern, int zipLevel);
 		std::ostream& getPageStream (int page, int numPages) const override;
 		std::string filename (int page, int numPages) const override;
-//		std::string outpath (int page, int numPages) const override;
 
 	protected:
 		std::string expandFormatString (std::string str, int page, int numPages) const;

Added: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SourceInput.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SourceInput.cpp	                        (rev 0)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SourceInput.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -0,0 +1,123 @@
+/*************************************************************************
+** SourceInput.cpp                                                      **
+**                                                                      **
+** This file is part of dvisvgm -- a fast DVI to SVG converter          **
+** Copyright (C) 2005-2018 Martin Gieseking <martin.gieseking at 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 <fstream>
+#include <iostream>
+#include "FileSystem.hpp"
+#include "Message.hpp"
+#include "MessageException.hpp"
+#include "SourceInput.hpp"
+#include "utility.hpp"
+
+#ifdef _WIN32
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <windows.h>
+#endif
+
+#ifdef _MSC_VER
+#include <io.h>
+#else
+#include <cstdlib>
+#include <unistd.h>
+#endif
+
+using namespace std;
+
+#ifdef _WIN32
+static int fdwrite (int fd, const char *buf, size_t len) {return _write(fd, buf, len);}
+static int fdclose (int fd) {return _close(fd);}
+#else
+static int fdwrite (int fd, const char *buf, size_t len) {return write(fd, buf, len);}
+static int fdclose (int fd) {return close(fd);}
+#endif
+
+
+SourceInput::~SourceInput () {
+	// remove temporary file created for reading from stdin
+	if (!_tmpfilepath.empty())
+		FileSystem::remove(_tmpfilepath);
+}
+
+
+/** Creates a temporary file in the configured tmp folder.
+ *  @param[out] path path of the created file
+ *  @return file descriptor (>= 0 on success) */
+static int create_tmp_file (string &path) {
+	path = FileSystem::tmpdir();
+#ifndef _WIN32
+	path += "stdinXXXXXX";
+	int fd = mkstemp(&path[0]);
+#else
+	int fd = -1;
+	char fname[MAX_PATH];
+	std::replace(path.begin(), path.end(), '/', '\\');
+	if (GetTempFileName(path.c_str(), "stdin", 0, fname)) {
+		fd = _open(fname, _O_CREAT | _O_WRONLY | _O_BINARY, _S_IWRITE);
+		path = fname;
+	}
+#endif
+	return fd;
+}
+
+
+istream& SourceInput::getInputStream (bool showMessages) {
+	if (!_ifs.is_open()) {
+		if (!_fname.empty())
+			_ifs.open(_fname, ios::binary);
+		else {
+			int fd = create_tmp_file(_tmpfilepath);
+			if (fd < 0)
+				throw MessageException("can't create temporary file for writing");
+#ifdef _WIN32
+			if (_setmode(_fileno(stdin), _O_BINARY) == -1)
+				throw MessageException("can't open stdin in binary mode");
+#endif
+			if (showMessages)
+				Message::mstream() << "reading from " << getMessageFileName() << '\n';
+			char buf[1024];
+			while (cin) {
+				cin.read(buf, 1024);
+				size_t count = cin.gcount();
+				if (fdwrite(fd, buf, count) < 0)
+					throw MessageException("failed to write data to temporary file");
+			}
+			if (fdclose(fd) < 0)
+				throw MessageException("failed to close temporary file");
+			_ifs.open(_tmpfilepath, ios::binary);
+		}
+	}
+	return _ifs;
+}
+
+
+string SourceInput::getFileName () const {
+	return _fname.empty() ? "stdin" : _fname;
+}
+
+
+string SourceInput::getMessageFileName () const {
+	return _fname.empty() ? "<stdin>" : _fname;
+}
+
+
+string SourceInput::getFilePath () const {
+	return _tmpfilepath.empty() ? _fname : _tmpfilepath;
+}


Property changes on: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SourceInput.cpp
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Added: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SourceInput.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SourceInput.hpp	                        (rev 0)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SourceInput.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -0,0 +1,42 @@
+/*************************************************************************
+** SourceInput.hpp                                                      **
+**                                                                      **
+** This file is part of dvisvgm -- a fast DVI to SVG converter          **
+** Copyright (C) 2005-2018 Martin Gieseking <martin.gieseking at 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 DVIINPUT_HPP
+#define DVIINPUT_HPP
+
+#include <fstream>
+#include <string>
+
+class SourceInput {
+	public:
+		SourceInput (const std::string &fname) : _fname(fname) {}
+		~SourceInput ();
+		std::istream& getInputStream (bool showMessages=false);
+		std::string getFileName () const;
+		std::string getMessageFileName () const;
+		std::string getFilePath () const;
+
+	private:
+		const std::string &_fname; ///< name of file to read from
+		std::string _tmpfilepath;  ///< path of temporary file used when reading from stdin
+		std::ifstream _ifs;
+};
+
+#endif
\ No newline at end of file

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialHandler.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialHandler.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialHandler.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -36,30 +36,6 @@
 };
 
 
-struct DVIPreprocessingListener {
-	virtual ~DVIPreprocessingListener () =default;
-	virtual void dviPreprocessingFinished () =0;
-};
-
-
-struct DVIBeginPageListener {
-	virtual ~DVIBeginPageListener () =default;
-	virtual void dviBeginPage (unsigned pageno, SpecialActions &actions) =0;
-};
-
-
-struct DVIEndPageListener {
-	virtual ~DVIEndPageListener () =default;
-	virtual void dviEndPage (unsigned pageno, SpecialActions &actions) =0;
-};
-
-
-struct DVIPositionListener {
-	virtual ~DVIPositionListener () =default;
-	virtual void dviMovedTo (double x, double y, SpecialActions &actions) =0;
-};
-
-
 class SpecialHandler {
 	friend class SpecialManager;
 	public:
@@ -66,11 +42,14 @@
 		virtual ~SpecialHandler () =default;
 		virtual const char* info () const=0;
 		virtual const char* name () const=0;
-		virtual const std::vector<const char*> prefixes () const=0;
+		virtual std::vector<const char*> prefixes() const =0;
 		virtual void setDviScaleFactor (double dvi2bp) {}
-		virtual void preprocess (const char *prefix, std::istream &is, SpecialActions &actions) {}
-		virtual bool process (const char *prefix, std::istream &is, SpecialActions &actions)=0;
+		virtual void preprocess (const std::string &prefix, std::istream &is, SpecialActions &actions) {}
+		virtual bool process (const std::string &prefix, std::istream &is, SpecialActions &actions)=0;
+		virtual void dviPreprocessingFinished () {}
+		virtual void dviBeginPage (unsigned pageno, SpecialActions &actions) {}
+		virtual void dviEndPage (unsigned pageno, SpecialActions &actions) {}
+		virtual void dviMovedTo (double x, double y, SpecialActions &actions) {}
 };
 
-
 #endif

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -40,10 +40,6 @@
 void SpecialManager::unregisterHandlers () {
 	_handlerPool.clear();
 	_handlersByPrefix.clear();
-	_beginPageListeners.clear();
-	_endPageListeners.clear();
-	_preprocListeners.clear();
-	_positionListeners.clear();
 }
 
 
@@ -55,15 +51,6 @@
 		// get array of prefixes this handler is responsible for
 		for (const char *prefix : handler->prefixes())
 			_handlersByPrefix[prefix] = handler.get();
-		// initialize listener vectors
-		if (auto listener = dynamic_cast<DVIPreprocessingListener*>(handler.get()))
-			_preprocListeners.push_back(listener);
-		if (auto listener = dynamic_cast<DVIBeginPageListener*>(handler.get()))
-			_beginPageListeners.push_back(listener);
-		if (auto listener = dynamic_cast<DVIEndPageListener*>(handler.get()))
-			_endPageListeners.push_back(listener);
-		if (auto listener = dynamic_cast<DVIPositionListener*>(handler.get()))
-			_positionListeners.push_back(listener);
 		_handlerPool.emplace_back(std::move(handler));
 	}
 }
@@ -128,9 +115,9 @@
 
 void SpecialManager::preprocess (const string &special, SpecialActions &actions) const {
 	istringstream iss(special);
-	string prefix = extract_prefix(iss);
+	const string prefix = extract_prefix(iss);
 	if (SpecialHandler *handler = findHandlerByPrefix(prefix))
-		handler->preprocess(prefix.c_str(), iss, actions);
+		handler->preprocess(prefix, iss, actions);
 }
 
 
@@ -142,11 +129,11 @@
  *  @throw SpecialException in case of errors during special processing */
 bool SpecialManager::process (const string &special, double dvi2bp, SpecialActions &actions) const {
 	istringstream iss(special);
-	string prefix = extract_prefix(iss);
+	const string prefix = extract_prefix(iss);
 	bool success=false;
 	if (SpecialHandler *handler = findHandlerByPrefix(prefix)) {
 		handler->setDviScaleFactor(dvi2bp);
-		success = handler->process(prefix.c_str(), iss, actions);
+		success = handler->process(prefix, iss, actions);
 	}
 	return success;
 }
@@ -153,26 +140,26 @@
 
 
 void SpecialManager::notifyPreprocessingFinished () const {
-	for (auto *listener : _preprocListeners)
-		listener->dviPreprocessingFinished();
+	for (auto &handler : _handlerPool)
+		handler->dviPreprocessingFinished();
 }
 
 
 void SpecialManager::notifyBeginPage (unsigned pageno, SpecialActions &actions) const {
-	for (auto *listener : _beginPageListeners)
-		listener->dviBeginPage(pageno, actions);
+	for (auto &handler : _handlerPool)
+		handler->dviBeginPage(pageno, actions);
 }
 
 
 void SpecialManager::notifyEndPage (unsigned pageno, SpecialActions &actions) const {
-	for (auto *listener : _endPageListeners)
-		listener->dviEndPage(pageno, actions);
+	for (auto &handler : _handlerPool)
+		handler->dviEndPage(pageno, actions);
 }
 
 
 void SpecialManager::notifyPositionChange (double x, double y, SpecialActions &actions) const {
-	for (auto *listener : _positionListeners)
-		listener->dviMovedTo(x, y, actions);
+	for (auto &handler : _handlerPool)
+		handler->dviMovedTo(x, y, actions);
 }
 
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/SpecialManager.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -57,10 +57,6 @@
 	private:
 		HandlerPool _handlerPool;      ///< stores pointers to all handlers
 		HandlerMap _handlersByPrefix;  ///< pointers to handlers for corresponding prefixes
-		std::vector<DVIPreprocessingListener*> _preprocListeners;
-		std::vector<DVIBeginPageListener*> _beginPageListeners;
-		std::vector<DVIEndPageListener*> _endPageListeners;
-		std::vector<DVIPositionListener*> _positionListeners;
 };
 
 #endif

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -272,14 +272,14 @@
 };
 
 
-bool TpicSpecialHandler::process (const char *prefix, istream &is, SpecialActions &actions) {
-	if (!prefix || strlen(prefix) != 2)
+bool TpicSpecialHandler::process (const string &prefix, istream &is, SpecialActions &actions) {
+	if (prefix.length() != 2)
 		return false;
 	_dviColor = actions.getColor();
 	const double mi2bp=0.072; // factor for milli-inch to PS points
 	StreamInputBuffer ib(is);
 	BufferInputReader ir(ib);
-	switch (cmd_id(prefix)) {
+	switch (cmd_id(prefix.c_str())) {
 		case cmd_id("pn"): // set pen width in milli-inches
 			_penwidth = max(0.0, ir.getDouble()*mi2bp);
 			break;
@@ -358,7 +358,7 @@
 }
 
 
-const vector<const char*> TpicSpecialHandler::prefixes () const {
-	const vector<const char*> pfx {"ar", "bk", "da", "dt", "fp", "ia", "ip", "pa", "pn", "sh", "sp", "tx", "wh"};
+vector<const char*> TpicSpecialHandler::prefixes() const {
+	vector<const char*> pfx {"ar", "bk", "da", "dt", "fp", "ia", "ip", "pa", "pn", "sh", "sp", "tx", "wh"};
 	return pfx;
 }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/TpicSpecialHandler.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -25,14 +25,13 @@
 #include "Pair.hpp"
 #include "SpecialHandler.hpp"
 
-class TpicSpecialHandler : public SpecialHandler, public DVIEndPageListener
-{
+class TpicSpecialHandler : public SpecialHandler {
 	public:
 		TpicSpecialHandler ();
 		const char* info () const override {return "TPIC specials";}
 		const char* name () const override {return "tpic";}
-		const std::vector<const char*> prefixes () const override;
-		bool process (const char *prefix, std::istream &is, SpecialActions &actions) override;
+		std::vector<const char*> prefixes() const override;
+		bool process (const std::string &prefix, std::istream &is, SpecialActions &actions) override;
 		double penwidth () const  {return _penwidth;}
 		double grayLevel () const {return _grayLevel;}
 		Color fillColor (bool grayOnly) const;

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ZLibOutputStream.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ZLibOutputStream.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/ZLibOutputStream.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -21,100 +21,161 @@
 #ifndef ZLIBOUTPUTSTREAM_HPP
 #define ZLIBOUTPUTSTREAM_HPP
 
+#include <fstream>
 #include <ostream>
+#include <vector>
 #include <zlib.h>
+#include "MessageException.hpp"
 
-class ZLibOutputStream;
+#ifdef _WIN32
+#  include <fcntl.h>
+#  include <io.h>
+#endif
 
-class ZLibOutputBuffer : public std::streambuf
-{
-	friend class ZLibOutputStream;
+struct ZLibException : public MessageException {
+	ZLibException (const std::string &msg) : MessageException(msg) {}
+};
+
+enum ZLibCompressionFormat {ZLIB_DEFLATE=0, ZLIB_GZIP=16};
+
+class ZLibOutputBuffer : public std::streambuf {
 	public:
-		~ZLibOutputBuffer () {close();}
+		ZLibOutputBuffer () {}
 
-		/** Opens the buffer object for writing.
-		 *  @param[in] fname name of gzip file
+		ZLibOutputBuffer (std::streambuf *sbuf, ZLibCompressionFormat format, int zipLevel) {
+			open(sbuf, format, zipLevel);
+		}
+
+		~ZLibOutputBuffer () {
+			close();
+		}
+
+		/** Opens the buffer for writing.
+		 *  @param[in] sink stream buffer taking the compressed data
+		 *  @param[in] format compression format (deflate or gzip)
 		 *  @param[in] zipLevel compression level (1-9)
-		 *  @return true on success */
-		bool open (const char *fname, int zipLevel) {
-			if (_opened)
-				return false;
-			zipLevel = std::max(1, std::min(9, zipLevel));
-			std::string modestr = "wb0";
-			modestr[2] += zipLevel;
-			_gzfile = gzopen(fname, modestr.c_str());
-			return _opened = (_gzfile != nullptr);
+		 *  @return true if buffer is ready for writing */
+		bool open (std::streambuf *sink, ZLibCompressionFormat format, int zipLevel) {
+			if (sink) {
+				_inbuf.reserve(4096);
+				_zbuf.resize(4096);
+				_zstream.zalloc = Z_NULL;
+				_zstream.zfree = Z_NULL;
+				_zstream.opaque = Z_NULL;
+				zipLevel = std::max(1, std::min(9, zipLevel));
+				if (deflateInit2(&_zstream, zipLevel, Z_DEFLATED, 15+format, 8, Z_DEFAULT_STRATEGY) != Z_OK)
+					throw ZLibException("failed to initialize deflate compression");
+				_sink = sink;
+				_opened = true;
+			}
+			return _opened;
 		}
 
-		/** Closes the buffer object. */
-		bool close () {
-			if (!_opened)
-				return false;
-			sync();
-			_opened = false;
-			return gzclose(_gzfile) == Z_OK;
+		/** Flushes the remaining data, finishes the compression process, and
+		 *  closes the buffer so that further output doesn't reach the sink. */
+		void close () {
+			close(true);
 		}
 
-		int overflow (int c) override {
-			if (!_opened)
-				return EOF;
-			if (c != EOF) {
-				*pptr() = c;
-				pbump(1);
+		int_type overflow (int_type c) override {
+			if (c == traits_type::eof()) {
+				close();
 			}
-			return (flush() == EOF) ? EOF : c;
+			else {
+				if (_inbuf.size() == _inbuf.capacity())
+					flush(Z_NO_FLUSH);
+				_inbuf.push_back(c);
+			}
+			return c;
 		}
 
 		int sync () override {
-			return (pptr() && pptr() > pbase() && flush() == EOF) ? -1 : 0;
+			flush(Z_NO_FLUSH);
+			return 0;
 		}
 
 	protected:
-		ZLibOutputBuffer () : _gzfile(nullptr), _opened(false) {
-			setp(_buffer, _buffer+SIZE-1);
+		/** Compresses the chunk of data present in the input buffer
+		 *  and writes it to the assigned output stream.
+		 *  @param[in] flushmode flush mode of deflate function (Z_NO_FLUSH or Z_FINISH)
+		 *  @throws ZLibException if compression failed */
+		void flush (int flushmode) {
+			if (_opened) {
+				_zstream.avail_in = _inbuf.size();
+				_zstream.next_in = _inbuf.data();
+				do {
+					_zstream.avail_out = _zbuf.size();
+					_zstream.next_out = _zbuf.data();
+					int ret = deflate(&_zstream, flushmode);
+					if (ret == Z_STREAM_ERROR) {
+						close(false);
+						throw ZLibException("stream error during data compression");
+					}
+					auto have = _zbuf.size()-_zstream.avail_out;
+					_sink->sputn(reinterpret_cast<char*>(_zbuf.data()), have);
+				} while (_zstream.avail_out == 0);
+			}
+			_inbuf.clear();
 		}
 
-		/** Forces to write the buffer data to the output file. */
-		int flush () {
-			int w = pptr()-pbase();
-			if (gzwrite(_gzfile, pbase(), w) != w)
-				return EOF;
-			pbump(-w);
-			return w;
+		/** Closes the buffer so that further output doesn't reach the sink.
+		 *  @param[in] finish if true, flushes the remaining data and finishes the compression process */
+		void close (bool finish) {
+			if (_opened) {
+				if (finish)
+					flush(Z_FINISH);
+				deflateEnd(&_zstream);
+				_sink = nullptr;
+				_opened = false;
+			}
 		}
 
 	private:
-		static constexpr int SIZE = 512;
-		gzFile _gzfile;
-		char _buffer[SIZE];
-		bool _opened;
+		z_stream _zstream;
+		std::streambuf *_sink = nullptr;  ///< target buffer where the compressded data is flushed to
+		std::vector<Bytef> _inbuf;  ///< buffer holding a chunk of data to be compressed
+		std::vector<Bytef> _zbuf;   ///< buffer holding a chunk of compressed data
+		bool _opened = false;       ///< true if ready to process the incoming data correctly
 };
 
 
-class ZLibOutputStream : public virtual std::ios, public std::ostream
-{
+class ZLibOutputStream : private ZLibOutputBuffer, public std::ostream {
 	public:
-		ZLibOutputStream () : std::ostream(&_buf) {init(&_buf);}
-		ZLibOutputStream (const char *fname, int zipLevel) : ZLibOutputStream() {open(fname, zipLevel);}
-		ZLibOutputStream (const std::string &fname, int zipLevel) : ZLibOutputStream(fname.c_str(), zipLevel) {}
+		ZLibOutputStream () : std::ostream(this) {}
+
+		ZLibOutputStream (std::ostream &os, ZLibCompressionFormat format, int zipLevel)
+			: ZLibOutputBuffer(os.rdbuf(), format, zipLevel), std::ostream(this) {}
+
 		~ZLibOutputStream () {close();}
-		ZLibOutputBuffer* rdbuf() {return &_buf;}
 
-		/** Opens the output stream for writing.
-		 *  @param[in] fname name of gzip file
-		 *  @param[in] zipLevel compression level (1-9) */
-		void open (const char *name, int zipLevel) {
-			if (!_buf.open(name, zipLevel))
-				clear(rdstate()|std::ios::badbit);
+		bool open (std::ostream &os, ZLibCompressionFormat format, int zipLevel) {
+			ZLibOutputBuffer::close();
+			return ZLibOutputBuffer::open(os.rdbuf(), format, zipLevel);
 		}
 
 		void close () {
-			if (!_buf.close())
-				clear(rdstate()|std::ios::badbit);
+			ZLibOutputBuffer::close();
 		}
+};
 
+
+class ZLibOutputFileStream : public ZLibOutputStream {
+	public:
+		ZLibOutputFileStream (const std::string &fname, ZLibCompressionFormat format, int zipLevel)
+			: _ofs(fname, std::ios::binary)
+		{
+			if (_ofs) {
+				if (_ofs.rdbuf())
+					open(_ofs, format, zipLevel);
+				else
+					_ofs.close();
+			}
+		}
+
+		~ZLibOutputFileStream () {close();}
+
 	private:
-		ZLibOutputBuffer _buf;
+		std::ofstream _ofs;
 };
 
 #endif

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -40,9 +40,11 @@
 #include "HyperlinkManager.hpp"
 #include "Message.hpp"
 #include "PageSize.hpp"
+#include "PDFToSVG.hpp"
 #include "PSInterpreter.hpp"
 #include "PsSpecialHandler.hpp"
 #include "SignalHandler.hpp"
+#include "SourceInput.hpp"
 #include "SVGOutput.hpp"
 #include "System.hpp"
 #include "utility.hpp"
@@ -68,10 +70,12 @@
 }
 
 
-static string ensure_suffix (string fname, bool eps) {
-	size_t dotpos = remove_path(fname).rfind('.');
-	if (dotpos == string::npos)
-		fname += (eps ? ".eps" : ".dvi");
+static string ensure_suffix (string fname, const string &suffix) {
+	if (!fname.empty()) {
+		size_t dotpos = remove_path(fname).rfind('.');
+		if (dotpos == string::npos)
+			fname += "." + suffix;
+	}
 	return fname;
 }
 
@@ -143,30 +147,21 @@
 }
 
 
-static bool check_bbox (const string &bboxstr) {
+static void check_bbox (const string &bboxstr) {
 	for (const char *fmt : {"none", "min", "preview", "papersize", "dvi"})
 		if (bboxstr == fmt)
-			return true;
+			return;
 	if (isalpha(bboxstr[0])) {
 		try {
 			PageSize size(bboxstr);
-			return true;
 		}
 		catch (const PageSizeException &e) {
-			Message::estream(true) << "invalid bounding box format '" << bboxstr << "'\n";
-			return false;
+			throw MessageException("invalid bounding box format '" + bboxstr + "'");
 		}
 	}
-	try {
-		// check if given bbox argument is valid, i.e. doesn't throw an exception
-		BoundingBox bbox;
-		bbox.set(bboxstr);
-		return true;
-	}
-	catch (const MessageException &e) {
-		Message::estream(true) << e.what() << '\n';
-		return false;
-	}
+	// check if given bbox argument is valid, i.e. doesn't throw an exception
+	BoundingBox bbox;
+	bbox.set(bboxstr);
 }
 
 
@@ -254,7 +249,7 @@
 		versionInfo.add("potrace", strchr(potrace_version(), ' '));
 		versionInfo.add("xxhash", XXH_versionNumber(), 3, 100);
 		versionInfo.add("zlib", zlibVersion());
-		versionInfo.add("Ghostscript", Ghostscript().revision(true), true);
+		versionInfo.add("Ghostscript", Ghostscript().revisionstr(), true);
 #ifndef DISABLE_WOFF
 		versionInfo.add("brotli", BrotliEncoderVersion(), 3, 0x1000);
 		versionInfo.add("woff2", woff2::version, 3, 0x100);
@@ -326,8 +321,8 @@
 
 
 int main (int argc, char *argv[]) {
-	CommandLine cmdline;
 	try {
+		CommandLine cmdline;
 		cmdline.parse(argc, argv);
 		if (argc == 1 || cmdline.helpOpt.given()) {
 			cmdline.help(cout, cmdline.helpOpt.value());
@@ -346,47 +341,47 @@
 		}
 		if (!set_cache_dir(cmdline) || !set_temp_dir(cmdline))
 			return 0;
-		if (cmdline.stdoutOpt.given() && cmdline.zipOpt.given()) {
-			Message::estream(true) << "writing SVGZ files to stdout is not supported\n";
-			return 1;
-		}
-		if (!check_bbox(cmdline.bboxOpt.value()))
-			return 1;
+		check_bbox(cmdline.bboxOpt.value());
 		if (!HyperlinkManager::setLinkMarker(cmdline.linkmarkOpt.value()))
 			Message::wstream(true) << "invalid argument '"+cmdline.linkmarkOpt.value()+"' supplied for option --linkmark\n";
-		if (argc > 1 && cmdline.filenames().size() < 1) {
-			Message::estream(true) << "no input file given\n";
-			return 1;
+		if (cmdline.stdinOpt.given() || cmdline.singleDashGiven()) {
+			if (!cmdline.filenames().empty())
+				throw MessageException("option - or --stdin can't be used together with a filename");
+			cmdline.addFilename("");  // empty filename => read from stdin
 		}
-	}
-	catch (MessageException &e) {
-		Message::estream() << e.what() << '\n';
-		return 1;
-	}
+		if (argc > 1 && cmdline.filenames().empty())
+			throw MessageException("no input file given");
 
-	bool eps_given = cmdline.epsOpt.given();
-	string inputfile = ensure_suffix(cmdline.filenames()[0], eps_given);
-	ifstream ifs(inputfile.c_str(), ios::binary|ios::in);
-	if (!ifs) {
-		Message::estream(true) << "can't open file '" << inputfile << "' for reading\n";
-		return 0;
-	}
-	try {
+		SignalHandler::instance().start();
+		string inputfile = ensure_suffix(cmdline.filenames()[0],
+			cmdline.epsOpt.given() ? "eps" : cmdline.pdfOpt.given() ? "pdf" : "dvi");
+		SourceInput srcin(inputfile);
+		if (!srcin.getInputStream(true))
+			throw MessageException("can't open file '" + srcin.getMessageFileName() + "' for reading");
+
 		double start_time = System::time();
 		set_variables(cmdline);
-		SVGOutput out(cmdline.stdoutOpt.given() ? nullptr : inputfile.c_str(),
+		SVGOutput out(cmdline.stdoutOpt.given() ? "" : srcin.getFileName(),
 			cmdline.outputOpt.value(),
 			cmdline.zipOpt.given() ? cmdline.zipOpt.value() : 0);
-		SignalHandler::instance().start();
-		if (cmdline.epsOpt.given()) {
-			EPSToSVG eps2svg(inputfile, out);
-			eps2svg.convert();
+		if (cmdline.epsOpt.given() || cmdline.pdfOpt.given()) {
+			auto img2svg = unique_ptr<ImageToSVG>(
+				cmdline.epsOpt.given()
+				? static_cast<ImageToSVG*>(new EPSToSVG(srcin.getFilePath(), out))
+				: static_cast<ImageToSVG*>(new PDFToSVG(srcin.getFilePath(), out)));
+			img2svg->convert();
 			Message::mstream().indent(0);
 			Message::mstream(false, Message::MC_PAGE_NUMBER) << "file converted in " << (System::time()-start_time) << " seconds\n";
 		}
+		else if (cmdline.pdfOpt.given()) {
+			PDFToSVG pdf2svg(srcin.getFilePath(), out);
+			pdf2svg.convert();
+			Message::mstream().indent(0);
+			Message::mstream(false, Message::MC_PAGE_NUMBER) << "file converted in " << (System::time()-start_time) << " seconds\n";
+		}
 		else {
 			init_fontmap(cmdline);
-			DVIToSVG dvi2svg(ifs, out);
+			DVIToSVG dvi2svg(srcin.getInputStream(), out);
 			const char *ignore_specials=nullptr;
 			if (cmdline.noSpecialsOpt.given())
 				ignore_specials = cmdline.noSpecialsOpt.value().empty() ? "*" : cmdline.noSpecialsOpt.value().c_str();

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/options.xml
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/options.xml	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/options.xml	2018-05-04 04:54:00 UTC (rev 47608)
@@ -23,7 +23,8 @@
 <cmdline class="CommandLine">
 	<program>
 		<usage>[options] dvifile</usage>
-		<usage>-E [options] epsfile</usage>
+		<usage>--eps [options] epsfile</usage>
+		<usage>--pdf [options] pdffile</usage>
 		<description>This program converts DVI files, as created by TeX/LaTeX, to\nthe XML-based scalable vector graphics format SVG.</description>
 		<copyright>Copyright (C) 2005-2018 Martin Gieseking <martin.gieseking at uos.de></copyright>
 	</program>
@@ -38,8 +39,14 @@
 				<description>evaluate (additional) font map files</description>
 			</option>
 			<option long="eps" short="E" if="!defined(DISABLE_GS)">
-				<description>convert an EPS file to SVG</description>
+				<description>convert EPS file to SVG</description>
 			</option>
+			<option long="pdf" short="P" if="!defined(DISABLE_GS)">
+				<description>convert PDF file to SVG</description>
+			</option>
+			<option long="stdin">
+				<description>read input file from stdin</description>
+			</option>
 		</section>
 		<section title="SVG output options">
 			<option long="bbox" short="b">
@@ -171,7 +178,7 @@
 			<option long="list-specials" short="l">
 				<description>print supported special sets and exit</description>
 			</option>
-			<option long="progress" short="P">
+			<option long="progress">
 				<arg name="delay" type="double" optional="yes" default="0.5"/>
 				<description>enable progress indicator</description>
 			</option>

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/psdefs.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -29,72 +29,82 @@
 "/:stroke @SD/stroke get put @SD/:fill @SD/fill get put @SD/:eofill @SD/eofill "
 "get put @SD/:clip @SD/clip get put @SD/:eoclip @SD/eoclip get put @SD/:charpat"
 "h @SD/charpath get put @SD/:show @SD/show get put @SD/.setopacityalpha known n"
-"ot{@SD/.setopacityalpha{pop}put}if @SD/prseq{-1 1{-1 roll =only( )print}for(\\"
-"n)print}put @SD/prcmd{( )exch(\\ndvi.)3{print}repeat prseq}put @SD/cvxall{{cvx"
-"}forall}put @SD/defpr{[exch[/copy @SD]cvxall 5 -1 roll dup 6 1 roll[/get/exec]"
-"cvxall 6 -1 roll dup 7 1 roll 4 -1 roll dup 5 1 roll dup length string cvs/prc"
-"md cvx]cvx def}put @SD/querypos{{currentpoint}stopped{$error/newerror false pu"
-"t}{2(querypos)prcmd}ifelse}put @SD/applyscalevals{1 0 dtransform exch dup mul "
-"exch dup mul add sqrt 0 1 dtransform exch dup mul exch dup mul add sqrt 1 0 dt"
-"ransform 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(curve"
-"to)prcmd}{0(closepath)prcmd}pathforall}put @SD/charpath{/@dodraw false store :"
-"charpath/@dodraw true store}put @SD/show{@dodraw{dup :gsave currentpoint 2{50 "
-"mul exch}repeat :newpath moveto 50 50/scale sysexec true charpath eofill :gres"
-"tore/@dodraw false store :show/@dodraw true store}{pop}ifelse}put @SD/awidthsh"
-"ow{{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 index rmoveto}exch cshow 5{pop}repeat}put"
-" @SD/widthshow{0 0 3 -1 roll pstack awidthshow}put @SD/ashow{0 0 0 6 3 roll aw"
-"idthshow}put @SD/newpath{:newpath 0 1(newpath)prcmd}put @SD/stroke{@dodraw{1 1"
-"(newpath)prcmd prpath 0(stroke)prcmd :newpath}{:stroke}ifelse}put @SD/fill{@do"
-"draw{1 1(newpath)prcmd prpath 0(fill)prcmd :newpath}{:fill}ifelse}put @SD/eofi"
-"ll{@dodraw{1 1(newpath)prcmd prpath 0(eofill)prcmd :newpath}{:eofill}ifelse}pu"
-"t @SD/clip{:clip 0 1(newpath)prcmd prpath 0(clip)prcmd}put @SD/eoclip{:eoclip "
-"1 1(newpath)prcmd prpath 0(eoclip)prcmd}put @SD/shfill{begin currentdict/Shadi"
-"ngType known currentdict/ColorSpace known and currentdict/DataSource known and"
-" currentdict/Function known not and ShadingType 4 ge and DataSource type/array"
-"type eq and{<</DeviceGray 1/DeviceRGB 3/DeviceCMYK 4/bgknown currentdict/Backg"
-"round known/bbknown currentdict/BBox known>>begin currentdict ColorSpace known"
-"{ShadingType ColorSpace load bgknown{1 Background aload pop}{0}ifelse bbknown{"
-"1 BBox aload pop}{0}ifelse ShadingType 5 eq{VerticesPerRow}if DataSource aload"
-" length 4 add bgknown{ColorSpace load add}if bbknown{4 add}if ShadingType 5 eq"
-"{1 add}if(shfill)prcmd}if end}if end}put/@rect{4 -2 roll moveto exch dup 0 rli"
-"neto exch 0 exch rlineto neg 0 rlineto closepath}bind def/@rectcc{4 -2 roll mo"
-"veto 2 copy 0 lt exch 0 lt xor{dup 0 exch rlineto exch 0 rlineto neg 0 exch rl"
-"ineto}{exch dup 0 rlineto exch 0 exch rlineto neg 0 rlineto}ifelse closepath}b"
-"ind def @SD/rectclip{:newpath dup type/arraytype eq{aload length 4 idiv{@rectc"
-"c}repeat}{@rectcc}ifelse clip :newpath}put @SD/rectfill{gsave :newpath dup typ"
-"e/arraytype eq{aload length 4 idiv{@rectcc}repeat}{@rectcc}ifelse fill grestor"
-"e}put @SD/rectstroke{gsave :newpath dup type/arraytype eq{aload length 4 idiv{"
-"@rect}repeat}{@rect}ifelse stroke grestore}put false setglobal @SD readonly po"
-"p/initclip 0 defpr/clippath 0 defpr/sysexec{@SD exch get exec}def/adddot{dup l"
-"ength 1 add string dup 0 46 put dup 3 -1 roll 1 exch putinterval}def/setlinewi"
-"dth{dup/setlinewidth sysexec 1(setlinewidth)prcmd}def/setlinecap 1 defpr/setli"
-"nejoin 1 defpr/setmiterlimit 1 defpr/setdash{mark 3 1 roll 2 copy/setdash syse"
-"xec exch aload length 1 add -1 roll counttomark(setdash)prcmd pop}def/@setpage"
-"device{pop<<>>/setpagedevice sysexec[1 0 0 -1 0 0]setmatrix newpath 0(setpaged"
-"evice)prcmd}def/setgstate{currentlinewidth 1(setlinewidth)prcmd currentlinecap"
-" 1(setlinecap)prcmd currentlinejoin 1(setlinejoin)prcmd currentmiterlimit 1(se"
-"tmiterlimit)prcmd currentrgbcolor 3(setrgbcolor)prcmd matrix currentmatrix alo"
-"ad pop 6(setmatrix)prcmd applyscalevals currentdash mark 3 1 roll exch aload l"
-"ength 1 add -1 roll counttomark(setdash)prcmd pop}def/save{@UD begin/@saveID v"
-"mstatus pop pop def end :save @saveID 1(save)prcmd}def/restore{:restore setgst"
-"ate @UD/@saveID known{@UD begin @saveID end}{0}ifelse 1(restore)prcmd}def/gsav"
-"e 0 defpr/grestore{:grestore setgstate 0(grestore)prcmd}def/grestoreall{:grest"
-"oreall setstate 0(grestoreall)prcmd}def/rotate{dup type/arraytype ne{dup 1(rot"
-"ate)prcmd}if/rotate sysexec applyscalevals}def/scale{dup type/arraytype ne{2 c"
-"opy 2(scale)prcmd}if/scale sysexec applyscalevals}def/translate{dup type/array"
-"type ne{2 copy 2(translate)prcmd}if/translate sysexec}def/setmatrix{dup/setmat"
-"rix sysexec aload pop 6(setmatrix)prcmd applyscalevals}def/initmatrix{matrix s"
-"etmatrix}def/concat{matrix currentmatrix matrix concatmatrix setmatrix}def/mak"
-"epattern{gsave<</mx 3 -1 roll>>begin dup/XUID[1000000 @patcnt]put mx/makepatte"
-"rn sysexec dup dup begin PatternType @patcnt BBox aload pop XStep YStep PaintT"
-"ype mx aload pop 15(makepattern)prcmd :newpath matrix setmatrix PaintProc 0 1("
-"makepattern)prcmd end/@patcnt @patcnt 1 add store end grestore}def/setpattern{"
-"begin PatternType 1 eq{PaintType 1 eq{XUID aload pop exch pop 1}{:gsave[curren"
-"tcolorspace aload length -1 roll pop]setcolorspace/setcolor sysexec XUID aload"
-" pop exch pop currentrgbcolor :grestore 4}ifelse(setpattern)prcmd}{/setpattern"
-" sysexec}ifelse end}def/setcolor{dup type/dicttype eq{setpattern}{/setcolor sy"
-"sexec/currentrgbcolor sysexec setrgbcolor}ifelse}def/setgray 1 defpr/setcmykco"
-"lor 4 defpr/sethsbcolor 3 defpr/setrgbcolor 3 defpr/.setopacityalpha{dup/.seto"
-"pacityalpha sysexec 1(setopacityalpha)prcmd}def ";
+"ot{@SD/.setopacityalpha{pop}put}if @SD/.setshapealpha known not{@SD/.setshapea"
+"lpha{pop}put}if @SD/.setblendmode known not{@SD/.setblendmode{pop}put}if @SD/p"
+"rseq{-1 1{-1 roll =only( )print}for(\\n)print}put @SD/prcmd{( )exch(\\ndvi.)3{"
+"print}repeat prseq}put @SD/cvxall{{cvx}forall}put @SD/defpr{[exch[/copy @SD]cv"
+"xall 5 -1 roll dup 6 1 roll[/get/exec]cvxall 6 -1 roll dup 7 1 roll 4 -1 roll "
+"dup 5 1 roll dup length string cvs/prcmd cvx]cvx def}put @SD/querypos{{current"
+"point}stopped{$error/newerror false put}{2(querypos)prcmd}ifelse}put @SD/apply"
+"scalevals{1 0 dtransform exch dup mul exch dup mul add sqrt 0 1 dtransform exc"
+"h dup mul exch dup mul add sqrt 1 0 dtransform dup mul exch dup dup mul 3 -1 r"
+"oll 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}p"
+"ut @SD/charpath{/@dodraw false store :charpath/@dodraw true store}put @SD/show"
+"{@dodraw{dup :gsave currentpoint 2{50 mul exch}repeat :newpath moveto 50 50/sc"
+"ale sysexec true charpath eofill :grestore/@dodraw false store :show/@dodraw t"
+"rue store}{pop}ifelse}put @SD/awidthshow{{1 string dup 0 5 index put :gsave sh"
+"ow :grestore pop 0 rmoveto 3 index eq{4 index 4 index rmoveto}if 1 index 1 ind"
+"ex rmoveto}exch cshow 5{pop}repeat}put @SD/widthshow{0 0 3 -1 roll pstack awid"
+"thshow}put @SD/ashow{0 0 0 6 3 roll awidthshow}put @SD/newpath{:newpath 0 1(ne"
+"wpath)prcmd}put @SD/stroke{@dodraw{prcolor 1 1(newpath)prcmd prpath 0(stroke)p"
+"rcmd :newpath}{:stroke}ifelse}put @SD/fill{@dodraw{prcolor 1 1(newpath)prcmd p"
+"rpath 0(fill)prcmd :newpath}{:fill}ifelse}put @SD/eofill{@dodraw{prcolor 1 1(n"
+"ewpath)prcmd prpath 0(eofill)prcmd :newpath}{:eofill}ifelse}put @SD/clip{:clip"
+" 0 1(newpath)prcmd prpath 0(clip)prcmd}put @SD/eoclip{:eoclip 1 1(newpath)prcm"
+"d prpath 0(eoclip)prcmd}put @SD/shfill{begin currentdict/ShadingType known cur"
+"rentdict/ColorSpace known and currentdict/DataSource known and currentdict/Fun"
+"ction known not and ShadingType 4 ge and DataSource type/arraytype eq and{<</D"
+"eviceGray 1/DeviceRGB 3/DeviceCMYK 4/bgknown currentdict/Background known/bbkn"
+"own currentdict/BBox known>>begin currentdict ColorSpace known{ShadingType Col"
+"orSpace load bgknown{1 Background aload pop}{0}ifelse bbknown{1 BBox aload pop"
+"}{0}ifelse ShadingType 5 eq{VerticesPerRow}if DataSource aload length 4 add bg"
+"known{ColorSpace load add}if bbknown{4 add}if ShadingType 5 eq{1 add}if(shfill"
+")prcmd}if end}if end}put/@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 closepath}bind def @SD/rect"
+"clip{:newpath dup type/arraytype eq{aload length 4 idiv{@rectcc}repeat}{@rectc"
+"c}ifelse clip :newpath}put @SD/rectfill{gsave :newpath dup type/arraytype eq{a"
+"load length 4 idiv{@rectcc}repeat}{@rectcc}ifelse fill grestore}put @SD/rectst"
+"roke{gsave :newpath dup type/arraytype eq{aload length 4 idiv{@rect}repeat}{@r"
+"ect}ifelse stroke grestore}put false setglobal @SD readonly pop/initclip 0 def"
+"pr/clippath 0 defpr/sysexec{@SD exch get exec}def/adddot{dup length 1 add stri"
+"ng dup 0 46 put dup 3 -1 roll 1 exch putinterval}def/setlinewidth{dup/setlinew"
+"idth sysexec 1(setlinewidth)prcmd}def/setlinecap 1 defpr/setlinejoin 1 defpr/s"
+"etmiterlimit 1 defpr/setdash{mark 3 1 roll 2 copy/setdash sysexec exch aload l"
+"ength 1 add -1 roll counttomark(setdash)prcmd pop}def/@setpagedevice{pop<<>>/s"
+"etpagedevice sysexec[1 0 0 -1 0 0]setmatrix newpath 0(setpagedevice)prcmd}def/"
+"prcolor{currentrgbcolor 3(setrgbcolor)prcmd}def/printgstate{currentlinewidth 1"
+"(setlinewidth)prcmd currentlinecap 1(setlinecap)prcmd currentlinejoin 1(setlin"
+"ejoin)prcmd currentmiterlimit 1(setmiterlimit)prcmd currentrgbcolor 3(setrgbco"
+"lor)prcmd matrix currentmatrix aload pop 6(setmatrix)prcmd applyscalevals curr"
+"entdash mark 3 1 roll exch aload length 1 add -1 roll counttomark(setdash)prcm"
+"d pop}def/setgstate{/setgstate sysexec printgstate}def/save{@UD begin/@saveID "
+"vmstatus pop pop def end :save @saveID 1(save)prcmd}def/restore{:restore print"
+"gstate @UD/@saveID known{@UD begin @saveID end}{0}ifelse 1(restore)prcmd}def/g"
+"save 0 defpr/grestore{:grestore printgstate 0(grestore)prcmd}def/grestoreall{:"
+"grestoreall setstate 0(grestoreall)prcmd}def/rotate{dup type/arraytype ne{dup "
+"1(rotate)prcmd}if/rotate sysexec applyscalevals}def/scale{dup type/arraytype n"
+"e{2 copy 2(scale)prcmd}if/scale sysexec applyscalevals}def/translate{dup type/"
+"arraytype ne{2 copy 2(translate)prcmd}if/translate sysexec}def/setmatrix{dup/s"
+"etmatrix sysexec aload pop 6(setmatrix)prcmd applyscalevals}def/initmatrix{mat"
+"rix setmatrix}def/concat{matrix currentmatrix matrix concatmatrix setmatrix}de"
+"f/makepattern{gsave<</mx 3 -1 roll>>begin dup/XUID[1000000 @patcnt]put mx/make"
+"pattern sysexec dup dup begin PatternType @patcnt BBox aload pop XStep YStep P"
+"aintType mx aload pop 15(makepattern)prcmd :newpath matrix setmatrix PaintProc"
+" 0 1(makepattern)prcmd end/@patcnt @patcnt 1 add store end grestore}def/setpat"
+"tern{begin PatternType 1 eq{PaintType 1 eq{XUID aload pop exch pop 1}{:gsave[c"
+"urrentcolorspace aload length -1 roll pop]setcolorspace/setcolor sysexec XUID "
+"aload pop exch pop currentrgbcolor :grestore 4}ifelse(setpattern)prcmd}{/setpa"
+"ttern sysexec}ifelse end}def/setcolor{dup type/dicttype eq{setpattern}{/setcol"
+"or sysexec/currentrgbcolor sysexec setrgbcolor}ifelse}def/setgray 1 defpr/setc"
+"mykcolor 4 defpr/sethsbcolor 3 defpr/setrgbcolor 3 defpr/.setopacityalpha{dup/"
+".setopacityalpha sysexec 1(setopacityalpha)prcmd}def/.setshapealpha{dup/.setsh"
+"apealpha sysexec 1(setshapealpha)prcmd}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/@getpdfpagebox{GS_PDF_ProcSet begin pdfdict begin(r)file"
+" pdfopen begin 1 pdfgetpage/MediaBox pget pop aload pop 4(pdfpagebox)prcmd cur"
+"rentdict pdfclose end end end}def DELAYBIND{.bindnow}if ";

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -22,7 +22,7 @@
 #define VERSION_HPP
 
 constexpr const char *PROGRAM_NAME = "dvisvgm";
-constexpr const char *PROGRAM_VERSION = "2.3.5";
+constexpr const char *PROGRAM_VERSION = "2.4";
 
 #endif
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorSpecialTest.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorSpecialTest.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/ColorSpecialTest.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -25,11 +25,9 @@
 
 using namespace std;
 
-class ColorSpecialTest : public ::testing::Test
-{
+class ColorSpecialTest : public ::testing::Test {
 	protected:
-		struct SetColor : EmptySpecialActions
-		{
+		struct SetColor : EmptySpecialActions {
 			SetColor () : color(0) {}
 			void setColor (const Color &c) {color = uint32_t(c);}
 			bool equals (uint32_t c) {return color == c;}
@@ -66,7 +64,7 @@
 
 TEST_F(ColorSpecialTest, gray) {
 	std::istringstream iss("gray 0.2");
-	handler.process(0, iss, actions);
+	handler.process("", iss, actions);
 	EXPECT_TRUE(actions.equals(0x333333));
 }
 
@@ -73,7 +71,7 @@
 
 TEST_F(ColorSpecialTest, rgb) {
 	std::istringstream iss("rgb 1 0 1");
-	handler.process(0, iss, actions);
+	handler.process("", iss, actions);
 	EXPECT_TRUE(actions.equals(0xff00ff));
 }
 
@@ -80,7 +78,7 @@
 
 TEST_F(ColorSpecialTest, hsb) {
 	std::istringstream iss("hsb 1 0.5 1");
-	handler.process(0, iss, actions);
+	handler.process("", iss, actions);
 	EXPECT_TRUE(actions.equals(0xff8080));
 }
 
@@ -87,7 +85,7 @@
 
 TEST_F(ColorSpecialTest, cmyk) {
 	std::istringstream iss("cmyk 0.1 0.2 0.4 0.6");
-	handler.process(0, iss, actions);
+	handler.process("", iss, actions);
 	EXPECT_TRUE(actions.equals(0x5c523d));
 }
 
@@ -94,19 +92,19 @@
 
 TEST_F(ColorSpecialTest, stack1) {
 	std::istringstream iss("push rgb 1 0 0");
-	handler.process(0, iss, actions);
+	handler.process("", iss, actions);
 	EXPECT_TRUE(actions.equals(0xff0000));
 	iss.clear();
 	iss.str("push Blue");
-	handler.process(0, iss, actions);
+	handler.process("", iss, actions);
 	EXPECT_TRUE(actions.equals(0x0000ff));
 	iss.clear();
 	iss.str("pop");
-	handler.process(0, iss, actions);
+	handler.process("", iss, actions);
 	EXPECT_TRUE(actions.equals(0xff0000));
 	iss.clear();
 	iss.str("pop");
-	handler.process(0, iss, actions);
+	handler.process("", iss, actions);
 	EXPECT_TRUE(actions.equals(0x000000));
 }
 
@@ -113,18 +111,18 @@
 
 TEST_F(ColorSpecialTest, stack2) {
 	std::istringstream iss("push rgb 1 0 0");
-	handler.process(0, iss, actions);
+	handler.process("", iss, actions);
 	EXPECT_TRUE(actions.equals(0xff0000));
 	iss.clear();
 	iss.str("push rgb 0 1 0");
-	handler.process(0, iss, actions);
+	handler.process("", iss, actions);
 	iss.clear();
 	iss.str("gray 0.2");  // clear color stack implicitly
-	handler.process(0, iss, actions);
+	handler.process("", iss, actions);
 	EXPECT_TRUE(actions.equals(0x333333));
 	iss.clear();
 	iss.str("pop");
-	handler.process(0, iss, actions);
+	handler.process("", iss, actions);
 	EXPECT_TRUE(actions.equals(0x000000));
 }
 
@@ -131,7 +129,7 @@
 
 TEST_F(ColorSpecialTest, constant) {
 	std::istringstream iss("RedViolet");
-	handler.process(0, iss, actions);
+	handler.process("", iss, actions);
 	EXPECT_TRUE(actions.equals(0x9600a8));
 }
 
@@ -138,12 +136,12 @@
 
 TEST_F(ColorSpecialTest, errors) {
 	std::istringstream iss("UnknownColor");
-	EXPECT_THROW(handler.process(0, iss, actions), SpecialException);
+	EXPECT_THROW(handler.process("", iss, actions), SpecialException);
 	iss.clear();
 	iss.str("blue");
-	EXPECT_THROW(handler.process(0, iss, actions), SpecialException);
+	EXPECT_THROW(handler.process("", iss, actions), SpecialException);
 	iss.clear();
 	iss.str("rgb black");
-	EXPECT_THROW(handler.process(0, iss, actions), SpecialException);
+	EXPECT_THROW(handler.process("", iss, actions), SpecialException);
 }
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/CommandLineTest.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/CommandLineTest.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/CommandLineTest.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -52,6 +52,8 @@
 	EXPECT_TRUE(cmd.noFontsOpt.given());
 	EXPECT_TRUE(cmd.helpOpt.given());
 	EXPECT_FALSE(cmd.listSpecialsOpt.given());
+	EXPECT_FALSE(cmd.stdinOpt.given());
+	EXPECT_FALSE(cmd.singleDashGiven());
 	EXPECT_EQ(cmd.filenames().size(), 0u);
 	EXPECT_TRUE(cmd.verbosityOpt.given());
 	EXPECT_EQ(cmd.verbosityOpt.value(), 5u);
@@ -60,11 +62,11 @@
 
 TEST(CommandLineTest, arg_short) {
 	CommandLine cmd;
-	const char *args[] = {"progname", "-P", "-p5", "-r45", "-omyfile.xyz", "-ayes", "-v3"};
+	const char *args[] = {"progname", "-P", "-p5", "-r45", "-omyfile.xyz", "-ayes", "-v3", "-"};
 	char **argv = const_cast<char**>(args);
-	cmd.parse(7, argv);
+	cmd.parse(8, argv);
 
-	EXPECT_TRUE(cmd.progressOpt.given());
+	EXPECT_TRUE(cmd.pdfOpt.given());
 	EXPECT_DOUBLE_EQ(cmd.progressOpt.value(), 0.5);
 	EXPECT_TRUE(cmd.pageOpt.given());
 	EXPECT_EQ(cmd.pageOpt.value(), "5");
@@ -73,11 +75,13 @@
 	EXPECT_TRUE(cmd.outputOpt.given());
 	EXPECT_EQ(cmd.outputOpt.value(), "myfile.xyz");
 	EXPECT_FALSE(cmd.bboxOpt.given());
+	EXPECT_FALSE(cmd.stdinOpt.given());
 	EXPECT_EQ(cmd.bboxOpt.value(), "min");
 	EXPECT_EQ(cmd.filenames().size(), 0u);
 	EXPECT_TRUE(cmd.traceAllOpt.given());
 	EXPECT_TRUE(cmd.traceAllOpt.value());
 	EXPECT_TRUE(cmd.verbosityOpt.given());
+	EXPECT_TRUE(cmd.singleDashGiven());
 	EXPECT_EQ(cmd.verbosityOpt.value(), 3u);
 }
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/DvisvgmSpecialTest.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/DvisvgmSpecialTest.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/DvisvgmSpecialTest.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -83,12 +83,12 @@
 
 TEST_F(DvisvgmSpecialTest, raw) {
 	istringstream iss("raw first{?nl}");
-	handler.process(0, iss, recorder);
+	handler.process("", iss, recorder);
 	EXPECT_TRUE(recorder.defsEquals(""));
 	EXPECT_TRUE(recorder.pageEquals("first\n"));
 
 	iss.clear(); iss.str("raw \t second {?bbox dummy} \t");
-	handler.process(0, iss, recorder);
+	handler.process("", iss, recorder);
 	EXPECT_TRUE(recorder.defsEquals(""));
 	EXPECT_TRUE(recorder.pageEquals("first\nsecond 0 0 0 0"));
 }
@@ -96,12 +96,12 @@
 
 TEST_F(DvisvgmSpecialTest, rawdef) {
 	std::istringstream iss("rawdef first");
-	handler.process(0, iss, recorder);
+	handler.process("", iss, recorder);
 	EXPECT_TRUE(recorder.defsEquals("first"));
 	EXPECT_TRUE(recorder.pageEquals(""));
 
 	iss.clear(); iss.str("rawdef \t second \t");
-	handler.process(0, iss, recorder);
+	handler.process("", iss, recorder);
 	EXPECT_TRUE(recorder.defsEquals("firstsecond"));
 	EXPECT_TRUE(recorder.pageEquals(""));
 }
@@ -119,12 +119,12 @@
 	};
 	for (const char *cmd : cmds) {
 		std::istringstream iss(cmd);
-		handler.preprocess(0, iss, recorder);
+		handler.preprocess("", iss, recorder);
 	}
 	handler.finishPreprocessing();
 	for (const char *cmd : cmds) {
 		std::istringstream iss(cmd);
-		handler.process(0, iss, recorder);
+		handler.process("", iss, recorder);
 	}
 	handler.finishPage();
 	EXPECT_TRUE(recorder.defsEquals(""));
@@ -144,12 +144,12 @@
 	};
 	for (const char *cmd : cmds) {
 		std::istringstream iss(cmd);
-		handler.preprocess(0, iss, recorder);
+		handler.preprocess("", iss, recorder);
 	}
 	handler.finishPreprocessing();
 	for (const char *cmd : cmds) {
 		std::istringstream iss(cmd);
-		handler.process(0, iss, recorder);
+		handler.process("", iss, recorder);
 	}
 	handler.finishPage();
 	EXPECT_TRUE(recorder.defsEquals("firsttext1text2"));
@@ -170,12 +170,12 @@
 	};
 	for (const char *cmd : cmds) {
 		std::istringstream iss(cmd);
-		handler.preprocess(0, iss, recorder);
+		handler.preprocess("", iss, recorder);
 	}
 	handler.finishPreprocessing();
 	for (const char *cmd : cmds) {
 		std::istringstream iss(cmd);
-		handler.process(0, iss, recorder);
+		handler.process("", iss, recorder);
 	}
 	EXPECT_TRUE(recorder.defsEquals("firsttext2"));
 	EXPECT_TRUE(recorder.pageEquals("secondtext1text1"));
@@ -185,7 +185,7 @@
 
 TEST_F(DvisvgmSpecialTest, fail1) {
 	std::istringstream iss("rawset");  // pattern name missing
-	EXPECT_THROW(handler.preprocess(0, iss, recorder), SpecialException);
+	EXPECT_THROW(handler.preprocess("", iss, recorder), SpecialException);
 	handler.finishPreprocessing();
 }
 
@@ -192,7 +192,7 @@
 
 TEST_F(DvisvgmSpecialTest, fail2) {
 	std::istringstream iss("rawset pat");  // endrawset missing
-	handler.preprocess(0, iss, recorder);
+	handler.preprocess("", iss, recorder);
 	EXPECT_THROW(handler.finishPreprocessing(), SpecialException);
 }
 
@@ -199,7 +199,7 @@
 
 TEST_F(DvisvgmSpecialTest, processImg) {
 	std::istringstream iss("img 72.27 72.27 test.png");
-	handler.process(0, iss, recorder);
+	handler.process("", iss, recorder);
 	EXPECT_TRUE(recorder.defsEquals(""));
 	EXPECT_TRUE(recorder.pageEquals("<image height='72' width='72' x='0' xlink:href='test.png' y='0'/>"));
 
@@ -206,7 +206,7 @@
 	recorder.clear();
 	iss.clear();
 	iss.str("img 10bp 20bp test2.png");
-	handler.process(0, iss, recorder);
+	handler.process("", iss, recorder);
 	EXPECT_TRUE(recorder.pageEquals("<image height='20' width='10' x='0' xlink:href='test2.png' y='0'/>"));
 }
 
@@ -213,13 +213,13 @@
 
 TEST_F(DvisvgmSpecialTest, fail3) {
 	std::istringstream iss("img 10 20xy test.png");  // unknown unit
-	EXPECT_THROW(handler.process(0, iss, recorder), SpecialException);
+	EXPECT_THROW(handler.process("", iss, recorder), SpecialException);
 }
 
 
 TEST_F(DvisvgmSpecialTest, processBBox) {
 	std::istringstream iss("bbox abs 0 0 72.27 72.27");
-	handler.process(0, iss, recorder);
+	handler.process("", iss, recorder);
 	EXPECT_TRUE(recorder.defsEquals(""));
 	EXPECT_TRUE(recorder.pageEquals(""));
 	EXPECT_TRUE(recorder.bboxEquals("0 0 72 72"));
@@ -227,25 +227,25 @@
 	recorder.clear();
 	iss.clear();
 	iss.str("bbox 72.27 72.27");
-	handler.process(0, iss, recorder);
+	handler.process("", iss, recorder);
 	EXPECT_TRUE(recorder.bboxEquals("0 -72 72 72"));
 
 	recorder.clear();
 	iss.clear();
 	iss.str("bbox 72bp 72bp");
-	handler.process(0, iss, recorder);
+	handler.process("", iss, recorder);
 	EXPECT_TRUE(recorder.bboxEquals("0 -72 72 72"));
 
 	recorder.clear();
 	iss.clear();
 	iss.str("bbox rel 72.27 72.27");
-	handler.process(0, iss, recorder);
+	handler.process("", iss, recorder);
 	EXPECT_TRUE(recorder.bboxEquals("0 -72 72 72"));
 
 	recorder.clear();
 	iss.clear();
 	iss.str("bbox new name");
-	handler.process(0, iss, recorder);
+	handler.process("", iss, recorder);
 	EXPECT_TRUE(recorder.bboxEquals("0 0 0 0"));
 }
 
@@ -252,5 +252,5 @@
 
 TEST_F(DvisvgmSpecialTest, fail4) {
 	std::istringstream iss("bbox abs 0 0 72.27xx 72.27");  // unknown unit
-	EXPECT_THROW(handler.process(0, iss, recorder), SpecialException);
+	EXPECT_THROW(handler.process("", iss, recorder), SpecialException);
 }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/GhostscriptTest.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/GhostscriptTest.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/GhostscriptTest.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -37,8 +37,8 @@
 
 TEST(GhostscriptTest, revision) {
 	Ghostscript gs;
-	ASSERT_FALSE(gs.revision(true).empty());
-	ASSERT_FALSE(gs.revision(false).empty());
+	ASSERT_GT(gs.revision(), 0);
+	ASSERT_FALSE(gs.revisionstr().empty());
 }
 
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/PSInterpreterTest.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -47,10 +47,12 @@
 		void setpagedevice (vector<double> &p) override   {print("setpagedevice", p);}
 		void newpath (vector<double> &p) override         {print("newpath", p);}
 		void querypos (vector<double> &p) override        {print("querypos", p);}
+		void pdfpagebox (std::vector<double> &p) override {print("pdfpagebox", p);}
 		void restore(std::vector<double> &p) override     {print("restore", p);}
 		void rotate (vector<double> &p) override          {print("rotate", p);}
 		void save(std::vector<double> &p) override        {print("save", p);}
 		void scale (vector<double> &p) override           {print("scale", p);}
+		void setblendmode (vector<double> &p) override    {print("setblendmode", p);}
 		void setcmykcolor (vector<double> &p) override    {print("setcmykcolor", p);}
 		void setdash (vector<double> &p) override         {print("setdash", p);}
 		void setgray (vector<double> &p) override         {print("setgray", p);}
@@ -61,6 +63,7 @@
 		void setmatrix (vector<double> &p) override       {print("setmatrix", p);}
 		void setmiterlimit (vector<double> &p) override   {print("setmiterlimit", p);}
 		void setopacityalpha (vector<double> &p) override {print("setopacityalpha", p);}
+		void setshapealpha (vector<double> &p) override   {print("setshapealpha", p);}
 		void setrgbcolor (vector<double> &p) override     {print("setrgbcolor", p);}
 		void shfill (vector<double> &p) override          {print("shfill", p);}
 		void stroke (vector<double> &p) override          {print("stroke", p);}
@@ -115,11 +118,11 @@
 	PSTestActions actions;
 	PSInterpreter psi(&actions);
 	psi.execute("0 0 moveto 10 10 lineto 0 10 lineto closepath stroke ");
-	EXPECT_EQ(actions.result(), "newpath 1;moveto 0 0;lineto 10 10;lineto 0 10;closepath;stroke;");
+	EXPECT_EQ(actions.result(), "setrgbcolor 0 0 0;newpath 1;moveto 0 0;lineto 10 10;lineto 0 10;closepath;stroke;");
 	actions.clear();
 
 	psi.execute("0 0 moveto 10 10 lineto 0 10 lineto closepath fill ");
-	EXPECT_EQ(actions.result(), "newpath 1;moveto 0 0;lineto 10 10;lineto 0 10;closepath;fill;");
+	EXPECT_EQ(actions.result(), "setrgbcolor 0 0 0;newpath 1;moveto 0 0;lineto 10 10;lineto 0 10;closepath;fill;");
 }
 
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/PapersizeSpecialTest.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/PapersizeSpecialTest.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/PapersizeSpecialTest.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -58,12 +58,12 @@
 
 		void preprocess (const string &str) {
 			istringstream iss(str);
-			handler.preprocess(0, iss, actions);
+			handler.preprocess("", iss, actions);
 		}
 
 		bool process (const string &str) {
 			istringstream iss(str);
-			return handler.process(0, iss, actions);
+			return handler.process("", iss, actions);
 		}
 
 		void endPage () {

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/SVGOutputTest.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/SVGOutputTest.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/SVGOutputTest.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -97,7 +97,7 @@
 
 TEST_F(SVGOutputTest, getPageStream) {
 	{
-		SVGOutput out(0, "");
+		SVGOutput out("", "");
 		ostream &os = out.getPageStream(1, 10);
 		EXPECT_EQ(&os, &cout);
 	}{

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/TpicSpecialTest.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/TpicSpecialTest.cpp	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/TpicSpecialTest.cpp	2018-05-04 04:54:00 UTC (rev 47608)
@@ -68,7 +68,7 @@
 			public:
 				MyTpicSpecialHandler (SpecialActions &a) : actions(a) {}
 				void finishPage () {dviEndPage(0, actions);}
-				bool processSpecial (const char *cmd, string params="") {
+				bool processSpecial (const string &cmd, string params="") {
 					stringstream ss;
 					ss << params;
 					return process(cmd, ss, actions);
@@ -99,7 +99,6 @@
 
 
 TEST_F(TpicSpecialTest, fail) {
-	EXPECT_FALSE(handler.processSpecial(nullptr));
 	EXPECT_FALSE(handler.processSpecial(""));
 	EXPECT_FALSE(handler.processSpecial("x"));
 	EXPECT_FALSE(handler.processSpecial("xy"));

Modified: trunk/Build/source/texk/dvisvgm/version.ac
===================================================================
--- trunk/Build/source/texk/dvisvgm/version.ac	2018-05-04 03:48:43 UTC (rev 47607)
+++ trunk/Build/source/texk/dvisvgm/version.ac	2018-05-04 04:54:00 UTC (rev 47608)
@@ -9,4 +9,4 @@
 dnl --------------------------------------------------------
 dnl
 dnl  m4-include this file to define the current dvisvgm version
-m4_define([dvisvgm_version], [2.3.5])
+m4_define([dvisvgm_version], [2.4])



More information about the tex-live-commits mailing list