texlive[46983] Build/source/texk/dvisvgm: dvisvgm 2.3.4

commits+karl at tug.org commits+karl at tug.org
Fri Mar 16 18:01:01 CET 2018


Revision: 46983
          http://tug.org/svn/texlive?view=revision&revision=46983
Author:   karl
Date:     2018-03-16 18:01:01 +0100 (Fri, 16 Mar 2018)
Log Message:
-----------
dvisvgm 2.3.4

Modified Paths:
--------------
    trunk/Build/source/texk/dvisvgm/ChangeLog
    trunk/Build/source/texk/dvisvgm/TLpatches/TL-Changes
    trunk/Build/source/texk/dvisvgm/configure
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/NEWS
    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/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/dictionary.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.h
    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.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_inc.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/bit_cost.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/bit_cost.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_encoder_inc.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter_inc.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/brotli_bit_stream.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/brotli_bit_stream.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/cluster.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/cluster.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/command.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment_two_pass.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment_two_pass.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/dictionary_hash.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encode.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode_static.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/fast_log.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/find_match_length.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_forgetful_chain_inc.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match64_inc.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match_inc.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match_quickly_inc.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_to_binary_tree_inc.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram_inc.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/literal_cost.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/literal_cost.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.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/metablock_inc.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/prefix.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/quality.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/ringbuffer.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict_lut.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/utf8_util.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/utf8_util.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/brotli/include/brotli/port.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.cpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.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/version.hpp
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.am
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.in
    trunk/Build/source/texk/dvisvgm/version.ac

Added Paths:
-----------
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/context.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/platform.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/transform.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encoder_dict.c
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encoder_dict.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/params.h
    trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.pfb

Modified: trunk/Build/source/texk/dvisvgm/ChangeLog
===================================================================
--- trunk/Build/source/texk/dvisvgm/ChangeLog	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/ChangeLog	2018-03-16 17:01:01 UTC (rev 46983)
@@ -1,3 +1,7 @@
+2018-03-16  Karl Berry  <karl at freefriends.org>
+
+	* Import 2.3.4.
+
 2018-03-11  Karl Berry  <karl at tug.org>
 
 	* configure.ac (HAVE_LIBGS): find libgs for non-native-tl builds.

Modified: trunk/Build/source/texk/dvisvgm/TLpatches/TL-Changes
===================================================================
--- trunk/Build/source/texk/dvisvgm/TLpatches/TL-Changes	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/TLpatches/TL-Changes	2018-03-16 17:01:01 UTC (rev 46983)
@@ -26,7 +26,8 @@
 svn status | sed -n 's/^\!//p'  # rerun, should be empty now
 cd ..
 
-# patch to integrate into TL build:
+# patch to integrate into TL build (may well need adjusting):
 patch -d dvisvgm-src -p1 <TLpatches/patch-08-makefiles 
 
+# remake autostuff.
 autoreconf

Modified: trunk/Build/source/texk/dvisvgm/configure
===================================================================
--- trunk/Build/source/texk/dvisvgm/configure	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/configure	2018-03-16 17:01:01 UTC (rev 46983)
@@ -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.3.
+# Generated by GNU Autoconf 2.69 for dvisvgm (TeX Live) 2.3.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.3'
-PACKAGE_STRING='dvisvgm (TeX Live) 2.3.3'
+PACKAGE_VERSION='2.3.4'
+PACKAGE_STRING='dvisvgm (TeX Live) 2.3.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.3 to adapt to many kinds of systems.
+\`configure' configures dvisvgm (TeX Live) 2.3.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.3:";;
+     short | recursive ) echo "Configuration of dvisvgm (TeX Live) 2.3.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.3
+dvisvgm (TeX Live) configure 2.3.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.3, which was
+It was created by dvisvgm (TeX Live) $as_me 2.3.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.3'
+ VERSION='2.3.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.3
+dvisvgm (TeX Live) config.lt 2.3.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.3, which was
+This file was extended by dvisvgm (TeX Live) $as_me 2.3.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.3
+dvisvgm (TeX Live) config.status 2.3.4
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/ChangeLog	2018-03-16 17:01:01 UTC (rev 46983)
@@ -1,11 +1,64 @@
-2018-01-12  Martin Gieseking  <martin.gieseking at uos.de>
+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: 
@@ -34,12 +87,6 @@
 
 2018-01-02  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/Font.cpp: 
-  fixed char width of fonts slanted by style option (closes #82) 
-
-  * src/dvisvgm.cpp: 
-  avoid potential dangling string pointer to --fontmap argument 
-
   * 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, 
@@ -151,26 +198,32 @@
     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/FontWriter.cpp: 
-  keep unhinted TTF if autohinting failed 
-
   * 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>
 
-  * NEWS, README, README.md: 
-  updated README and NEWS 
+  * .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 
 
-  * .appveyor.yml: 
-  AppVeyor: download and install ttfautohint headers 
+  * NEWS, README, README.md: 
+  updated README and NEWS 
 
 2017-12-27  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -212,14 +265,14 @@
 
 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 
 
-  * configure.ac: 
-  configure: dropped check of outdated Ghostscript version 
-
 2017-12-18  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/psdefs.cpp: 
@@ -227,11 +280,6 @@
 
 2017-12-17  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * 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 
-
   * 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, 
@@ -239,6 +287,11 @@
     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, 
@@ -338,9 +391,6 @@
 
 2017-12-12  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * tests/CMakeLists.txt: 
-  ctest: colorize test results and keep gtest colors 
-
   * libs/variant/include/mpark/config.hpp, 
     libs/variant/include/mpark/lib.hpp, 
     libs/variant/include/mpark/variant.hpp: 
@@ -349,15 +399,18 @@
 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>
 
-  * NEWS: 
-  updated NEWS 
-
   * .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, 
@@ -371,36 +424,35 @@
 
 2017-11-24  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/DependencyGraph.hpp: 
-  simplified DependencyGraph::GraphNode 
-
   * 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 
 
-  * src/DependencyGraph.hpp: 
-  fixed dangling pointer issue in DependencyGraph 
-
-  * tests/EmSpecialTest.cpp: 
-  added missing initializers in EmSpecialTest 
-
-  * tests/TpicSpecialTest.cpp: 
-  added missing initializers in TpicSpecialTest 
-
 2017-11-22  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * 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 
+  * 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, 
@@ -409,9 +461,10 @@
     tests/testutil.hpp: 
   tests: moved common initializations to testmain.cpp 
 
-  * src/PSPattern.cpp, src/SVGCharHandler.cpp, src/SVGTree.cpp, 
-    src/TpicSpecialHandler.cpp: 
-  removed redundant calls of std::move() 
+  * 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>
 
@@ -420,9 +473,6 @@
 
 2017-11-20  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * README.md: 
-  added donation badge to readme 
-
   * tests/CMapTest.cpp, tests/GFReaderTest.cpp, tests/JFMReaderTest.cpp, 
     tests/RangeMapTest.cpp, tests/TFMReaderTest.cpp, 
     tests/TensorProductPatchTest.cpp, tests/ToUnicodeMapTest.cpp, 
@@ -429,26 +479,29 @@
     tests/VectorStreamTest.cpp: 
   tests: few code improvements 
 
+  * README.md: 
+  added donation badge to readme 
+
 2017-11-17  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS: 
-  updated NEWS 
+  * src/Font.cpp, src/Font.hpp: 
+  prevent dangling pointers to font map entries (closes #79) 
 
-  * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, 
-    src/version.hpp: 
-  set version to 2.2.2 
+  * 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 
 
-  * 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' 
+  * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, 
+    src/version.hpp: 
+  set version to 2.2.2 
 
-  * src/Font.cpp, src/Font.hpp: 
-  prevent dangling pointers to font map entries (closes #79) 
+  * NEWS: 
+  updated NEWS 
 
 2017-11-16  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -457,6 +510,13 @@
 
 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 
@@ -463,13 +523,6 @@
   ea542a0
 https://github.com/mpark/variant/commit/ea542a0fef86fb8c1696238b95bdaddb8ff2337c 
 
-  * NEWS, README.md: 
-  updated NEWS and README 
-
-  * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, 
-    src/version.hpp: 
-  set version to 2.2.1 
-
 2017-11-10  Martin Gieseking  <martin.gieseking at uos.de>
 
   * README, README.md, doc/dvisvgm.txt.in: 
@@ -487,19 +540,16 @@
 
 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 
 
-  * src/CMakeLists.txt, src/PsSpecialHandler.hpp, src/psdefs.cpp, 
-    src/psdefs.ps, tests/PSInterpreterTest.cpp: 
-  properly apply CTM to linewidth (closes #77) 
-
 2017-10-27  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/DependencyGraph.hpp, src/SVGTree.cpp, tests/DependencyGraphTest.cpp: 
-  manage heap memory in DependencyGraph with unique_ptrs 
-
   * 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, 
@@ -515,6 +565,9 @@
 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: 
@@ -527,19 +580,6 @@
 
 2017-10-17  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS, README, README.md: 
-  updated NEWS and README 
-
-  * .appveyor.yml, .travis.yml, CMakeLists.txt, configure.ac, src/Doxyfile, 
-    src/version.hpp: 
-  set version to 2.2 
-
-  * src/Length.hpp, src/PageSize.cpp: 
-  added user-defined literals for some length units 
-
-  * src/dvisvgm.cpp: 
-  fixed output of option --version 
-
   * 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, 
@@ -554,16 +594,29 @@
     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/Subfont.cpp: 
-  don't access unique_ptr after it has been moved 
+  * src/FontWriter.cpp: 
+  added missing #include of config.h 
 
   * src/Message.cpp: 
   check for '\0' at end of DVISVGM_COLORS 
 
-  * src/FontWriter.cpp: 
-  added missing #include of config.h 
+  * src/Subfont.cpp: 
+  don't access unique_ptr after it has been moved 
 
 2017-10-15  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -572,9 +625,6 @@
 
 2017-10-13  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * .travis.yml: 
-  Travis: use gcc 4.9 rather than 4.8 to compile mpark::variant correctly 
-
   * 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, 
@@ -588,6 +638,9 @@
     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, 
@@ -624,14 +677,14 @@
 
 2017-10-06  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/Subfont.cpp, src/Subfont.hpp, src/utility.hpp: 
-  removed stream-based constructor of SubfontException 
+  * 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/CRC32.hpp, src/SpecialManager.hpp, src/Subfont.hpp, src/XMLNode.hpp: 
-  use delete/default to remove/implement constructors 
+  * 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>
 
@@ -643,17 +696,25 @@
 
 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() 
 
-  * 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 
-
 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, 
@@ -682,14 +743,6 @@
     libs/woff2/brotli/include/brotli/encode.h: 
   updated Brotli to version 1.0.1 
 
-  * 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 
-
-  * src/TpicSpecialHandler.cpp: 
-  use isxdigit() to check hex digits 
-
 2017-09-19  Martin Gieseking  <martin.gieseking at uos.de>
 
   * transfer-cs: 
@@ -702,6 +755,11 @@
 
 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, 
@@ -716,19 +774,14 @@
     tests/ColorSpecialTest.cpp, tests/PapersizeSpecialTest.cpp: 
   changed return value of SpecialHandler::prefixes() to std::vector 
 
-  * 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 
-
 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 
 
-  * tests/FileSystemTest.cpp: 
-  close streams before removing crresponding files 
-
 2017-09-12  Martin Gieseking  <martin.gieseking at uos.de>
 
   * tests/CMakeLists.txt: 
@@ -741,13 +794,11 @@
 
 2017-09-08  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.3 
+  * src/DependencyGraph.hpp, src/SVGTree.cpp, tests/DependencyGraphTest.cpp: 
+  DependencyGraph::getKeys(): return result, don't use reference parameter 
 
-  * 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 
+  * 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: 
@@ -755,49 +806,31 @@
   tests
 this is required to initialize kpathsea properly, for example 
 
-  * src/FileFinder.cpp, src/Makefile.am: 
-  added missing #include; added windows.hpp to Makefile.am 
+  * 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 
 
-  * src/DependencyGraph.hpp, src/SVGTree.cpp, tests/DependencyGraphTest.cpp: 
-  DependencyGraph::getKeys(): return result, don't use reference parameter 
+  * 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>
 
-  * doc/dvisvgm.txt.in, src/dvisvgm.cpp: 
-  added pdftex.map to default mapfiles 
+  * 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) 
 
-  * src/GFReader.cpp: 
-  fixed incorrect integer type in GFReader; insert CharInfos with emplace 
+  * doc/dvisvgm.txt.in, src/dvisvgm.cpp: 
+  added pdftex.map to default mapfiles 
 
-  * tests/CMakeLists.txt, tests/FontCacheTest.cpp, tests/Makefile.am, 
-    tests/create-makefile: 
-  fixed path issue in FontCacheTest 
-
 2017-09-06  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * 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 
-
-  * 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/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, 
@@ -817,25 +850,45 @@
     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 
 
-  * tests/DvisvgmSpecialTest.cpp: 
-  replaced constexpr with const to make clang happy 
-
 2017-08-27  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * tests/MapLineTest.cpp: 
-  added braces to prevent compiler warnings 
-
   * 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, 
@@ -892,6 +945,11 @@
 
 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 
@@ -899,22 +957,17 @@
 - avoids keeping popped (and no longer 
   required) paths in the pool vector 
 
-  * src/GraphicsPath.hpp: 
-  replaced vector with deque in class GraphicsPath
-due to cheaper front 
-  insertions/deletions 
-
 2017-05-26  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/FileFinder.cpp, src/PsSpecialHandler.cpp: 
-  lookup psfile in texmf tree if it's not present in cwd (fixes #69) 
+  * 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/Pair.hpp, tests/PairTest.cpp: 
-  added abs() and negation operator to class Pair 
+  * 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>
 
@@ -925,9 +978,6 @@
 
 2017-05-15  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * .appveyor.yml: 
-  updated FreeType to version 2.8 
-
   * 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, 
@@ -962,6 +1012,9 @@
     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: 
@@ -969,6 +1022,10 @@
 
 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 
@@ -978,10 +1035,6 @@
 - prevent blocking if subprocess doesn't write anything 
   to stdout/stderr 
 
-  * CMakeLists.txt, cmake-config.h, configure.ac, src/SignalHandler.cpp, 
-    src/SignalHandler.hpp: 
-  use sigaction() rather than signal() if possible 
-
 2017-04-28  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/Process.cpp: 
@@ -994,16 +1047,16 @@
 
 2017-04-24  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/TpicSpecialHandler.cpp, tests/TpicSpecialTest.cpp: 
-  added evaluation of TPIC's 'tx' special command 
+  * 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/Color.cpp, src/Color.hpp, src/PSPattern.cpp, 
-    tests/ColorSpecialTest.cpp: 
-  avoid implicit conversion of Color object to RGB integer 
+  * src/TpicSpecialHandler.cpp, tests/TpicSpecialTest.cpp: 
+  added evaluation of TPIC's 'tx' special command 
 
 2017-04-18  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -1012,14 +1065,14 @@
 
 2017-04-14  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/Ghostscript.cpp: 
-  try to load libgs.X.dylib on Mac systems (closes #66) 
+  * 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/DLLoader.cpp, src/DLLoader.hpp: 
-  added DLLoader::loadLibrary() to assign a different library 
+  * src/Ghostscript.cpp: 
+  try to load libgs.X.dylib on Mac systems (closes #66) 
 
 2017-03-22  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -1028,33 +1081,33 @@
 
 2017-03-03  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * tests/FilePathTest.cpp, tests/FontCacheTest.cpp, 
-    tests/SVGOutputTest.cpp: 
-  tests: minor path improvements 
+  * 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 
 
-  * src/FileFinder.cpp, tests/FileFinderTest.cpp: 
-  fixed handling of absolute additional directories in FileFinder 
+  * tests/FilePathTest.cpp, tests/FontCacheTest.cpp, 
+    tests/SVGOutputTest.cpp: 
+  tests: minor path improvements 
 
 2017-03-02  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * 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 
+  * 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 
 
-  * libs/woff2/src/normalize.cc, libs/woff2/src/woff2_enc.cc: 
-  woff2: removed unused variables 
+  * 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/woff2/CMakeLists.txt: 
-  adapted Makefiles to updated libwoff2 
+  * 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, 
@@ -1124,8 +1177,8 @@
     libs/woff2/src/woff2_enc.cc, src/Makefile.am: 
   updated woff2 to https://github.com/google/woff2/commit/68e9ab5 
 
-  * libs/ff-woff/fontforge/nowakowskittfinstr.c: 
-  ff-woff: removed redundant variables 
+  * libs/woff2/CMakeLists.txt: 
+  adapted Makefiles to updated libwoff2 
 
 2017-02-23  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -1145,6 +1198,10 @@
 
 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, 
@@ -1152,32 +1209,28 @@
     tests/CMakeLists.txt, tests/gtest/CMakeLists.txt: 
   improved cmake build environment (works with ninja) 
 
-  * libs/woff2/brotli/tools/bro.cc, libs/woff2/brotli/tools/rfc-format.py, 
-    libs/woff2/brotli/tools/version.h: 
-  removed redundant files 
-
 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 
 
-  * .appveyor.yml, .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: 
-  set version to 2.1.3 
-
 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 
 
-  * tests/genhashcheck.py: 
-  reformatted genhashcheck 
-
-  * libs/ff-woff/inc/ffintl.h: 
-  ff-woff: removed redundant defines and prototypes to fix build failure 
-  on Solaris 
-
 2017-02-15  Martin Gieseking  <martin.gieseking at uos.de>
 
   * configure.ac, libs/ff-woff/Makefile.am, 
@@ -1188,23 +1241,23 @@
 
 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) 
 
-  * README, README.md: 
-  added information on required C++11 compiler to README 
-
 2017-02-13  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/Color.cpp, src/Matrix.cpp, src/utility.hpp: 
-  replaced local copies of deg2rad with global function 
+  * 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/MapLine.hpp: 
-  removed 'expicit' keyword from default constructor to make gcc 4.8 happy 
+  * 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>
 
@@ -1213,33 +1266,20 @@
 
 2017-02-10  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * .travis.yml, appveyor.yml, configure.ac, src/Doxyfile, src/version.hpp: 
-  set version to 2.1.2 
+  * 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 
 
-  * tests/StreamReaderTest.cpp: 
-  clear istream flags to prevent failure of StreamReaderTest 
+  * .travis.yml, appveyor.yml, configure.ac, src/Doxyfile, src/version.hpp: 
+  set version to 2.1.2 
 
-  * src/Calculator.cpp: 
-  fixed number parsing in Calculator class (failed on Mac) 
-
 2017-02-09  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/CLCommandLine.cpp: 
-  reset status flags before changing the sstream source 
-
-  * src/GFReader.cpp, src/StreamReader.cpp, tests/GFReaderTest.cpp, 
-    tests/StreamReaderTest.cpp: 
-  improved implementation of getString() 
-
-  * src/VectorStream.hpp: 
-  don't access first vector component if the vector is empty 
-
-  * src/Directory.cpp, tests/DirectoryTest.cpp: 
-  prevent calling closedir() with null pointer argument 
-
   * .gitignore, .travis.yml, Makefile.am, configure.ac, tests/Makefile.am, 
     tests/create-makefile, tests/gtest/LICENSE, 
     tests/gtest/include/gtest/gtest-death-test.h, 
@@ -1273,38 +1313,51 @@
     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>
 
-  * src/XMLNode.cpp: 
-  fixed memory leak in class XMLElementNode 
+  * tests/CommandLineTest.cpp: 
+  removed redundant function 
 
-  * src/Subfont.cpp: 
-  fixed memory leak in Subfont class 
+  * src/XMLString.cpp, tests/EmSpecialTest.cpp, tests/GFGlyphTracerTest.cpp: 
+  avoid negative zeros (-0) in SVG output 
 
-  * tests/CMapReaderTest.cpp: 
-  fixed memory leak in CMapReaderTest 
+  * 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 
 
-  * src/BoundingBox.cpp: 
-  fixed memory issue in BoundingBox class 
+  * tests/CMapReaderTest.cpp: 
+  fixed memory leak in CMapReaderTest 
 
-  * src/XMLString.cpp, tests/EmSpecialTest.cpp, tests/GFGlyphTracerTest.cpp: 
-  avoid negative zeros (-0) in SVG output 
+  * src/Subfont.cpp: 
+  fixed memory leak in Subfont class 
 
-  * tests/CommandLineTest.cpp: 
-  removed redundant function 
+  * 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 
 
-  * configure.ac: 
-  replaced deprecated AC_CONFIG_HEADER 
-
 2017-02-06  Martin Gieseking  <martin.gieseking at uos.de>
 
   * .travis.yml, appveyor.yml, configure.ac, src/Doxyfile, src/version.hpp: 
@@ -1317,23 +1370,23 @@
 
 2017-02-03  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * configure.ac, libs/ff-woff/fontforge/splinefont.h: 
-  include xlocale.h in ff-woff if available (fixes #65) 
-
   * 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/Font.cpp, src/Font.hpp: 
-  report Metafont failures only once for each font 
+  * src/Makefile.am: 
+  removed spurious colon from src/Makefile.am 
 
   * configure.ac: 
   allow C++11 language extensions if necessary 
 
-  * src/Makefile.am: 
-  removed spurious colon from src/Makefile.am 
+  * src/Font.cpp, src/Font.hpp: 
+  report Metafont failures only once for each font 
 
 2017-01-31  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -1358,16 +1411,10 @@
 
 2017-01-25  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * m4/ax_code_coverage.m4, m4/ax_cxx_compile_stdcxx.m4: 
-  updated m4 scripts to latest versions 
+  * src/PapersizeSpecialHandler.cpp, src/PapersizeSpecialHandler.hpp, 
+    tests/Makefile.am, tests/PapersizeSpecialTest.cpp, tests/create-makefile: 
+  added PapersizeSpecialTest 
 
-  * tests/Makefile.am, tests/create-makefile: 
-  removed redundant linker flag from tests 
-
-  * src/FontCache.cpp, src/FontCache.hpp, tests/FontCacheTest.cpp, 
-    tests/Makefile.am: 
-  added FontCacheTest 
-
   * tests/CMapManagerTest.cpp, tests/CMapReaderTest.cpp, 
     tests/DvisvgmSpecialTest.cpp, tests/EmSpecialTest.cpp, 
     tests/FileFinderTest.cpp, tests/FontManagerTest.cpp, 
@@ -1375,10 +1422,16 @@
     tests/TFMReaderTest.cpp, tests/TensorProductPatchTest.cpp: 
   added 'override' specifier to gtest methods 
 
-  * src/PapersizeSpecialHandler.cpp, src/PapersizeSpecialHandler.hpp, 
-    tests/Makefile.am, tests/PapersizeSpecialTest.cpp, tests/create-makefile: 
-  added PapersizeSpecialTest 
+  * 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: 
@@ -1386,14 +1439,14 @@
 
 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 
 
-  * src/options.xml: 
-  get name of options.xml from command-line; fixed indentation 
-
 2017-01-20  Martin Gieseking  <martin.gieseking at uos.de>
 
   * libs/ff-woff/Makefile.am, libs/ff-woff/fontforge/fontforge.h, 
@@ -1409,16 +1462,6 @@
 
 2017-01-18  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS: 
-  updated NEWS 
-
-  * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: 
-  set version to 2.1 
-
-  * src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/EPSToSVG.cpp: 
-  get program name and version from version.hpp, avoid using macros from 
-  config.h 
-
   * 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, 
@@ -1426,15 +1469,18 @@
   moved common utility functions to separate compilation unit and 
   namespace 
 
-2017-01-17  Martin Gieseking  <martin.gieseking at uos.de>
+  * src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, src/EPSToSVG.cpp: 
+  get program name and version from version.hpp, avoid using macros from 
+  config.h 
 
-  * src/FontWriter.cpp, src/FontWriter.hpp: 
-  print error message if FontWriter can't write temporary files 
+  * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: 
+  set version to 2.1 
 
-  * doc/dvisvgm.txt.in, src/CommandLine.hpp, src/dvisvgm.cpp, 
-    src/options.xml: 
-  added option --tmpdir to select a different temp folder 
+  * 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, 
@@ -1442,18 +1488,25 @@
   create temp files in the system's temp folder rather than in cwd (closes 
   #63) 
 
-2017-01-12  Martin Gieseking  <martin.gieseking at uos.de>
+  * doc/dvisvgm.txt.in, src/CommandLine.hpp, src/dvisvgm.cpp, 
+    src/options.xml: 
+  added option --tmpdir to select a different temp folder 
 
-  * tests/GhostscriptTest.cpp: 
-  disable GS banner in GhostscriptTest 
+  * src/FontWriter.cpp, src/FontWriter.hpp: 
+  print error message if FontWriter can't write temporary files 
 
-  * src/DVIToSVG.cpp, src/EPSToSVG.cpp, src/SVGTree.hpp: 
-  print warning message if output file could not be written 
+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: 
@@ -1578,20 +1631,20 @@
 
 2016-12-16  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * doc/conf-dblatex-pdf.xsl, doc/tweak-dblatex-pdf.xsl: 
-  manpage: use mixed case titles in pdf output 
+  * 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/db2html.xsl: 
-  manpage: replace icon of Author section 
-
   * doc/conf-dblatex-man.xsl, doc/conf-dblatex-pdf.xsl, 
     doc/tweak-dblatex-pdf.xsl: 
   indent with tabs rather than spaces 
 
-  * 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/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: 
@@ -1609,15 +1662,9 @@
 
 2016-11-12  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: 
-  set version to 2.0.4 
+  * doc/dvisvgm.txt.in: 
+  minor changes in manpage 
 
-  * 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 
-
   * 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, 
@@ -1666,18 +1713,24 @@
     libs/ff-woff/inc/ustring.h, libs/ff-woff/inc/utype.h, src/Makefile.am: 
   bundle reduced fontforge library (ff-woff) 
 
-  * doc/dvisvgm.txt.in: 
-  minor changes in manpage 
+  * 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 
 
-  * src/CommandLine.hpp, src/options.xml: 
-  fixed a typo in the --help output 
-
 2016-11-01  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/FontWriter.cpp: 
@@ -1685,21 +1738,21 @@
 
 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 
 
-  * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: 
-  set version to 2.0.3 
-
 2016-09-23  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/DVIReader.cpp: 
-  fixed positioning of rules 
-
   * 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: 
@@ -1707,35 +1760,35 @@
 
 2016-09-18  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS, README.md: 
-  updated NEWS and README 
+  * 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 
 
-  * src/RangeMap.cpp: 
-  don't decrement iterator if it points to begin() 
+  * NEWS, README.md: 
+  updated NEWS and README 
 
-  * src/DVIReader.cpp: 
-  fixed type regression in computation of DVI positions (closes #61) 
-
 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 
 
-  * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: 
-  set version to 2.0.1 
-
 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 
 
-  * README, README.md: 
-  added link to reduced FF library to README 
-
 2016-08-30  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/DVIToSVGActions.hpp, src/FontManager.hpp, src/MetafontWrapper.hpp: 
@@ -1743,20 +1796,20 @@
 
 2016-08-28  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS: 
-  updated NEWS 
+  * src/FileFinder.cpp, src/FileFinder.hpp: 
+  removed unused variable 
 
-  * README, README.md: 
-  updated README files 
+  * src/CLCommandLine.cpp: 
+  added missing cast to avoid compiler warning 
 
   * .travis.yml, configure.ac, src/Doxyfile, src/version.hpp: 
   set version to 2.0 
 
-  * src/CLCommandLine.cpp: 
-  added missing cast to avoid compiler warning 
+  * README, README.md: 
+  updated README files 
 
-  * src/FileFinder.cpp, src/FileFinder.hpp: 
-  removed unused variable 
+  * NEWS: 
+  updated NEWS 
 
 2016-08-27  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -1766,6 +1819,17 @@
 
 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, 
@@ -1818,17 +1882,6 @@
     src/FontWriter.cpp, src/FontWriter.hpp, src/Makefile.am: 
   added support for embedding WOFF2 fonts 
 
-  * 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' 
-
 2016-08-24  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/XMLNode.hpp: 
@@ -1836,6 +1889,9 @@
 
 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, 
@@ -1843,9 +1899,6 @@
     src/options.xml: 
   added option --font-format to select the file format used to embed fonts 
 
-  * src/FontEngine.cpp: 
-  fixed sign of the font descender 
-
 2016-08-22  Martin Gieseking  <martin.gieseking at uos.de>
 
   * xxHash/xxhash.c, xxHash/xxhash.h, xxHash/xxhsum.c: 
@@ -1859,12 +1912,12 @@
 
 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 
 
-  * src/Ghostscript.hpp: 
-  removed copy constructor of class Ghostscript 
-
 2016-08-13  Martin Gieseking  <martin.gieseking at uos.de>
 
   * CMakeLists.txt, configure.ac, src/CLCommandLine.cpp, 
@@ -1881,12 +1934,6 @@
 
 2016-08-08  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/Ghostscript.cpp, src/MiKTeXCom.cpp: 
-  replaced __WIN64__ with pre-defined _WIN64 
-
-  * src/System.cpp, src/dvisvgm.cpp: 
-  minor refactorings of dvisvgm.cpp 
-
   * 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, 
@@ -1895,8 +1942,21 @@
     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, 
@@ -1906,13 +1966,6 @@
     tests/MapLineTest.cpp, tests/SubfontTest.cpp: 
   made FileFinder a singleton again 
 
-  * 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 
-
 2016-07-27  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/BgColorSpecialHandler.cpp, src/BoundingBox.cpp, 
@@ -1926,21 +1979,21 @@
 
 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 
 
-  * src/PathClipper.cpp: 
-  some minor refactorings of class PathClipper 
-
 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 
 
-  * src/FontMap.cpp, src/FontMap.hpp: 
-  some syntactic refactorings of class FontMap 
-
 2016-07-21  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/AGLTable.h, src/AGLTable.hpp, src/BasicDVIReader.cpp, 
@@ -2069,8 +2122,8 @@
 
 2016-07-20  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h: 
-  create BoxMap object directly, avoid new/delete 
+  * 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, 
@@ -2077,8 +2130,8 @@
     src/XMLNode.cpp, src/XMLNode.h, tests/XMLNodeTest.cpp: 
   use smart pointers to release heap memory 
 
-  * src/genhashmap.cpp, src/glyphlist.txt: 
-  added genhashmap (generates AGLTable.h from glyphlist.txt) 
+  * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h: 
+  create BoxMap object directly, avoid new/delete 
 
 2016-07-19  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -2098,35 +2151,38 @@
 
 2016-07-04  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS, README.md: 
-  updated NEWS and README 
+  * 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 
 
-  * src/dvisvgm.cpp: 
-  catch exception in set_cache_dir() 
+  * NEWS, README.md: 
+  updated NEWS and README 
 
-  * src/TFM.cpp: 
-  added missing initializers 
-
 2016-07-03  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/DVIReader.cpp, src/DVIReader.h, src/Font.cpp, src/Font.h, 
-    src/FontManager.cpp, src/FontManager.h, src/VFActions.h, 
+  * 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: 
-  transfer DVI snippet of a VF char by move semantics rather than by heap 
-  pointer 
+  replaced static callback functions with lambdas 
 
-  * 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/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, 
@@ -2161,40 +2217,38 @@
     tests/UnicodeTest.cpp: 
   replaced own fixed-sized integer types with types from cstdint 
 
-  * 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 
+  * 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/NumericRanges.h, src/PapersizeSpecialHandler.cpp, src/Unicode.cpp, 
+  * src/DVIReader.cpp, src/DVIReader.h, src/Font.cpp, src/Font.h, 
+    src/FontManager.cpp, src/FontManager.h, src/VFActions.h, 
     src/VFReader.cpp: 
-  replaced static callback functions with lambdas 
+  transfer DVI snippet of a VF char by move semantics rather than by heap 
+  pointer 
 
-  * configure.ac, m4/ax_cxx_compile_stdcxx.m4: 
-  switch from C++03 to C++11 
-
 2016-07-02  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * 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 
+  * 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 
 
-  * src/PsSpecialHandler.cpp: 
-  use unique_ptr rather than deprecated auto_ptr 
-
   * 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, 
@@ -2214,20 +2268,19 @@
     src/TriangularPatch.h, src/VectorStream.h, src/XMLNode.h: 
   mark overridden methods with 'override' keyword 
 
-  * 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 
+  * 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, 
@@ -2242,13 +2295,13 @@
 
 2016-06-29  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * xxHash/xxhash.c, xxHash/xxhash.h, xxHash/xxhsum.c: 
-  updated xxHash to version 0.6.1 
-
   * 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: 
@@ -2256,27 +2309,27 @@
 
 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() 
 
-  * src/DVIReader.cpp, src/VectorStream.h, tests/VectorStreamTest.cpp: 
-  refactored VectorStreamBuffer to keep constness of assigned vector 
-
 2016-06-14  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/BoundingBox.cpp, src/BoundingBox.h, tests/BoundingBoxTest.cpp: 
-  fixed unit conversion in BoundingBox class 
+  * 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/XMLNode.h: 
-  added ouput operators for the XML node objects 
+  * src/BoundingBox.cpp, src/BoundingBox.h, tests/BoundingBoxTest.cpp: 
+  fixed unit conversion in BoundingBox class 
 
-  * src/DvisvgmSpecialHandler.cpp, src/TFM.cpp, src/VFReader.cpp: 
-  replaced local definitions of pt2bp with Length::pt2bp 
-
 2016-06-13  Martin Gieseking  <martin.gieseking at uos.de>
 
   * doc/dvisvgm.txt.in, src/Length.cpp, src/Length.h, tests/LengthTest.cpp: 
@@ -2284,8 +2337,8 @@
 
 2016-06-12  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * xxHash/xxhash-fileno.patch, xxHash/xxhsum.c: 
-  added xxHash test utility 'xxhsum' 
+  * 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, 
@@ -2294,22 +2347,19 @@
     src/Terminal.h, src/dvisvgm.cpp: 
   cleaned up Windows-related #defines 
 
-  * xxHash/xxhash.c, xxHash/xxhash.h: 
-  updated xxHash to version 0.6.0 
+  * 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 
 
-  * src/CommandLine.cpp: 
-  removed redundant #includes 
-
 2016-06-07  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/SVGCharHandler.h: 
-  added missing initializer to class SVGCharHandler 
-
   * 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, 
@@ -2322,21 +2372,11 @@
   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>
 
-  * CMakeLists.txt: 
-  updated CMakeLists.txt 
-
-  * 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=' 
-
-  * 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 
-
   * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h, 
     src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/DVIToSVG.cpp, 
     src/DVIToSVGActions.cpp, src/DvisvgmSpecialHandler.cpp, 
@@ -2351,6 +2391,19 @@
     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: 
@@ -2363,10 +2416,6 @@
 
 2016-05-30  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/BasicDVIReader.cpp, src/BasicDVIReader.h, src/Bezier.h, 
-    src/TensorProductPatch.h, src/TriangularPatch.h: 
-  replaced leading spaces with tabs 
-
   * src/DVIToSVGActions.cpp, src/Font.cpp, src/Makefile.am, 
     src/SVGCharHandler.cpp, src/SVGCharHandler.h, 
     src/SVGCharHandlerFactory.cpp, src/SVGCharHandlerFactory.h, 
@@ -2376,6 +2425,10 @@
     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: 
@@ -2400,14 +2453,14 @@
 
 2016-05-24  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/TFM.cpp, tests/JFMReaderTest.cpp, tests/TFMReaderTest.cpp: 
-  fixed calculation of character dimensions in TFM class 
+  * 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/JFM.cpp, src/JFM.h, src/TFM.cpp, src/TFM.h: 
-  TFM: store design size in bp units rather than as fixword 
+  * 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>
 
@@ -2422,23 +2475,23 @@
 
 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 
 
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.15.1 
-
 2016-04-18  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * tests/CMapReaderTest.cpp: 
-  improved CMapReaderTest 
+  * 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 
 
-  * src/Calculator.cpp, src/Matrix.cpp: 
-  use std::ws to skip whitespace in istreams 
+  * tests/CMapReaderTest.cpp: 
+  improved CMapReaderTest 
 
 2016-04-11  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -2448,12 +2501,12 @@
 
 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' 
 
-  * src/XMLDocument.cpp: 
-  explicitly specify UTF-8 encoding in XML declaration (closes #54) 
-
 2016-03-17  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/GraphicsPath.h: 
@@ -2461,20 +2514,20 @@
 
 2016-03-14  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/SVGTree.cpp, src/SVGTree.h: 
-  split text and path section of SVGTree::appendChar() into seperate 
-  methods 
+  * 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 
 
-  * doc/db2html.xsl: 
-  adapted db2html to insert anchors for each option entry 
+  * src/SVGTree.cpp, src/SVGTree.h: 
+  split text and path section of SVGTree::appendChar() into seperate 
+  methods 
 
-  * transfer-cs: 
-  remove patch files after they've been transferred 
-
 2016-02-27  Martin Gieseking  <martin.gieseking at uos.de>
 
   * NEWS: 
@@ -2482,24 +2535,30 @@
 
 2016-02-26  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.15 
+  * 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 
 
-  * src/Font.cpp, src/Unicode.cpp, src/Unicode.h, tests/UnicodeTest.cpp: 
-  renamed Unicode::psNameToCodepoint() to Unicode::aglNameToCodepoint 
+  * .travis.yml, configure.ac, src/Doxyfile: 
+  set version to 1.15 
 
-  * 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 
-
 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, 
@@ -2516,23 +2575,17 @@
     tests/sample.sfd: 
   moved test data files to subfolder 
 
-  * src/MetafontWrapper.cpp, src/Process.cpp: 
-  avoid reading Metafont logfiles to extract the GF filename 
-
-  * src/FontEngine.cpp: 
-  reworded error messages of class FontEngine 
-
 2016-02-22  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/FontEngine.cpp, src/FontEngine.h: 
-  removed redundant code from class FontEngine 
+  * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, 
+    tests/CommandLineTest.cpp: 
+  minor improvements of class CommandLineTest 
 
   * src/XMLNode.cpp, tests/DvisvgmSpecialTest.cpp: 
   improved DvisvgmSpecialTest 
 
-  * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, 
-    tests/CommandLineTest.cpp: 
-  minor improvements of class CommandLineTest 
+  * src/FontEngine.cpp, src/FontEngine.h: 
+  removed redundant code from class FontEngine 
 
 2016-02-05  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -2559,36 +2612,36 @@
 
 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 
 
-  * m4/ax_code_coverage.m4: 
-  updated m4 code coverage script to latest version 
-
 2016-01-19  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS, README.md: 
-  updated NEWS 
+  * src/GraphicsPath.h, tests/GraphicsPathTest.cpp: 
+  fixed access of invalid iterator 
 
   * .travis.yml, configure.ac, src/Doxyfile: 
   set version to 1.14.2 
 
-  * src/GraphicsPath.h, tests/GraphicsPathTest.cpp: 
-  fixed access of invalid iterator 
+  * NEWS, README.md: 
+  updated NEWS 
 
 2016-01-18  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * tests/Makefile.am, tests/create-makefile, tests/genhashcheck.py: 
-  added test to check the validity of the char name hashes used in 
-  Unicode.cpp 
+  * 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 
 
-  * doc/db2html.xsl: 
-  updated links to Bootstrap and Font Awesome in stylesheet db2html.xsl 
+  * 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>
 
@@ -2598,31 +2651,25 @@
 
 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 
 
-  * src/DVIReader.h, src/FontStyle.h, src/SVGTree.cpp, 
-    src/TriangularPatch.cpp: 
-  updated/fixed some comments 
-
 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 
 
-  * src/GFReader.cpp, src/GFReader.h: 
-  added checks for misplaced GF commands 
-
 2016-01-04  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * .travis.yml: 
-  force Travis to use legacy builds due to an issue with clang and gtest 
-
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.14.1 
-
   * 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, 
@@ -2706,6 +2753,12 @@
     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: 
@@ -2713,12 +2766,12 @@
 
 2015-12-28  Martin Gieseking  <martin.gieseking at uos.de>
 
+  * .travis.yml, configure.ac, src/Doxyfile: 
+  set version to 1.14 
+
   * NEWS: 
   updated NEWS 
 
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.14 
-
 2015-12-27  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/PsSpecialHandler.cpp: 
@@ -2726,13 +2779,13 @@
 
 2015-12-26  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/GraphicsPath.h, tests/GraphicsPathTest.cpp: 
-  fixed memory issue in class GraphicsPath<T> 
-
   * 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, 
@@ -2743,23 +2796,23 @@
 
 2015-12-09  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * tests/GhostscriptTest.cpp: 
-  prevent opening a graphics window when running GhostscriptTest 
-
   * 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>
 
-  * clipper/clipper.cpp, clipper/clipper.hpp: 
-  replaced DOS line endings of the Clipper sources to Unix ones 
+  * .travis.yml, configure.ac, src/Doxyfile: 
+  set version to 1.13 
 
   * NEWS: 
   updated NEWS 
 
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.13 
+  * 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>
 
@@ -2775,12 +2828,12 @@
 
 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 
 
-  * doc/dvisvgm.txt.in: 
-  added a couple of links to the manpage 
-
 2015-11-27  Martin Gieseking  <martin.gieseking at uos.de>
 
   * .gitignore, CMakeLists.txt, cmake/FindGhostscript.cmake, 
@@ -2789,48 +2842,48 @@
 
 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 
 
-  * src/DVIToSVGActions.cpp, src/EPSToSVG.cpp: 
-  remove progress message before printing a PS error message 
-
 2015-11-24  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * xxHash/xxhash.c: 
-  updated xxHash to version r42 
-
   * 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/psdefs.cpp, src/psdefs.ps: 
-  propagate call of PS operator 'setcolor' to the PS handler 
+  * 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/PsSpecialHandler.cpp, src/psdefs.cpp, src/psdefs.ps: 
-  minor code cleanup and reordering 
+  * 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 
 
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.12 
-
 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 
 
-  * src/FontManager.cpp: 
-  removed redundant #include 
-
 2015-11-12  Martin Gieseking  <martin.gieseking at uos.de>
 
   * README, README.md: 
@@ -2838,6 +2891,13 @@
 
 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, 
@@ -2847,13 +2907,6 @@
   added option --colornames to replace RGB color values with SVG color 
   names 
 
-  * tests/Makefile.am, tests/ShadingPatch.cpp, tests/ShadingPatchTest.cpp: 
-  renamed ShadingPatchTest 
-
-  * src/Color.cpp, src/Color.h, src/ColorSpecialHandler.cpp, 
-    src/HtmlSpecialHandler.cpp, tests/ColorTest.cpp: 
-  renamed Color::setName() to Color::setPSName() 
-
 2015-10-27  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/Process.cpp, src/Process.h: 
@@ -2871,21 +2924,21 @@
 
 2015-09-14  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/Font.cpp, src/Unicode.cpp, src/Unicode.h, tests/UnicodeTest.cpp: 
-  renamed Unicode::psName2Codepoint to Unicode::psNameToCodepoint 
-
   * 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 
 
-  * src/Font.cpp: 
-  prevent creating 0x00 codepoints if PS character name is unknown 
-
 2015-09-09  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/SVGTree.cpp: 
@@ -2899,14 +2952,14 @@
 
 2015-07-29  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * tests/CommandLineTest.cpp, tests/MessageExceptionTest.cpp: 
-  use ASSERT_STREQ in tests 
+  * tests/GhostscriptTest.cpp, tests/Makefile.am: 
+  added GhostscriptTest 
 
   * tests/UnicodeTest.cpp: 
   improved UnicodeTest 
 
-  * tests/GhostscriptTest.cpp, tests/Makefile.am: 
-  added GhostscriptTest 
+  * tests/CommandLineTest.cpp, tests/MessageExceptionTest.cpp: 
+  use ASSERT_STREQ in tests 
 
 2015-07-22  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -2921,12 +2974,12 @@
 
 2015-07-14  Martin Gieseking  <martin.gieseking at uos.de>
 
+  * .travis.yml, configure.ac, src/Doxyfile: 
+  set version to 1.10 
+
   * NEWS: 
   updated NEWS 
 
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.10 
-
 2015-07-12  Martin Gieseking  <martin.gieseking at uos.de>
 
   * README.md, doc/dvisvgm.txt.in, src/BasicDVIReader.cpp, 
@@ -2941,35 +2994,35 @@
 
 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 
 
-  * src/dvisvgm.cpp: 
-  check for option --help before initializing the FileFinder 
-
 2015-07-02  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * 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 
+  * 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) 
 
-  * tests/BezierTest.cpp: 
-  removed #include "debug.h" from test 
+  * 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>
 
-  * src/SVGTree.cpp: 
-  apply --precision settings to font-size attributes too 
+  * .travis.yml, configure.ac, src/Doxyfile: 
+  set version to 1.9.2 
 
   * NEWS, README.md: 
   updated NEWS and README.md 
 
-  * .travis.yml, configure.ac, src/Doxyfile: 
-  set version to 1.9.2 
+  * src/SVGTree.cpp: 
+  apply --precision settings to font-size attributes too 
 
 2015-04-04  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -2983,30 +3036,30 @@
 
 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 
 
-  * src/GlyphTracerMessages.h: 
-  always skip tracer message if no glyphs have been traced 
-
 2015-03-25  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/DVIToSVG.cpp: 
-  avoid retracing of fonts if option --no-fonts is given 
-
   * 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 
 
-  * tests/StreamWriterTest.cpp: 
-  fixed StreamWriterTest 
-
 2015-03-19  Martin Gieseking  <martin.gieseking at uos.de>
 
   * tests/Makefile.am, tests/ShadingPatch.cpp: 
@@ -3014,8 +3067,10 @@
 
 2015-03-18  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/TensorProductPatch.h, tests/TensorProductPatchTest.cpp: 
-  improved TensorProductPatchTest 
+  * 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, 
@@ -3023,10 +3078,8 @@
   renamed method pointAt() of class Bezier and TriangularPatch to 
   valueAt() 
 
-  * 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/TensorProductPatch.h, tests/TensorProductPatchTest.cpp: 
+  improved TensorProductPatchTest 
 
 2015-03-17  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -3035,16 +3088,16 @@
 
 2015-03-15  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * tests/Makefile.am, tests/VectorIteratorTest.cpp: 
-  added VectorIteratorTest 
+  * 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 
 
-  * src/XMLNode.cpp, src/XMLNode.h, tests/Makefile.am, 
-    tests/XMLNodeTest.cpp: 
-  fixed a few issues in class XMLElementNode; added XMLNodeTest 
+  * tests/Makefile.am, tests/VectorIteratorTest.cpp: 
+  added VectorIteratorTest 
 
 2015-03-13  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -3053,12 +3106,12 @@
 
 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 
 
-  * tests/CRC32Test.cpp: 
-  added test for 'compute' methods of class CRC32 
-
 2015-03-08  Martin Gieseking  <martin.gieseking at uos.de>
 
   * tests/StreamReaderTest.cpp: 
@@ -3066,30 +3119,30 @@
 
 2015-03-07  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * .gitignore: 
-  added .gitignore 
-
   * 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/BoundingBox.cpp, src/BoundingBox.h, tests/BoundingBoxTest.cpp: 
-  improved BoundingBox tests 
-
   * 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 
 
-  * .travis.yml: 
-  Travis conf: added configuration data for Coverity Scan 
-
 2015-02-28  Martin Gieseking  <martin.gieseking at uos.de>
 
   * NEWS, README.md: 
@@ -3112,29 +3165,28 @@
 
 2015-02-20  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * doc/Makefile.am, doc/db2html.xsl, doc/dvisvgm.css: 
-  create html manpage with a separate stylesheet matching the new website 
-  theme 
+  * 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/dvisvgm.txt.in: 
-  minor additions and formatting changes of the manpage 
+  * doc/Makefile.am, doc/db2html.xsl, doc/dvisvgm.css: 
+  create html manpage with a separate stylesheet matching the new website 
+  theme 
 
-  * 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 
-
 2015-02-19  Martin Gieseking  <martin.gieseking at uos.de>
 
   * .travis.yml: 
-  Travis conf: build gtest libraries since Ubuntu doesn't provide the 
-  binaries 
+  added configuration file for Travis CI 
 
   * .travis.yml: 
-  Travis conf: added missing call of 'configure' 
+  added dependency 'python-lxml' to Travis configuration 
 
   * .travis.yml: 
   added dependency 'libgtest-dev' to Travis configuration; ensure call of 
@@ -3141,10 +3193,11 @@
   'make check' 
 
   * .travis.yml: 
-  added dependency 'python-lxml' to Travis configuration 
+  Travis conf: added missing call of 'configure' 
 
   * .travis.yml: 
-  added configuration file for Travis CI 
+  Travis conf: build gtest libraries since Ubuntu doesn't provide the 
+  binaries 
 
 2015-02-18  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -3252,22 +3305,6 @@
 
 2014-12-28  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS: 
-  updated NEWS 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.9 
-
-  * src/dvisvgm.cpp: 
-  clear line before printing the message about user interruption to avoid 
-  trailing text fragments 
-
-  * 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 
-
   * 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, 
@@ -3276,6 +3313,22 @@
   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: 
@@ -3283,17 +3336,17 @@
 
 2014-12-18  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * 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 
+  * 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/Makefile.am, src/TriangularPatch.cpp, src/TriangularPatch.h: 
-  added class to compute triangular shading patches 
+  * 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>
 
@@ -3302,13 +3355,13 @@
 
 2014-12-03  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/Color.cpp, tests/ColorSpecialTest.cpp, tests/ColorTest.cpp: 
-  fixed CMYK to RGB approximation 
-
   * 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, 
@@ -3346,39 +3399,39 @@
 
 2014-10-23  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/Color.cpp, src/Color.h, tests/ColorTest.cpp: 
-  added deltaE and L*a*b* color space methods to class Color 
+  * 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: 
-  replaced vectors with valarrays 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, src/ColorSpecialHandler.cpp, 
-    src/PsSpecialHandler.cpp, tests/ColorTest.cpp: 
-  replaced float by double in 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 
 
-  * clipper/clipper.cpp, clipper/clipper.hpp: 
-  updated clipper library to version 6.2.0 
-
 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 
 
-  * src/CommandLine.cpp: 
-  updated CommandLine.cpp with description of option --no-merge 
-
 2014-10-01  Martin Gieseking  <martin.gieseking at uos.de>
 
   * doc/dvisvgm.txt.in, src/options.xml: 
@@ -3407,18 +3460,18 @@
 
 2014-08-29  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS: 
-  updated NEWS 
+  * 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 
 
-  * src/FontEngine.cpp, tests/PageRagesTest.cpp: 
-  removed unused static functions 
+  * NEWS: 
+  updated NEWS 
 
-  * src/PsSpecialHandler.cpp: 
-  added missing whitespace boundaries in PS code 
-
 2014-08-20  Khaled Hosny  <khaled.hosny at hindawi.com>
 
   * src/CommandLine.cpp, src/CommandLine.h, src/SVGTree.cpp, src/SVGTree.h, 
@@ -3450,11 +3503,8 @@
 2014-08-10  Khaled Hosny  <khaledhosny at eglug.org>
 
   * configure.ac, src/Makefile.am: 
-  Don't override CPPFLAGS and LDFLAGS in configure
+  EXTRA_LIBS is not used anymore 
 
-For the same reasons 
-  as the previous commit 
-
   * configure.ac, src/Makefile.am: 
   Don't override CXXFLAGS in configure script
 
@@ -3464,8 +3514,11 @@
      make CXXFLAGS="-g -O0 -pg" 
 
   * configure.ac, src/Makefile.am: 
-  EXTRA_LIBS is not used anymore 
+  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: 
@@ -3488,9 +3541,6 @@
 
 2014-07-28  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * configure.ac, src/Doxyfile: 
-  set version to 1.8 
-
   * src/GraphicPath.h, src/PSInterpreter.cpp, src/PSInterpreter.h, 
     src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/psdefs.cpp, 
     src/psdefs.ps, tests/PSInterpreterTest.cpp: 
@@ -3497,6 +3547,9 @@
   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, 
@@ -3511,27 +3564,27 @@
 
 2014-07-22  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * 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 
+  * 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 
 
-  * src/GraphicPath.h: 
-  added field to store the winding rule to class GraphicPath 
+  * 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 
 
-  * 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/DVIToSVG.h, src/dvisvgm.cpp: 
-  prevent throwing a DVIException when option -l is present 
-
 2014-07-20  Khaled Hosny  <khaledhosny at eglug.org>
 
   * src/FontEngine.cpp: 
@@ -3539,9 +3592,6 @@
 
 2014-07-18  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/TpicSpecialHandler.cpp: 
-  TPIC handler: use class GraphicPath to create SVG path commands 
-
   * 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, 
@@ -3548,6 +3598,9 @@
     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, 
@@ -3572,23 +3625,23 @@
 
 2014-06-17  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS: 
-  updated NEWS 
+  * src/SpecialManager.cpp, src/SpecialManager.h: 
+  removed redundant method SpecialManager::leavePSHeaderSection() 
 
-  * configure.ac, src/Doxyfile: 
-  set version to 1.7 
-
-  * src/InputReader.cpp: 
-  added missing include 
-
   * 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/SpecialManager.cpp, src/SpecialManager.h: 
-  removed redundant method SpecialManager::leavePSHeaderSection() 
+  * 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: 
@@ -3596,14 +3649,14 @@
 
 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 
 
-  * src/InputReader.cpp, src/InputReader.h: 
-  added InputReader::getLine() 
-
 2014-06-10  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/SpecialActions.h, tests/ColorSpecialTest.cpp: 
@@ -3611,15 +3664,49 @@
 
 2014-06-09  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/DVIToSVG.h, src/SpecialManager.h: 
-  removed redundant definition of assignment operators 
-
   * 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, 
@@ -3649,115 +3736,81 @@
     src/XMLString.h, src/dvisvgm.cpp, src/types.h: 
   replaced leading spaces by tabs; removed trailing whitespace 
 
-  * 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 
+2014-06-03  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/BasicDVIReader.h, src/DVIToSVG.cpp, src/DVIToSVGActions.cpp, 
-    src/DVIToSVGActions.h: 
-  allow to replace the DVI reader assigned to an instance of 
-  DVIToSVGActions 
+  * src/DVIReader.cpp, src/DVIReader.h: 
+  removed redundant variable DVIReader::_prevBop 
 
-  * src/DVIToSVG.cpp, src/DVIToSVG.h, src/DVIToSVGActions.cpp, 
-    src/SpecialManager.cpp, src/SpecialManager.h, src/dvisvgm.cpp: 
-  made class SpecialManager a singleton 
+  * rpm/Makefile.am: 
+  removed outdated project folder 'rpm' 
 
-  * 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/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/BasicDVIReader.cpp, src/BasicDVIReader.h, src/DVIReader.cpp, 
-    src/DVIReader.h, src/Makefile.am: 
-  moved basic funtionality of DVIReader to base class BasicDVIReader 
-
-2014-06-03  Martin Gieseking  <martin.gieseking at uos.de>
-
   * src/PsSpecialHandler.cpp: 
   fixed incorrect extent values shown when applying a preview bbox 
   (bp->pt) 
 
-  * rpm/Makefile.am: 
-  removed outdated project folder 'rpm' 
+2014-06-01  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/DVIReader.cpp, src/DVIReader.h: 
-  removed redundant variable DVIReader::_prevBop 
+  * src/EPSFile.cpp, src/GFReader.cpp: 
+  replaced relative variant of seekg() by absolute one where possible 
 
-2014-06-01  Martin Gieseking  <martin.gieseking at uos.de>
-
   * src/DVIReader.cpp, src/DVIReader.h: 
   removed redundant code from DVIReader::evalCommand() 
 
-  * src/EPSFile.cpp, src/GFReader.cpp: 
-  replaced relative variant of seekg() by absolute one where possible 
-
 2014-05-31  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/DVIReader.cpp, src/StreamReader.h, src/VFReader.cpp: 
-  renamed some methods of class StreamReader 
+  * 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/VFReader.cpp: 
-  few code adjustments 
+  * 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: 
-  simplified DVIReader::executePage; removed DVIReader::executePages 
+  * 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, src/DVIToSVG.cpp, src/DVIToSVG.h: 
-  removed DVIReader::_totalPages; use number of BOP offsets instead 
+  * src/DVIReader.cpp, src/DVIReader.h: 
+  simplified DVIReader::executePage; removed DVIReader::executePages 
 
-  * src/DVIReader.cpp, src/DVIReader.h, src/StreamReader.h: 
-  collect all DVI BOP offsets to reach them quickly 
-
 2014-05-22  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/Makefile.am: 
-  Makefiles: put source files on separate lines 
+  * src/CharMap.cpp, src/CharMap.h, src/Font.cpp, src/FontEngine.cpp, 
+    src/FontEngine.h: 
+  removed redundant method CharMap::invert() 
 
-  * 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/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/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/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/RangeMap.cpp: 
-  fixed right joins of touching ranges in a 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/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/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/CharMap.cpp, src/CharMap.h, src/Font.cpp, src/FontEngine.cpp, 
-    src/FontEngine.h: 
-  removed redundant method CharMap::invert() 
+  * src/Makefile.am: 
+  Makefiles: put source files on separate lines 
 
 2014-04-30  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -3793,40 +3846,34 @@
 
 2014-04-17  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * doc/dvisvgm.txt.in, src/CommandLine.cpp, src/options.xml: 
-  changed default argument of option --linkmark to 'box' 
+  * 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 
 
-  * src/CommandLine.h, src/DVIToSVG.cpp, src/EPSToSVG.cpp: 
-  don't link GS messages unnecessarily if HAVE_LIBGS is defined 
+  * 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>
 
-  * 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 
+  * src/DLLoader.cpp: 
+  prevent calling dlopen() if the length of the string argument is 0 
 
-  * src/Ghostscript.cpp, src/dvisvgm.cpp: 
-  moved lookup of MiKTeX's GS DLL to get_libgs() 
-
   * doc/dvisvgm.txt.in, src/Ghostscript.cpp: 
   if libgs is loaded during runtime, look for libgs.so.X instead of 
   libgs.so 
 
-  * src/DLLoader.cpp: 
-  prevent calling dlopen() if the length of the string argument is 0 
+  * 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>
 
-  * NEWS: 
-  updated NEWS 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.5.3 
-
   * src/CMap.cpp, src/CmdLineParserBase.cpp, src/ColorSpecialHandler.cpp, 
     src/DVIReader.cpp, src/DVIToSVGActions.cpp, src/Doxyfile, 
     src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h, 
@@ -3839,8 +3886,17 @@
     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, 
@@ -3856,9 +3912,6 @@
     src/VFReader.cpp: 
   switched internal computations from TeX points (pt) to PS points (bp) 
 
-  * src/DVIToSVGActions.cpp: 
-  equalize implementations of moveToX and moveToY 
-
 2014-02-05  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/DVIReader.cpp, src/DVIReader.h: 
@@ -3877,18 +3930,18 @@
 
 2014-01-03  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * configure.ac, src/Doxyfile: 
-  set version to 1.5.2 
-
   * src/FileFinder.cpp: 
-  return 'unknown' if MiKTeX version can't be retrieved 
+  catch exceptions thrown by MiKTeXCom object 
 
   * src/Directory.cpp: 
   initialize Directory member variables (Win only) 
 
   * src/FileFinder.cpp: 
-  catch exceptions thrown by MiKTeXCom object 
+  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, 
@@ -3959,38 +4012,38 @@
 
 2013-12-29  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/FontCache.cpp: 
-  catch potential StreamReaderException 
+  * 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/Font.cpp: 
-  check if units per EM are not 0 to prevent divisions by zero 
+  * src/FontCache.cpp: 
+  catch potential StreamReaderException 
 
 2013-12-18  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/DVIReader.cpp, src/Directory.cpp, src/GFReader.cpp: 
-  added missing initializations of member variables 
+  * src/BoundingBox.cpp: 
+  explicitely initialize BoundingBox fields 
 
-  * src/FontCache.cpp, src/SpecialManager.cpp: 
-  restore stream format flags 
+  * src/FontCache.cpp: 
+  avoid accessing strings constructed from temporaries 
 
-  * src/DvisvgmSpecialHandler.cpp, src/FontCache.cpp: 
-  ensure null pointer checks before dereferencing 
+  * 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/Matrix.cpp: 
-  ensure return value of istream::get() is assigned to int vars 
+  * src/DvisvgmSpecialHandler.cpp, src/FontCache.cpp: 
+  ensure null pointer checks before dereferencing 
 
-  * src/FontCache.cpp: 
-  avoid accessing strings constructed from temporaries 
+  * src/FontCache.cpp, src/SpecialManager.cpp: 
+  restore stream format flags 
 
-  * src/BoundingBox.cpp: 
-  explicitely initialize BoundingBox fields 
+  * 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>
 
@@ -4004,19 +4057,19 @@
 
 2013-10-28  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * configure.ac, src/Doxyfile: 
-  set version to 1.5.1 
+  * 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 
 
-  * src/FileSystem.cpp, src/MetafontWrapper.cpp: 
-  added explicit casts from ifstream to bool 
+  * configure.ac, src/Doxyfile: 
+  set version to 1.5.1 
 
-  * src/Bitmap.cpp, src/Color.cpp, src/JFM.cpp, src/Matrix.cpp: 
-  added missing #includes of header file <algorithm> 
-
 2013-10-27  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/DVIToSVG.cpp: 
@@ -4030,36 +4083,27 @@
 
 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 
 
-  * src/InputBuffer.h: 
-  don't check unsigned variables for negative values 
-
 2013-09-21  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/DVIToSVG.cpp: 
-  changed warning message that appears if PS support has been disabled 
-  permanently 
+  * 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/FontCache.cpp, src/FontCache.h: 
-  renamed FontCache::VERSION to FontCache::FORMAT_VERSION 
+  * 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>
 
-  * NEWS: 
-  updated NEWS 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.5 
-
-  * src/DLLoader.h, src/Directory.h: 
-  moved #define NOMINMAX to Windows config.h 
-
   * 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, 
@@ -4085,20 +4129,20 @@
     src/XMLDocument.cpp, src/XMLNode.cpp, src/XMLString.cpp, src/dvisvgm.cpp: 
   include config.h at the top of every translation unit 
 
-2013-08-30  Martin Gieseking  <martin.gieseking at uos.de>
+  * src/DLLoader.h, src/Directory.h: 
+  moved #define NOMINMAX to Windows config.h 
 
-  * doc/dvisvgm.txt.in: 
-  updated manpage 
+  * configure.ac, src/Doxyfile: 
+  set version to 1.5 
 
-  * 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 
+  * NEWS: 
+  updated NEWS 
 
-  * 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 
+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, 
@@ -4105,9 +4149,18 @@
     src/SVGTree.cpp, src/SVGTree.h, src/TFM.h, src/dvisvgm.cpp: 
   added support for DVI format 3 (pTeX, vertical mode) 
 
-  * src/FontMetrics.h, src/JFM.cpp, src/JFM.h, src/TFM.h: 
-  added retrieval of vertical mode flag to class FontMetrics 
+  * 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, 
@@ -4128,23 +4181,23 @@
 
 2013-08-13  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * 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 
-
   * 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 
 
-  * configure.ac, src/FileFinder.cpp: 
-  check if the kpathsea library is C++-safe (patch by Peter Breitenlohner) 
-
 2013-08-08  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/Matrix.cpp, src/Matrix.h: 
@@ -4152,14 +4205,14 @@
 
 2013-08-04  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/Ghostscript.h, src/PSPreviewFilter.cpp, src/PsSpecialHandler.cpp: 
-  added missing variable initializations 
-
   * 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: 
@@ -4167,62 +4220,43 @@
 
 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 
 
-  * src/DVIActions.h, src/DVIReader.cpp, src/DVIToSVG.cpp: 
-  disable font processing while scanning PS header specials 
-
 2013-08-01  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * configure.ac, src/Doxyfile: 
-  set version to 1.4 
+  * src/XMLDocument.cpp, src/XMLString.cpp: 
+  changed encoding of SVG files from ISO-8859-1 to UTF-8 
 
-  * NEWS: 
-  updated NEWS 
+  * 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 
 
-  * src/DVIToSVG.cpp: 
-  removed redundant #include statements 
+  * NEWS: 
+  updated NEWS 
 
-  * src/DVIToSVG.cpp, src/Makefile.am, src/SVGTree.cpp, 
-    src/XMLDocTypeNode.h: 
-  removed DOCTYPE declaration from generated files as suggested by the SVG 
-  specification 
+  * configure.ac, src/Doxyfile: 
+  set version to 1.4 
 
-  * src/XMLDocument.cpp, src/XMLString.cpp: 
-  changed encoding of SVG files from ISO-8859-1 to UTF-8 
-
 2013-07-31  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * 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 
+  * 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/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/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/FileFinder.cpp, src/Font.cpp, src/Font.h, src/FontManager.cpp: 
-  added support for OTF fonts 
-
-  * 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/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, 
@@ -4231,13 +4265,45 @@
   derive .enc encoding vectors and CMaps from common base class 
   FontEncoding 
 
-  * 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/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, 
@@ -4246,29 +4312,16 @@
     src/SpecialHandler.h, src/SpecialManager.cpp, src/SpecialManager.h: 
   added evaluation of bounding box information created by preview package 
 
-  * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp: 
-  added funtion to execute PS code snippets and retrieve their results 
-
-  * 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/JFM.cpp: 
-  fixed retrieval of char indexes if a JFM contains entries of chartype 0 
-  only 
-
 2013-07-23  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/FontMap.cpp: 
-  check for EOF prior to try to parse another mapline 
+  * 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/EPSToSVG.cpp: 
-  print warning message if height or width of EPS bbox is 0 
+  * src/FontMap.cpp: 
+  check for EOF prior to try to parse another mapline 
 
 2013-07-18  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -4277,21 +4330,21 @@
 
 2013-07-17  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/psdefs.cpp, src/psdefs.ps: 
-  properly store PS operator applyscalevals in systemdict 
-
   * 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 
 
-  * src/Process.cpp, src/Process.h: 
-  extended Process::run() to grab the output written to stdout 
-
 2013-07-08  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/CommandLine.cpp: 
@@ -4324,66 +4377,66 @@
 
 2013-05-13  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS: 
-  updated NEWS 
+  * 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 
 
-  * configure.ac, src/Doxyfile: 
-  set version to 1.3 
+  * 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 
 
-  * 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 
+  * 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 
 
-  * 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/CommandLine.cpp, src/CommandLine.h, 
+    src/HtmlSpecialHandler.cpp, src/dvisvgm.cpp, src/options.xml: 
+  added option --linkmark to select the highlighing variant for hyperlinks 
 
-  * 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 
+  * configure.ac, src/Doxyfile: 
+  set version to 1.3 
 
-  * 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 
+  * NEWS: 
+  updated NEWS 
 
 2013-05-02  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * 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() 
+  * 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/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/SVGTree.cpp, src/SVGTree.h: 
+  added methods to push and pop 'context elements' to a page that wrap 
+  parts of the page contents 
 
-  * src/HtmlSpecialHandler.h: 
-  dropped old HtmlSpecialHandler.h that should had been removed long time 
-  ago 
+  * 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/DVIToSVGActions.h, src/EPSToSVG.h, src/SpecialActions.h: 
-  provide the context push/pop methods of class SVGTree to special 
-  handlers 
+  * src/HtmlSpecialHandler.h: 
+  dropped old HtmlSpecialHandler.h that should had been removed long time 
+  ago 
 
-  * 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/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 
 
-  * 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/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>
 
@@ -4402,12 +4455,6 @@
 
 2013-04-24  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS: 
-  updated NEWS 
-
-  * configure.ac, src/Doxyfile: 
-  set version to 1.2.2 
-
   * 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, 
@@ -4415,16 +4462,22 @@
     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 
 
-  * src/DVIToSVG.cpp, src/EPSToSVG.cpp, src/dvisvgm.cpp: 
-  avoid output of empty parentheses if TARGET_SYSTEM is not set 
-
 2013-04-20  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/DVIToSVG.cpp, src/Makefile.am, src/NoPsSpecialHandler.cpp, 
@@ -4438,25 +4491,25 @@
 
 2013-04-09  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS: 
-  updated NEWS 
+  * 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 
 
-  * tests/Makefile.am, tests/create-makefile: 
-  updated tests/Makefile.am to honor system potracelib if present 
+  * NEWS: 
+  updated NEWS 
 
 2013-04-08  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/PageRanges.h: 
-  dropped unused variable PageRanges::_max 
+  * 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' 
 
-  * doc/dvisvgm.txt.in, src/Color.cpp, src/Color.h, src/DVIToSVGActions.cpp: 
-  allow the background color special to insert white rectancles 
+  * src/PageRanges.h: 
+  dropped unused variable PageRanges::_max 
 
 2013-04-04  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -4488,28 +4541,28 @@
 
 2013-02-28  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS: 
-  updated NEWS 
+  * 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 
 
-  * configure.ac, src/Doxyfile: 
-  set version to 1.2 
+  * 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" 
 
-  * tests/MapLineTest.cpp: 
-  prevent MapLineTest from failing if file UGBK.sfd is not available 
+  * configure.ac, src/Doxyfile: 
+  set version to 1.2 
 
-  * src/Makefile.am, src/PSInterpreter.cpp, src/psdefs.cpp, src/psdefs.ps, 
-    src/psdefs.psc: 
-  make psdefs a separate compilation unit 
+  * NEWS: 
+  updated NEWS 
 
-  * 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 
-
 2013-02-21  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/XMLNode.cpp, src/XMLNode.h: 
@@ -4518,13 +4571,13 @@
 
 2013-02-19  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/FilePath.cpp: 
-  adapt path separators on Windows systems to get the  correct output path 
-
   * 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, 
@@ -4553,11 +4606,17 @@
 
 2013-01-21  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS, README: 
-  updated NEWS and README 
+  * 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 
 
-  * configure.ac, src/Doxyfile: 
-  set version to 1.1 
+  * 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, 
@@ -4564,17 +4623,11 @@
     src/MapLine.cpp, src/MapLine.h, tests/MapLineTest.cpp: 
   implemented evaluation of font style options given in a mapline 
 
-  * src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h, src/MapLine.h: 
-  replaced FontMap entries by pointers; initialize entries with MapLine 
-  objects 
+  * configure.ac, src/Doxyfile: 
+  set version to 1.1 
 
-  * 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 
+  * NEWS, README: 
+  updated NEWS and README 
 
 2013-01-20  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -4583,15 +4636,15 @@
 
 2013-01-16  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * 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 
-
   * 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: 
@@ -4661,28 +4714,28 @@
 
 2012-12-23  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/FileFinder.cpp, src/Message.cpp, src/dvisvgm.cpp: 
-  reduced scope of some variables 
+  * 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/MiKTeXCom.cpp, src/Process.cpp: 
-  avoid creating copies of exception objects 
+  * src/FileFinder.cpp, src/Message.cpp, src/dvisvgm.cpp: 
+  reduced scope of some variables 
 
-  * src/FontCache.cpp, src/PsSpecialHandler.cpp, src/TpicSpecialHandler.cpp: 
-  check emptiness of containers with empty() instead of size() 
-
 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() 
 
-  * src/FontCache.cpp: 
-  replaced 'char' with 'glyph' in font cache listing 
-
 2012-12-03  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/Ghostscript.cpp: 
@@ -4690,35 +4743,35 @@
 
 2012-12-02  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * doc/dvisvgm.txt.in, src/Ghostscript.cpp: 
-  use gsdll64.dll for 64-bit builds; added info about gsdll64.dll to 
-  manpage 
+  * src/FilePath.cpp, tests/FilePathTest.cpp: 
+  strip drive letter if it's not set (Windows only) 
 
-  * src/FileFinder.cpp, src/FontEngine.cpp, src/Makefile.am, 
-    src/MiKTeXCom.cpp, src/MiKTeXCom.h: 
-  moved MiKTeX COM code to separate class 
+  * 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/macros.h: 
-  removed SHOW() from macros.h 
+  * src/FileFinder.cpp, src/FontEngine.cpp, src/Makefile.am, 
+    src/MiKTeXCom.cpp, src/MiKTeXCom.h: 
+  moved MiKTeX COM code to separate class 
 
-  * tests/FileSystemTest.cpp, tests/GFReaderTest.cpp: 
-  ensure that tests work properly on Windows 
+  * doc/dvisvgm.txt.in, src/Ghostscript.cpp: 
+  use gsdll64.dll for 64-bit builds; added info about gsdll64.dll to 
+  manpage 
 
-  * src/FilePath.cpp, tests/FilePathTest.cpp: 
-  strip drive letter if it's not set (Windows only) 
-
 2012-11-23  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/PSInterpreter.cpp, src/psdefs.ps, src/psdefs.psc: 
-  print operand stack in case of a PS error 
-
   * 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: 
@@ -4731,12 +4784,12 @@
 
 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 
 
-  * src/FontEngine.cpp, src/FontEngine.h: 
-  renamed FontEngine::fname to FontEngine::_fontname 
-
 2012-11-16  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/Directory.h: 
@@ -4744,27 +4797,27 @@
 
 2012-11-15  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/FileFinder.cpp, src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h, 
+  * src/FileFinder.cpp, src/FileFinder.h, src/FontMap.cpp, src/FontMap.h, 
     tests/FontMapTest.cpp: 
-  adapted code to use new MapLine class; introduced support of map line 
-  modes 
+  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/FileFinder.h, src/dvisvgm.cpp: 
-  moved initialization of FontMap from FileFinder to dvisvgm.cpp 
-
-  * src/FileFinder.cpp, src/FileFinder.h, src/FontMap.cpp, src/FontMap.h, 
+  * src/FileFinder.cpp, src/FontManager.cpp, src/FontMap.cpp, src/FontMap.h, 
     tests/FontMapTest.cpp: 
-  made class FontMap a singleton 
+  adapted code to use new MapLine class; introduced support of map line 
+  modes 
 
 2012-11-14  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/DVIToSVG.cpp: 
-  prevent compilation error when using a C++11 compiler (patch by Peter 
+  * src/FileFinder.cpp: 
+  initialize Ghostscript when compiled for TeX Live Win32 (patch by Peter 
   Breitenlohner) 
 
   * src/FileFinder.cpp, src/FileFinder.h, src/dvisvgm.cpp, 
@@ -4771,8 +4824,8 @@
     tests/FileFinderTest.cpp, tests/FontManagerTest.cpp: 
   initialize second parameter of kpse_set_program_name() correctly 
 
-  * src/FileFinder.cpp: 
-  initialize Ghostscript when compiled for TeX Live Win32 (patch by Peter 
+  * 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>
@@ -4789,23 +4842,23 @@
 
 2012-09-27  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * doc/Makefile.am: 
-  remove manpage when calling 'make distclean' 
+  * configure.ac, src/Doxyfile: 
+  set version to 1.0.12 
 
   * NEWS: 
   updated NEWS 
 
-  * configure.ac, src/Doxyfile: 
-  set version to 1.0.12 
+  * 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 
 
-  * src/DVIToSVG.cpp: 
-  show warning if processing of PS specials is disabled 
-
 2012-06-06  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/gfprint.mak: 
@@ -4840,15 +4893,15 @@
 
 2012-03-09  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS: 
-  updated NEWS 
+  * 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 
 
-  * src/Ghostscript.cpp, src/Ghostscript.h: 
-  added optional parameter to Ghostscript::revision() to retrieve the 
-  revision number only 
+  * NEWS: 
+  updated NEWS 
 
 2012-03-08  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -4881,13 +4934,13 @@
 
 2012-01-09  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/TpicSpecialHandler.cpp: 
-  added some more comments to methods of class TpicSpecialHandler 
-
   * 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, 
@@ -4946,25 +4999,25 @@
 
 2011-12-18  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS: 
-  updated NEWS 
+  * 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 
 
-  * tests/Makefile.am, tests/create-makefile: 
-  link tests with -lpthread (required by gtest on Ubuntu) 
+  * NEWS: 
+  updated NEWS 
 
 2011-12-17  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * doc/dvisvgm.txt.in: 
-  added documentation on environment variable DVISVGM_COLORS to manpage 
-
   * 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: 
@@ -4978,63 +5031,39 @@
 
 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 
 
-  * src/FontMap.cpp: 
-  removed unused variable eval_prefix in helper function read_entry() 
-
 2011-10-13  Martin Gieseking  <martin.gieseking at uos.de>
 
   * NEWS: 
   updated NEWS 
 
-2011-10-10  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Font.cpp, src/Font.h, src/FontManager.cpp, src/FontManager.h: 
-  extended class FontManager to handle external fonts 
-
-  * src/ExternalFont.cpp, src/ExternalFont.h, src/Makefile.am: 
-  added class ExternalFont 
-
 2011-10-09  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * configure.ac, src/FontDB.cpp, src/FontDB.h, src/Makefile.am: 
-  added class FontDB 
+  * src/FilePath.cpp: 
+  added some missing comments to methods of class FilePath 
 
-  * src/DirectoryTree.cpp, src/DirectoryTree.h, src/Makefile.am, 
-    tests/DirectoryTreeTest.cpp, tests/Makefile.am: 
-  added class DirectoryTree 
-
   * src/Directory.h: 
   dropped method Directory::getEntry() 
 
-  * src/FilePath.cpp: 
-  added some missing comments to methods of class FilePath 
-
 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 
 
-  * src/Process.cpp: 
-  added missing include <signal.h> to Process.cpp 
-
 2011-10-03  Martin Gieseking  <martin.gieseking at uos.de>
 
   * doc/Makefile.am: 
   add metadata/pdfmarks to pdf version of manpage 
 
-2011-09-30  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/InputReader.cpp, src/InputReader.h, tests/StreamInputBufferTest.cpp: 
-  added InputReader::getUntil() to simplify parsing of an input stream 
-
-  * src/CommandLine.cpp, src/CommandLine.h, src/dvisvgm.cpp, 
-    src/options.xml: 
-  added command-line option --query 
-
 2011-09-06  Martin Gieseking  <martin.gieseking at uos.de>
 
   * potracelib/auxiliary.h, potracelib/bitmap.h, potracelib/curve.c, 
@@ -5045,21 +5074,21 @@
 
 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) 
 
-  * configure.ac, src/Doxyfile: 
-  set version to 1.0.9dev 
-
 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() 
 
-  * NEWS, configure.ac, src/Doxyfile: 
-  set version to 1.0.8; updated NEWS 
-
 2011-05-27  Martin Gieseking  <martin.gieseking at uos.de>
 
   * tests/check-conv, tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg: 
@@ -5075,14 +5104,14 @@
 
 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 
 
-  * src/FileFinder.cpp: 
-  MiKTeX: maketfm and makemf have been renamed to miktex-maketfm and 
-  miktex-makemf 
-
 2011-05-19  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/DLLoader.h: 
@@ -5097,47 +5126,47 @@
 
 2011-05-07  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/PsSpecialHandler.cpp: 
-  fixed potential segfault caused by invisible zero-length paths 
+  * configure.ac, src/Doxyfile: 
+  set version to 1.0.8dev 
 
-  * src/PsSpecialHandler.cpp: 
-  add definitions in literal PS headers to dictionary TeXDict 
-
   * 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 
 
-  * configure.ac, src/Doxyfile: 
-  set version to 1.0.8dev 
+  * 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' 
 
-  * NEWS, README, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.7; updated NEWS and README 
-
 2011-05-05  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * doc/dvisvgm.txt.in: 
-  added info about dvips rounding issues to manpage 
+  * 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) 
 
-  * src/PsSpecialHandler.h: 
-  corrected scaling formula applied to PS line properties 
+  * doc/dvisvgm.txt.in: 
+  added info about dvips rounding issues to manpage 
 
-  * src/PSInterpreter.cpp, src/PsSpecialHandler.cpp: 
-  separate PS snippets by newline characters to leave preceding comments 
-
 2011-05-04  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/Length.h: 
-  undefine macro IN 
+  * 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: 
@@ -5144,20 +5173,11 @@
   avoid 'this' pointer in initialazation list of 
   PSInterpreter::PSInterpreter() 
 
-  * src/PsSpecialHandler.cpp: 
-  don't call Ghostscript::revision() in initialization of static variable 
+  * src/Length.h: 
+  undefine macro IN 
 
 2011-05-03  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h: 
-  tpic special 'ip' must not draw the outline of the polygon but only fill 
-  its interior 
-
-  * 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/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, 
@@ -5166,6 +5186,15 @@
     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: 
@@ -5173,14 +5202,14 @@
 
 2011-04-30  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/psdefs.ps, src/psdefs.psc: 
-  catch PS error /nocurrentpoint in operator 'setpos' properly 
+  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
+  set version to 1.0.7dev 
 
   * src/SpecialManager.cpp: 
   register special prefix ps:: properly 
 
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.7dev 
+  * src/psdefs.ps, src/psdefs.psc: 
+  catch PS error /nocurrentpoint in operator 'setpos' properly 
 
 2011-04-16  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -5189,16 +5218,16 @@
 
 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 
 
-  * 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() 
-
 2011-04-13  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/XMLNode.cpp, src/XMLNode.h: 
@@ -5223,41 +5252,41 @@
 
 2011-03-04  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/CRC32.cpp, src/StreamWriter.cpp: 
-  added missing 'const' to type casts (Peter Breitenlohner) 
+  * 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 
 
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.6dev 
+  * src/CRC32.cpp, src/StreamWriter.cpp: 
+  added missing 'const' to type casts (Peter Breitenlohner) 
 
 2011-02-28  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.5, updated NEWS 
+  * 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 
 
-  * doc/dvisvgm.txt.in, src/FontCache.cpp, src/FontCache.h, src/dvisvgm.cpp: 
-  added code to remove outdated and corrupted cache files 
+  * 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>
 
-  * tests/frktest-nf-cmp.svg, tests/frktest-wf-cmp.svg, 
-    tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg: 
-  updated conversion test files 
-
-  * src/SVGTree.cpp: 
-  added missing unit in height/width attribute of svg root element 
-
   * 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: 
@@ -5265,22 +5294,22 @@
 
 2011-02-10  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/FontCache.cpp, src/FontCache.h: 
-  added CRC32 checks to cache files 
+  * 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/CRC32.cpp, src/CRC32.h, src/Makefile.am, tests/CRC32Test.cpp, 
-    tests/Makefile.am: 
-  added class CRC32 and corresponding tests 
+  * src/FontCache.cpp, src/FontCache.h: 
+  added CRC32 checks to cache files 
 
-  * src/FileSystem.cpp, src/FileSystem.h, src/dvisvgm.cpp, 
-    tests/FileSystemTest.cpp: 
-  merged FileSystem::move() into FileSystem::copy() 
-
 2011-01-31  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/CmdLineParserBase.cpp: 
@@ -5308,9 +5337,6 @@
 
 2011-01-04  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * tests/Makefile.am, tests/PSInterpreterTest.cpp: 
-  added basic tests for class PSInterpreter 
-
   * 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, 
@@ -5360,21 +5386,24 @@
     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>
 
-  * doc/dvisvgm.txt.in: 
-  minor update to the manpage 
+  * src/PsSpecialHandler.cpp: 
+  fixed scaling issue in PS positioning 
 
-  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.4; updated NEWS 
-
   * 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 
 
-  * src/PsSpecialHandler.cpp: 
-  fixed scaling issue in PS positioning 
+  * 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: 
@@ -5382,12 +5411,12 @@
 
 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 
 
-  * src/FontEngine.cpp: 
-  fixed FreeType version check (patch by Paul Vojta) 
-
 2010-08-11  Martin Gieseking  <martin.gieseking at uos.de>
 
   * tests/Makefile.am, tests/PairTest.cpp: 
@@ -5395,12 +5424,12 @@
 
 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 
 
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.3 
-
 2010-08-04  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/BoundingBox.cpp, src/BoundingBox.h, src/Matrix.cpp, src/Matrix.h, 
@@ -5420,29 +5449,29 @@
 
 2010-07-13  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/Directory.cpp, src/Directory.h, src/GFReader.cpp, src/GFReader.h: 
-  added leading underscore to variables of GFReader 
+  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
+  set version to 1.0.3dev 
 
-  * src/GraphicPath.h, src/PsSpecialHandler.h: 
-  fixed missing initialization of GraphicPath iterator 
+  * src/InputBuffer.h: 
+  added missing namespace prefix 
 
   * src/Terminal.cpp: 
   replaced \e with \x1B 
 
-  * src/InputBuffer.h: 
-  added missing namespace prefix 
+  * src/GraphicPath.h, src/PsSpecialHandler.h: 
+  fixed missing initialization of GraphicPath iterator 
 
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.3dev 
+  * 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 
 
-  * src/gzstream.cpp, src/gzstream.h: 
-  fixed class variable issue introduced by previous AIX patch 
-
 2010-06-18  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/Bitmap.cpp, tests/DirectoryTest.cpp, tests/GFReaderTest.cpp, 
@@ -5451,13 +5480,6 @@
 
 2010-06-17  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/types.h, tests/Makefile.am, tests/TypesTest.cpp: 
-  added TypesTest 
-
-  * src/Message.cpp, src/Message.h: 
-  renamed MessageStream::putchar() to MessageStream::putChar() to avoid 
-  name clashes 
-
   * 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, 
@@ -5466,12 +5488,15 @@
     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>
 
-  * 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 
-
   * 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, 
@@ -5478,6 +5503,10 @@
     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: 
@@ -5485,57 +5514,42 @@
 
 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 
 
-  * src/Message.cpp: 
-  suppress ANSI color code by default 
-
 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 
 
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0.1dev 
-
 2010-06-08  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h: 
-  fixed PS destructor issue (SF bug #3013392) 
+  * configure.ac, doc/Makefile.am, src/Makefile.am: 
+  cleaned up configuration scripts 
 
-  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0 
+  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
+  set version to 1.0dev 
 
-  * doc/Makefile.am, doc/dvisvgm.txt.in: 
-  documented option --help and --version in manpage 
+  * 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 
 
-  * 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 
+  * 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/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h: 
-  added method to compute length of DVI command 
+  * src/InputBuffer.h, tests/ColorSpecialTest.cpp, 
+    tests/StreamInputBufferTest.cpp: 
+  added InputBuffer::invalidate() 
 
-  * src/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h, src/psdefs.ps, src/psdefs.psc: 
-  evaluate Ghostscript operator .setopacityalpha 
-
-  * src/Font.cpp: 
-  print error message if Metafont failed 
-
-  * 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 
-
   * 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, 
@@ -5545,26 +5559,41 @@
     tests/StreamCounterTest.cpp: 
   added conversion of multiple pages 
 
-  * src/InputBuffer.h, tests/ColorSpecialTest.cpp, 
-    tests/StreamInputBufferTest.cpp: 
-  added InputBuffer::invalidate() 
+  * 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/FilePath.cpp, src/FilePath.h, src/FileSystem.cpp, src/FileSystem.h, 
-    src/Makefile.am, tests/FilePathTest.cpp, tests/Makefile.am: 
-  added class FilePath 
+  * src/Font.cpp: 
+  print error message if Metafont failed 
 
-  * 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/PSInterpreter.cpp, src/PSInterpreter.h, src/PsSpecialHandler.cpp, 
+    src/PsSpecialHandler.h, src/psdefs.ps, src/psdefs.psc: 
+  evaluate Ghostscript operator .setopacityalpha 
 
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 1.0dev 
+  * src/DVIActions.h, src/DVIReader.cpp, src/DVIReader.h: 
+  added method to compute length of DVI command 
 
-  * configure.ac, doc/Makefile.am, src/Makefile.am: 
-  cleaned up configuration scripts 
+  * 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: 
@@ -5572,34 +5601,34 @@
 
 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 
 
-  * configure.ac: 
-  fixed kpathsea check; use pkg-config to check freetype availability 
-
 2010-04-22  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 0.9.1 
+  * src/CommandLine.cpp, src/options.xml: 
+  output of option --help: replaced '(default: FOO)' by '[FOO]' 
 
-  * tests/check-conv, tests/frktest-wf-cmp.svg, tests/sample-wf-cmp.svg: 
-  adapted conversion tests to new output format 
+  * 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 
 
-  * src/SVGTree.cpp: 
-  fixed broken validity when using SVG fonts 
+  * tests/check-conv, tests/frktest-wf-cmp.svg, tests/sample-wf-cmp.svg: 
+  adapted conversion tests to new output format 
 
-  * 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 
+  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
+  set version to 0.9.1 
 
-  * src/CommandLine.cpp, src/options.xml: 
-  output of option --help: replaced '(default: FOO)' by '[FOO]' 
-
 2010-04-20  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/FontEncoding.cpp: 
@@ -5607,12 +5636,12 @@
 
 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 
 
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 0.9.1dev 
-
 2010-03-25  Martin Gieseking  <martin.gieseking at uos.de>
 
   * fedora/dvisvgm.spec: 
@@ -5620,44 +5649,53 @@
 
 2010-03-24  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * transfer-cs: 
-  added extension .patch to exported changesets 
+  * src/Font.cpp, src/Font.h, src/dvisvgm.cpp: 
+  moved some methods from PhysicalFontImpl to PysicalFont 
 
-  * tests/frktest-nf-cmp.svg, tests/frktest-wf-cmp.svg, 
-    tests/sample-nf-cmp.svg, tests/sample-wf-cmp.svg: 
-  updated conversion tests 
+  * 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 
 
-  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 0.9 
+  * 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/FontCache.cpp, src/GFGlyphTracer.cpp, src/GFReader.cpp: 
-  variable _fontname is now correctly set in class FontCache 
-
   * 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/Makefile.am, src/StreamWriter.cpp, 
-    src/StreamWriter.h, src/TFM.cpp: 
-  replaced local stream IO functions by StreamReader/StreamWriter methods 
+  * src/FontCache.cpp, src/GFGlyphTracer.cpp, src/GFReader.cpp: 
+  variable _fontname is now correctly set in class FontCache 
 
-  * 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 
+  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
+  set version to 0.9 
 
-  * src/Font.cpp, src/Font.h, src/dvisvgm.cpp: 
-  moved some methods from PhysicalFontImpl to PysicalFont 
+  * 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>
 
-  * 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 
+  * 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: 
@@ -5664,38 +5702,22 @@
   reactivated option --trace-all, and added optional argument 'retrace' to 
   it 
 
-  * 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/Font.cpp, src/Font.h, src/dvisvgm.cpp, src/options.xml: 
+  added command-line option --keep 
 
-  * 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/DVIToSVG.cpp, src/SVGTree.cpp: 
-  moved creation of SVG 'use' elements from class DVIToSVG to class 
-  SVGTree 
-
 2010-03-17  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/BoundingBox.cpp, src/Calculator.cpp, src/Matrix.cpp, 
-    src/PSInterpreter.cpp, src/PSInterpreter.h: 
-  fixed a couple of comments 
+  * src/GFReader.cpp, src/GFReader.h: 
+  replaced GFReader messages by exceptions 
 
-  * 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/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, src/dvisvgm.cpp, tests/Makefile.am, tests/check-conv, 
-    tests/create-makefile: 
-  removed emitter classes; incorporated their functionality into SVGTree 
-  and PhysicalFontImpl 
+    src/SVGTree.h: 
+  removed class CharmapTranslator 
 
-  * src/FontCache.cpp, src/FontCache.h: 
-  added method FontCache::write(const char *dir) that updates the cache 
-  file of the current font 
-
   * src/DVIReader.cpp, src/DVIReader.h, src/DVIToSVG.cpp, 
     src/DVIToSVGActions.cpp, src/FontManager.cpp, src/FontManager.h, 
     src/SVGFontEmitter.cpp, src/SVGFontEmitter.h, 
@@ -5703,15 +5725,22 @@
     src/SVGTree.h, src/VFReader.h, tests/FontManagerTest.cpp: 
   made FontManager a singleton 
 
-  * 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/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: 
-  removed class CharmapTranslator 
+    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/GFReader.cpp, src/GFReader.h: 
-  replaced GFReader messages by exceptions 
+  * 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>
 
@@ -5740,12 +5769,12 @@
 
 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 
 
-  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  version updated to 0.8.8 
-
 2010-02-01  Martin Gieseking  <martin.gieseking at uos.de>
 
   * tests/check-conv: 
@@ -5753,9 +5782,6 @@
 
 2010-01-31  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * tests/normalize.xsl: 
-  some improvements to normalize.xsl 
-
   * 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, 
@@ -5762,15 +5788,18 @@
     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/GraphicPath.h: 
-  fixed scaling bug in computation of glyph paths when using -n 
-
   * 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, 
@@ -5784,17 +5813,13 @@
 
 2010-01-17  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/Ghostscript.cpp: 
-  fixed typo in variable name 
+  * configure.ac: 
+  updated type of kpathsea_version_string (patch by lomov_vl) 
 
-  * NEWS: 
-  updated NEWS 
+  * 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. 
 
-  * 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 
-
   * 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, 
@@ -5844,13 +5869,17 @@
     tests/create-makefile: 
   updated boilerplates 
 
-  * 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. 
+  * 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 
 
-  * configure.ac: 
-  updated type of kpathsea_version_string (patch by lomov_vl) 
+  * NEWS: 
+  updated NEWS 
 
+  * src/Ghostscript.cpp: 
+  fixed typo in variable name 
+
 2009-12-16  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/InputReader.cpp: 
@@ -5890,43 +5919,43 @@
 
 2009-11-18  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/DLLoader.cpp, src/DLLoader.h: 
-  fixed line endings 
+  * 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/DVIToSVG.cpp, src/Ghostscript.cpp, src/Ghostscript.h: 
-  replaced #if !DISABLE_GS by #if !defined(DISABLE_GS) (Peter 
-  Breitenlohner) 
+  * src/DLLoader.cpp, src/DLLoader.h: 
+  fixed line endings 
 
 2009-11-17  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS: 
-  updated NEWS 
+  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
+  set version to 0.8.8dev 
 
-  * src/dvisvgm.cpp: 
-  don't use email adress PACKAGE_BUGREPORT for copyright notice 
+  * potracelib/potracelib.c, potracelib/potracelib.h: 
+  replaced outdated string constant type char* by const char* in 
+  potrace_version() 
 
-  * 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/InputReader.cpp: 
-  added missing initialization value (Peter Breitenlohner) 
-
   * 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) 
 
-  * potracelib/potracelib.c, potracelib/potracelib.h: 
-  replaced outdated string constant type char* by const char* in 
-  potrace_version() 
+  * src/InputReader.cpp: 
+  added missing initialization value (Peter Breitenlohner) 
 
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 0.8.8dev 
+  * 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: 
@@ -5934,26 +5963,26 @@
 
 2009-11-09  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 0.8.7 
+  * 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 
 
-  * src/DVIToSVG.cpp, src/dvisvgm.cpp: 
-  added total number of pages to message text 
+  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
+  set version to 0.8.7 
 
 2009-11-06  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS, src/PsSpecialHandler.cpp: 
-  fixed path scaling issue in PS handler 
+  * src/GraphicPath.h, src/PsSpecialHandler.cpp: 
+  PS handler: replace zero-length paths by dots 
 
   * NEWS, doc/dvisvgm.txt.in: 
   updated NEWS and manpage 
 
-  * src/GraphicPath.h, src/PsSpecialHandler.cpp: 
-  PS handler: replace zero-length paths by dots 
+  * NEWS, src/PsSpecialHandler.cpp: 
+  fixed path scaling issue in PS handler 
 
 2009-10-29  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -5967,14 +5996,23 @@
 
 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 
 
-  * tests/Makefile.am, tests/create-makefile: 
-  added script to create tests/Makefile.am 
-
 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, 
@@ -5991,22 +6029,8 @@
     tests/VectorStreamTest.h: 
   replaced cxxtest by googletest 
 
-  * doc/Makefile.am: 
-  added missing dvi suffix in Makefile target dvi-pdf 
-
-  * fedora/dvisvgm.spec: 
-  updated spec file 
-
-  * doc/Makefile.am, doc/dvisvgm.txt.in: 
-  removed outdated post-processing of manpage 
-
 2009-10-12  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * 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 
-
   * 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, 
@@ -6041,10 +6065,15 @@
     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>
 
-  * NEWS: 
-  NEWS updated 
+  * transfer-cs: 
+  improved transfer-cs 
 
   * src/DVIToSVG.cpp, src/DvisvgmSpecialHandler.cpp, 
     src/PsSpecialHandler.cpp, src/PsSpecialHandler.h, src/SVGTree.cpp, 
@@ -6051,8 +6080,8 @@
     src/SVGTree.h: 
   suppress empty style and transformation elements 
 
-  * transfer-cs: 
-  improved transfer-cs 
+  * NEWS: 
+  NEWS updated 
 
 2009-10-10  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -6061,36 +6090,26 @@
 
 2009-10-09  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/Makefile.am: 
-  fixed Makefile 
+  * src/Bitmap.h: 
+  fixed bit shift overflow in Bitmap class occured on 64-bit systems 
 
-  * src/Length.cpp, src/Length.h, tests/LengthTest.h: 
-  fixed unit conversion bug 
+  * 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 
 
-  * transfer-cs: 
-  added script to transfer changesets to dvisvgm-pub 
+  * src/Length.cpp, src/Length.h, tests/LengthTest.h: 
+  fixed unit conversion bug 
 
-  * autogen.sh, prepare: 
-  prepare script replaced by autogen.sh 
+  * src/Makefile.am: 
+  fixed Makefile 
 
-  * src/Bitmap.h: 
-  fixed bit shift overflow in Bitmap class occured on 64-bit systems 
-
 2009-10-08  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/dvisvgm.cpp: 
-  fixed uncaught PageSizeException 
-
-  * src/MetafontWrapper.cpp: 
-  fixed file permissions 
-
-  * NEWS, src/GraphicPath.h, src/PsSpecialHandler.cpp, 
-    src/PsSpecialHandler.h: 
-  PS clipping path sequences and intersections are now handled correctly 
-
   * 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: 
@@ -6097,21 +6116,28 @@
   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 
 
-  * 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' 
-
 2009-10-06  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  set version to 0.8.6 
-
   * 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: 
@@ -6118,14 +6144,17 @@
   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 
 
-  * src/PsSpecialHandler.cpp: 
-  convert PS path coordinated to TeX point units 
-
 2009-10-04  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/GraphicPath.h, src/PsSpecialHandler.cpp, src/PsSpecialHandler.h: 
@@ -6144,34 +6173,35 @@
 
 2009-09-30  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * Makefile.am, configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  increased version number to 0.8.5 
+  * 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 
 
-  * doc/dvisvgm.txt.in: 
-  added dvisvgm:raw example to man page 
+  * 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>
 
-  * doc/dvisvgm.txt.in: 
-  minor changes of the documentation 
+  * 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 
 
-  * src/PsSpecialHandler.h: 
-  increased the default linewidth to 0.5 
+  * doc/dvisvgm.txt.in: 
+  minor changes of the documentation 
 
-  * NEWS: 
-  added cretdit to John Bowman for sending a patch for the already fixed 
-  clipping bug 
-
 2009-09-11  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/FileSystem.cpp, src/MetafontWrapper.cpp: 
-  Windows: Metafont is now called via CreateProcess() 
+  * 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, 
@@ -6178,20 +6208,11 @@
     src/SpecialManager.h, src/dvisvgm.cpp, src/options.xml: 
   added option --progress for enabling a progress indicator (feature #22) 
 
-  * NEWS, src/CmdLineParserBase.cpp, src/FontCache.cpp, 
-    src/SVGFontTraceEmitter.cpp: 
-  fixed memory bug in tracer module (issue #21) 
+  * src/FileSystem.cpp, src/MetafontWrapper.cpp: 
+  Windows: Metafont is now called via CreateProcess() 
 
 2009-09-10  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/FileSystem.cpp, src/FontCache.cpp: 
-  fixed Windows-related bug in FileSystem::collect 
-
-  * 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/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h, 
     src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, src/DVIToSVG.cpp, 
     src/DvisvgmSpecialHandler.cpp, src/DvisvgmSpecialHandler.h, 
@@ -6201,6 +6222,14 @@
     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: 
@@ -6208,6 +6237,16 @@
 
 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: 
@@ -6214,16 +6253,6 @@
   improved the command line parser to make it more POSIX-compliant 
   (feature #17) 
 
-  * src/dvisvgm.cpp: 
-  fixed evaluation of option --help 
-
-  * src/BoundingBox.cpp, src/BoundingBox.h, src/PsSpecialHandler.cpp: 
-  linewidths are now considered properly in computation of bounding box 
-  (issue #13) 
-
-  * configure.ac, fedora/dvisvgm.spec, src/Doxyfile: 
-  increased version number to 0.8.4 
-
 2009-09-01  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/PsSpecialHandler.cpp, src/psdefs.ps, src/psdefs.psc: 
@@ -6251,10 +6280,9 @@
 
 2009-08-26  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * 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 
+  * 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: 
@@ -6261,9 +6289,10 @@
   improved Ghostscript and potrace linking checks to simplify usage of 
   external devel files 
 
-  * fedora/dvisvgm-0.8.1-potrace.patch, fedora/dvisvgm-gs.patch, 
-    fedora/dvisvgm-potrace.patch, fedora/dvisvgm.spec: 
-  updated Fedora 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>
 
@@ -6272,9 +6301,8 @@
 
 2009-08-21  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS, configure.ac, src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, 
-    src/Doxyfile: 
-  increased version number to 0.8.2 
+  * 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, 
@@ -6281,25 +6309,29 @@
     tests/Makefile.am: 
   improved CmdLineParserBase and replaced gengetopt-based parser 
 
-  * src/FontMap.cpp: 
-  fixed memory bug in FontMap 
+  * 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>
 
-  * COPYING: 
-  added copy of file COPYING 
+  * 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 
 
-  * src/CmdLineParserBase.cpp, src/CmdLineParserBase.h, src/options.xml: 
-  added files for replacement of gengetopt (not active yet) 
+  * COPYING: 
+  added copy of file COPYING 
 
-  * src/InputReader.cpp, src/InputReader.h: 
-  added method parseUInt() 
-
 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, 
@@ -6346,13 +6378,11 @@
     tests/StreamInputBufferTest.h, tests/VectorStreamTest.h: 
   changed license to GPL version 3 or later 
 
-  * tests/Makefile.am: 
-  added include path to fix broken distcheck 
-
 2009-08-10  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * tests/Makefile.am: 
-  added generated file test-all.cpp to CLEANFILES 
+  * 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, 
@@ -6370,9 +6400,8 @@
     tests/VectorStreamTest.h, tests/dvipdfm_test.map, tests/dvips_test.map: 
   moved tests from src/tests to ./tests 
 
-  * fedora/dvisvgm-0.8.1-potrace.patch, fedora/dvisvgm.spec, 
-    rpm/dvisvgm.spec: 
-  added spec file and patch for Fedora builds 
+  * tests/Makefile.am: 
+  added generated file test-all.cpp to CLEANFILES 
 
 2009-08-02  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -6382,13 +6411,13 @@
 
 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 
 
-  * configure.ac, src/DVIToSVG.cpp: 
-  added target triplet to version string in SVG output 
-
 2009-07-29  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/psdefs.psc: 
@@ -6396,34 +6425,34 @@
 
 2009-07-28  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/psdefs.psc: 
-  cleaned up VC++ build files; added batch file to generate cmdline.c; 
-  added generated file psdefs.psc for convenience 
+  * 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 
 
-  * NEWS, configure.ac, src/Doxyfile: 
-  updated version number to 0.8.1 
+  * src/psdefs.psc: 
+  cleaned up VC++ build files; added batch file to generate cmdline.c; 
+  added generated file psdefs.psc for convenience 
 
-  * src/PsSpecialHandler.cpp: 
-  added evaluation of more psfile parameters; fixed psfile bounding box 
-  bug 
-
 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 
 
-  * NEWS, README: 
-  fixed typos; updated homepage/manpage 
-
-  * src/DLLoader.cpp, src/InputReader.cpp, src/PSInterpreter.cpp: 
-  changes to make VC happy; fixed potential memory bug 
-
 2009-07-23  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/PSInterpreter.cpp: 
@@ -6431,64 +6460,64 @@
 
 2009-07-22  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/TpicSpecialHandler.cpp: 
-  fixed reintroduced bug in TPIC handler 
-
   * 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/PsSpecialHandler.cpp, src/SVGTree.cpp: 
-  fixed bbox bug; added missing file 
-
   * 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/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' 
+  * src/InputBuffer.cpp, src/InputBuffer.h, src/Makefile.am: 
+  transplanted changes to InputBuffer from branch 'pages' 
 
-  * src/GFTracer.cpp: 
-  transplanted changes to GFTracer from branch 'pages' 
+  * src/Bitmap.cpp, src/Bitmap.h: 
+  transplanted changes to Bitmap from branch 'pages' 
 
-  * src/VFReader.cpp: 
-  transplanted changes to VFReader 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/DVIReader.cpp, src/DVIReader.h: 
-  transplanted changes to DVIReader from branch 'pages' 
+  * src/VFReader.cpp: 
+  transplanted changes to VFReader from branch 'pages' 
 
-  * src/Bitmap.cpp, src/Bitmap.h: 
-  transplanted changes to Bitmap from branch 'pages' 
+  * src/GFTracer.cpp: 
+  transplanted changes to GFTracer from branch 'pages' 
 
-  * src/InputBuffer.cpp, src/InputBuffer.h, src/Makefile.am: 
-  transplanted changes to InputBuffer 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/FontCache.h: 
-  increased version of font cache files to ensure their recreation due to 
-  the previously fixed shorthand path command bug 
+  * 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/TpicSpecialHandler.cpp: 
-  fixed TPIC handler bug that could caused unwanted color fills of 
-  ellipses due to a missing call of reset() 
+  * 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>
 
@@ -6499,25 +6528,25 @@
 
 2009-03-25  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/Doxyfile: 
-  added doxygen files 
-
   * 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>
 
-  * src/FontGlyph.cpp: 
-  fixed memory bug in Glyph::optimizeCommands() 
+  * 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() 
 
-  * 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 memory bug in Glyph::optimizeCommands() 
 
 2009-03-20  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -6526,10 +6555,6 @@
 
 2009-03-19  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * 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) 
-
   * 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, 
@@ -6537,23 +6562,21 @@
   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 
 
-  * src/FontCache.cpp: 
-  fixed bug in read/write functions of FontCache 
-
 2009-03-17  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/FontCache.cpp: 
-  reduced size of cache file format by using variable integer sizes 
-
-  * doc/dvisvgm.txt.in, src/dvisvgm.cpp: 
-  added option variant --cache=? to display the default cache directory 
-
   * 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, 
@@ -6560,6 +6583,12 @@
     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, 
@@ -6586,23 +6615,20 @@
 
 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) 
 
-  * src/types.h: 
-  minor changes to homepage and .hgignore 
-
-  * src/BgColorSpecialHandler.cpp, src/SpecialManager.cpp, 
-    src/TpicSpecialHandler.cpp: 
-  adapted Code to make VC happy 
-
 2009-03-08  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/BgColorSpecialHandler.cpp, src/BgColorSpecialHandler.h: 
-  added missing background color handler 
-
   * 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, 
@@ -6609,26 +6635,19 @@
     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 splines of tpic specials 
+  implemented arc drawing of tpic special set 
 
   * src/TpicSpecialHandler.cpp, src/TpicSpecialHandler.h: 
-  implemented arc drawing of tpic special set 
+  implemented splines of tpic specials 
 
 2009-03-03  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * doc/dvisvgm.txt.in, src/DvisvgmSpecialHandler.cpp, 
-    src/DvisvgmSpecialHandler.h: 
-  minor code improvements; comments added 
-
-  * 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 
-
   * 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, 
@@ -6638,14 +6657,24 @@
   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 
 
-  * doc/Makefile.am, doc/dvisvgm.txt, doc/dvisvgm.txt.in: 
-  removed generated file, added dvisvgm.txt.in 
-
 2009-02-25  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/DVIToSVGActions.cpp, src/DVIToSVGActions.h, 
@@ -6655,15 +6684,6 @@
 
 2009-02-24  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS, doc/dvisvgm.1.in, src/TpicSpecialHandler.cpp: 
-  few additions to tpic handler 
-
-  * 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 
-
   * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, 
     src/DVIToSVGActions.cpp, src/DvisvgmSpecialHandler.cpp, 
     src/DvisvgmSpecialHandler.h, src/EmSpecialHandler.cpp, 
@@ -6675,6 +6695,15 @@
     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, 
@@ -6701,14 +6730,14 @@
 
 2009-02-18  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS, src/SpecialActions.h, src/tests/ColorSpecialTest.h: 
-  adapted color test to new interface, added emtex info 
-
   * 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: 
@@ -6724,8 +6753,14 @@
 
 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: 
-  prepared release of version 0.7 
+  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: 
@@ -6732,22 +6767,21 @@
   added option --no-style 
 
   * NEWS, configure.ac: 
-  increased version number to 0.6.2, updated NEWS 
+  prepared release of version 0.7 
 
-  * src/dvisvgm.cpp: 
-  fixed incorrect behavior of option -V/--version 
+2009-02-13  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/Color.h, src/DVIToSVGActions.cpp, src/DVIToSVGActions.h: 
-  finished color support 
+  * src/types.h: 
+  replaced static definition of sized integers by template program 
 
-2009-02-13  Martin Gieseking  <martin.gieseking at uos.de>
+  * Makefile.am, configure.ac, src/tests/DirectoryTest.h: 
+  removed rpm support 
 
-  * src/ColorSpecialHandler.cpp, src/Makefile.am, 
-    src/tests/ColorSpecialTest.h: 
-  added tests for ColorSpecialHandler 
+  * hgauthors, prepare: 
+  added administrative files 
 
-  * prepare: 
-  updated 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, 
@@ -6755,18 +6789,13 @@
   color specials are now processed by DVIToSVGActions, but don't create 
   any results yet 
 
-  * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h: 
-  reverted to previous version, removed dependency on Color class 
+  * prepare: 
+  updated administrative files 
 
-  * hgauthors, prepare: 
-  added administrative files 
+  * src/ColorSpecialHandler.cpp, src/Makefile.am, 
+    src/tests/ColorSpecialTest.h: 
+  added tests for ColorSpecialHandler 
 
-  * Makefile.am, configure.ac, src/tests/DirectoryTest.h: 
-  removed rpm support 
-
-  * src/types.h: 
-  replaced static definition of sized integers by template program 
-
 2009-02-10  Martin Gieseking  <martin.gieseking at uos.de>
 
   * src/Color.h, src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h, 
@@ -6780,9 +6809,6 @@
 
 2009-02-06  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/FileFinder.cpp: 
-  changed lookup order of font maps 
-
   * 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, 
@@ -6789,60 +6815,63 @@
     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/DVIToSVGActions.cpp: 
-  replaced special ignore list evaluation algorithm 
+  * 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/extract-colors.php: 
-  added php-script that extracts color definitions from color.pro 
+  * 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 
 
-  * src/FileFinder.cpp: 
-  added option for additional loading of user maps 
-
 2009-02-03  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * map/cork-lm.map: 
-  removed deprecated map subdirectory 
-
-  * src/FileFinder.cpp, src/FileFinder.h, src/dvisvgm.cpp: 
-  option -m/--map-file is now evaluated properly 
-
   * 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>
 
-  * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h: 
-  some refactorings in color handler 
+  * 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 
 
-  * NEWS, src/FileFinder.cpp: 
-  fixed buggy call of maketfm/makemf in Windows version 
+  * src/ColorSpecialHandler.cpp, src/ColorSpecialHandler.h: 
+  some refactorings in color handler 
 
 2009-01-30  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS, src/DVIReader.cpp, src/DVIReader.h: 
-  fixed magnification bug 
-
   * 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: 
@@ -6850,31 +6879,31 @@
 
 2009-01-28  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * NEWS, configure.ac, doc/dvisvgm.1.in: 
-  adapted configuration and documentation to new dvips map file support 
+  * 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/FileFinder.cpp, src/FontMap.cpp, src/FontMap.h, 
-    src/tests/FontMapTest.h, src/tests/dvips_test.map: 
-  FontMap now supports dvips and dvipdfm maps 
+  * src/dvisvgm.cpp: 
+  use new initialisation of FileFinder 
 
-  * 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/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/GFReader.h, src/GFTracer.cpp, src/GFTracer.h: 
-  improved GFTracer to support unscaled results 
+  * 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/dvisvgm.cpp: 
-  use new initialisation of FileFinder 
+  * 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 
 
-  * 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) 
+  * 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>
 
@@ -6885,18 +6914,21 @@
 
 2009-01-26  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/InputBuffer.h: 
-  fixed incompatible types bug 
-
   * 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/FontMap.cpp: 
-  basic dvips font map support, not complete yet 
+  * 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, 
@@ -6903,12 +6935,9 @@
     src/Makefile.am, src/MetafontWrapper.cpp, src/TFM.cpp, src/dvisvgm.cpp: 
   renamed KPSFileFinder to FileFinder 
 
-  * src/FontMap.cpp, src/FontMap.h: 
-  started redesign of FontMap, not complete yet 
+  * src/FontMap.cpp: 
+  basic dvips font map support, not complete yet 
 
-  * src/InputBuffer.cpp, src/InputBuffer.h: 
-  added missing include 
-
 2009-01-23  Martin Gieseking  <martin.gieseking at uos.de>
 
   * doc/Makefile.am, doc/dvisvgm.1.in: 
@@ -6916,9 +6945,27 @@
 
 2009-01-22  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * configure.ac: 
-  added test whether dvipdfm.map is available 
+  * 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, 
@@ -6949,29 +6996,15 @@
     src/global.h, src/macros.h, src/options.ggo, src/types.h: 
   updated file header comments 
 
-  * 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 
+  * configure.ac: 
+  added test whether dvipdfm.map is available 
 
-  * Makefile.am, NEWS, README, configure.ac, potracelib/Makefile.am: 
-  updated version info to 0.6 
+2009-01-21  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/KPSFileFinder.cpp: 
-  fixed throwing of COM exception 
+  * 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/DVIReader.cpp, src/FontManager.cpp, src/KPSFileFinder.cpp: 
-  memory leak fixed 
-
-  * src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/dvisvgm.cpp: 
-  added support for MiKTeX' new COM interface 
-
-  * src/FontMap.cpp: 
-  forgot to remove address operator 
-
-2009-01-21  Martin Gieseking  <martin.gieseking at uos.de>
-
   * 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, 
@@ -6980,18 +7013,8 @@
     src/XMLDocument.cpp, src/XMLNode.cpp: 
   added in/out attributes to parameter documentation 
 
-  * 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 
-
 2009-01-20  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/SVGFontEmitter.cpp: 
-  fixed memory bug 
-
-  * src/FontEngine.cpp, src/FontEngine.h, src/SVGFontEmitter.cpp: 
-  fixed glyph positioning bug occured in conjunction with font encoding 
-
   * 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, 
@@ -6999,13 +7022,14 @@
     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/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 
-
   * 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, 
@@ -7012,6 +7036,11 @@
     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: 
@@ -7024,24 +7053,24 @@
 
 2009-01-14  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/KPSFileFinder.cpp: 
-  added enc-file support 
+  * 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/dvisvgm.cpp: 
-  updated copyright string 
+  * 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/FontEncoding.cpp, src/FontEncoding.h, src/InputBuffer.cpp, 
-    src/InputBuffer.h, src/Makefile.am: 
-  added basic skeleton for handling of font encodings 
+  * src/dvisvgm.cpp: 
+  updated copyright string 
 
-  * 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/KPSFileFinder.cpp: 
+  added enc-file support 
 
 2009-01-13  Martin Gieseking  <martin.gieseking at uos.de>
 
@@ -7060,10 +7089,6 @@
 
 2007-03-26  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/DVIActions.cpp, src/DVIReader.cpp, src/DVIReader.h, 
-    src/FontManager.cpp, src/tests/FontManagerTest.h: 
-  few minor changes 
-
   * 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, 
@@ -7071,11 +7096,12 @@
     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/DVIReader.cpp, src/DVIReader.h, src/VFActions.h: 
-  minor fixes 
-
   * 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, 
@@ -7084,6 +7110,9 @@
     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, 
@@ -7092,10 +7121,6 @@
 
 2007-03-22  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/DVIReader.cpp, src/Font.cpp, src/Font.h, src/FontManager.cpp, 
-    src/VFActions.h, src/VFReader.cpp, src/VFReader.h: 
-  more vf implementations 
-
   * 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, 
@@ -7103,15 +7128,18 @@
   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>
 
-  * src/KPSFileFinder.cpp, src/KPSFileFinder.h, src/dvisvgm.cpp: 
-  implemented options -n and -m 
+  * 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/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/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, 
@@ -7119,18 +7147,15 @@
   removed redundant code and commented code fragments, added 
   VectorInputStream class 
 
-  * 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/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>
 
-  * src/Directory.cpp, src/Directory.h, src/FileSystem.cpp, src/FontMap.cpp, 
-    src/FontMap.h, src/KPSFileFinder.cpp: 
-  more changes for MiKTeX support 
-
   * 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, 
@@ -7138,14 +7163,11 @@
     src/test-all.cpp, src/tests/KPSFileFinderTest.h: 
   added KPSFileFinderTest, added EmptyFont, fixed compilation error 
 
-2007-03-19  Martin Gieseking  <martin.gieseking at uos.de>
-
-  * src/Font.cpp, src/Font.h, src/FontManager.cpp, src/FontMap.cpp, 
+  * src/Directory.cpp, src/Directory.h, src/FileSystem.cpp, src/FontMap.cpp, 
     src/FontMap.h, src/KPSFileFinder.cpp: 
-  made sources comaptible with MikTeX 
+  more changes for MiKTeX support 
 
-  * src/KPSFileFinder.cpp: 
-  bug fixed, font maps work now 
+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, 
@@ -7152,6 +7174,13 @@
     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, 
@@ -7176,19 +7205,14 @@
 
 2007-03-08  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * 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) 
+  * 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 
 
-  * src/DVIBBoxReader.cpp, src/DVIBBoxReader.h, src/Font.cpp, src/Font.h, 
-    src/Makefile.orig, src/StreamCounter.h, src/dvisvgm.cpp: 
-  fixed memory bug 
-
-  * doc/dvisvgm.1, src/FontEngine.h, src/Makefile.orig, src/dvisvgm.cpp, 
-    src/tests/FontManagerTest.h: 
-  minor changes 
-
   * 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, 
@@ -7197,14 +7221,19 @@
     src/VFReader.cpp, src/tests/FontManagerTest.h, stamp-h1, table.txt: 
   removed some garbage from the repository, added initial FontManagerTest 
 
-  * 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 
+  * 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: 
@@ -7245,10 +7274,6 @@
 
 2007-01-09  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * map/cork-lm.map, rpm/Makefile, rpm/Makefile.am, rpm/Makefile.in, 
-    rpm/dvisvgm.spec, rpm/dvisvgm.spec.in: 
-  moved files to trunk 
-
   * 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, 
@@ -7291,6 +7316,10 @@
     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, 
@@ -7323,8 +7352,8 @@
 
 2007-01-03  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * configure: 
-  removed configure from repository 
+  * 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, 
@@ -7336,13 +7365,16 @@
     potracelib/trace.h, src/Makefile, src/Makefile.am, src/Makefile.in: 
   added potracelib to distribution 
 
-  * NEWS, mkwindist.pl, src/KPSFileFinder.cpp: 
-  updated homepage 
+  * configure: 
+  removed configure from repository 
 
 2006-12-31  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * src/KPSFileFinder.cpp: 
-  fixed namepsace bug 
+  * 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, 
@@ -7349,17 +7381,11 @@
     src/KPSFileFinder.cpp, src/Makefile, src/dvisvgm.cpp, src/test-all.cpp: 
   some minor fixes 
 
-  * 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 
+  * src/KPSFileFinder.cpp: 
+  fixed namepsace bug 
 
 2006-08-01  Martin Gieseking  <martin.gieseking at uos.de>
 
-  * configure.ac: 
-  enabled svn keyword expansion 
-
   * 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, 
@@ -7367,37 +7393,11 @@
     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>
 
-  * 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 
-
-  * 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 
-
   * 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, 
@@ -7440,3 +7440,32 @@
     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/NEWS
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/NEWS	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/NEWS	2018-03-16 17:01:01 UTC (rev 46983)
@@ -1,3 +1,9 @@
+dvisvgm-2.3.4 (2018-03-14)
+- fixed error message printed when addding a single '-' on the command-line
+- added missing data file that lead to failing tests (GH bug #87)
+- updated brotli library to version 1.0.3
+- some code refactorings
+
 dvisvgm-2.3.3 (2018-02-20)
 - fixed wrong behavior when requiring both default mapfiles and
   pdf:mapline or pdf:mapfile specials

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/configure.ac	2018-03-16 17:01:01 UTC (rev 46983)
@@ -4,8 +4,8 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.59)
-AC_INIT([dvisvgm],[2.3.3],[martin.gieseking at uos.de])
-DATE="February 2018"
+AC_INIT([dvisvgm],[2.3.4],[martin.gieseking at uos.de])
+DATE="March 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-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/doc/dvisvgm.1	2018-03-16 17:01:01 UTC (rev 46983)
@@ -2,12 +2,12 @@
 .\"     Title: dvisvgm
 .\"    Author: Martin Gieseking <martin.gieseking at uos.de>
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 02/20/2018
+.\"      Date: 03/14/2018
 .\"    Manual: dvisvgm Manual
-.\"    Source: dvisvgm 2.3.3
+.\"    Source: dvisvgm 2.3.4
 .\"  Language: English
 .\"
-.TH "DVISVGM" "1" "02/20/2018" "dvisvgm 2\&.3\&.3" "dvisvgm Manual"
+.TH "DVISVGM" "1" "03/14/2018" "dvisvgm 2\&.3\&.4" "dvisvgm Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.am
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.am	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.am	2018-03-16 17:01:01 UTC (rev 46983)
@@ -1,8 +1,11 @@
 noinst_LIBRARIES = libbrotli.a
 libbrotli_a_SOURCES = \
 	common/constants.h \
+	common/context.h \
 	common/dictionary.c \
 	common/dictionary.h \
+	common/platform.h \
+	common/transform.h \
 	common/version.h \
 	enc/backward_references.c \
 	enc/backward_references.h \
@@ -30,6 +33,8 @@
 	enc/dictionary_hash.c \
 	enc/dictionary_hash.h \
 	enc/encode.c \
+	enc/encoder_dict.c \
+	enc/encoder_dict.h \
 	enc/entropy_encode.c \
 	enc/entropy_encode.h \
 	enc/entropy_encode_static.h \
@@ -51,6 +56,7 @@
 	enc/metablock.c \
 	enc/metablock.h \
 	enc/metablock_inc.h \
+	enc/params.h \
 	enc/port.h \
 	enc/prefix.h \
 	enc/quality.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-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/Makefile.in	2018-03-16 17:01:01 UTC (rev 46983)
@@ -128,10 +128,10 @@
 	enc/cluster.$(OBJEXT) enc/compress_fragment.$(OBJEXT) \
 	enc/compress_fragment_two_pass.$(OBJEXT) \
 	enc/dictionary_hash.$(OBJEXT) enc/encode.$(OBJEXT) \
-	enc/entropy_encode.$(OBJEXT) enc/histogram.$(OBJEXT) \
-	enc/literal_cost.$(OBJEXT) enc/memory.$(OBJEXT) \
-	enc/metablock.$(OBJEXT) enc/static_dict.$(OBJEXT) \
-	enc/utf8_util.$(OBJEXT)
+	enc/encoder_dict.$(OBJEXT) enc/entropy_encode.$(OBJEXT) \
+	enc/histogram.$(OBJEXT) enc/literal_cost.$(OBJEXT) \
+	enc/memory.$(OBJEXT) enc/metablock.$(OBJEXT) \
+	enc/static_dict.$(OBJEXT) enc/utf8_util.$(OBJEXT)
 libbrotli_a_OBJECTS = $(am_libbrotli_a_OBJECTS)
 AM_V_P = $(am__v_P_ at AM_V@)
 am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
@@ -347,8 +347,11 @@
 noinst_LIBRARIES = libbrotli.a
 libbrotli_a_SOURCES = \
 	common/constants.h \
+	common/context.h \
 	common/dictionary.c \
 	common/dictionary.h \
+	common/platform.h \
+	common/transform.h \
 	common/version.h \
 	enc/backward_references.c \
 	enc/backward_references.h \
@@ -376,6 +379,8 @@
 	enc/dictionary_hash.c \
 	enc/dictionary_hash.h \
 	enc/encode.c \
+	enc/encoder_dict.c \
+	enc/encoder_dict.h \
 	enc/entropy_encode.c \
 	enc/entropy_encode.h \
 	enc/entropy_encode_static.h \
@@ -397,6 +402,7 @@
 	enc/metablock.c \
 	enc/metablock.h \
 	enc/metablock_inc.h \
+	enc/params.h \
 	enc/port.h \
 	enc/prefix.h \
 	enc/quality.h \
@@ -485,6 +491,8 @@
 	enc/$(DEPDIR)/$(am__dirstamp)
 enc/encode.$(OBJEXT): enc/$(am__dirstamp) \
 	enc/$(DEPDIR)/$(am__dirstamp)
+enc/encoder_dict.$(OBJEXT): enc/$(am__dirstamp) \
+	enc/$(DEPDIR)/$(am__dirstamp)
 enc/entropy_encode.$(OBJEXT): enc/$(am__dirstamp) \
 	enc/$(DEPDIR)/$(am__dirstamp)
 enc/histogram.$(OBJEXT): enc/$(am__dirstamp) \
@@ -524,6 +532,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote at enc/$(DEPDIR)/compress_fragment_two_pass.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at enc/$(DEPDIR)/dictionary_hash.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at enc/$(DEPDIR)/encode.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at enc/$(DEPDIR)/encoder_dict.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at enc/$(DEPDIR)/entropy_encode.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at enc/$(DEPDIR)/histogram.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at enc/$(DEPDIR)/literal_cost.Po at am__quote@

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-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/constants.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -28,18 +28,25 @@
 /* "code length of 8 is repeated" */
 #define BROTLI_INITIAL_REPEATED_CODE_LENGTH 8
 
+/* "Large Window Brotli" */
+#define BROTLI_LARGE_MAX_DISTANCE_BITS 62U
+#define BROTLI_LARGE_MIN_WBITS 10
+#define BROTLI_LARGE_MAX_WBITS 30
+
 /* Specification: 4. Encoding of distances */
 #define BROTLI_NUM_DISTANCE_SHORT_CODES 16
 #define BROTLI_MAX_NPOSTFIX 3
 #define BROTLI_MAX_NDIRECT 120
 #define BROTLI_MAX_DISTANCE_BITS 24U
-/* BROTLI_NUM_DISTANCE_SYMBOLS == 520 */
-#define BROTLI_NUM_DISTANCE_SYMBOLS (BROTLI_NUM_DISTANCE_SHORT_CODES + \
-                                     BROTLI_MAX_NDIRECT +              \
-                                     (BROTLI_MAX_DISTANCE_BITS <<      \
-                                      (BROTLI_MAX_NPOSTFIX + 1)))
-/* Distance that is guaranteed to be representable in any stream. */
+#define BROTLI_DISTANCE_ALPHABET_SIZE(NDIRECT, NPOSTFIX, MAXNBITS) ( \
+    BROTLI_NUM_DISTANCE_SHORT_CODES + (NDIRECT) +                    \
+    ((MAXNBITS) << ((NPOSTFIX) + 1)))
+/* BROTLI_NUM_DISTANCE_SYMBOLS == 1128 */
+#define BROTLI_NUM_DISTANCE_SYMBOLS \
+    BROTLI_DISTANCE_ALPHABET_SIZE(  \
+        BROTLI_MAX_NDIRECT, BROTLI_MAX_NPOSTFIX, BROTLI_LARGE_MAX_DISTANCE_BITS)
 #define BROTLI_MAX_DISTANCE 0x3FFFFFC
+#define BROTLI_MAX_ALLOWED_DISTANCE 0x7FFFFFFC
 
 /* 7.1. Context modes and context ID lookup for literals */
 /* "context IDs for literals are in the range of 0..63" */

Added: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/context.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/context.h	                        (rev 0)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/context.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -0,0 +1,261 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+   Distributed under MIT license.
+   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Lookup table to map the previous two bytes to a context id.
+
+  There are four different context modeling modes defined here:
+    CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,
+    CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,
+    CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,
+    CONTEXT_SIGNED: second-order context model tuned for signed integers.
+
+  If |p1| and |p2| are the previous two bytes, and |mode| is current context
+  mode, we calculate the context as:
+
+    context = ContextLut(mode)[p1] | ContextLut(mode)[p2 + 256].
+
+  For CONTEXT_UTF8 mode, 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     |                  |
+  |-------------|-------------------|---------------------|------------------|
+*/
+
+#ifndef BROTLI_COMMON_CONTEXT_H_
+#define BROTLI_COMMON_CONTEXT_H_
+
+#include <brotli/types.h>
+
+typedef enum ContextType {
+  CONTEXT_LSB6 = 0,
+  CONTEXT_MSB6 = 1,
+  CONTEXT_UTF8 = 2,
+  CONTEXT_SIGNED = 3
+} ContextType;
+
+/* Common context lookup table for all context modes. */
+static const uint8_t kContextLookup[2048] = {
+  /* CONTEXT_LSB6, last byte. */
+   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
+  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
+  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
+  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
+  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+
+  /* CONTEXT_LSB6, second last byte, */
+  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,
+  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,
+  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,
+  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,
+
+  /* CONTEXT_MSB6, last byte. */
+   0,  0,  0,  0,  1,  1,  1,  1,  2,  2,  2,  2,  3,  3,  3,  3,
+   4,  4,  4,  4,  5,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,
+   8,  8,  8,  8,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11, 11,
+  12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,
+  16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,
+  20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23,
+  24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,
+  28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31,
+  32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,
+  36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,
+  40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43,
+  44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,
+  48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51,
+  52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55,
+  56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59,
+  60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,
+
+  /* CONTEXT_MSB6, second last byte, */
+  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,
+  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,
+  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,
+  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,
+
+  /* CONTEXT_UTF8, 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,
+
+  /* CONTEXT_UTF8 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,
+  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,
+  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_SIGNED, last byte, same as the above values shifted by 3 bits. */
+   0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+  48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,
+
+  /* CONTEXT_SIGNED, second last byte. */
+  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 const uint8_t* ContextLut;
+
+/* typeof(MODE) == ContextType; returns ContextLut */
+#define BROTLI_CONTEXT_LUT(MODE) (&kContextLookup[(MODE) << 9])
+
+/* typeof(LUT) == ContextLut */
+#define BROTLI_CONTEXT(P1, P2, LUT) ((LUT)[P1] | ((LUT) + 256)[P2])
+
+#endif  /* BROTLI_COMMON_CONTEXT_H_ */


Property changes on: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/context.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/dictionary.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/dictionary.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/dictionary.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -41,7 +41,7 @@
   const uint8_t* data;
 } BrotliDictionary;
 
-BROTLI_COMMON_API extern const BrotliDictionary* BrotliGetDictionary(void);
+BROTLI_COMMON_API const BrotliDictionary* BrotliGetDictionary(void);
 
 /**
  * Sets dictionary data.

Added: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/platform.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/platform.h	                        (rev 0)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/platform.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -0,0 +1,436 @@
+/* Copyright 2016 Google Inc. All Rights Reserved.
+
+   Distributed under MIT license.
+   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Macros for compiler / platform specific features and build options. */
+
+#ifndef BROTLI_COMMON_PLATFORM_H_
+#define BROTLI_COMMON_PLATFORM_H_
+
+#include <string.h>  /* memcpy */
+#include <stdlib.h>  /* malloc, free */
+
+#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 BROTLI_X_BYTE_ORDER BYTE_ORDER
+#define BROTLI_X_LITTLE_ENDIAN LITTLE_ENDIAN
+#define BROTLI_X_BIG_ENDIAN BIG_ENDIAN
+#endif
+
+#if defined(BROTLI_ENABLE_LOG) || defined(BROTLI_DEBUG)
+#include <assert.h>
+#include <stdio.h>
+#endif
+
+/* Macros for compiler / platform specific features and build options.
+
+   Build options are:
+    * BROTLI_BUILD_32_BIT disables 64-bit optimizations
+    * BROTLI_BUILD_64_BIT forces to use 64-bit optimizations
+    * BROTLI_BUILD_BIG_ENDIAN forces to use big-endian optimizations
+    * BROTLI_BUILD_ENDIAN_NEUTRAL disables endian-aware optimizations
+    * BROTLI_BUILD_LITTLE_ENDIAN forces to use little-endian optimizations
+    * BROTLI_BUILD_PORTABLE disables dangerous optimizations, like unaligned
+      read and overlapping memcpy; this reduces decompression speed by 5%
+    * BROTLI_BUILD_NO_RBIT disables "rbit" optimization for ARM CPUs
+    * BROTLI_DEBUG dumps file name and line number when decoder detects stream
+      or memory error
+    * BROTLI_ENABLE_LOG enables asserts and dumps various state information
+*/
+
+#if BROTLI_MODERN_COMPILER || __has_attribute(always_inline)
+#define BROTLI_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((always_inline))
+#else
+#define BROTLI_ATTRIBUTE_ALWAYS_INLINE
+#endif
+
+#if defined(_WIN32) || defined(__CYGWIN__)
+#define BROTLI_ATTRIBUTE_VISIBILITY_HIDDEN
+#elif BROTLI_MODERN_COMPILER || __has_attribute(visibility)
+#define BROTLI_ATTRIBUTE_VISIBILITY_HIDDEN \
+    __attribute__ ((visibility ("hidden")))
+#else
+#define BROTLI_ATTRIBUTE_VISIBILITY_HIDDEN
+#endif
+
+#ifndef BROTLI_INTERNAL
+#define BROTLI_INTERNAL BROTLI_ATTRIBUTE_VISIBILITY_HIDDEN
+#endif
+
+#ifndef _MSC_VER
+#if defined(__cplusplus) || !defined(__STRICT_ANSI__) || \
+    (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
+#define BROTLI_INLINE inline BROTLI_ATTRIBUTE_ALWAYS_INLINE
+#else
+#define BROTLI_INLINE
+#endif
+#else  /* _MSC_VER */
+#define BROTLI_INLINE __forceinline
+#endif  /* _MSC_VER */
+
+#if BROTLI_MODERN_COMPILER || __has_attribute(unused)
+#define BROTLI_UNUSED_FUNCTION static BROTLI_INLINE __attribute__ ((unused))
+#else
+#define BROTLI_UNUSED_FUNCTION static BROTLI_INLINE
+#endif
+
+#if !defined(__cplusplus) && !defined(c_plusplus) && \
+    (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
+#define BROTLI_RESTRICT restrict
+#elif BROTLI_GCC_VERSION > 295 || defined(__llvm__)
+#define BROTLI_RESTRICT __restrict
+#else
+#define BROTLI_RESTRICT
+#endif
+
+#if BROTLI_MODERN_COMPILER || __has_attribute(noinline)
+#define BROTLI_NOINLINE __attribute__((noinline))
+#else
+#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__)
+#define BROTLI_TARGET_ARMV8
+#endif  /* ARMv8 */
+#endif  /* ARM */
+
+#if defined(__i386) || defined(_M_IX86)
+#define BROTLI_TARGET_X86
+#endif
+
+#if defined(__x86_64__) || defined(_M_X64)
+#define BROTLI_TARGET_X64
+#endif
+
+#if defined(__PPC64__)
+#define BROTLI_TARGET_POWERPC64
+#endif
+
+#if defined(BROTLI_BUILD_64_BIT)
+#define BROTLI_64_BITS 1
+#elif defined(BROTLI_BUILD_32_BIT)
+#define BROTLI_64_BITS 0
+#elif defined(BROTLI_TARGET_X64) || defined(BROTLI_TARGET_ARMV8) || \
+    defined(BROTLI_TARGET_POWERPC64)
+#define BROTLI_64_BITS 1
+#else
+#define BROTLI_64_BITS 0
+#endif
+
+#if (BROTLI_64_BITS)
+#define brotli_reg_t uint64_t
+#else
+#define brotli_reg_t uint32_t
+#endif
+
+#if defined(BROTLI_BUILD_BIG_ENDIAN)
+#define BROTLI_BIG_ENDIAN 1
+#elif defined(BROTLI_BUILD_LITTLE_ENDIAN)
+#define BROTLI_LITTLE_ENDIAN 1
+#elif defined(BROTLI_BUILD_ENDIAN_NEUTRAL)
+/* Just break elif chain. */
+#elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
+#define BROTLI_LITTLE_ENDIAN 1
+#elif defined(_WIN32) || defined(BROTLI_TARGET_X64)
+/* Win32 & x64 can currently always be assumed to be little endian */
+#define BROTLI_LITTLE_ENDIAN 1
+#elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
+#define BROTLI_BIG_ENDIAN 1
+#elif defined(BROTLI_X_BYTE_ORDER)
+#if BROTLI_X_BYTE_ORDER == BROTLI_X_LITTLE_ENDIAN
+#define BROTLI_LITTLE_ENDIAN 1
+#elif BROTLI_X_BYTE_ORDER == BROTLI_X_BIG_ENDIAN
+#define BROTLI_BIG_ENDIAN 1
+#endif
+#endif  /* BROTLI_X_BYTE_ORDER */
+
+#if !defined(BROTLI_LITTLE_ENDIAN)
+#define BROTLI_LITTLE_ENDIAN 0
+#endif
+
+#if !defined(BROTLI_BIG_ENDIAN)
+#define BROTLI_BIG_ENDIAN 0
+#endif
+
+#ifdef BROTLI_X_BYTE_ORDER
+#undef BROTLI_X_BYTE_ORDER
+#undef BROTLI_X_LITTLE_ENDIAN
+#undef BROTLI_X_BIG_ENDIAN
+#endif
+
+#ifdef BROTLI_BUILD_PORTABLE
+#define BROTLI_ALIGNED_READ (!!1)
+#elif defined(BROTLI_TARGET_X86) || defined(BROTLI_TARGET_X64) || \
+     defined(BROTLI_TARGET_ARMV7) || defined(BROTLI_TARGET_ARMV8)
+/* Allow unaligned read only for white-listed CPUs. */
+#define BROTLI_ALIGNED_READ (!!0)
+#else
+#define BROTLI_ALIGNED_READ (!!1)
+#endif
+
+#if BROTLI_ALIGNED_READ
+/* Portable unaligned memory access: read / write values via memcpy. */
+static BROTLI_INLINE uint16_t BrotliUnalignedRead16(const void* p) {
+  uint16_t t;
+  memcpy(&t, p, sizeof t);
+  return t;
+}
+static BROTLI_INLINE uint32_t BrotliUnalignedRead32(const void* p) {
+  uint32_t t;
+  memcpy(&t, p, sizeof t);
+  return t;
+}
+static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) {
+  uint64_t t;
+  memcpy(&t, p, sizeof t);
+  return t;
+}
+static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) {
+  memcpy(p, &v, sizeof v);
+}
+#else  /* BROTLI_ALIGNED_READ */
+/* Unaligned memory access is allowed: just cast pointer to requested type. */
+static BROTLI_INLINE uint16_t BrotliUnalignedRead16(const void* p) {
+  return *(const uint16_t*)p;
+}
+static BROTLI_INLINE uint32_t BrotliUnalignedRead32(const void* p) {
+  return *(const uint32_t*)p;
+}
+static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) {
+  return *(const uint64_t*)p;
+}
+static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) {
+  *(uint64_t*)p = v;
+}
+#endif  /* BROTLI_ALIGNED_READ */
+
+#if BROTLI_LITTLE_ENDIAN
+/* Straight endianness. Just read / write values. */
+#define BROTLI_UNALIGNED_LOAD16LE BrotliUnalignedRead16
+#define BROTLI_UNALIGNED_LOAD32LE BrotliUnalignedRead32
+#define BROTLI_UNALIGNED_LOAD64LE BrotliUnalignedRead64
+#define BROTLI_UNALIGNED_STORE64LE BrotliUnalignedWrite64
+#elif BROTLI_BIG_ENDIAN  /* BROTLI_LITTLE_ENDIAN */
+/* Explain compiler to byte-swap values. */
+#define BROTLI_BSWAP16_(V) ((uint16_t)( \
+  (((V) & 0xFFU) << 8) | \
+  (((V) >> 8) & 0xFFU)))
+static BROTLI_INLINE uint16_t BROTLI_UNALIGNED_LOAD16LE(const void* p) {
+  uint16_t value = BrotliUnalignedRead16(p);
+  return BROTLI_BSWAP16_(value);
+}
+#define BROTLI_BSWAP32_(V) ( \
+  (((V) & 0xFFU) << 24) | (((V) & 0xFF00U) << 8) | \
+  (((V) >> 8) & 0xFF00U) | (((V) >> 24) & 0xFFU))
+static BROTLI_INLINE uint32_t BROTLI_UNALIGNED_LOAD32LE(const void* p) {
+  uint32_t value = BrotliUnalignedRead32(p);
+  return BROTLI_BSWAP32_(value);
+}
+#define BROTLI_BSWAP64_(V) ( \
+  (((V) & 0xFFU) << 56) | (((V) & 0xFF00U) << 40) | \
+  (((V) & 0xFF0000U) << 24) | (((V) & 0xFF000000U) << 8) | \
+  (((V) >> 8) & 0xFF000000U) | (((V) >> 24) & 0xFF0000U) | \
+  (((V) >> 40) & 0xFF00U) | (((V) >> 56) & 0xFFU))
+static BROTLI_INLINE uint64_t BROTLI_UNALIGNED_LOAD64LE(const void* p) {
+  uint64_t value = BrotliUnalignedRead64(p);
+  return BROTLI_BSWAP64_(value);
+}
+static BROTLI_INLINE void BROTLI_UNALIGNED_STORE64LE(void* p, uint64_t v) {
+  uint64_t value = BROTLI_BSWAP64_(v);
+  BrotliUnalignedWrite64(p, value);
+}
+#else  /* BROTLI_LITTLE_ENDIAN */
+/* Read / store values byte-wise; hopefully compiler will understand. */
+static BROTLI_INLINE uint16_t BROTLI_UNALIGNED_LOAD16LE(const void* p) {
+  const uint8_t* in = (const uint8_t*)p;
+  return (uint16_t)(in[0] | (in[1] << 8));
+}
+static BROTLI_INLINE uint32_t BROTLI_UNALIGNED_LOAD32LE(const void* p) {
+  const uint8_t* in = (const uint8_t*)p;
+  uint32_t value = (uint32_t)(in[0]);
+  value |= (uint32_t)(in[1]) << 8;
+  value |= (uint32_t)(in[2]) << 16;
+  value |= (uint32_t)(in[3]) << 24;
+  return value;
+}
+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 */
+
+/* Define "BROTLI_PREDICT_TRUE" and "BROTLI_PREDICT_FALSE" macros for capable
+   compilers.
+
+To apply compiler hint, enclose the branching condition into macros, like this:
+
+  if (BROTLI_PREDICT_TRUE(zero == 0)) {
+    // main execution path
+  } else {
+    // compiler should place this code outside of main execution path
+  }
+
+OR:
+
+  if (BROTLI_PREDICT_FALSE(something_rare_or_unexpected_happens)) {
+    // compiler should place this code outside of main execution path
+  }
+
+*/
+#if BROTLI_MODERN_COMPILER || __has_builtin(__builtin_expect)
+#define BROTLI_PREDICT_TRUE(x) (__builtin_expect(!!(x), 1))
+#define BROTLI_PREDICT_FALSE(x) (__builtin_expect(x, 0))
+#else
+#define BROTLI_PREDICT_FALSE(x) (x)
+#define BROTLI_PREDICT_TRUE(x) (x)
+#endif
+
+/* BROTLI_IS_CONSTANT macros returns true for compile-time constants. */
+#if BROTLI_MODERN_COMPILER || __has_builtin(__builtin_constant_p)
+#define BROTLI_IS_CONSTANT(x) (!!__builtin_constant_p(x))
+#else
+#define BROTLI_IS_CONSTANT(x) (!!0)
+#endif
+
+#if defined(BROTLI_TARGET_ARM)
+#define BROTLI_HAS_UBFX (!!1)
+#else
+#define BROTLI_HAS_UBFX (!!0)
+#endif
+
+#ifdef BROTLI_ENABLE_LOG
+#define BROTLI_DCHECK(x) assert(x)
+#define BROTLI_LOG(x) printf x
+#else
+#define BROTLI_DCHECK(x)
+#define BROTLI_LOG(x)
+#endif
+
+#if defined(BROTLI_DEBUG) || defined(BROTLI_ENABLE_LOG)
+static BROTLI_INLINE void BrotliDump(const char* f, int l, const char* fn) {
+  fprintf(stderr, "%s:%d (%s)\n", f, l, fn);
+  fflush(stderr);
+}
+#define BROTLI_DUMP() BrotliDump(__FILE__, __LINE__, __FUNCTION__)
+#else
+#define BROTLI_DUMP() (void)(0)
+#endif
+
+#if (BROTLI_MODERN_COMPILER || defined(__llvm__)) && \
+    !defined(BROTLI_BUILD_NO_RBIT)
+#if defined(BROTLI_TARGET_ARMV7) || defined(BROTLI_TARGET_ARMV8)
+/* TODO: detect ARMv6T2 and enable this code for it. */
+static BROTLI_INLINE brotli_reg_t BrotliRBit(brotli_reg_t input) {
+  brotli_reg_t output;
+  __asm__("rbit %0, %1\n" : "=r"(output) : "r"(input));
+  return output;
+}
+#define BROTLI_RBIT(x) BrotliRBit(x)
+#endif  /* armv7 */
+#endif  /* gcc || clang */
+#if !defined(BROTLI_RBIT)
+static BROTLI_INLINE void BrotliRBit(void) { /* Should break build if used. */ }
+#endif  /* BROTLI_RBIT */
+
+#define BROTLI_REPEAT(N, X) {     \
+  if ((N & 1) != 0) {X;}          \
+  if ((N & 2) != 0) {X; X;}       \
+  if ((N & 4) != 0) {X; X; X; X;} \
+}
+
+#define BROTLI_UNUSED(X) (void)(X)
+
+#define BROTLI_MIN_MAX(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; }
+BROTLI_MIN_MAX(double) BROTLI_MIN_MAX(float) BROTLI_MIN_MAX(int)
+BROTLI_MIN_MAX(size_t) BROTLI_MIN_MAX(uint32_t) BROTLI_MIN_MAX(uint8_t)
+#undef BROTLI_MIN_MAX
+#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;   \
+}
+
+/* Default brotli_alloc_func */
+static void* BrotliDefaultAllocFunc(void* opaque, size_t size) {
+  BROTLI_UNUSED(opaque);
+  return malloc(size);
+}
+
+/* Default brotli_free_func */
+static void BrotliDefaultFreeFunc(void* opaque, void* address) {
+  BROTLI_UNUSED(opaque);
+  free(address);
+}
+
+BROTLI_UNUSED_FUNCTION void BrotliSuppressUnusedFunctions(void) {
+  BROTLI_UNUSED(BrotliSuppressUnusedFunctions);
+  BROTLI_UNUSED(BrotliUnalignedRead16);
+  BROTLI_UNUSED(BrotliUnalignedRead32);
+  BROTLI_UNUSED(BrotliUnalignedRead64);
+  BROTLI_UNUSED(BrotliUnalignedWrite64);
+  BROTLI_UNUSED(BROTLI_UNALIGNED_LOAD16LE);
+  BROTLI_UNUSED(BROTLI_UNALIGNED_LOAD32LE);
+  BROTLI_UNUSED(BROTLI_UNALIGNED_LOAD64LE);
+  BROTLI_UNUSED(BROTLI_UNALIGNED_STORE64LE);
+  BROTLI_UNUSED(BrotliRBit);
+  BROTLI_UNUSED(brotli_min_double);
+  BROTLI_UNUSED(brotli_max_double);
+  BROTLI_UNUSED(brotli_min_float);
+  BROTLI_UNUSED(brotli_max_float);
+  BROTLI_UNUSED(brotli_min_int);
+  BROTLI_UNUSED(brotli_max_int);
+  BROTLI_UNUSED(brotli_min_size_t);
+  BROTLI_UNUSED(brotli_max_size_t);
+  BROTLI_UNUSED(brotli_min_uint32_t);
+  BROTLI_UNUSED(brotli_max_uint32_t);
+  BROTLI_UNUSED(brotli_min_uint8_t);
+  BROTLI_UNUSED(brotli_max_uint8_t);
+  BROTLI_UNUSED(BrotliDefaultAllocFunc);
+  BROTLI_UNUSED(BrotliDefaultFreeFunc);
+#if defined(BROTLI_DEBUG) || defined(BROTLI_ENABLE_LOG)
+  BROTLI_UNUSED(BrotliDump);
+#endif
+}
+
+#endif  /* BROTLI_COMMON_PLATFORM_H_ */


Property changes on: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/platform.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/transform.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/transform.h	                        (rev 0)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/transform.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -0,0 +1,80 @@
+/* transforms is a part of ABI, but not API.
+
+   It means that there are some functions that are supposed to be in "common"
+   library, but header itself is not placed into include/brotli. This way,
+   aforementioned functions will be available only to brotli internals.
+ */
+
+#ifndef BROTLI_COMMON_TRANSFORM_H_
+#define BROTLI_COMMON_TRANSFORM_H_
+
+#include <brotli/port.h>
+#include <brotli/types.h>
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+enum BrotliWordTransformType {
+  BROTLI_TRANSFORM_IDENTITY = 0,
+  BROTLI_TRANSFORM_OMIT_LAST_1 = 1,
+  BROTLI_TRANSFORM_OMIT_LAST_2 = 2,
+  BROTLI_TRANSFORM_OMIT_LAST_3 = 3,
+  BROTLI_TRANSFORM_OMIT_LAST_4 = 4,
+  BROTLI_TRANSFORM_OMIT_LAST_5 = 5,
+  BROTLI_TRANSFORM_OMIT_LAST_6 = 6,
+  BROTLI_TRANSFORM_OMIT_LAST_7 = 7,
+  BROTLI_TRANSFORM_OMIT_LAST_8 = 8,
+  BROTLI_TRANSFORM_OMIT_LAST_9 = 9,
+  BROTLI_TRANSFORM_UPPERCASE_FIRST = 10,
+  BROTLI_TRANSFORM_UPPERCASE_ALL = 11,
+  BROTLI_TRANSFORM_OMIT_FIRST_1 = 12,
+  BROTLI_TRANSFORM_OMIT_FIRST_2 = 13,
+  BROTLI_TRANSFORM_OMIT_FIRST_3 = 14,
+  BROTLI_TRANSFORM_OMIT_FIRST_4 = 15,
+  BROTLI_TRANSFORM_OMIT_FIRST_5 = 16,
+  BROTLI_TRANSFORM_OMIT_FIRST_6 = 17,
+  BROTLI_TRANSFORM_OMIT_FIRST_7 = 18,
+  BROTLI_TRANSFORM_OMIT_FIRST_8 = 19,
+  BROTLI_TRANSFORM_OMIT_FIRST_9 = 20,
+  BROTLI_NUM_TRANSFORM_TYPES  /* Counts transforms, not a transform itself. */
+};
+
+#define BROTLI_TRANSFORMS_MAX_CUT_OFF BROTLI_TRANSFORM_OMIT_LAST_9
+
+typedef struct BrotliTransforms {
+  uint16_t prefix_suffix_size;
+  /* Last character must be null, so prefix_suffix_size must be at least 1. */
+  const uint8_t* prefix_suffix;
+  const uint16_t* prefix_suffix_map;
+  uint32_t num_transforms;
+  /* Each entry is a [prefix_id, transform, suffix_id] triplet. */
+  const uint8_t* transforms;
+  /* Indices of transforms like ["", BROTLI_TRANSFORM_OMIT_LAST_#, ""].
+     0-th element corresponds to ["", BROTLI_TRANSFORM_IDENTITY, ""].
+     -1, if cut-off transform does not exist. */
+  int16_t cutOffTransforms[BROTLI_TRANSFORMS_MAX_CUT_OFF + 1];
+} BrotliTransforms;
+
+/* T is BrotliTransforms*; result is uint8_t. */
+#define BROTLI_TRANSFORM_PREFIX_ID(T, I) ((T)->transforms[((I) * 3) + 0])
+#define BROTLI_TRANSFORM_TYPE(T, I)      ((T)->transforms[((I) * 3) + 1])
+#define BROTLI_TRANSFORM_SUFFIX_ID(T, I) ((T)->transforms[((I) * 3) + 2])
+
+/* T is BrotliTransforms*; result is const uint8_t*. */
+#define BROTLI_TRANSFORM_PREFIX(T, I) (&(T)->prefix_suffix[ \
+    (T)->prefix_suffix_map[BROTLI_TRANSFORM_PREFIX_ID(T, I)]])
+#define BROTLI_TRANSFORM_SUFFIX(T, I) (&(T)->prefix_suffix[ \
+    (T)->prefix_suffix_map[BROTLI_TRANSFORM_SUFFIX_ID(T, I)]])
+
+BROTLI_COMMON_API const BrotliTransforms* BrotliGetTransforms(void);
+
+BROTLI_COMMON_API int BrotliTransformDictionaryWord(
+    uint8_t* dst, const uint8_t* word, int len,
+    const BrotliTransforms* transforms, int transform_idx);
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}  /* extern "C" */
+#endif
+
+#endif  /* BROTLI_COMMON_TRANSFORM_H_ */


Property changes on: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/transform.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
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-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/common/version.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -14,7 +14,7 @@
    BrotliEncoderVersion methods. */
 
 /* Semantic version, calculated as (MAJOR << 24) | (MINOR << 12) | PATCH */
-#define BROTLI_VERSION 0x1000002
+#define BROTLI_VERSION 0x1000003
 
 /* 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 0x1002000
+#define BROTLI_ABI_VERSION 0x1003000
 
 #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-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -10,11 +10,11 @@
 
 #include "../common/constants.h"
 #include "../common/dictionary.h"
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./command.h"
 #include "./dictionary_hash.h"
 #include "./memory.h"
-#include "./port.h"
 #include "./quality.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
@@ -102,23 +102,16 @@
 #undef CAT
 #undef EXPAND_CAT
 
-void BrotliCreateBackwardReferences(const BrotliDictionary* dictionary,
-                                    size_t num_bytes,
-                                    size_t position,
-                                    const uint8_t* ringbuffer,
-                                    size_t ringbuffer_mask,
-                                    const BrotliEncoderParams* params,
-                                    HasherHandle hasher,
-                                    int* dist_cache,
-                                    size_t* last_insert_len,
-                                    Command* commands,
-                                    size_t* num_commands,
-                                    size_t* num_literals) {
+void BrotliCreateBackwardReferences(
+    size_t num_bytes, size_t position, const uint8_t* ringbuffer,
+    size_t ringbuffer_mask, const BrotliEncoderParams* params,
+    HasherHandle hasher, int* dist_cache, size_t* last_insert_len,
+    Command* commands, size_t* num_commands, size_t* num_literals) {
   switch (params->hasher.type) {
 #define CASE_(N)                                                  \
     case N:                                                       \
-      CreateBackwardReferencesNH ## N(dictionary,                 \
-          kStaticDictionaryHash, num_bytes, position, ringbuffer, \
+      CreateBackwardReferencesNH ## N(                            \
+          num_bytes, position, ringbuffer,                        \
           ringbuffer_mask, params, hasher, dist_cache,            \
           last_insert_len, commands, num_commands, num_literals); \
       return;

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -11,10 +11,10 @@
 
 #include "../common/constants.h"
 #include "../common/dictionary.h"
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./command.h"
 #include "./hash.h"
-#include "./port.h"
 #include "./quality.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
@@ -26,11 +26,10 @@
    CreateBackwardReferences calls, and must be incremented by the amount written
    by this call. */
 BROTLI_INTERNAL void BrotliCreateBackwardReferences(
-    const BrotliDictionary* dictionary, size_t num_bytes, size_t position,
-    const uint8_t* ringbuffer, size_t ringbuffer_mask,
-    const BrotliEncoderParams* params, HasherHandle hasher, int* dist_cache,
-    size_t* last_insert_len, Command* commands, size_t* num_commands,
-    size_t* num_literals);
+    size_t num_bytes, size_t position, const uint8_t* ringbuffer,
+    size_t ringbuffer_mask, const BrotliEncoderParams* params,
+    HasherHandle hasher, int* dist_cache, size_t* last_insert_len,
+    Command* commands, size_t* num_commands, size_t* num_literals);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }  /* extern "C" */

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-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_hq.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -11,6 +11,7 @@
 #include <string.h>  /* memcpy, memset */
 
 #include "../common/constants.h"
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./command.h"
 #include "./fast_log.h"
@@ -17,7 +18,7 @@
 #include "./find_match_length.h"
 #include "./literal_cost.h"
 #include "./memory.h"
-#include "./port.h"
+#include "./params.h"
 #include "./prefix.h"
 #include "./quality.h"
 
@@ -25,6 +26,8 @@
 extern "C" {
 #endif
 
+#define BROTLI_MAX_EFFECTIVE_DISTANCE_ALPHABET_SIZE 544
+
 static const float kInfinity = 1.7e38f;  /* ~= 2 ^ 127 */
 
 static const uint32_t kDistanceCacheIndex[] = {
@@ -39,26 +42,26 @@
   size_t i;
   stub.length = 1;
   stub.distance = 0;
-  stub.insert_length = 0;
+  stub.dcode_insert_length = 0;
   stub.u.cost = kInfinity;
   for (i = 0; i < length; ++i) array[i] = stub;
 }
 
 static BROTLI_INLINE uint32_t ZopfliNodeCopyLength(const ZopfliNode* self) {
-  return self->length & 0xffffff;
+  return self->length & 0x1FFFFFF;
 }
 
 static BROTLI_INLINE uint32_t ZopfliNodeLengthCode(const ZopfliNode* self) {
-  const uint32_t modifier = self->length >> 24;
+  const uint32_t modifier = self->length >> 25;
   return ZopfliNodeCopyLength(self) + 9u - modifier;
 }
 
 static BROTLI_INLINE uint32_t ZopfliNodeCopyDistance(const ZopfliNode* self) {
-  return self->distance & 0x7ffffff;
+  return self->distance;
 }
 
 static BROTLI_INLINE uint32_t ZopfliNodeDistanceCode(const ZopfliNode* self) {
-  const uint32_t short_code = self->distance >> 27;
+  const uint32_t short_code = self->dcode_insert_length >> 27;
   return short_code == 0 ?
       ZopfliNodeCopyDistance(self) + BROTLI_NUM_DISTANCE_SHORT_CODES - 1 :
       short_code - 1;
@@ -65,7 +68,7 @@
 }
 
 static BROTLI_INLINE uint32_t ZopfliNodeCommandLength(const ZopfliNode* self) {
-  return ZopfliNodeCopyLength(self) + self->insert_length;
+  return ZopfliNodeCopyLength(self) + (self->dcode_insert_length & 0x7FFFFFF);
 }
 
 /* Histogram based cost model for zopflification. */
@@ -72,7 +75,8 @@
 typedef struct ZopfliCostModel {
   /* The insert and copy length symbols. */
   float cost_cmd_[BROTLI_NUM_COMMAND_SYMBOLS];
-  float cost_dist_[BROTLI_NUM_DISTANCE_SYMBOLS];
+  float* cost_dist_;
+  uint32_t distance_alphabet_size;
   /* Cumulative costs of literals per position in the stream. */
   float* literal_costs_;
   float min_cost_cmd_;
@@ -80,28 +84,41 @@
 } ZopfliCostModel;
 
 static void InitZopfliCostModel(
-    MemoryManager* m, ZopfliCostModel* self, size_t num_bytes) {
+    MemoryManager* m, ZopfliCostModel* self, const BrotliDistanceParams* dist,
+    size_t num_bytes) {
   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;
   if (BROTLI_IS_OOM(m)) return;
 }
 
 static void CleanupZopfliCostModel(MemoryManager* m, ZopfliCostModel* self) {
   BROTLI_FREE(m, self->literal_costs_);
+  BROTLI_FREE(m, self->cost_dist_);
 }
 
 static void SetCost(const uint32_t* histogram, size_t histogram_size,
-                    float* cost) {
+                    BROTLI_BOOL literal_histogram, float* cost) {
   size_t sum = 0;
+  size_t missing_symbol_sum;
   float log2sum;
+  float missing_symbol_cost;
   size_t i;
   for (i = 0; i < histogram_size; i++) {
     sum += histogram[i];
   }
   log2sum = (float)FastLog2(sum);
+  missing_symbol_sum = sum;
+  if (!literal_histogram) {
+    for (i = 0; i < histogram_size; i++) {
+      if (histogram[i] == 0) missing_symbol_sum++;
+    }
+  }
+  missing_symbol_cost = (float)FastLog2(missing_symbol_sum) + 2;
   for (i = 0; i < histogram_size; i++) {
     if (histogram[i] == 0) {
-      cost[i] = log2sum + 2;
+      cost[i] = missing_symbol_cost;
       continue;
     }
 
@@ -122,7 +139,7 @@
                                            size_t last_insert_len) {
   uint32_t histogram_literal[BROTLI_NUM_LITERAL_SYMBOLS];
   uint32_t histogram_cmd[BROTLI_NUM_COMMAND_SYMBOLS];
-  uint32_t histogram_dist[BROTLI_NUM_DISTANCE_SYMBOLS];
+  uint32_t histogram_dist[BROTLI_MAX_EFFECTIVE_DISTANCE_ALPHABET_SIZE];
   float cost_literal[BROTLI_NUM_LITERAL_SYMBOLS];
   size_t pos = position - last_insert_len;
   float min_cost_cmd = kInfinity;
@@ -136,7 +153,7 @@
   for (i = 0; i < num_commands; i++) {
     size_t inslength = commands[i].insert_len_;
     size_t copylength = CommandCopyLen(&commands[i]);
-    size_t distcode = commands[i].dist_prefix_;
+    size_t distcode = commands[i].dist_prefix_ & 0x3FF;
     size_t cmdcode = commands[i].cmd_prefix_;
     size_t j;
 
@@ -150,9 +167,12 @@
     pos += inslength + copylength;
   }
 
-  SetCost(histogram_literal, BROTLI_NUM_LITERAL_SYMBOLS, cost_literal);
-  SetCost(histogram_cmd, BROTLI_NUM_COMMAND_SYMBOLS, cost_cmd);
-  SetCost(histogram_dist, BROTLI_NUM_DISTANCE_SYMBOLS, self->cost_dist_);
+  SetCost(histogram_literal, BROTLI_NUM_LITERAL_SYMBOLS, BROTLI_TRUE,
+          cost_literal);
+  SetCost(histogram_cmd, BROTLI_NUM_COMMAND_SYMBOLS, BROTLI_FALSE,
+          cost_cmd);
+  SetCost(histogram_dist, self->distance_alphabet_size, BROTLI_FALSE,
+          self->cost_dist_);
 
   for (i = 0; i < BROTLI_NUM_COMMAND_SYMBOLS; ++i) {
     min_cost_cmd = BROTLI_MIN(float, min_cost_cmd, cost_cmd[i]);
@@ -161,11 +181,14 @@
 
   {
     float* literal_costs = self->literal_costs_;
+    float literal_carry = 0.0;
     size_t num_bytes = self->num_bytes_;
     literal_costs[0] = 0.0;
     for (i = 0; i < num_bytes; ++i) {
-      literal_costs[i + 1] = literal_costs[i] +
+      literal_carry +=
           cost_literal[ringbuffer[(position + i) & ringbuffer_mask]];
+      literal_costs[i + 1] = literal_costs[i] + literal_carry;
+      literal_carry -= literal_costs[i + 1] - literal_costs[i];
     }
   }
 }
@@ -175,6 +198,7 @@
                                                const uint8_t* ringbuffer,
                                                size_t ringbuffer_mask) {
   float* literal_costs = self->literal_costs_;
+  float literal_carry = 0.0;
   float* cost_dist = self->cost_dist_;
   float* cost_cmd = self->cost_cmd_;
   size_t num_bytes = self->num_bytes_;
@@ -183,12 +207,14 @@
                                     ringbuffer, &literal_costs[1]);
   literal_costs[0] = 0.0;
   for (i = 0; i < num_bytes; ++i) {
-    literal_costs[i + 1] += literal_costs[i];
+    literal_carry += literal_costs[i + 1];
+    literal_costs[i + 1] = literal_costs[i] + literal_carry;
+    literal_carry -= literal_costs[i + 1] - literal_costs[i];
   }
   for (i = 0; i < BROTLI_NUM_COMMAND_SYMBOLS; ++i) {
     cost_cmd[i] = (float)FastLog2(11 + (uint32_t)i);
   }
-  for (i = 0; i < BROTLI_NUM_DISTANCE_SYMBOLS; ++i) {
+  for (i = 0; i < self->distance_alphabet_size; ++i) {
     cost_dist[i] = (float)FastLog2(20 + (uint32_t)i);
   }
   self->min_cost_cmd_ = (float)FastLog2(11);
@@ -221,9 +247,10 @@
     size_t start_pos, size_t len, size_t len_code, size_t dist,
     size_t short_code, float cost) {
   ZopfliNode* next = &nodes[pos + len];
-  next->length = (uint32_t)(len | ((len + 9u - len_code) << 24));
-  next->distance = (uint32_t)(dist | (short_code << 27));
-  next->insert_length = (uint32_t)(pos - start_pos);
+  next->length = (uint32_t)(len | ((len + 9u - len_code) << 25));
+  next->distance = (uint32_t)dist;
+  next->dcode_insert_length = (uint32_t)(
+      (short_code << 27) | (pos - start_pos));
   next->u.cost = cost;
 }
 
@@ -303,7 +330,7 @@
                                         const size_t gap,
                                         const ZopfliNode* nodes) {
   const size_t clen = ZopfliNodeCopyLength(&nodes[pos]);
-  const size_t ilen = nodes[pos].insert_length;
+  const size_t ilen = nodes[pos].dcode_insert_length & 0x7FFFFFF;
   const size_t dist = ZopfliNodeCopyDistance(&nodes[pos]);
   /* Since |block_start + pos| is the end position of the command, the copy part
      starts from |block_start + pos - clen|. Distances that are greater than
@@ -335,7 +362,7 @@
   int idx = 0;
   size_t p = nodes[pos].u.shortcut;
   while (idx < 4 && p > 0) {
-    const size_t ilen = nodes[p].insert_length;
+    const size_t ilen = nodes[p].dcode_insert_length & 0x7FFFFFF;
     const size_t clen = ZopfliNodeCopyLength(&nodes[p]);
     const size_t dist = ZopfliNodeCopyDistance(&nodes[p]);
     dist_cache[idx++] = (int)dist;
@@ -482,10 +509,12 @@
         uint32_t distnumextra;
         float dist_cost;
         size_t max_match_len;
-        PrefixEncodeCopyDistance(dist_code, 0, 0, &dist_symbol, &distextra);
-        distnumextra = distextra >> 24;
+        PrefixEncodeCopyDistance(
+            dist_code, params->dist.num_direct_distance_codes,
+            params->dist.distance_postfix_bits, &dist_symbol, &distextra);
+        distnumextra = dist_symbol >> 10;
         dist_cost = base_cost + (float)distnumextra +
-            ZopfliCostModelGetDistanceCost(model, dist_symbol);
+            ZopfliCostModelGetDistanceCost(model, dist_symbol & 0x3FF);
 
         /* Try all copy lengths up until the maximum copy length corresponding
            to this distance. If the distance refers to the static dictionary, or
@@ -517,7 +546,8 @@
     ZopfliNode* nodes) {
   size_t index = num_bytes;
   size_t num_commands = 0;
-  while (nodes[index].insert_length == 0 && nodes[index].length == 1) --index;
+  while ((nodes[index].dcode_insert_length & 0x7FFFFFF) == 0 &&
+      nodes[index].length == 1) --index;
   nodes[index].u.next = BROTLI_UINT32_MAX;
   while (index != 0) {
     size_t len = ZopfliNodeCommandLength(&nodes[index]);
@@ -542,11 +572,10 @@
   uint32_t offset = nodes[0].u.next;
   size_t i;
   size_t gap = 0;
-  BROTLI_UNUSED(params);
   for (i = 0; offset != BROTLI_UINT32_MAX; i++) {
     const ZopfliNode* next = &nodes[pos + offset];
     size_t copy_length = ZopfliNodeCopyLength(next);
-    size_t insert_length = next->insert_length;
+    size_t insert_length = next->dcode_insert_length & 0x7FFFFFF;
     pos += insert_length;
     offset = next->u.next;
     if (i == 0) {
@@ -560,7 +589,7 @@
           BROTLI_MIN(size_t, block_start + pos, max_backward_limit);
       BROTLI_BOOL is_dictionary = TO_BROTLI_BOOL(distance > max_distance + gap);
       size_t dist_code = ZopfliNodeDistanceCode(next);
-      InitCommand(&commands[i], insert_length,
+      InitCommand(&commands[i], &params->dist, insert_length,
           copy_length, (int)len_code - (int)copy_length, dist_code);
 
       if (!is_dictionary && dist_code > 0) {
@@ -624,16 +653,10 @@
 
 /* REQUIRES: nodes != NULL and len(nodes) >= num_bytes + 1 */
 size_t BrotliZopfliComputeShortestPath(MemoryManager* m,
-                                       const BrotliDictionary* dictionary,
-                                       size_t num_bytes,
-                                       size_t position,
-                                       const uint8_t* ringbuffer,
-                                       size_t ringbuffer_mask,
-                                       const BrotliEncoderParams* params,
-                                       const size_t max_backward_limit,
-                                       const int* dist_cache,
-                                       HasherHandle hasher,
-                                       ZopfliNode* nodes) {
+    size_t num_bytes, size_t position, const uint8_t* ringbuffer,
+    size_t ringbuffer_mask, const BrotliEncoderParams* params,
+    const size_t max_backward_limit, const int* dist_cache, HasherHandle hasher,
+    ZopfliNode* nodes) {
   const size_t max_zopfli_len = MaxZopfliLen(params);
   ZopfliCostModel model;
   StartPosQueue queue;
@@ -645,7 +668,7 @@
   size_t lz_matches_offset = 0;
   nodes[0].length = 0;
   nodes[0].u.cost = 0;
-  InitZopfliCostModel(m, &model, num_bytes);
+  InitZopfliCostModel(m, &model, &params->dist, num_bytes);
   if (BROTLI_IS_OOM(m)) return 0;
   ZopfliCostModelSetFromLiteralCosts(
       &model, position, ringbuffer, ringbuffer_mask);
@@ -653,10 +676,10 @@
   for (i = 0; i + HashTypeLengthH10() - 1 < num_bytes; i++) {
     const size_t pos = position + i;
     const size_t max_distance = BROTLI_MIN(size_t, pos, max_backward_limit);
-    size_t num_matches = FindAllMatchesH10(hasher, dictionary, ringbuffer,
-        ringbuffer_mask, pos, num_bytes - i, max_distance, gap, params,
-        &matches[lz_matches_offset]);
     size_t skip;
+    size_t num_matches = FindAllMatchesH10(hasher, &params->dictionary,
+        ringbuffer, ringbuffer_mask, pos, num_bytes - i, max_distance, gap,
+        params, &matches[lz_matches_offset]);
     if (num_matches > 0 &&
         BackwardMatchLength(&matches[num_matches - 1]) > max_zopfli_len) {
       matches[0] = matches[num_matches - 1];
@@ -687,20 +710,19 @@
   return ComputeShortestPathFromNodes(num_bytes, nodes);
 }
 
-void BrotliCreateZopfliBackwardReferences(
-    MemoryManager* m, const BrotliDictionary* dictionary, size_t num_bytes,
-    size_t position, const uint8_t* ringbuffer, size_t ringbuffer_mask,
-    const BrotliEncoderParams* params, HasherHandle hasher, int* dist_cache,
-    size_t* last_insert_len, Command* commands, size_t* num_commands,
-    size_t* num_literals) {
+void BrotliCreateZopfliBackwardReferences(MemoryManager* m,
+    size_t num_bytes, size_t position, const uint8_t* ringbuffer,
+    size_t ringbuffer_mask, const BrotliEncoderParams* params,
+    HasherHandle hasher, int* dist_cache, size_t* last_insert_len,
+    Command* commands, size_t* num_commands, size_t* num_literals) {
   const size_t max_backward_limit = BROTLI_MAX_BACKWARD_LIMIT(params->lgwin);
   ZopfliNode* nodes;
   nodes = BROTLI_ALLOC(m, ZopfliNode, num_bytes + 1);
   if (BROTLI_IS_OOM(m)) return;
   BrotliInitZopfliNodes(nodes, num_bytes + 1);
-  *num_commands += BrotliZopfliComputeShortestPath(m, dictionary, num_bytes,
-      position, ringbuffer, ringbuffer_mask, params, max_backward_limit,
-      dist_cache, hasher, nodes);
+  *num_commands += BrotliZopfliComputeShortestPath(m,
+      num_bytes, position, ringbuffer, ringbuffer_mask,
+      params, max_backward_limit, dist_cache, hasher, nodes);
   if (BROTLI_IS_OOM(m)) return;
   BrotliZopfliCreateCommands(num_bytes, position, max_backward_limit, nodes,
       dist_cache, last_insert_len, params, commands, num_literals);
@@ -707,12 +729,11 @@
   BROTLI_FREE(m, nodes);
 }
 
-void BrotliCreateHqZopfliBackwardReferences(
-    MemoryManager* m, const BrotliDictionary* dictionary, size_t num_bytes,
-    size_t position, const uint8_t* ringbuffer, size_t ringbuffer_mask,
-    const BrotliEncoderParams* params, HasherHandle hasher, int* dist_cache,
-    size_t* last_insert_len, Command* commands, size_t* num_commands,
-    size_t* num_literals) {
+void BrotliCreateHqZopfliBackwardReferences(MemoryManager* m,
+    size_t num_bytes, size_t position, const uint8_t* ringbuffer,
+    size_t ringbuffer_mask, const BrotliEncoderParams* params,
+    HasherHandle hasher, int* dist_cache, size_t* last_insert_len,
+    Command* commands, size_t* num_commands, size_t* num_literals) {
   const size_t max_backward_limit = BROTLI_MAX_BACKWARD_LIMIT(params->lgwin);
   uint32_t* num_matches = BROTLI_ALLOC(m, uint32_t, num_bytes);
   size_t matches_size = 4 * num_bytes;
@@ -741,12 +762,12 @@
     BROTLI_ENSURE_CAPACITY(m, BackwardMatch, matches, matches_size,
         cur_match_pos + MAX_NUM_MATCHES_H10 + shadow_matches);
     if (BROTLI_IS_OOM(m)) return;
-    num_found_matches = FindAllMatchesH10(hasher, dictionary, ringbuffer,
-        ringbuffer_mask, pos, max_length, max_distance, gap, params,
-        &matches[cur_match_pos + shadow_matches]);
+    num_found_matches = FindAllMatchesH10(hasher,
+        &params->dictionary, ringbuffer, ringbuffer_mask, pos, max_length,
+        max_distance, gap, params, &matches[cur_match_pos + shadow_matches]);
     cur_match_end = cur_match_pos + num_found_matches;
     for (j = cur_match_pos; j + 1 < cur_match_end; ++j) {
-      assert(BackwardMatchLength(&matches[j]) <=
+      BROTLI_DCHECK(BackwardMatchLength(&matches[j]) <=
           BackwardMatchLength(&matches[j + 1]));
     }
     num_matches[i] = (uint32_t)num_found_matches;
@@ -772,7 +793,7 @@
   orig_num_commands = *num_commands;
   nodes = BROTLI_ALLOC(m, ZopfliNode, num_bytes + 1);
   if (BROTLI_IS_OOM(m)) return;
-  InitZopfliCostModel(m, &model, num_bytes);
+  InitZopfliCostModel(m, &model, &params->dist, num_bytes);
   if (BROTLI_IS_OOM(m)) return;
   for (i = 0; i < 2; i++) {
     BrotliInitZopfliNodes(nodes, num_bytes + 1);

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_hq.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_hq.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_hq.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -11,11 +11,11 @@
 
 #include "../common/constants.h"
 #include "../common/dictionary.h"
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./command.h"
 #include "./hash.h"
 #include "./memory.h"
-#include "./port.h"
 #include "./quality.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
@@ -22,30 +22,27 @@
 extern "C" {
 #endif
 
-BROTLI_INTERNAL void BrotliCreateZopfliBackwardReferences(
-    MemoryManager* m, const BrotliDictionary* dictionary, size_t num_bytes,
-    size_t position, const uint8_t* ringbuffer, size_t ringbuffer_mask,
-    const BrotliEncoderParams* params, HasherHandle hasher, int* dist_cache,
-    size_t* last_insert_len, Command* commands, size_t* num_commands,
-    size_t* num_literals);
+BROTLI_INTERNAL void BrotliCreateZopfliBackwardReferences(MemoryManager* m,
+    size_t num_bytes, size_t position, const uint8_t* ringbuffer,
+    size_t ringbuffer_mask, const BrotliEncoderParams* params,
+    HasherHandle hasher, int* dist_cache, size_t* last_insert_len,
+    Command* commands, size_t* num_commands, size_t* num_literals);
 
-BROTLI_INTERNAL void BrotliCreateHqZopfliBackwardReferences(
-    MemoryManager* m, const BrotliDictionary* dictionary, size_t num_bytes,
-    size_t position, const uint8_t* ringbuffer, size_t ringbuffer_mask,
-    const BrotliEncoderParams* params, HasherHandle hasher, int* dist_cache,
-    size_t* last_insert_len, Command* commands, size_t* num_commands,
-    size_t* num_literals);
+BROTLI_INTERNAL void BrotliCreateHqZopfliBackwardReferences(MemoryManager* m,
+    size_t num_bytes, size_t position, const uint8_t* ringbuffer,
+    size_t ringbuffer_mask, const BrotliEncoderParams* params,
+    HasherHandle hasher, int* dist_cache, size_t* last_insert_len,
+    Command* commands, size_t* num_commands, size_t* num_literals);
 
 typedef struct ZopfliNode {
-  /* best length to get up to this byte (not including this byte itself)
-     highest 8 bit is used to reconstruct the length code */
+  /* Best length to get up to this byte (not including this byte itself)
+     highest 7 bit is used to reconstruct the length code. */
   uint32_t length;
-  /* distance associated with the length; highest 5 bits contain distance
-     short code + 1 (or zero if no short code); this way only distances shorter
-     than 128MiB are allowed here */
+  /* Distance associated with the length. */
   uint32_t distance;
-  /* number of literal inserts before this copy */
-  uint32_t insert_length;
+  /* Number of literal inserts before this copy; highest 5 bits contain
+     distance short code + 1 (or zero if no short code). */
+  uint32_t dcode_insert_length;
 
   /* This union holds information used by dynamic-programming. During forward
      pass |cost| it used to store the goal function. When node is processed its
@@ -77,11 +74,11 @@
      (1) nodes[i].copy_length() >= 2
      (2) nodes[i].command_length() <= i and
      (3) nodes[i - nodes[i].command_length()].cost < kInfinity */
-BROTLI_INTERNAL size_t BrotliZopfliComputeShortestPath(
-    MemoryManager* m, const BrotliDictionary* dictionary, size_t num_bytes,
-    size_t position, const uint8_t* ringbuffer, size_t ringbuffer_mask,
-    const BrotliEncoderParams* params, const size_t max_backward_limit,
-    const int* dist_cache, HasherHandle hasher, ZopfliNode* nodes);
+BROTLI_INTERNAL size_t BrotliZopfliComputeShortestPath(MemoryManager* m,
+    size_t num_bytes, size_t position, const uint8_t* ringbuffer,
+    size_t ringbuffer_mask, const BrotliEncoderParams* params,
+    const size_t max_backward_limit, const int* dist_cache, HasherHandle hasher,
+    ZopfliNode* nodes);
 
 BROTLI_INTERNAL void BrotliZopfliCreateCommands(
     const size_t num_bytes, const size_t block_start,

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_inc.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_inc.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/backward_references_inc.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -8,8 +8,7 @@
 /* template parameters: EXPORT_FN, FN */
 
 static BROTLI_NOINLINE void EXPORT_FN(CreateBackwardReferences)(
-    const BrotliDictionary* dictionary,
-    const uint16_t* dictionary_hash, size_t num_bytes, size_t position,
+    size_t num_bytes, size_t position,
     const uint8_t* ringbuffer, size_t ringbuffer_mask,
     const BrotliEncoderParams* params, HasherHandle hasher, int* dist_cache,
     size_t* last_insert_len, Command* commands, size_t* num_commands,
@@ -42,9 +41,10 @@
     sr.len_code_delta = 0;
     sr.distance = 0;
     sr.score = kMinScore;
-    FN(FindLongestMatch)(hasher, dictionary, dictionary_hash, ringbuffer,
-                         ringbuffer_mask, dist_cache, position,
-                         max_length, max_distance, gap, &sr);
+    FN(FindLongestMatch)(hasher, &params->dictionary,
+                         ringbuffer, ringbuffer_mask, dist_cache, position,
+                         max_length, max_distance, gap,
+                         params->dist.max_distance, &sr);
     if (sr.score > kMinScore) {
       /* Found a match. Let's look for something even better ahead. */
       int delayed_backward_references_in_row = 0;
@@ -58,9 +58,9 @@
         sr2.distance = 0;
         sr2.score = kMinScore;
         max_distance = BROTLI_MIN(size_t, position + 1, max_backward_limit);
-        FN(FindLongestMatch)(hasher, dictionary, dictionary_hash, ringbuffer,
-                             ringbuffer_mask, dist_cache, position + 1,
-                             max_length, max_distance, gap, &sr2);
+        FN(FindLongestMatch)(hasher, &params->dictionary,
+            ringbuffer, ringbuffer_mask, dist_cache, position + 1, max_length,
+            max_distance, gap, params->dist.max_distance, &sr2);
         if (sr2.score >= sr.score + cost_diff_lazy) {
           /* Ok, let's just write one byte for now and start a match from the
              next byte. */
@@ -89,8 +89,8 @@
           dist_cache[0] = (int)sr.distance;
           FN(PrepareDistanceCache)(hasher, dist_cache);
         }
-        InitCommand(commands++, insert_length, sr.len, sr.len_code_delta,
-            distance_code);
+        InitCommand(commands++, &params->dist, insert_length,
+            sr.len, sr.len_code_delta, distance_code);
       }
       *num_literals += insert_length;
       insert_length = 0;

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/bit_cost.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/bit_cost.c	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/bit_cost.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -9,10 +9,10 @@
 #include "./bit_cost.h"
 
 #include "../common/constants.h"
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./fast_log.h"
 #include "./histogram.h"
-#include "./port.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/bit_cost.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/bit_cost.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/bit_cost.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -9,20 +9,20 @@
 #ifndef BROTLI_ENC_BIT_COST_H_
 #define BROTLI_ENC_BIT_COST_H_
 
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./fast_log.h"
 #include "./histogram.h"
-#include "./port.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
 #endif
 
-static BROTLI_INLINE double ShannonEntropy(const uint32_t *population,
-                                           size_t size, size_t *total) {
+static BROTLI_INLINE double ShannonEntropy(
+    const uint32_t* population, size_t size, size_t* total) {
   size_t sum = 0;
   double retval = 0;
-  const uint32_t *population_end = population + size;
+  const uint32_t* population_end = population + size;
   size_t p;
   if (size & 1) {
     goto odd_number_of_elements_left;
@@ -42,7 +42,7 @@
 }
 
 static BROTLI_INLINE double BitsEntropy(
-    const uint32_t *population, size_t size) {
+    const uint32_t* population, size_t size) {
   size_t sum;
   double retval = ShannonEntropy(population, size, &sum);
   if (retval < sum) {

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_encoder_inc.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_encoder_inc.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_encoder_inc.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -13,9 +13,9 @@
    stream. */
 static void FN(BuildAndStoreEntropyCodes)(MemoryManager* m, BlockEncoder* self,
     const HistogramType* histograms, const size_t histograms_size,
-    HuffmanTree* tree, size_t* storage_ix, uint8_t* storage) {
-  const size_t alphabet_size = self->alphabet_size_;
-  const size_t table_size = histograms_size * alphabet_size;
+    const size_t alphabet_size, HuffmanTree* tree,
+    size_t* storage_ix, uint8_t* storage) {
+  const size_t table_size = histograms_size * self->histogram_length_;
   self->depths_ = BROTLI_ALLOC(m, uint8_t, table_size);
   self->bits_ = BROTLI_ALLOC(m, uint16_t, table_size);
   if (BROTLI_IS_OOM(m)) return;
@@ -23,9 +23,10 @@
   {
     size_t i;
     for (i = 0; i < histograms_size; ++i) {
-      size_t ix = i * alphabet_size;
-      BuildAndStoreHuffmanTree(&histograms[i].data_[0], alphabet_size, tree,
-          &self->depths_[ix], &self->bits_[ix], storage_ix, storage);
+      size_t ix = i * self->histogram_length_;
+      BuildAndStoreHuffmanTree(&histograms[i].data_[0], self->histogram_length_,
+          alphabet_size, tree, &self->depths_[ix], &self->bits_[ix],
+          storage_ix, storage);
     }
   }
 }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter.c	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -8,9 +8,9 @@
 
 #include "./block_splitter.h"
 
-#include <assert.h>
 #include <string.h>  /* memcpy, memset */
 
+#include "../common/platform.h"
 #include "./bit_cost.h"
 #include "./cluster.h"
 #include "./command.h"
@@ -17,7 +17,6 @@
 #include "./fast_log.h"
 #include "./histogram.h"
 #include "./memory.h"
-#include "./port.h"
 #include "./quality.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
@@ -175,7 +174,7 @@
     for (i = 0; i < num_commands; ++i) {
       const Command* cmd = &cmds[i];
       if (CommandCopyLen(cmd) && cmd->cmd_prefix_ >= 128) {
-        distance_prefixes[j++] = cmd->dist_prefix_;
+        distance_prefixes[j++] = cmd->dist_prefix_ & 0x3FF;
       }
     }
     /* Create the block split on the array of distance prefixes. */

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -9,10 +9,10 @@
 #ifndef BROTLI_ENC_BLOCK_SPLITTER_H_
 #define BROTLI_ENC_BLOCK_SPLITTER_H_
 
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./command.h"
 #include "./memory.h"
-#include "./port.h"
 #include "./quality.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter_inc.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter_inc.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/block_splitter_inc.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -70,13 +70,13 @@
                              double* insert_cost,
                              double* cost,
                              uint8_t* switch_signal,
-                             uint8_t *block_id) {
+                             uint8_t* block_id) {
   const size_t data_size = FN(HistogramDataSize)();
   const size_t bitmaplen = (num_histograms + 7) >> 3;
   size_t num_blocks = 1;
   size_t i;
   size_t j;
-  assert(num_histograms <= 256);
+  BROTLI_DCHECK(num_histograms <= 256);
   if (num_histograms <= 1) {
     for (i = 0; i < length; ++i) {
       block_id[i] = 0;
@@ -126,7 +126,7 @@
       if (cost[k] >= block_switch_cost) {
         const uint8_t mask = (uint8_t)(1u << (k & 7));
         cost[k] = block_switch_cost;
-        assert((k >> 3) < bitmaplen);
+        BROTLI_DCHECK((k >> 3) < bitmaplen);
         switch_signal[ix + (k >> 3)] |= mask;
       }
     }
@@ -137,7 +137,7 @@
     uint8_t cur_id = block_id[byte_ix];
     while (byte_ix > 0) {
       const uint8_t mask = (uint8_t)(1u << (cur_id & 7));
-      assert(((size_t)cur_id >> 3) < bitmaplen);
+      BROTLI_DCHECK(((size_t)cur_id >> 3) < bitmaplen);
       --byte_ix;
       ix -= bitmaplen;
       if (switch_signal[ix + (cur_id >> 3)] & mask) {
@@ -161,7 +161,7 @@
     new_id[i] = kInvalidId;
   }
   for (i = 0; i < length; ++i) {
-    assert(block_ids[i] < num_histograms);
+    BROTLI_DCHECK(block_ids[i] < num_histograms);
     if (new_id[block_ids[i]] == kInvalidId) {
       new_id[block_ids[i]] = next_id++;
     }
@@ -168,9 +168,9 @@
   }
   for (i = 0; i < length; ++i) {
     block_ids[i] = (uint8_t)new_id[block_ids[i]];
-    assert(block_ids[i] < num_histograms);
+    BROTLI_DCHECK(block_ids[i] < num_histograms);
   }
-  assert(next_id <= num_histograms);
+  BROTLI_DCHECK(next_id <= num_histograms);
   return next_id;
 }
 
@@ -226,13 +226,13 @@
   {
     size_t block_idx = 0;
     for (i = 0; i < length; ++i) {
-      assert(block_idx < num_blocks);
+      BROTLI_DCHECK(block_idx < num_blocks);
       ++block_lengths[block_idx];
       if (i + 1 == length || block_ids[i] != block_ids[i + 1]) {
         ++block_idx;
       }
     }
-    assert(block_idx == num_blocks);
+    BROTLI_DCHECK(block_idx == num_blocks);
   }
 
   for (i = 0; i < num_blocks; i += HISTOGRAMS_PER_BATCH) {
@@ -268,8 +268,8 @@
       histogram_symbols[i + j] = (uint32_t)num_clusters + remap[symbols[j]];
     }
     num_clusters += num_new_clusters;
-    assert(num_clusters == cluster_size_size);
-    assert(num_clusters == all_histograms_size);
+    BROTLI_DCHECK(num_clusters == cluster_size_size);
+    BROTLI_DCHECK(num_clusters == all_histograms_size);
   }
   BROTLI_FREE(m, histograms);
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/brotli_bit_stream.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/brotli_bit_stream.c	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/brotli_bit_stream.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -13,13 +13,14 @@
 #include <string.h>  /* memcpy, memset */
 
 #include "../common/constants.h"
+#include "../common/context.h"
+#include "../common/platform.h"
 #include <brotli/types.h>
-#include "./context.h"
 #include "./entropy_encode.h"
 #include "./entropy_encode_static.h"
 #include "./fast_log.h"
+#include "./histogram.h"
 #include "./memory.h"
-#include "./port.h"
 #include "./write_bits.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
@@ -27,12 +28,11 @@
 #endif
 
 #define MAX_HUFFMAN_TREE_SIZE (2 * BROTLI_NUM_COMMAND_SYMBOLS + 1)
-/* The size of Huffman dictionary for distances assuming that NPOSTFIX = 0 and
- NDIRECT = 0. */
-#define SIMPLE_DISTANCE_ALPHABET_SIZE (BROTLI_NUM_DISTANCE_SHORT_CODES + \
-                                       (2 * BROTLI_MAX_DISTANCE_BITS))
-/* SIMPLE_DISTANCE_ALPHABET_SIZE == 64 */
-#define SIMPLE_DISTANCE_ALPHABET_BITS 6
+/* The maximum size of Huffman dictionary for distances assuming that
+   NPOSTFIX = 0 and NDIRECT = 0. */
+#define MAX_SIMPLE_DISTANCE_ALPHABET_SIZE \
+  BROTLI_DISTANCE_ALPHABET_SIZE(0, 0, BROTLI_LARGE_MAX_DISTANCE_BITS)
+/* MAX_SIMPLE_DISTANCE_ALPHABET_SIZE == 140 */
 
 /* Represents the range of values belonging to a prefix code:
    [offset, offset + 2^nbits) */
@@ -89,9 +89,9 @@
                              size_t* numbits, uint64_t* nibblesbits) {
   size_t lg = (length == 1) ? 1 : Log2FloorNonZero((uint32_t)(length - 1)) + 1;
   size_t mnibbles = (lg < 16 ? 16 : (lg + 3)) / 4;
-  assert(length > 0);
-  assert(length <= (1 << 24));
-  assert(lg <= 24);
+  BROTLI_DCHECK(length > 0);
+  BROTLI_DCHECK(length <= (1 << 24));
+  BROTLI_DCHECK(lg <= 24);
   *nibblesbits = mnibbles - 4;
   *numbits = mnibbles * 4;
   *bits = length - 1;
@@ -258,7 +258,7 @@
                                    size_t symbols[4],
                                    size_t num_symbols,
                                    size_t max_bits,
-                                   size_t *storage_ix, uint8_t *storage) {
+                                   size_t* storage_ix, uint8_t* storage) {
   /* value of 1 indicates a simple Huffman code */
   BrotliWriteBits(2, 1, storage_ix, storage);
   BrotliWriteBits(2, num_symbols - 1, storage_ix, storage);  /* NSYM - 1 */
@@ -297,7 +297,7 @@
    depths = symbol depths */
 void BrotliStoreHuffmanTree(const uint8_t* depths, size_t num,
                             HuffmanTree* tree,
-                            size_t *storage_ix, uint8_t *storage) {
+                            size_t* storage_ix, uint8_t* storage) {
   /* Write the Huffman tree into the brotli-representation.
      The command alphabet is the largest, so this allocation will fit all
      alphabets. */
@@ -311,7 +311,7 @@
   int num_codes = 0;
   size_t code = 0;
 
-  assert(num <= BROTLI_NUM_COMMAND_SYMBOLS);
+  BROTLI_DCHECK(num <= BROTLI_NUM_COMMAND_SYMBOLS);
 
   BrotliWriteHuffmanTree(depths, num, &huffman_tree_size, huffman_tree,
                          huffman_tree_extra_bits);
@@ -360,8 +360,9 @@
 
 /* Builds a Huffman tree from histogram[0:length] into depth[0:length] and
    bits[0:length] and stores the encoded tree to the bit stream. */
-static void BuildAndStoreHuffmanTree(const uint32_t *histogram,
-                                     const size_t length,
+static void BuildAndStoreHuffmanTree(const uint32_t* histogram,
+                                     const size_t histogram_length,
+                                     const size_t alphabet_size,
                                      HuffmanTree* tree,
                                      uint8_t* depth,
                                      uint16_t* bits,
@@ -371,7 +372,7 @@
   size_t s4[4] = { 0 };
   size_t i;
   size_t max_bits = 0;
-  for (i = 0; i < length; i++) {
+  for (i = 0; i < histogram_length; i++) {
     if (histogram[i]) {
       if (count < 4) {
         s4[count] = i;
@@ -383,7 +384,7 @@
   }
 
   {
-    size_t max_bits_counter = length - 1;
+    size_t max_bits_counter = alphabet_size - 1;
     while (max_bits_counter) {
       max_bits_counter >>= 1;
       ++max_bits;
@@ -398,14 +399,14 @@
     return;
   }
 
-  memset(depth, 0, length * sizeof(depth[0]));
-  BrotliCreateHuffmanTree(histogram, length, 15, tree, depth);
-  BrotliConvertBitDepthsToSymbols(depth, length, bits);
+  memset(depth, 0, histogram_length * sizeof(depth[0]));
+  BrotliCreateHuffmanTree(histogram, histogram_length, 15, tree, depth);
+  BrotliConvertBitDepthsToSymbols(depth, histogram_length, bits);
 
   if (count <= 4) {
     StoreSimpleHuffmanTree(depth, s4, count, max_bits, storage_ix, storage);
   } else {
-    BrotliStoreHuffmanTree(depth, length, tree, storage_ix, storage);
+    BrotliStoreHuffmanTree(depth, histogram_length, tree, storage_ix, storage);
   }
 }
 
@@ -619,7 +620,7 @@
   for (i = 1; i < v_size; ++i) {
     if (v_in[i] > max_value) max_value = v_in[i];
   }
-  assert(max_value < 256u);
+  BROTLI_DCHECK(max_value < 256u);
   for (i = 0; i <= max_value; ++i) {
     mtf[i] = (uint8_t)i;
   }
@@ -627,7 +628,7 @@
     size_t mtf_size = max_value + 1;
     for (i = 0; i < v_size; ++i) {
       size_t index = IndexOf(mtf, mtf_size, (uint8_t)v_in[i]);
-      assert(index < mtf_size);
+      BROTLI_DCHECK(index < mtf_size);
       v_out[i] = (uint32_t)index;
       MoveToFront(mtf, index);
     }
@@ -659,7 +660,7 @@
   *max_run_length_prefix = max_prefix;
   *out_size = 0;
   for (i = 0; i < in_size;) {
-    assert(*out_size <= i);
+    BROTLI_DCHECK(*out_size <= i);
     if (v[i] != 0) {
       v[*out_size] = v[i] + *max_run_length_prefix;
       ++i;
@@ -729,6 +730,7 @@
     }
   }
   BuildAndStoreHuffmanTree(histogram, num_clusters + max_run_length_prefix,
+                           num_clusters + max_run_length_prefix,
                            tree, depths, bits, storage_ix, storage);
   for (i = 0; i < num_rle_symbols; ++i) {
     const uint32_t rle_symbol = rle_symbols[i] & kSymbolMask;
@@ -788,10 +790,11 @@
   }
   StoreVarLenUint8(num_types - 1, storage_ix, storage);
   if (num_types > 1) {  /* TODO: else? could StoreBlockSwitch occur? */
-    BuildAndStoreHuffmanTree(&type_histo[0], num_types + 2, tree,
+    BuildAndStoreHuffmanTree(&type_histo[0], num_types + 2, num_types + 2, tree,
                              &code->type_depths[0], &code->type_bits[0],
                              storage_ix, storage);
     BuildAndStoreHuffmanTree(&length_histo[0], BROTLI_NUM_BLOCK_LEN_SYMBOLS,
+                             BROTLI_NUM_BLOCK_LEN_SYMBOLS,
                              tree, &code->length_depths[0],
                              &code->length_bits[0], storage_ix, storage);
     StoreBlockSwitch(code, lengths[0], types[0], 1, storage_ix, storage);
@@ -822,8 +825,8 @@
     for (i = context_bits; i < alphabet_size; ++i) {
       histogram[i] = 1;
     }
-    BuildAndStoreHuffmanTree(histogram, alphabet_size, tree,
-                             depths, bits, storage_ix, storage);
+    BuildAndStoreHuffmanTree(histogram, alphabet_size, alphabet_size,
+                             tree, depths, bits, storage_ix, storage);
     for (i = 0; i < num_types; ++i) {
       size_t code = (i == 0 ? 0 : i + context_bits - 1);
       BrotliWriteBits(depths[code], bits[code], storage_ix, storage);
@@ -838,7 +841,7 @@
 
 /* Manages the encoding of one block category (literal, command or distance). */
 typedef struct BlockEncoder {
-  size_t alphabet_size_;
+  size_t histogram_length_;
   size_t num_block_types_;
   const uint8_t* block_types_;  /* Not owned. */
   const uint32_t* block_lengths_;  /* Not owned. */
@@ -851,10 +854,10 @@
   uint16_t* bits_;
 } BlockEncoder;
 
-static void InitBlockEncoder(BlockEncoder* self, size_t alphabet_size,
+static void InitBlockEncoder(BlockEncoder* self, size_t histogram_length,
     size_t num_block_types, const uint8_t* block_types,
     const uint32_t* block_lengths, const size_t num_blocks) {
-  self->alphabet_size_ = alphabet_size;
+  self->histogram_length_ = histogram_length;
   self->num_block_types_ = num_block_types;
   self->block_types_ = block_types;
   self->block_lengths_ = block_lengths;
@@ -890,7 +893,7 @@
     uint32_t block_len = self->block_lengths_[block_ix];
     uint8_t block_type = self->block_types_[block_ix];
     self->block_len_ = block_len;
-    self->entropy_ix_ = block_type * self->alphabet_size_;
+    self->entropy_ix_ = block_type * self->histogram_length_;
     StoreBlockSwitch(&self->block_split_code_, block_len, block_type, 0,
         storage_ix, storage);
   }
@@ -919,7 +922,7 @@
   --self->block_len_;
   {
     size_t histo_ix = context_map[self->entropy_ix_ + context];
-    size_t ix = histo_ix * self->alphabet_size_ + symbol;
+    size_t ix = histo_ix * self->histogram_length_ + symbol;
     BrotliWriteBits(self->depths_[ix], self->bits_[ix], storage_ix, storage);
   }
 }
@@ -945,42 +948,38 @@
 }
 
 void BrotliStoreMetaBlock(MemoryManager* m,
-                          const uint8_t* input,
-                          size_t start_pos,
-                          size_t length,
-                          size_t mask,
-                          uint8_t prev_byte,
-                          uint8_t prev_byte2,
-                          BROTLI_BOOL is_last,
-                          uint32_t num_direct_distance_codes,
-                          uint32_t distance_postfix_bits,
-                          ContextType literal_context_mode,
-                          const Command *commands,
-                          size_t n_commands,
-                          const MetaBlockSplit* mb,
-                          size_t *storage_ix,
-                          uint8_t *storage) {
+    const uint8_t* input, size_t start_pos, size_t length, size_t mask,
+    uint8_t prev_byte, uint8_t prev_byte2, BROTLI_BOOL is_last,
+    const BrotliEncoderParams* params, ContextType literal_context_mode,
+    const Command* commands, size_t n_commands, const MetaBlockSplit* mb,
+    size_t* storage_ix, uint8_t* storage) {
+
   size_t pos = start_pos;
   size_t i;
-  size_t num_distance_codes =
-      BROTLI_NUM_DISTANCE_SHORT_CODES + num_direct_distance_codes +
-      (48u << distance_postfix_bits);
+  uint32_t num_distance_symbols = params->dist.alphabet_size;
+  uint32_t num_effective_distance_symbols = num_distance_symbols;
   HuffmanTree* tree;
+  ContextLut literal_context_lut = BROTLI_CONTEXT_LUT(literal_context_mode);
   BlockEncoder literal_enc;
   BlockEncoder command_enc;
   BlockEncoder distance_enc;
+  const BrotliDistanceParams* dist = &params->dist;
+  if (params->large_window &&
+      num_effective_distance_symbols > BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS) {
+    num_effective_distance_symbols = BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS;
+  }
 
   StoreCompressedMetaBlockHeader(is_last, length, storage_ix, storage);
 
   tree = BROTLI_ALLOC(m, HuffmanTree, MAX_HUFFMAN_TREE_SIZE);
   if (BROTLI_IS_OOM(m)) return;
-  InitBlockEncoder(&literal_enc, 256, mb->literal_split.num_types,
-      mb->literal_split.types, mb->literal_split.lengths,
-      mb->literal_split.num_blocks);
+  InitBlockEncoder(&literal_enc, BROTLI_NUM_LITERAL_SYMBOLS,
+      mb->literal_split.num_types, mb->literal_split.types,
+      mb->literal_split.lengths, mb->literal_split.num_blocks);
   InitBlockEncoder(&command_enc, BROTLI_NUM_COMMAND_SYMBOLS,
       mb->command_split.num_types, mb->command_split.types,
       mb->command_split.lengths, mb->command_split.num_blocks);
-  InitBlockEncoder(&distance_enc, num_distance_codes,
+  InitBlockEncoder(&distance_enc, num_effective_distance_symbols,
       mb->distance_split.num_types, mb->distance_split.types,
       mb->distance_split.lengths, mb->distance_split.num_blocks);
 
@@ -989,9 +988,10 @@
   BuildAndStoreBlockSwitchEntropyCodes(
       &distance_enc, tree, storage_ix, storage);
 
-  BrotliWriteBits(2, distance_postfix_bits, storage_ix, storage);
-  BrotliWriteBits(4, num_direct_distance_codes >> distance_postfix_bits,
-                  storage_ix, storage);
+  BrotliWriteBits(2, dist->distance_postfix_bits, storage_ix, storage);
+  BrotliWriteBits(
+      4, dist->num_direct_distance_codes >> dist->distance_postfix_bits,
+      storage_ix, storage);
   for (i = 0; i < mb->literal_split.num_types; ++i) {
     BrotliWriteBits(2, literal_context_mode, storage_ix, storage);
   }
@@ -1017,13 +1017,16 @@
   }
 
   BuildAndStoreEntropyCodesLiteral(m, &literal_enc, mb->literal_histograms,
-      mb->literal_histograms_size, tree, storage_ix, storage);
+      mb->literal_histograms_size, BROTLI_NUM_LITERAL_SYMBOLS, tree,
+      storage_ix, storage);
   if (BROTLI_IS_OOM(m)) return;
   BuildAndStoreEntropyCodesCommand(m, &command_enc, mb->command_histograms,
-      mb->command_histograms_size, tree, storage_ix, storage);
+      mb->command_histograms_size, BROTLI_NUM_COMMAND_SYMBOLS, tree,
+      storage_ix, storage);
   if (BROTLI_IS_OOM(m)) return;
   BuildAndStoreEntropyCodesDistance(m, &distance_enc, mb->distance_histograms,
-      mb->distance_histograms_size, tree, storage_ix, storage);
+      mb->distance_histograms_size, num_distance_symbols, tree,
+      storage_ix, storage);
   if (BROTLI_IS_OOM(m)) return;
   BROTLI_FREE(m, tree);
 
@@ -1041,7 +1044,8 @@
     } else {
       size_t j;
       for (j = cmd.insert_len_; j != 0; --j) {
-        size_t context = Context(prev_byte, prev_byte2, literal_context_mode);
+        size_t context =
+            BROTLI_CONTEXT(prev_byte, prev_byte2, literal_context_lut);
         uint8_t literal = input[pos & mask];
         StoreSymbolWithContext(&literal_enc, literal, context,
             mb->literal_context_map, storage_ix, storage,
@@ -1056,9 +1060,9 @@
       prev_byte2 = input[(pos - 2) & mask];
       prev_byte = input[(pos - 1) & mask];
       if (cmd.cmd_prefix_ >= 128) {
-        size_t dist_code = cmd.dist_prefix_;
-        uint32_t distnumextra = cmd.dist_extra_ >> 24;
-        uint64_t distextra = cmd.dist_extra_ & 0xffffff;
+        size_t dist_code = cmd.dist_prefix_ & 0x3FF;
+        uint32_t distnumextra = cmd.dist_prefix_ >> 10;
+        uint64_t distextra = cmd.dist_extra_;
         if (mb->distance_context_map_size == 0) {
           StoreSymbol(&distance_enc, dist_code, storage_ix, storage);
         } else {
@@ -1082,7 +1086,7 @@
 static void BuildHistograms(const uint8_t* input,
                             size_t start_pos,
                             size_t mask,
-                            const Command *commands,
+                            const Command* commands,
                             size_t n_commands,
                             HistogramLiteral* lit_histo,
                             HistogramCommand* cmd_histo,
@@ -1099,7 +1103,7 @@
     }
     pos += CommandCopyLen(&cmd);
     if (CommandCopyLen(&cmd) && cmd.cmd_prefix_ >= 128) {
-      HistogramAddDistance(dist_histo, cmd.dist_prefix_);
+      HistogramAddDistance(dist_histo, cmd.dist_prefix_ & 0x3FF);
     }
   }
 }
@@ -1107,7 +1111,7 @@
 static void StoreDataWithHuffmanCodes(const uint8_t* input,
                                       size_t start_pos,
                                       size_t mask,
-                                      const Command *commands,
+                                      const Command* commands,
                                       size_t n_commands,
                                       const uint8_t* lit_depth,
                                       const uint16_t* lit_bits,
@@ -1134,9 +1138,9 @@
     }
     pos += CommandCopyLen(&cmd);
     if (CommandCopyLen(&cmd) && cmd.cmd_prefix_ >= 128) {
-      const size_t dist_code = cmd.dist_prefix_;
-      const uint32_t distnumextra = cmd.dist_extra_ >> 24;
-      const uint32_t distextra = cmd.dist_extra_ & 0xffffff;
+      const size_t dist_code = cmd.dist_prefix_ & 0x3FF;
+      const uint32_t distnumextra = cmd.dist_prefix_ >> 10;
+      const uint32_t distextra = cmd.dist_extra_;
       BrotliWriteBits(dist_depth[dist_code], dist_bits[dist_code],
                       storage_ix, storage);
       BrotliWriteBits(distnumextra, distextra, storage_ix, storage);
@@ -1145,15 +1149,10 @@
 }
 
 void BrotliStoreMetaBlockTrivial(MemoryManager* m,
-                                 const uint8_t* input,
-                                 size_t start_pos,
-                                 size_t length,
-                                 size_t mask,
-                                 BROTLI_BOOL is_last,
-                                 const Command *commands,
-                                 size_t n_commands,
-                                 size_t *storage_ix,
-                                 uint8_t *storage) {
+    const uint8_t* input, size_t start_pos, size_t length, size_t mask,
+    BROTLI_BOOL is_last, const BrotliEncoderParams* params,
+    const Command* commands, size_t n_commands,
+    size_t* storage_ix, uint8_t* storage) {
   HistogramLiteral lit_histo;
   HistogramCommand cmd_histo;
   HistogramDistance dist_histo;
@@ -1161,9 +1160,10 @@
   uint16_t lit_bits[BROTLI_NUM_LITERAL_SYMBOLS];
   uint8_t cmd_depth[BROTLI_NUM_COMMAND_SYMBOLS];
   uint16_t cmd_bits[BROTLI_NUM_COMMAND_SYMBOLS];
-  uint8_t dist_depth[SIMPLE_DISTANCE_ALPHABET_SIZE];
-  uint16_t dist_bits[SIMPLE_DISTANCE_ALPHABET_SIZE];
+  uint8_t dist_depth[MAX_SIMPLE_DISTANCE_ALPHABET_SIZE];
+  uint16_t dist_bits[MAX_SIMPLE_DISTANCE_ALPHABET_SIZE];
   HuffmanTree* tree;
+  uint32_t num_distance_symbols = params->dist.alphabet_size;
 
   StoreCompressedMetaBlockHeader(is_last, length, storage_ix, storage);
 
@@ -1178,14 +1178,16 @@
 
   tree = BROTLI_ALLOC(m, HuffmanTree, MAX_HUFFMAN_TREE_SIZE);
   if (BROTLI_IS_OOM(m)) return;
-  BuildAndStoreHuffmanTree(lit_histo.data_, BROTLI_NUM_LITERAL_SYMBOLS, tree,
+  BuildAndStoreHuffmanTree(lit_histo.data_, BROTLI_NUM_LITERAL_SYMBOLS,
+                           BROTLI_NUM_LITERAL_SYMBOLS, tree,
                            lit_depth, lit_bits,
                            storage_ix, storage);
-  BuildAndStoreHuffmanTree(cmd_histo.data_, BROTLI_NUM_COMMAND_SYMBOLS, tree,
+  BuildAndStoreHuffmanTree(cmd_histo.data_, BROTLI_NUM_COMMAND_SYMBOLS,
+                           BROTLI_NUM_COMMAND_SYMBOLS, tree,
                            cmd_depth, cmd_bits,
                            storage_ix, storage);
-  BuildAndStoreHuffmanTree(dist_histo.data_, SIMPLE_DISTANCE_ALPHABET_SIZE,
-                           tree,
+  BuildAndStoreHuffmanTree(dist_histo.data_, MAX_SIMPLE_DISTANCE_ALPHABET_SIZE,
+                           num_distance_symbols, tree,
                            dist_depth, dist_bits,
                            storage_ix, storage);
   BROTLI_FREE(m, tree);
@@ -1200,15 +1202,14 @@
 }
 
 void BrotliStoreMetaBlockFast(MemoryManager* m,
-                              const uint8_t* input,
-                              size_t start_pos,
-                              size_t length,
-                              size_t mask,
-                              BROTLI_BOOL is_last,
-                              const Command *commands,
-                              size_t n_commands,
-                              size_t *storage_ix,
-                              uint8_t *storage) {
+    const uint8_t* input, size_t start_pos, size_t length, size_t mask,
+    BROTLI_BOOL is_last, const BrotliEncoderParams* params,
+    const Command* commands, size_t n_commands,
+    size_t* storage_ix, uint8_t* storage) {
+  uint32_t num_distance_symbols = params->dist.alphabet_size;
+  uint32_t distance_alphabet_bits =
+      Log2FloorNonZero(num_distance_symbols - 1) + 1;
+
   StoreCompressedMetaBlockHeader(is_last, length, storage_ix, storage);
 
   BrotliWriteBits(13, 0, storage_ix, storage);
@@ -1252,8 +1253,8 @@
     uint16_t lit_bits[BROTLI_NUM_LITERAL_SYMBOLS];
     uint8_t cmd_depth[BROTLI_NUM_COMMAND_SYMBOLS];
     uint16_t cmd_bits[BROTLI_NUM_COMMAND_SYMBOLS];
-    uint8_t dist_depth[SIMPLE_DISTANCE_ALPHABET_SIZE];
-    uint16_t dist_bits[SIMPLE_DISTANCE_ALPHABET_SIZE];
+    uint8_t dist_depth[MAX_SIMPLE_DISTANCE_ALPHABET_SIZE];
+    uint16_t dist_bits[MAX_SIMPLE_DISTANCE_ALPHABET_SIZE];
     HistogramClearLiteral(&lit_histo);
     HistogramClearCommand(&cmd_histo);
     HistogramClearDistance(&dist_histo);
@@ -1274,7 +1275,7 @@
     BrotliBuildAndStoreHuffmanTreeFast(m, dist_histo.data_,
                                        dist_histo.total_count_,
                                        /* max_bits = */
-                                       SIMPLE_DISTANCE_ALPHABET_BITS,
+                                       distance_alphabet_bits,
                                        dist_depth, dist_bits,
                                        storage_ix, storage);
     if (BROTLI_IS_OOM(m)) return;
@@ -1293,11 +1294,11 @@
 /* This is for storing uncompressed blocks (simple raw storage of
    bytes-as-bytes). */
 void BrotliStoreUncompressedMetaBlock(BROTLI_BOOL is_final_block,
-                                      const uint8_t * BROTLI_RESTRICT input,
+                                      const uint8_t* BROTLI_RESTRICT input,
                                       size_t position, size_t mask,
                                       size_t len,
-                                      size_t * BROTLI_RESTRICT storage_ix,
-                                      uint8_t * BROTLI_RESTRICT storage) {
+                                      size_t* BROTLI_RESTRICT storage_ix,
+                                      uint8_t* BROTLI_RESTRICT storage) {
   size_t masked_pos = position & mask;
   BrotliStoreUncompressedMetaBlockHeader(len, storage_ix, storage);
   JumpToByteBoundary(storage_ix, storage);

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/brotli_bit_stream.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/brotli_bit_stream.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/brotli_bit_stream.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -16,13 +16,13 @@
 #ifndef BROTLI_ENC_BROTLI_BIT_STREAM_H_
 #define BROTLI_ENC_BROTLI_BIT_STREAM_H_
 
+#include "../common/context.h"
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./command.h"
-#include "./context.h"
 #include "./entropy_encode.h"
 #include "./memory.h"
 #include "./metablock.h"
-#include "./port.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
@@ -32,7 +32,7 @@
    position for the current storage. */
 
 BROTLI_INTERNAL void BrotliStoreHuffmanTree(const uint8_t* depths, size_t num,
-    HuffmanTree* tree, size_t *storage_ix, uint8_t *storage);
+    HuffmanTree* tree, size_t* storage_ix, uint8_t* storage);
 
 BROTLI_INTERNAL void BrotliBuildAndStoreHuffmanTreeFast(
     MemoryManager* m, const uint32_t* histogram, const size_t histogram_total,
@@ -42,21 +42,11 @@
 /* REQUIRES: length > 0 */
 /* REQUIRES: length <= (1 << 24) */
 BROTLI_INTERNAL void BrotliStoreMetaBlock(MemoryManager* m,
-                                          const uint8_t* input,
-                                          size_t start_pos,
-                                          size_t length,
-                                          size_t mask,
-                                          uint8_t prev_byte,
-                                          uint8_t prev_byte2,
-                                          BROTLI_BOOL is_final_block,
-                                          uint32_t num_direct_distance_codes,
-                                          uint32_t distance_postfix_bits,
-                                          ContextType literal_context_mode,
-                                          const Command* commands,
-                                          size_t n_commands,
-                                          const MetaBlockSplit* mb,
-                                          size_t* storage_ix,
-                                          uint8_t* storage);
+    const uint8_t* input, size_t start_pos, size_t length, size_t mask,
+    uint8_t prev_byte, uint8_t prev_byte2, BROTLI_BOOL is_last,
+    const BrotliEncoderParams* params, ContextType literal_context_mode,
+    const Command* commands, size_t n_commands, const MetaBlockSplit* mb,
+    size_t* storage_ix, uint8_t* storage);
 
 /* Stores the meta-block without doing any block splitting, just collects
    one histogram per block category and uses that for entropy coding.
@@ -63,15 +53,10 @@
    REQUIRES: length > 0
    REQUIRES: length <= (1 << 24) */
 BROTLI_INTERNAL void BrotliStoreMetaBlockTrivial(MemoryManager* m,
-                                                 const uint8_t* input,
-                                                 size_t start_pos,
-                                                 size_t length,
-                                                 size_t mask,
-                                                 BROTLI_BOOL is_last,
-                                                 const Command *commands,
-                                                 size_t n_commands,
-                                                 size_t* storage_ix,
-                                                 uint8_t* storage);
+    const uint8_t* input, size_t start_pos, size_t length, size_t mask,
+    BROTLI_BOOL is_last, const BrotliEncoderParams* params,
+    const Command* commands, size_t n_commands,
+    size_t* storage_ix, uint8_t* storage);
 
 /* Same as above, but uses static prefix codes for histograms with a only a few
    symbols, and uses static code length prefix codes for all other histograms.
@@ -78,15 +63,10 @@
    REQUIRES: length > 0
    REQUIRES: length <= (1 << 24) */
 BROTLI_INTERNAL void BrotliStoreMetaBlockFast(MemoryManager* m,
-                                              const uint8_t* input,
-                                              size_t start_pos,
-                                              size_t length,
-                                              size_t mask,
-                                              BROTLI_BOOL is_last,
-                                              const Command *commands,
-                                              size_t n_commands,
-                                              size_t* storage_ix,
-                                              uint8_t* storage);
+    const uint8_t* input, size_t start_pos, size_t length, size_t mask,
+    BROTLI_BOOL is_last, const BrotliEncoderParams* params,
+    const Command* commands, size_t n_commands,
+    size_t* storage_ix, uint8_t* storage);
 
 /* This is for storing uncompressed blocks (simple raw storage of
    bytes-as-bytes).

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/cluster.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/cluster.c	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/cluster.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -8,12 +8,12 @@
 
 #include "./cluster.h"
 
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./bit_cost.h"  /* BrotliPopulationCost */
 #include "./fast_log.h"
 #include "./histogram.h"
 #include "./memory.h"
-#include "./port.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/cluster.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/cluster.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/cluster.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -9,10 +9,10 @@
 #ifndef BROTLI_ENC_CLUSTER_H_
 #define BROTLI_ENC_CLUSTER_H_
 
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./histogram.h"
 #include "./memory.h"
-#include "./port.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {

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-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/command.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -10,9 +10,10 @@
 #define BROTLI_ENC_COMMAND_H_
 
 #include "../common/constants.h"
-#include <brotli/port.h>
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./fast_log.h"
+#include "./params.h"
 #include "./prefix.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
@@ -105,53 +106,61 @@
 
 typedef struct Command {
   uint32_t insert_len_;
-  /* Stores copy_len in low 24 bits and copy_len XOR copy_code in high 8 bit. */
+  /* Stores copy_len in low 25 bits and copy_code - copy_len in high 7 bit. */
   uint32_t copy_len_;
+  /* Stores distance extra bits. */
   uint32_t dist_extra_;
   uint16_t cmd_prefix_;
+  /* Stores distance code in low 10 bits
+     and number of extra bits in high 6 bits. */
   uint16_t dist_prefix_;
 } Command;
 
 /* distance_code is e.g. 0 for same-as-last short code, or 16 for offset 1. */
-static BROTLI_INLINE void InitCommand(Command* self, size_t insertlen,
+static BROTLI_INLINE void InitCommand(Command* self,
+    const BrotliDistanceParams* dist, size_t insertlen,
     size_t copylen, int copylen_code_delta, size_t distance_code) {
   /* Don't rely on signed int representation, use honest casts. */
   uint32_t delta = (uint8_t)((int8_t)copylen_code_delta);
   self->insert_len_ = (uint32_t)insertlen;
-  self->copy_len_ = (uint32_t)(copylen | (delta << 24));
+  self->copy_len_ = (uint32_t)(copylen | (delta << 25));
   /* The distance prefix and extra bits are stored in this Command as if
      npostfix and ndirect were 0, they are only recomputed later after the
      clustering if needed. */
   PrefixEncodeCopyDistance(
-      distance_code, 0, 0, &self->dist_prefix_, &self->dist_extra_);
+      distance_code, dist->num_direct_distance_codes,
+      dist->distance_postfix_bits, &self->dist_prefix_, &self->dist_extra_);
   GetLengthCode(
       insertlen, (size_t)((int)copylen + copylen_code_delta),
-      TO_BROTLI_BOOL(self->dist_prefix_ == 0), &self->cmd_prefix_);
+      TO_BROTLI_BOOL((self->dist_prefix_ & 0x3FF) == 0), &self->cmd_prefix_);
 }
 
 static BROTLI_INLINE void InitInsertCommand(Command* self, size_t insertlen) {
   self->insert_len_ = (uint32_t)insertlen;
-  self->copy_len_ = 4 << 24;
+  self->copy_len_ = 4 << 25;
   self->dist_extra_ = 0;
   self->dist_prefix_ = BROTLI_NUM_DISTANCE_SHORT_CODES;
   GetLengthCode(insertlen, 4, BROTLI_FALSE, &self->cmd_prefix_);
 }
 
-static BROTLI_INLINE uint32_t CommandRestoreDistanceCode(const Command* self) {
-  if (self->dist_prefix_ < BROTLI_NUM_DISTANCE_SHORT_CODES) {
-    return self->dist_prefix_;
+static BROTLI_INLINE uint32_t CommandRestoreDistanceCode(
+    const Command* self, const BrotliDistanceParams* dist) {
+  if ((self->dist_prefix_ & 0x3FF) <
+      BROTLI_NUM_DISTANCE_SHORT_CODES + dist->num_direct_distance_codes) {
+    return self->dist_prefix_ & 0x3FF;
   } else {
-    uint32_t nbits = self->dist_extra_ >> 24;
-    uint32_t extra = self->dist_extra_ & 0xffffff;
-    /* It is assumed that the distance was first encoded with NPOSTFIX = 0 and
-       NDIRECT = 0, so the code itself is of this form:
-         BROTLI_NUM_DISTANCE_SHORT_CODES + 2 * (nbits - 1) + prefix_bit
-       Therefore, the following expression results in (2 + prefix_bit). */
-    uint32_t prefix =
-        self->dist_prefix_ + 4u - BROTLI_NUM_DISTANCE_SHORT_CODES - 2u * nbits;
-    /* Subtract 4 for offset (Chapter 4.) and
-       increase by BROTLI_NUM_DISTANCE_SHORT_CODES - 1  */
-    return (prefix << nbits) + extra + BROTLI_NUM_DISTANCE_SHORT_CODES - 4u;
+    uint32_t dcode = self->dist_prefix_ & 0x3FF;
+    uint32_t nbits = self->dist_prefix_ >> 10;
+    uint32_t extra = self->dist_extra_;
+    uint32_t postfix_mask = (1U << dist->distance_postfix_bits) - 1U;
+    uint32_t hcode = (dcode - dist->num_direct_distance_codes -
+        BROTLI_NUM_DISTANCE_SHORT_CODES) >>
+        dist->distance_postfix_bits;
+    uint32_t lcode = (dcode - dist->num_direct_distance_codes -
+        BROTLI_NUM_DISTANCE_SHORT_CODES) & postfix_mask;
+    uint32_t offset = ((2U + (hcode & 1U)) << nbits) - 4U;
+    return ((offset + extra) << dist->distance_postfix_bits) + lcode +
+        dist->num_direct_distance_codes + BROTLI_NUM_DISTANCE_SHORT_CODES;
   }
 }
 
@@ -165,12 +174,13 @@
 }
 
 static BROTLI_INLINE uint32_t CommandCopyLen(const Command* self) {
-  return self->copy_len_ & 0xFFFFFF;
+  return self->copy_len_ & 0x1FFFFFF;
 }
 
 static BROTLI_INLINE uint32_t CommandCopyLenCode(const Command* self) {
-  int32_t delta = (int8_t)((uint8_t)(self->copy_len_ >> 24));
-  return (uint32_t)((int32_t)(self->copy_len_ & 0xFFFFFF) + delta);
+  uint32_t modifier = self->copy_len_ >> 25;
+  int32_t delta = (int8_t)((uint8_t)(modifier | ((modifier & 0x40) << 1)));
+  return (uint32_t)((int32_t)(self->copy_len_ & 0x1FFFFFF) + delta);
 }
 
 #if defined(__cplusplus) || defined(c_plusplus)

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment.c	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -17,6 +17,7 @@
 #include <string.h>  /* memcmp, memcpy, memset */
 
 #include "../common/constants.h"
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./brotli_bit_stream.h"
 #include "./entropy_encode.h"
@@ -23,10 +24,8 @@
 #include "./fast_log.h"
 #include "./find_match_length.h"
 #include "./memory.h"
-#include "./port.h"
 #include "./write_bits.h"
 
-
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
 #endif
@@ -39,7 +38,7 @@
    * There is no effort to ensure that it is a prime, the oddity is enough
      for this use.
    * The number has been tuned heuristically against compression benchmarks. */
-static const uint32_t kHashMul32 = 0x1e35a7bd;
+static const uint32_t kHashMul32 = 0x1E35A7BD;
 
 static BROTLI_INLINE uint32_t Hash(const uint8_t* p, size_t shift) {
   const uint64_t h = (BROTLI_UNALIGNED_LOAD64LE(p) << 24) * kHashMul32;
@@ -48,8 +47,8 @@
 
 static BROTLI_INLINE uint32_t HashBytesAtOffset(
     uint64_t v, int offset, size_t shift) {
-  assert(offset >= 0);
-  assert(offset <= 3);
+  BROTLI_DCHECK(offset >= 0);
+  BROTLI_DCHECK(offset <= 3);
   {
     const uint64_t h = ((v >> (8 * offset)) << 24) * kHashMul32;
     return (uint32_t)(h >> shift);
@@ -58,7 +57,7 @@
 
 static BROTLI_INLINE BROTLI_BOOL IsMatch(const uint8_t* p1, const uint8_t* p2) {
   return TO_BROTLI_BOOL(
-      BROTLI_UNALIGNED_LOAD32(p1) == BROTLI_UNALIGNED_LOAD32(p2) &&
+      BrotliUnalignedRead32(p1) == BrotliUnalignedRead32(p2) &&
       p1[4] == p2[4]);
 }
 
@@ -344,7 +343,7 @@
 }
 
 static void UpdateBits(size_t n_bits, uint32_t bits, size_t pos,
-    uint8_t *array) {
+    uint8_t* array) {
   while (n_bits > 0) {
     size_t byte_pos = pos >> 3;
     size_t n_unchanged_bits = pos & 7;
@@ -522,12 +521,12 @@
 
       const uint8_t* next_ip = ip;
       const uint8_t* candidate;
-      assert(next_emit < ip);
+      BROTLI_DCHECK(next_emit < ip);
 trawl:
       do {
         uint32_t hash = next_hash;
         uint32_t bytes_between_hash_lookups = skip++ >> 5;
-        assert(hash == Hash(next_ip, shift));
+        BROTLI_DCHECK(hash == Hash(next_ip, shift));
         ip = next_ip;
         next_ip = ip + bytes_between_hash_lookups;
         if (BROTLI_PREDICT_FALSE(next_ip > ip_limit)) {
@@ -542,8 +541,8 @@
           }
         }
         candidate = base_ip + table[hash];
-        assert(candidate >= base_ip);
-        assert(candidate < ip);
+        BROTLI_DCHECK(candidate >= base_ip);
+        BROTLI_DCHECK(candidate < ip);
 
         table[hash] = (int)(ip - base_ip);
       } while (BROTLI_PREDICT_TRUE(!IsMatch(ip, candidate)));
@@ -566,7 +565,7 @@
         int distance = (int)(base - candidate);  /* > 0 */
         size_t insert = (size_t)(base - next_emit);
         ip += matched;
-        assert(0 == memcmp(base, candidate, matched));
+        BROTLI_DCHECK(0 == memcmp(base, candidate, matched));
         if (BROTLI_PREDICT_TRUE(insert < 6210)) {
           EmitInsertLen(insert, cmd_depth, cmd_bits, cmd_histo,
                         storage_ix, storage);
@@ -626,7 +625,7 @@
         if (ip - candidate > MAX_DISTANCE) break;
         ip += matched;
         last_distance = (int)(base - candidate);  /* > 0 */
-        assert(0 == memcmp(base, candidate, matched));
+        BROTLI_DCHECK(0 == memcmp(base, candidate, matched));
         EmitCopyLen(matched, cmd_depth, cmd_bits, cmd_histo,
                     storage_ix, storage);
         EmitDistance((size_t)last_distance, cmd_depth, cmd_bits,
@@ -659,7 +658,7 @@
   }
 
  emit_remainder:
-  assert(next_emit <= ip_end);
+  BROTLI_DCHECK(next_emit <= ip_end);
   input += block_size;
   input_size -= block_size;
   block_size = BROTLI_MIN(size_t, input_size, kMergeBlockSize);
@@ -669,7 +668,7 @@
   if (input_size > 0 &&
       total_block_size + block_size <= (1 << 20) &&
       ShouldMergeBlock(input, block_size, lit_depth)) {
-    assert(total_block_size > (1 << 16));
+    BROTLI_DCHECK(total_block_size > (1 << 16));
     /* Update the size of the current meta-block and continue emitting commands.
        We can do this because the current size and the new size both have 5
        nibbles. */
@@ -752,7 +751,7 @@
   const size_t table_bits = Log2FloorNonZero(table_size);
 
   if (input_size == 0) {
-    assert(is_last);
+    BROTLI_DCHECK(is_last);
     BrotliWriteBits(1, 1, storage_ix, storage);  /* islast */
     BrotliWriteBits(1, 1, storage_ix, storage);  /* isempty */
     *storage_ix = (*storage_ix + 7u) & ~7u;
@@ -768,7 +767,7 @@
       break;
     FOR_TABLE_BITS_(CASE_)
 #undef CASE_
-    default: assert(0); break;
+    default: BROTLI_DCHECK(0); break;
   }
 
   /* If output is larger than single uncompressed block, rewrite it. */

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -12,9 +12,9 @@
 #ifndef BROTLI_ENC_COMPRESS_FRAGMENT_H_
 #define BROTLI_ENC_COMPRESS_FRAGMENT_H_
 
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./memory.h"
-#include "./port.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment_two_pass.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment_two_pass.c	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment_two_pass.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -15,6 +15,7 @@
 #include <string.h>  /* memcmp, memcpy, memset */
 
 #include "../common/constants.h"
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./bit_cost.h"
 #include "./brotli_bit_stream.h"
@@ -22,10 +23,8 @@
 #include "./fast_log.h"
 #include "./find_match_length.h"
 #include "./memory.h"
-#include "./port.h"
 #include "./write_bits.h"
 
-
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
 #endif
@@ -38,7 +37,7 @@
    * There is no effort to ensure that it is a prime, the oddity is enough
      for this use.
    * The number has been tuned heuristically against compression benchmarks. */
-static const uint32_t kHashMul32 = 0x1e35a7bd;
+static const uint32_t kHashMul32 = 0x1E35A7BD;
 
 static BROTLI_INLINE uint32_t Hash(const uint8_t* p, size_t shift) {
   const uint64_t h = (BROTLI_UNALIGNED_LOAD64LE(p) << 16) * kHashMul32;
@@ -47,8 +46,8 @@
 
 static BROTLI_INLINE uint32_t HashBytesAtOffset(
     uint64_t v, int offset, size_t shift) {
-  assert(offset >= 0);
-  assert(offset <= 2);
+  BROTLI_DCHECK(offset >= 0);
+  BROTLI_DCHECK(offset <= 2);
   {
     const uint64_t h = ((v >> (8 * offset)) << 16) * kHashMul32;
     return (uint32_t)(h >> shift);
@@ -57,7 +56,7 @@
 
 static BROTLI_INLINE BROTLI_BOOL IsMatch(const uint8_t* p1, const uint8_t* p2) {
   return TO_BROTLI_BOOL(
-      BROTLI_UNALIGNED_LOAD32(p1) == BROTLI_UNALIGNED_LOAD32(p2) &&
+      BrotliUnalignedRead32(p1) == BrotliUnalignedRead32(p2) &&
       p1[4] == p2[4] &&
       p1[5] == p2[5]);
 }
@@ -281,13 +280,13 @@
       const uint8_t* next_ip = ip;
       const uint8_t* candidate;
 
-      assert(next_emit < ip);
+      BROTLI_DCHECK(next_emit < ip);
 trawl:
       do {
         uint32_t hash = next_hash;
         uint32_t bytes_between_hash_lookups = skip++ >> 5;
         ip = next_ip;
-        assert(hash == Hash(ip, shift));
+        BROTLI_DCHECK(hash == Hash(ip, shift));
         next_ip = ip + bytes_between_hash_lookups;
         if (BROTLI_PREDICT_FALSE(next_ip > ip_limit)) {
           goto emit_remainder;
@@ -301,8 +300,8 @@
           }
         }
         candidate = base_ip + table[hash];
-        assert(candidate >= base_ip);
-        assert(candidate < ip);
+        BROTLI_DCHECK(candidate >= base_ip);
+        BROTLI_DCHECK(candidate < ip);
 
         table[hash] = (int)(ip - base_ip);
       } while (BROTLI_PREDICT_TRUE(!IsMatch(ip, candidate)));
@@ -325,7 +324,7 @@
         int distance = (int)(base - candidate);  /* > 0 */
         int insert = (int)(base - next_emit);
         ip += matched;
-        assert(0 == memcmp(base, candidate, matched));
+        BROTLI_DCHECK(0 == memcmp(base, candidate, matched));
         EmitInsertLen((uint32_t)insert, commands);
         memcpy(*literals, next_emit, (size_t)insert);
         *literals += insert;
@@ -374,7 +373,7 @@
             candidate + 6, ip + 6, (size_t)(ip_end - ip) - 6);
         ip += matched;
         last_distance = (int)(base - candidate);  /* > 0 */
-        assert(0 == memcmp(base, candidate, matched));
+        BROTLI_DCHECK(0 == memcmp(base, candidate, matched));
         EmitCopyLen(matched, commands);
         EmitDistance((uint32_t)last_distance, commands);
 
@@ -411,7 +410,7 @@
   }
 
 emit_remainder:
-  assert(next_emit <= ip_end);
+  BROTLI_DCHECK(next_emit <= ip_end);
   /* Emit the remaining bytes as literals. */
   if (next_emit < ip_end) {
     const uint32_t insert = (uint32_t)(ip_end - next_emit);
@@ -457,7 +456,7 @@
 
   for (i = 0; i < num_commands; ++i) {
     const uint32_t code = commands[i] & 0xFF;
-    assert(code < 128);
+    BROTLI_DCHECK(code < 128);
     ++cmd_histo[code];
   }
   cmd_histo[1] += 1;
@@ -471,7 +470,7 @@
     const uint32_t cmd = commands[i];
     const uint32_t code = cmd & 0xFF;
     const uint32_t extra = cmd >> 8;
-    assert(code < 128);
+    BROTLI_DCHECK(code < 128);
     BrotliWriteBits(cmd_depths[code], cmd_bits[code], storage_ix, storage);
     BrotliWriteBits(kNumExtraBits[code], extra, storage_ix, storage);
     if (code < 24) {
@@ -589,7 +588,7 @@
       break;
     FOR_TABLE_BITS_(CASE_)
 #undef CASE_
-    default: assert(0); break;
+    default: BROTLI_DCHECK(0); break;
   }
 
   /* If output is larger than single uncompressed block, rewrite it. */

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment_two_pass.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment_two_pass.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/compress_fragment_two_pass.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -13,9 +13,9 @@
 #ifndef BROTLI_ENC_COMPRESS_FRAGMENT_TWO_PASS_H_
 #define BROTLI_ENC_COMPRESS_FRAGMENT_TWO_PASS_H_
 
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./memory.h"
-#include "./port.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/dictionary_hash.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/dictionary_hash.c	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/dictionary_hash.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -6,7 +6,7 @@
 
 /* Hash table on the 4-byte prefixes of static dictionary words. */
 
-#include <brotli/port.h>
+#include "../common/platform.h"
 #include "./dictionary_hash.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)

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-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encode.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -11,6 +11,9 @@
 #include <stdlib.h>  /* free, malloc */
 #include <string.h>  /* memcpy, memset */
 
+#include "../common/constants.h"
+#include "../common/context.h"
+#include "../common/platform.h"
 #include "../common/version.h"
 #include "./backward_references.h"
 #include "./backward_references_hq.h"
@@ -18,7 +21,7 @@
 #include "./brotli_bit_stream.h"
 #include "./compress_fragment.h"
 #include "./compress_fragment_two_pass.h"
-#include "./context.h"
+#include "./encoder_dict.h"
 #include "./entropy_encode.h"
 #include "./fast_log.h"
 #include "./hash.h"
@@ -25,7 +28,6 @@
 #include "./histogram.h"
 #include "./memory.h"
 #include "./metablock.h"
-#include "./port.h"
 #include "./prefix.h"
 #include "./quality.h"
 #include "./ringbuffer.h"
@@ -69,8 +71,8 @@
   uint64_t last_processed_pos_;
   int dist_cache_[BROTLI_NUM_DISTANCE_SHORT_CODES];
   int saved_dist_cache_[4];
-  uint8_t last_byte_;
-  uint8_t last_byte_bits_;
+  uint16_t last_bytes_;
+  uint8_t last_bytes_bits_;
   uint8_t prev_byte_;
   uint8_t prev_byte2_;
   size_t storage_size_;
@@ -161,30 +163,14 @@
       state->params.size_hint = value;
       return BROTLI_TRUE;
 
+    case BROTLI_PARAM_LARGE_WINDOW:
+      state->params.large_window = TO_BROTLI_BOOL(!!value);
+      return BROTLI_TRUE;
+
     default: return BROTLI_FALSE;
   }
 }
 
-static void RecomputeDistancePrefixes(Command* cmds,
-                                      size_t num_commands,
-                                      uint32_t num_direct_distance_codes,
-                                      uint32_t distance_postfix_bits) {
-  size_t i;
-  if (num_direct_distance_codes == 0 && distance_postfix_bits == 0) {
-    return;
-  }
-  for (i = 0; i < num_commands; ++i) {
-    Command* cmd = &cmds[i];
-    if (CommandCopyLen(cmd) && cmd->cmd_prefix_ >= 128) {
-      PrefixEncodeCopyDistance(CommandRestoreDistanceCode(cmd),
-                               num_direct_distance_codes,
-                               distance_postfix_bits,
-                               &cmd->dist_prefix_,
-                               &cmd->dist_extra_);
-    }
-  }
-}
-
 /* Wraps 64-bit input position to 32-bit ring-buffer position preserving
    "not-a-first-lap" feature. */
 static uint32_t WrapPosition(uint64_t position) {
@@ -226,7 +212,7 @@
   const size_t max_table_size = MaxHashTableSize(quality);
   size_t htsize = HashTableSize(max_table_size, input_size);
   int* table;
-  assert(max_table_size >= 256);
+  BROTLI_DCHECK(max_table_size >= 256);
   if (quality == FAST_ONE_PASS_COMPRESSION_QUALITY) {
     /* Only odd shifts are supported by fast-one-pass. */
     if ((htsize & 0xAAAAA) == 0) {
@@ -251,20 +237,25 @@
   return table;
 }
 
-static void EncodeWindowBits(int lgwin, uint8_t* last_byte,
-    uint8_t* last_byte_bits) {
-  if (lgwin == 16) {
-    *last_byte = 0;
-    *last_byte_bits = 1;
-  } else if (lgwin == 17) {
-    *last_byte = 1;
-    *last_byte_bits = 7;
-  } else if (lgwin > 17) {
-    *last_byte = (uint8_t)(((lgwin - 17) << 1) | 1);
-    *last_byte_bits = 4;
+static void EncodeWindowBits(int lgwin, BROTLI_BOOL large_window,
+    uint16_t* last_bytes, uint8_t* last_bytes_bits) {
+  if (large_window) {
+    *last_bytes = (uint16_t)(((lgwin & 0x3F) << 8) | 0x11);
+    *last_bytes_bits = 14;
   } else {
-    *last_byte = (uint8_t)(((lgwin - 8) << 4) | 1);
-    *last_byte_bits = 7;
+    if (lgwin == 16) {
+      *last_bytes = 0;
+      *last_bytes_bits = 1;
+    } else if (lgwin == 17) {
+      *last_bytes = 1;
+      *last_bytes_bits = 7;
+    } else if (lgwin > 17) {
+      *last_bytes = (uint16_t)(((lgwin - 17) << 1) | 0x01);
+      *last_bytes_bits = 4;
+    } else {
+      *last_bytes = (uint16_t)(((lgwin - 8) << 4) | 0x01);
+      *last_bytes_bits = 7;
+    }
   }
 }
 
@@ -357,7 +348,7 @@
   }
 
   total = monogram_histo[0] + monogram_histo[1] + monogram_histo[2];
-  assert(total != 0);
+  BROTLI_DCHECK(total != 0);
   entropy[0] = 1.0 / (double)total;
   entropy[1] *= entropy[0];
   entropy[2] *= entropy[0];
@@ -420,6 +411,7 @@
     double entropy[3];
     size_t dummy;
     size_t i;
+    ContextLut utf8_lut = BROTLI_CONTEXT_LUT(CONTEXT_UTF8);
     for (; start_pos + 64 <= end_pos; start_pos += 4096) {
       const size_t stride_end_pos = start_pos + 64;
       uint8_t prev2 = input[start_pos & mask];
@@ -430,7 +422,7 @@
       for (pos = start_pos + 2; pos < stride_end_pos; ++pos) {
         const uint8_t literal = input[pos & mask];
         const uint8_t context = (uint8_t)kStaticContextMapComplexUTF8[
-            Context(prev1, prev2, CONTEXT_UTF8)];
+            BROTLI_CONTEXT(prev1, prev2, utf8_lut)];
         ++total;
         ++combined_histo[literal >> 3];
         ++context_histo[context][literal >> 3];
@@ -519,6 +511,19 @@
   return BROTLI_TRUE;
 }
 
+/* Chooses the literal context mode for a metablock */
+static ContextType ChooseContextMode(const BrotliEncoderParams* params,
+    const uint8_t* data, const size_t pos, const size_t mask,
+    const size_t length) {
+  /* We only do the computation for the option of something else than
+     CONTEXT_UTF8 for the highest qualities */
+  if (params->quality >= MIN_QUALITY_FOR_HQ_BLOCK_SPLITTING &&
+      !BrotliIsMostlyUTF8(data, pos, mask, length, kMinUTF8Ratio)) {
+    return CONTEXT_SIGNED;
+  }
+  return CONTEXT_UTF8;
+}
+
 static void WriteMetaBlockInternal(MemoryManager* m,
                                    const uint8_t* data,
                                    const size_t mask,
@@ -525,6 +530,7 @@
                                    const uint64_t last_flush_pos,
                                    const size_t bytes,
                                    const BROTLI_BOOL is_last,
+                                   ContextType literal_context_mode,
                                    const BrotliEncoderParams* params,
                                    const uint8_t prev_byte,
                                    const uint8_t prev_byte2,
@@ -536,10 +542,9 @@
                                    size_t* storage_ix,
                                    uint8_t* storage) {
   const uint32_t wrapped_last_flush_pos = WrapPosition(last_flush_pos);
-  uint8_t last_byte;
-  uint8_t last_byte_bits;
-  uint32_t num_direct_distance_codes = 0;
-  uint32_t distance_postfix_bits = 0;
+  uint16_t last_bytes;
+  uint8_t last_bytes_bits;
+  ContextLut literal_context_lut = BROTLI_CONTEXT_LUT(literal_context_mode);
 
   if (bytes == 0) {
     /* Write the ISLAST and ISEMPTY bits. */
@@ -559,31 +564,22 @@
     return;
   }
 
-  last_byte = storage[0];
-  last_byte_bits = (uint8_t)(*storage_ix & 0xff);
-  if (params->quality >= MIN_QUALITY_FOR_RECOMPUTE_DISTANCE_PREFIXES &&
-      params->mode == BROTLI_MODE_FONT) {
-    num_direct_distance_codes = 12;
-    distance_postfix_bits = 1;
-    RecomputeDistancePrefixes(commands,
-                              num_commands,
-                              num_direct_distance_codes,
-                              distance_postfix_bits);
-  }
+  BROTLI_DCHECK(*storage_ix <= 14);
+  last_bytes = (uint16_t)((storage[1] << 8) | storage[0]);
+  last_bytes_bits = (uint8_t)(*storage_ix);
   if (params->quality <= MAX_QUALITY_FOR_STATIC_ENTROPY_CODES) {
     BrotliStoreMetaBlockFast(m, data, wrapped_last_flush_pos,
-                             bytes, mask, is_last,
+                             bytes, mask, is_last, params,
                              commands, num_commands,
                              storage_ix, storage);
     if (BROTLI_IS_OOM(m)) return;
   } else if (params->quality < MIN_QUALITY_FOR_BLOCK_SPLIT) {
     BrotliStoreMetaBlockTrivial(m, data, wrapped_last_flush_pos,
-                                bytes, mask, is_last,
+                                bytes, mask, is_last, params,
                                 commands, num_commands,
                                 storage_ix, storage);
     if (BROTLI_IS_OOM(m)) return;
   } else {
-    ContextType literal_context_mode = CONTEXT_UTF8;
     MetaBlockSplit mb;
     InitMetaBlockSplit(&mb);
     if (params->quality < MIN_QUALITY_FOR_HQ_BLOCK_SPLITTING) {
@@ -596,14 +592,10 @@
             &literal_context_map);
       }
       BrotliBuildMetaBlockGreedy(m, data, wrapped_last_flush_pos, mask,
-          prev_byte, prev_byte2, literal_context_mode, num_literal_contexts,
+          prev_byte, prev_byte2, literal_context_lut, num_literal_contexts,
           literal_context_map, commands, num_commands, &mb);
       if (BROTLI_IS_OOM(m)) return;
     } else {
-      if (!BrotliIsMostlyUTF8(data, wrapped_last_flush_pos, mask, bytes,
-                              kMinUTF8Ratio)) {
-        literal_context_mode = CONTEXT_SIGNED;
-      }
       BrotliBuildMetaBlock(m, data, wrapped_last_flush_pos, mask, params,
                            prev_byte, prev_byte2,
                            commands, num_commands,
@@ -612,15 +604,18 @@
       if (BROTLI_IS_OOM(m)) return;
     }
     if (params->quality >= MIN_QUALITY_FOR_OPTIMIZE_HISTOGRAMS) {
-      BrotliOptimizeHistograms(num_direct_distance_codes,
-                               distance_postfix_bits,
-                               &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;
+      }
+      BrotliOptimizeHistograms(num_effective_dist_codes, &mb);
     }
     BrotliStoreMetaBlock(m, data, wrapped_last_flush_pos, bytes, mask,
                          prev_byte, prev_byte2,
                          is_last,
-                         num_direct_distance_codes,
-                         distance_postfix_bits,
+                         params,
                          literal_context_mode,
                          commands, num_commands,
                          &mb,
@@ -631,8 +626,9 @@
   if (bytes + 4 < (*storage_ix >> 3)) {
     /* Restore the distance cache and last byte. */
     memcpy(dist_cache, saved_dist_cache, 4 * sizeof(dist_cache[0]));
-    storage[0] = last_byte;
-    *storage_ix = last_byte_bits;
+    storage[0] = (uint8_t)last_bytes;
+    storage[1] = (uint8_t)(last_bytes >> 8);
+    *storage_ix = last_bytes_bits;
     BrotliStoreUncompressedMetaBlock(is_last, data,
                                      wrapped_last_flush_pos, mask,
                                      bytes, storage_ix, storage);
@@ -639,6 +635,40 @@
   }
 }
 
+static void ChooseDistanceParams(BrotliEncoderParams* params) {
+  /* NDIRECT, NPOSTFIX must be both zero for qualities
+     up to MIN_QUALITY_FOR_BLOCK_SPLIT == 3. */
+  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;
+    }
+    alphabet_size = BROTLI_DISTANCE_ALPHABET_SIZE(
+        num_direct_distance_codes, distance_postfix_bits,
+        BROTLI_LARGE_MAX_DISTANCE_BITS);
+  }
+
+  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;
+}
+
 static BROTLI_BOOL EnsureInitialized(BrotliEncoderState* s) {
   if (BROTLI_IS_OOM(&s->memory_manager_)) return BROTLI_FALSE;
   if (s->is_initialized_) return BROTLI_TRUE;
@@ -645,6 +675,7 @@
 
   SanitizeParams(&s->params);
   s->params.lgblock = ComputeLgBlock(&s->params);
+  ChooseDistanceParams(&s->params);
 
   s->remaining_metadata_bytes_ = BROTLI_UINT32_MAX;
 
@@ -657,7 +688,8 @@
         s->params.quality == FAST_TWO_PASS_COMPRESSION_QUALITY) {
       lgwin = BROTLI_MAX(int, lgwin, 18);
     }
-    EncodeWindowBits(lgwin, &s->last_byte_, &s->last_byte_bits_);
+    EncodeWindowBits(lgwin, s->params.large_window,
+                     &s->last_bytes_, &s->last_bytes_bits_);
   }
 
   if (s->params.quality == FAST_ONE_PASS_COMPRESSION_QUALITY) {
@@ -671,11 +703,18 @@
 
 static void BrotliEncoderInitParams(BrotliEncoderParams* params) {
   params->mode = BROTLI_DEFAULT_MODE;
+  params->large_window = BROTLI_FALSE;
   params->quality = BROTLI_DEFAULT_QUALITY;
   params->lgwin = BROTLI_DEFAULT_WINDOW;
   params->lgblock = 0;
   params->size_hint = 0;
   params->disable_literal_context_modeling = BROTLI_FALSE;
+  BrotliInitEncoderDictionary(&params->dictionary);
+  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;
 }
 
 static void BrotliEncoderInitState(BrotliEncoderState* s) {
@@ -718,9 +757,8 @@
   memcpy(s->saved_dist_cache_, s->dist_cache_, sizeof(s->saved_dist_cache_));
 }
 
-BrotliEncoderState* BrotliEncoderCreateInstance(brotli_alloc_func alloc_func,
-                                                brotli_free_func free_func,
-                                                void* opaque) {
+BrotliEncoderState* BrotliEncoderCreateInstance(
+    brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque) {
   BrotliEncoderState* state = 0;
   if (!alloc_func && !free_func) {
     state = (BrotliEncoderState*)malloc(sizeof(BrotliEncoderState));
@@ -837,6 +875,38 @@
   return TO_BROTLI_BOOL(wrapped_input_pos < wrapped_last_processed_pos);
 }
 
+static void ExtendLastCommand(BrotliEncoderState* s, uint32_t* bytes,
+                              uint32_t* wrapped_last_processed_pos) {
+  Command* last_command = &s->commands_[s->num_commands_ - 1];
+  const uint8_t* data = s->ringbuffer_.buffer_;
+  const uint32_t mask = s->ringbuffer_.mask_;
+  uint64_t max_backward_distance = (1u << s->params.lgwin) - BROTLI_WINDOW_GAP;
+  uint64_t last_copy_len = last_command->copy_len_ & 0x1FFFFFF;
+  uint64_t last_processed_pos = s->last_processed_pos_ - last_copy_len;
+  uint64_t max_distance = last_processed_pos < max_backward_distance ?
+      last_processed_pos : max_backward_distance;
+  uint64_t cmd_dist = (uint64_t)s->dist_cache_[0];
+  uint32_t distance_code = CommandRestoreDistanceCode(last_command,
+                                                      &s->params.dist);
+  if (distance_code < BROTLI_NUM_DISTANCE_SHORT_CODES ||
+      distance_code - (BROTLI_NUM_DISTANCE_SHORT_CODES - 1) == cmd_dist) {
+    if (cmd_dist <= max_distance) {
+      while (*bytes != 0 && data[*wrapped_last_processed_pos & mask] ==
+             data[(*wrapped_last_processed_pos - cmd_dist) & mask]) {
+        last_command->copy_len_++;
+        (*bytes)--;
+        (*wrapped_last_processed_pos)++;
+      }
+    }
+    /* The copy length is at most the metablock size, and thus expressible. */
+    GetLengthCode(last_command->insert_len_,
+                  (size_t)((int)(last_command->copy_len_ & 0x1FFFFFF) +
+                           (int)(last_command->copy_len_ >> 25)),
+                  TO_BROTLI_BOOL((last_command->dist_prefix_ & 0x3FF) == 0),
+                  &last_command->cmd_prefix_);
+  }
+}
+
 /*
    Processes the accumulated input data and sets |*out_size| to the length of
    the new output meta-block, or to zero if no new output meta-block has been
@@ -853,13 +923,12 @@
     BrotliEncoderState* s, const BROTLI_BOOL is_last,
     const BROTLI_BOOL force_flush, size_t* out_size, uint8_t** output) {
   const uint64_t delta = UnprocessedInputSize(s);
-  const uint32_t bytes = (uint32_t)delta;
-  const uint32_t wrapped_last_processed_pos =
-      WrapPosition(s->last_processed_pos_);
+  uint32_t bytes = (uint32_t)delta;
+  uint32_t wrapped_last_processed_pos = WrapPosition(s->last_processed_pos_);
   uint8_t* data;
   uint32_t mask;
   MemoryManager* m = &s->memory_manager_;
-  const BrotliDictionary* dictionary = BrotliGetDictionary();
+  ContextType literal_context_mode;
 
   if (!EnsureInitialized(s)) return BROTLI_FALSE;
   data = s->ringbuffer_.buffer_;
@@ -884,7 +953,7 @@
   if (s->params.quality == FAST_ONE_PASS_COMPRESSION_QUALITY ||
       s->params.quality == FAST_TWO_PASS_COMPRESSION_QUALITY) {
     uint8_t* storage;
-    size_t storage_ix = s->last_byte_bits_;
+    size_t storage_ix = s->last_bytes_bits_;
     size_t table_size;
     int* table;
 
@@ -894,9 +963,10 @@
       *out_size = 0;
       return BROTLI_TRUE;
     }
-    storage = GetBrotliStorage(s, 2 * bytes + 502);
+    storage = GetBrotliStorage(s, 2 * bytes + 503);
     if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;
-    storage[0] = s->last_byte_;
+    storage[0] = (uint8_t)s->last_bytes_;
+    storage[1] = (uint8_t)(s->last_bytes_ >> 8);
     table = GetHashTable(s, s->params.quality, bytes, &table_size);
     if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;
     if (s->params.quality == FAST_ONE_PASS_COMPRESSION_QUALITY) {
@@ -917,8 +987,8 @@
           &storage_ix, storage);
       if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;
     }
-    s->last_byte_ = storage[storage_ix >> 3];
-    s->last_byte_bits_ = storage_ix & 7u;
+    s->last_bytes_ = (uint16_t)(storage[storage_ix >> 3]);
+    s->last_bytes_bits_ = storage_ix & 7u;
     UpdateLastProcessedPos(s);
     *output = &storage[0];
     *out_size = storage_ix >> 3;
@@ -946,27 +1016,39 @@
 
   InitOrStitchToPreviousBlock(m, &s->hasher_, data, mask, &s->params,
       wrapped_last_processed_pos, bytes, is_last);
+
+  literal_context_mode = ChooseContextMode(
+      &s->params, data, WrapPosition(s->last_flush_pos_),
+      mask, (size_t)(s->input_pos_ - s->last_flush_pos_));
+
   if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;
 
+  if (s->num_commands_ && s->last_insert_len_ == 0) {
+    ExtendLastCommand(s, &bytes, &wrapped_last_processed_pos);
+  }
+
   if (s->params.quality == ZOPFLIFICATION_QUALITY) {
-    assert(s->params.hasher.type == 10);
-    BrotliCreateZopfliBackwardReferences(
-        m, dictionary, bytes, wrapped_last_processed_pos, data, mask,
-        &s->params, s->hasher_, s->dist_cache_, &s->last_insert_len_,
-        &s->commands_[s->num_commands_], &s->num_commands_, &s->num_literals_);
+    BROTLI_DCHECK(s->params.hasher.type == 10);
+    BrotliCreateZopfliBackwardReferences(m,
+        bytes, wrapped_last_processed_pos,
+        data, mask, &s->params, s->hasher_, s->dist_cache_,
+        &s->last_insert_len_, &s->commands_[s->num_commands_],
+        &s->num_commands_, &s->num_literals_);
     if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;
   } else if (s->params.quality == HQ_ZOPFLIFICATION_QUALITY) {
-    assert(s->params.hasher.type == 10);
-    BrotliCreateHqZopfliBackwardReferences(
-        m, dictionary, bytes, wrapped_last_processed_pos, data, mask,
-        &s->params, s->hasher_, s->dist_cache_, &s->last_insert_len_,
-        &s->commands_[s->num_commands_], &s->num_commands_, &s->num_literals_);
+    BROTLI_DCHECK(s->params.hasher.type == 10);
+    BrotliCreateHqZopfliBackwardReferences(m,
+        bytes, wrapped_last_processed_pos,
+        data, mask, &s->params, s->hasher_, s->dist_cache_,
+        &s->last_insert_len_, &s->commands_[s->num_commands_],
+        &s->num_commands_, &s->num_literals_);
     if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;
   } else {
     BrotliCreateBackwardReferences(
-        dictionary, bytes, wrapped_last_processed_pos, data, mask,
-        &s->params, s->hasher_, s->dist_cache_, &s->last_insert_len_,
-        &s->commands_[s->num_commands_], &s->num_commands_, &s->num_literals_);
+        bytes, wrapped_last_processed_pos,
+        data, mask, &s->params, s->hasher_, s->dist_cache_,
+        &s->last_insert_len_, &s->commands_[s->num_commands_],
+        &s->num_commands_, &s->num_literals_);
   }
 
   {
@@ -1009,24 +1091,25 @@
     *out_size = 0;
     return BROTLI_TRUE;
   }
-  assert(s->input_pos_ >= s->last_flush_pos_);
-  assert(s->input_pos_ > s->last_flush_pos_ || is_last);
-  assert(s->input_pos_ - s->last_flush_pos_ <= 1u << 24);
+  BROTLI_DCHECK(s->input_pos_ >= s->last_flush_pos_);
+  BROTLI_DCHECK(s->input_pos_ > s->last_flush_pos_ || is_last);
+  BROTLI_DCHECK(s->input_pos_ - s->last_flush_pos_ <= 1u << 24);
   {
     const uint32_t metablock_size =
         (uint32_t)(s->input_pos_ - s->last_flush_pos_);
-    uint8_t* storage = GetBrotliStorage(s, 2 * metablock_size + 502);
-    size_t storage_ix = s->last_byte_bits_;
+    uint8_t* storage = GetBrotliStorage(s, 2 * metablock_size + 503);
+    size_t storage_ix = s->last_bytes_bits_;
     if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;
-    storage[0] = s->last_byte_;
+    storage[0] = (uint8_t)s->last_bytes_;
+    storage[1] = (uint8_t)(s->last_bytes_ >> 8);
     WriteMetaBlockInternal(
         m, data, mask, s->last_flush_pos_, metablock_size, is_last,
-        &s->params, s->prev_byte_, s->prev_byte2_,
+        literal_context_mode, &s->params, s->prev_byte_, s->prev_byte2_,
         s->num_literals_, s->num_commands_, s->commands_, s->saved_dist_cache_,
         s->dist_cache_, &storage_ix, storage);
     if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;
-    s->last_byte_ = storage[storage_ix >> 3];
-    s->last_byte_bits_ = storage_ix & 7u;
+    s->last_bytes_ = (uint16_t)(storage[storage_ix >> 3]);
+    s->last_bytes_bits_ = storage_ix & 7u;
     s->last_flush_pos_ = s->input_pos_;
     if (UpdateLastProcessedPos(s)) {
       HasherReset(s->hasher_);
@@ -1055,10 +1138,11 @@
 static size_t WriteMetadataHeader(
     BrotliEncoderState* s, const size_t block_size, uint8_t* header) {
   size_t storage_ix;
-  storage_ix = s->last_byte_bits_;
-  header[0] = s->last_byte_;
-  s->last_byte_ = 0;
-  s->last_byte_bits_ = 0;
+  storage_ix = s->last_bytes_bits_;
+  header[0] = (uint8_t)s->last_bytes_;
+  header[1] = (uint8_t)(s->last_bytes_ >> 8);
+  s->last_bytes_ = 0;
+  s->last_bytes_bits_ = 0;
 
   BrotliWriteBits(1, 0, &storage_ix, header);
   BrotliWriteBits(2, 3, &storage_ix, header);
@@ -1088,8 +1172,8 @@
   BROTLI_BOOL ok = BROTLI_TRUE;
   const size_t max_out_size = *encoded_size;
   size_t total_out_size = 0;
-  uint8_t last_byte;
-  uint8_t last_byte_bits;
+  uint16_t last_bytes;
+  uint8_t last_bytes_bits;
   HasherHandle hasher = NULL;
 
   const size_t hasher_eff_size =
@@ -1096,7 +1180,6 @@
       BROTLI_MIN(size_t, input_size, max_backward_limit + BROTLI_WINDOW_GAP);
 
   BrotliEncoderParams params;
-  const BrotliDictionary* dictionary = BrotliGetDictionary();
 
   const int lgmetablock = BROTLI_MIN(int, 24, lgwin + 1);
   size_t max_block_size;
@@ -1110,14 +1193,18 @@
   BrotliEncoderInitParams(&params);
   params.quality = 10;
   params.lgwin = lgwin;
+  if (lgwin > BROTLI_MAX_WINDOW_BITS) {
+    params.large_window = BROTLI_TRUE;
+  }
   SanitizeParams(&params);
   params.lgblock = ComputeLgBlock(&params);
+  ChooseDistanceParams(&params);
   max_block_size = (size_t)1 << params.lgblock;
 
   BrotliInitMemoryManager(m, 0, 0, 0);
 
-  assert(input_size <= mask + 1);
-  EncodeWindowBits(lgwin, &last_byte, &last_byte_bits);
+  BROTLI_DCHECK(input_size <= mask + 1);
+  EncodeWindowBits(lgwin, params.large_window, &last_bytes, &last_bytes_bits);
   InitOrStitchToPreviousBlock(m, &hasher, input_buffer, mask, &params,
       0, hasher_eff_size, BROTLI_TRUE);
   if (BROTLI_IS_OOM(m)) goto oom;
@@ -1137,6 +1224,9 @@
     uint8_t* storage;
     size_t storage_ix;
 
+    ContextType literal_context_mode = ChooseContextMode(&params,
+        input_buffer, metablock_start, mask, metablock_end - metablock_start);
+
     size_t block_start;
     for (block_start = metablock_start; block_start < metablock_end; ) {
       size_t block_size =
@@ -1148,8 +1238,8 @@
       BrotliInitZopfliNodes(nodes, block_size + 1);
       StitchToPreviousBlockH10(hasher, block_size, block_start,
                                input_buffer, mask);
-      path_size = BrotliZopfliComputeShortestPath(
-          m, dictionary, block_size, block_start, input_buffer, mask, &params,
+      path_size = BrotliZopfliComputeShortestPath(m,
+          block_size, block_start, input_buffer, mask, &params,
           max_backward_limit, dist_cache, hasher, nodes);
       if (BROTLI_IS_OOM(m)) goto oom;
       /* We allocate a command buffer in the first iteration of this loop that
@@ -1193,13 +1283,14 @@
 
     is_last = TO_BROTLI_BOOL(metablock_start + metablock_size == input_size);
     storage = NULL;
-    storage_ix = last_byte_bits;
+    storage_ix = last_bytes_bits;
 
     if (metablock_size == 0) {
       /* Write the ISLAST and ISEMPTY bits. */
       storage = BROTLI_ALLOC(m, uint8_t, 16);
       if (BROTLI_IS_OOM(m)) goto oom;
-      storage[0] = last_byte;
+      storage[0] = (uint8_t)last_bytes;
+      storage[1] = (uint8_t)(last_bytes >> 8);
       BrotliWriteBits(2, 3, &storage_ix, storage);
       storage_ix = (storage_ix + 7u) & ~7u;
     } else if (!ShouldCompress(input_buffer, mask, metablock_start,
@@ -1209,20 +1300,20 @@
       memcpy(dist_cache, saved_dist_cache, 4 * sizeof(dist_cache[0]));
       storage = BROTLI_ALLOC(m, uint8_t, metablock_size + 16);
       if (BROTLI_IS_OOM(m)) goto oom;
-      storage[0] = last_byte;
+      storage[0] = (uint8_t)last_bytes;
+      storage[1] = (uint8_t)(last_bytes >> 8);
       BrotliStoreUncompressedMetaBlock(is_last, input_buffer,
                                        metablock_start, mask, metablock_size,
                                        &storage_ix, storage);
     } else {
-      uint32_t num_direct_distance_codes = 0;
-      uint32_t distance_postfix_bits = 0;
-      ContextType literal_context_mode = CONTEXT_UTF8;
       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;
+      }
       InitMetaBlockSplit(&mb);
-      if (!BrotliIsMostlyUTF8(input_buffer, metablock_start, mask,
-                              metablock_size, kMinUTF8Ratio)) {
-        literal_context_mode = CONTEXT_SIGNED;
-      }
       BrotliBuildMetaBlock(m, input_buffer, metablock_start, mask, &params,
                            prev_byte, prev_byte2,
                            commands, num_commands,
@@ -1229,17 +1320,15 @@
                            literal_context_mode,
                            &mb);
       if (BROTLI_IS_OOM(m)) goto oom;
-      BrotliOptimizeHistograms(num_direct_distance_codes,
-                               distance_postfix_bits,
-                               &mb);
-      storage = BROTLI_ALLOC(m, uint8_t, 2 * metablock_size + 502);
+      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] = last_byte;
+      storage[0] = (uint8_t)last_bytes;
+      storage[1] = (uint8_t)(last_bytes >> 8);
       BrotliStoreMetaBlock(m, input_buffer, metablock_start, metablock_size,
                            mask, prev_byte, prev_byte2,
                            is_last,
-                           num_direct_distance_codes,
-                           distance_postfix_bits,
+                           &params,
                            literal_context_mode,
                            commands, num_commands,
                            &mb,
@@ -1248,8 +1337,9 @@
       if (metablock_size + 4 < (storage_ix >> 3)) {
         /* Restore the distance cache and last byte. */
         memcpy(dist_cache, saved_dist_cache, 4 * sizeof(dist_cache[0]));
-        storage[0] = last_byte;
-        storage_ix = last_byte_bits;
+        storage[0] = (uint8_t)last_bytes;
+        storage[1] = (uint8_t)(last_bytes >> 8);
+        storage_ix = last_bytes_bits;
         BrotliStoreUncompressedMetaBlock(is_last, input_buffer,
                                          metablock_start, mask,
                                          metablock_size, &storage_ix, storage);
@@ -1256,11 +1346,13 @@
       }
       DestroyMetaBlockSplit(m, &mb);
     }
-    last_byte = storage[storage_ix >> 3];
-    last_byte_bits = storage_ix & 7u;
+    last_bytes = (uint16_t)(storage[storage_ix >> 3]);
+    last_bytes_bits = storage_ix & 7u;
     metablock_start += metablock_size;
-    prev_byte = input_buffer[metablock_start - 1];
-    prev_byte2 = input_buffer[metablock_start - 2];
+    if (metablock_start < input_size) {
+      prev_byte = input_buffer[metablock_start - 1];
+      prev_byte2 = input_buffer[metablock_start - 2];
+    }
     /* Save the state of the distance cache in case we need to restore it for
        emitting an uncompressed block. */
     memcpy(saved_dist_cache, dist_cache, 4 * sizeof(dist_cache[0]));
@@ -1290,12 +1382,10 @@
 
 size_t BrotliEncoderMaxCompressedSize(size_t input_size) {
   /* [window bits / empty metadata] + N * [uncompressed] + [last empty] */
-  size_t num_large_blocks = input_size >> 24;
-  size_t tail = input_size - (num_large_blocks << 24);
-  size_t tail_overhead = (tail > (1 << 20)) ? 4 : 3;
-  size_t overhead = 2 + (4 * num_large_blocks) + tail_overhead + 1;
+  size_t num_large_blocks = input_size >> 14;
+  size_t overhead = 2 + (4 * num_large_blocks) + 3 + 1;
   size_t result = input_size + overhead;
-  if (input_size == 0) return 1;
+  if (input_size == 0) return 2;
   return (result < input_size) ? 0 : result;
 }
 
@@ -1356,7 +1446,7 @@
   }
   if (quality == 10) {
     /* TODO: Implement this direct path for all quality levels. */
-    const int lg_win = BROTLI_MIN(int, BROTLI_MAX_WINDOW_BITS,
+    const int lg_win = BROTLI_MIN(int, BROTLI_LARGE_MAX_WINDOW_BITS,
                                        BROTLI_MAX(int, 16, lgwin));
     int ok = BrotliCompressBufferQuality10(lg_win, input_size, input_buffer,
                                            encoded_size, encoded_buffer);
@@ -1380,6 +1470,9 @@
     BrotliEncoderSetParameter(s, BROTLI_PARAM_LGWIN, (uint32_t)lgwin);
     BrotliEncoderSetParameter(s, BROTLI_PARAM_MODE, (uint32_t)mode);
     BrotliEncoderSetParameter(s, BROTLI_PARAM_SIZE_HINT, (uint32_t)input_size);
+    if (lgwin > BROTLI_MAX_WINDOW_BITS) {
+      BrotliEncoderSetParameter(s, BROTLI_PARAM_LARGE_WINDOW, BROTLI_TRUE);
+    }
     result = BrotliEncoderCompressStream(s, BROTLI_OPERATION_FINISH,
         &available_in, &next_in, &available_out, &next_out, &total_out);
     if (!BrotliEncoderIsFinished(s)) result = 0;
@@ -1402,11 +1495,11 @@
 }
 
 static void InjectBytePaddingBlock(BrotliEncoderState* s) {
-  uint32_t seal = s->last_byte_;
-  size_t seal_bits = s->last_byte_bits_;
+  uint32_t seal = s->last_bytes_;
+  size_t seal_bits = s->last_bytes_bits_;
   uint8_t* destination;
-  s->last_byte_ = 0;
-  s->last_byte_bits_ = 0;
+  s->last_bytes_ = 0;
+  s->last_bytes_bits_ = 0;
   /* is_last = 0, data_nibbles = 11, reserved = 0, meta_nibbles = 00 */
   seal |= 0x6u << seal_bits;
   seal_bits += 6;
@@ -1420,6 +1513,7 @@
   }
   destination[0] = (uint8_t)seal;
   if (seal_bits > 8) destination[1] = (uint8_t)(seal >> 8);
+  if (seal_bits > 16) destination[2] = (uint8_t)(seal >> 16);
   s->available_out_ += (seal_bits + 7) >> 3;
 }
 
@@ -1428,7 +1522,7 @@
 static BROTLI_BOOL InjectFlushOrPushOutput(BrotliEncoderState* s,
     size_t* available_out, uint8_t** next_out, size_t* total_out) {
   if (s->stream_state_ == BROTLI_STREAM_FLUSH_REQUESTED &&
-      s->last_byte_bits_ != 0) {
+      s->last_bytes_bits_ != 0) {
     InjectBytePaddingBlock(s);
     return BROTLI_TRUE;
   }
@@ -1509,10 +1603,10 @@
           (*available_in == block_size) && (op == BROTLI_OPERATION_FINISH);
       BROTLI_BOOL force_flush =
           (*available_in == block_size) && (op == BROTLI_OPERATION_FLUSH);
-      size_t max_out_size = 2 * block_size + 502;
+      size_t max_out_size = 2 * block_size + 503;
       BROTLI_BOOL inplace = BROTLI_TRUE;
       uint8_t* storage = NULL;
-      size_t storage_ix = s->last_byte_bits_;
+      size_t storage_ix = s->last_bytes_bits_;
       size_t table_size;
       int* table;
 
@@ -1527,7 +1621,8 @@
         storage = GetBrotliStorage(s, max_out_size);
         if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;
       }
-      storage[0] = s->last_byte_;
+      storage[0] = (uint8_t)s->last_bytes_;
+      storage[1] = (uint8_t)(s->last_bytes_ >> 8);
       table = GetHashTable(s, s->params.quality, block_size, &table_size);
       if (BROTLI_IS_OOM(m)) return BROTLI_FALSE;
 
@@ -1546,8 +1641,8 @@
       *available_in -= block_size;
       if (inplace) {
         size_t out_bytes = storage_ix >> 3;
-        assert(out_bytes <= *available_out);
-        assert((storage_ix & 7) == 0 || out_bytes < *available_out);
+        BROTLI_DCHECK(out_bytes <= *available_out);
+        BROTLI_DCHECK((storage_ix & 7) == 0 || out_bytes < *available_out);
         *next_out += out_bytes;
         *available_out -= out_bytes;
         s->total_out_ += out_bytes;
@@ -1557,8 +1652,8 @@
         s->next_out_ = storage;
         s->available_out_ = out_bytes;
       }
-      s->last_byte_ = storage[storage_ix >> 3];
-      s->last_byte_bits_ = storage_ix & 7u;
+      s->last_bytes_ = (uint16_t)(storage[storage_ix >> 3]);
+      s->last_bytes_bits_ = storage_ix & 7u;
 
       if (force_flush) s->stream_state_ = BROTLI_STREAM_FLUSH_REQUESTED;
       if (is_last) s->stream_state_ = BROTLI_STREAM_FINISHED;

Added: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encoder_dict.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encoder_dict.c	                        (rev 0)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encoder_dict.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -0,0 +1,32 @@
+/* Copyright 2017 Google Inc. All Rights Reserved.
+
+   Distributed under MIT license.
+   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+#include "./encoder_dict.h"
+
+#include "../common/dictionary.h"
+#include "../common/transform.h"
+#include "./dictionary_hash.h"
+#include "./hash.h"
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+void BrotliInitEncoderDictionary(BrotliEncoderDictionary* dict) {
+  dict->words = BrotliGetDictionary();
+
+  dict->hash_table = kStaticDictionaryHash;
+  dict->buckets = kStaticDictionaryBuckets;
+  dict->dict_words = kStaticDictionaryWords;
+
+  dict->cutoffTransformsCount = kCutoffTransformsCount;
+  dict->cutoffTransforms = kCutoffTransforms;
+
+}
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}  /* extern "C" */
+#endif


Property changes on: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encoder_dict.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encoder_dict.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encoder_dict.h	                        (rev 0)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encoder_dict.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -0,0 +1,42 @@
+/* Copyright 2017 Google Inc. All Rights Reserved.
+
+   Distributed under MIT license.
+   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+#ifndef BROTLI_ENC_ENCODER_DICT_H_
+#define BROTLI_ENC_ENCODER_DICT_H_
+
+#include "../common/dictionary.h"
+#include "../common/platform.h"
+#include <brotli/types.h>
+#include "./static_dict_lut.h"
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+/* Dictionary data (words and transforms) for 1 possible context */
+typedef struct BrotliEncoderDictionary {
+  const BrotliDictionary* words;
+
+  /* cut off for fast encoder */
+  uint32_t cutoffTransformsCount;
+  uint64_t cutoffTransforms;
+
+  /* from dictionary_hash.h, for fast encoder */
+  const uint16_t* hash_table;
+
+  /* from static_dict_lut.h, for slow encoder */
+  const uint16_t* buckets;
+  const DictWord* dict_words;
+} BrotliEncoderDictionary;
+
+BROTLI_INTERNAL void BrotliInitEncoderDictionary(BrotliEncoderDictionary* dict);
+
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}  /* extern "C" */
+#endif
+
+#endif  /* BROTLI_ENC_ENCODER_DICT_H_ */


Property changes on: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/encoder_dict.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode.c	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -11,8 +11,8 @@
 #include <string.h>  /* memset */
 
 #include "../common/constants.h"
+#include "../common/platform.h"
 #include <brotli/types.h>
-#include "./port.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
@@ -23,7 +23,7 @@
   int stack[16];
   int level = 0;
   int p = p0;
-  assert(max_depth <= 15);
+  BROTLI_DCHECK(max_depth <= 15);
   stack[0] = -1;
   while (BROTLI_TRUE) {
     if (pool[p].index_left_ >= 0) {
@@ -66,11 +66,11 @@
    we are not planning to use this with extremely long blocks.
 
    See http://en.wikipedia.org/wiki/Huffman_coding */
-void BrotliCreateHuffmanTree(const uint32_t *data,
+void BrotliCreateHuffmanTree(const uint32_t* data,
                              const size_t length,
                              const int tree_limit,
                              HuffmanTree* tree,
-                             uint8_t *depth) {
+                             uint8_t* depth) {
   uint32_t count_limit;
   HuffmanTree sentinel;
   InitHuffmanTree(&sentinel, BROTLI_UINT32_MAX, -1, -1);
@@ -165,7 +165,7 @@
     size_t* tree_size,
     uint8_t* tree,
     uint8_t* extra_bits_data) {
-  assert(repetitions > 0);
+  BROTLI_DCHECK(repetitions > 0);
   if (previous_value != value) {
     tree[*tree_size] = value;
     extra_bits_data[*tree_size] = 0;
@@ -371,8 +371,8 @@
 }
 
 static void DecideOverRleUse(const uint8_t* depth, const size_t length,
-                             BROTLI_BOOL *use_rle_for_non_zero,
-                             BROTLI_BOOL *use_rle_for_zero) {
+                             BROTLI_BOOL* use_rle_for_non_zero,
+                             BROTLI_BOOL* use_rle_for_zero) {
   size_t total_reps_zero = 0;
   size_t total_reps_non_zero = 0;
   size_t count_reps_zero = 1;
@@ -454,17 +454,17 @@
 
 static uint16_t BrotliReverseBits(size_t num_bits, uint16_t bits) {
   static const size_t kLut[16] = {  /* Pre-reversed 4-bit values. */
-    0x0, 0x8, 0x4, 0xc, 0x2, 0xa, 0x6, 0xe,
-    0x1, 0x9, 0x5, 0xd, 0x3, 0xb, 0x7, 0xf
+    0x00, 0x08, 0x04, 0x0C, 0x02, 0x0A, 0x06, 0x0E,
+    0x01, 0x09, 0x05, 0x0D, 0x03, 0x0B, 0x07, 0x0F
   };
-  size_t retval = kLut[bits & 0xf];
+  size_t retval = kLut[bits & 0x0F];
   size_t i;
   for (i = 4; i < num_bits; i += 4) {
     retval <<= 4;
     bits = (uint16_t)(bits >> 4);
-    retval |= kLut[bits & 0xf];
+    retval |= kLut[bits & 0x0F];
   }
-  retval >>= ((0 - num_bits) & 0x3);
+  retval >>= ((0 - num_bits) & 0x03);
   return (uint16_t)retval;
 }
 
@@ -471,9 +471,9 @@
 /* 0..15 are values for bits */
 #define MAX_HUFFMAN_BITS 16
 
-void BrotliConvertBitDepthsToSymbols(const uint8_t *depth,
+void BrotliConvertBitDepthsToSymbols(const uint8_t* depth,
                                      size_t len,
-                                     uint16_t *bits) {
+                                     uint16_t* bits) {
   /* In Brotli, all bit depths are [1..15]
      0 bit depth means that the symbol does not exist. */
   uint16_t bl_count[MAX_HUFFMAN_BITS] = { 0 };

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -9,8 +9,8 @@
 #ifndef BROTLI_ENC_ENTROPY_ENCODE_H_
 #define BROTLI_ENC_ENTROPY_ENCODE_H_
 
+#include "../common/platform.h"
 #include <brotli/types.h>
-#include "./port.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
@@ -46,11 +46,11 @@
    be at least 2 * length + 1 long.
 
    See http://en.wikipedia.org/wiki/Huffman_coding */
-BROTLI_INTERNAL void BrotliCreateHuffmanTree(const uint32_t *data,
+BROTLI_INTERNAL void BrotliCreateHuffmanTree(const uint32_t* data,
                                              const size_t length,
                                              const int tree_limit,
                                              HuffmanTree* tree,
-                                             uint8_t *depth);
+                                             uint8_t* depth);
 
 /* Change the population counts in a way that the consequent
    Huffman tree compression, especially its RLE-part will be more
@@ -72,9 +72,9 @@
                                             uint8_t* extra_bits_data);
 
 /* Get the actual bit values for a tree of bit depths. */
-BROTLI_INTERNAL void BrotliConvertBitDepthsToSymbols(const uint8_t *depth,
+BROTLI_INTERNAL void BrotliConvertBitDepthsToSymbols(const uint8_t* depth,
                                                      size_t len,
-                                                     uint16_t *bits);
+                                                     uint16_t* bits);
 
 /* Input size optimized Shell sort. */
 typedef BROTLI_BOOL (*HuffmanTreeComparator)(

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode_static.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode_static.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/entropy_encode_static.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -10,7 +10,7 @@
 #define BROTLI_ENC_ENTROPY_ENCODE_STATIC_H_
 
 #include "../common/constants.h"
-#include <brotli/port.h>
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./write_bits.h"
 
@@ -83,7 +83,7 @@
 static BROTLI_INLINE void StoreStaticCodeLengthCode(
     size_t* storage_ix, uint8_t* storage) {
   BrotliWriteBits(
-      40, BROTLI_MAKE_UINT64_T(0x0000ffU, 0x55555554U), storage_ix, storage);
+      40, BROTLI_MAKE_UINT64_T(0x0000FFu, 0x55555554u), storage_ix, storage);
 }
 
 static const uint64_t kZeroRepsBits[BROTLI_NUM_COMMAND_SYMBOLS] = {
@@ -529,7 +529,7 @@
 
 static BROTLI_INLINE void StoreStaticDistanceHuffmanTree(
     size_t* storage_ix, uint8_t* storage) {
-  BrotliWriteBits(28, 0x0369dc03U, storage_ix, storage);
+  BrotliWriteBits(28, 0x0369DC03u, storage_ix, storage);
 }
 
 #if defined(__cplusplus) || defined(c_plusplus)

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/fast_log.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/fast_log.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/fast_log.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -11,8 +11,8 @@
 
 #include <math.h>
 
+#include "../common/platform.h"
 #include <brotli/types.h>
-#include <brotli/port.h>
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/find_match_length.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/find_match_length.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/find_match_length.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -9,8 +9,8 @@
 #ifndef BROTLI_ENC_FIND_MATCH_LENGTH_H_
 #define BROTLI_ENC_FIND_MATCH_LENGTH_H_
 
+#include "../common/platform.h"
 #include <brotli/types.h>
-#include "./port.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
@@ -60,8 +60,8 @@
      the first non-matching bit and use that to calculate the total
      length of the match. */
   while (s2_ptr <= s2_limit - 4 &&
-         BROTLI_UNALIGNED_LOAD32(s2_ptr) ==
-         BROTLI_UNALIGNED_LOAD32(s1 + matched)) {
+         BrotliUnalignedRead32(s2_ptr) ==
+         BrotliUnalignedRead32(s1 + matched)) {
     s2_ptr += 4;
     matched += 4;
   }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -14,11 +14,12 @@
 
 #include "../common/constants.h"
 #include "../common/dictionary.h"
+#include "../common/platform.h"
 #include <brotli/types.h>
+#include "./encoder_dict.h"
 #include "./fast_log.h"
 #include "./find_match_length.h"
 #include "./memory.h"
-#include "./port.h"
 #include "./quality.h"
 #include "./static_dict.h"
 
@@ -73,13 +74,13 @@
    * There is no effort to ensure that it is a prime, the oddity is enough
      for this use.
    * The number has been tuned heuristically against compression benchmarks. */
-static const uint32_t kHashMul32 = 0x1e35a7bd;
-static const uint64_t kHashMul64 = BROTLI_MAKE_UINT64_T(0x1e35a7bd, 0x1e35a7bd);
+static const uint32_t kHashMul32 = 0x1E35A7BD;
+static const uint64_t kHashMul64 = BROTLI_MAKE_UINT64_T(0x1E35A7BD, 0x1E35A7BD);
 static const uint64_t kHashMul64Long =
-    BROTLI_MAKE_UINT64_T(0x1fe35a7bU, 0xd3579bd3U);
+    BROTLI_MAKE_UINT64_T(0x1FE35A7Bu, 0xD3579BD3u);
 
 static BROTLI_INLINE uint32_t Hash14(const uint8_t* data) {
-  uint32_t h = BROTLI_UNALIGNED_LOAD32(data) * kHashMul32;
+  uint32_t h = BROTLI_UNALIGNED_LOAD32LE(data) * kHashMul32;
   /* The higher bits contain more mixture from the multiplication,
      so we take our results from there. */
   return h >> (32 - 14);
@@ -146,8 +147,9 @@
 }
 
 static BROTLI_INLINE BROTLI_BOOL TestStaticDictionaryItem(
-    const BrotliDictionary* dictionary, size_t item, const uint8_t* data,
-    size_t max_length, size_t max_backward, HasherSearchResult* out) {
+    const BrotliEncoderDictionary* dictionary, size_t item, const uint8_t* data,
+    size_t max_length, size_t max_backward, size_t max_distance,
+    HasherSearchResult* out) {
   size_t len;
   size_t dist;
   size_t offset;
@@ -156,24 +158,24 @@
   score_t score;
   len = item & 0x1F;
   dist = item >> 5;
-  offset = dictionary->offsets_by_length[len] + len * dist;
+  offset = dictionary->words->offsets_by_length[len] + len * dist;
   if (len > max_length) {
     return BROTLI_FALSE;
   }
 
   matchlen =
-      FindMatchLengthWithLimit(data, &dictionary->data[offset], len);
-  if (matchlen + kCutoffTransformsCount <= len || matchlen == 0) {
+      FindMatchLengthWithLimit(data, &dictionary->words->data[offset], len);
+  if (matchlen + dictionary->cutoffTransformsCount <= len || matchlen == 0) {
     return BROTLI_FALSE;
   }
   {
     size_t cut = len - matchlen;
-    size_t transform_id =
-        (cut << 2) + (size_t)((kCutoffTransforms >> (cut * 6)) & 0x3F);
+    size_t transform_id = (cut << 2) +
+        (size_t)((dictionary->cutoffTransforms >> (cut * 6)) & 0x3F);
     backward = max_backward + dist + 1 +
-        (transform_id << dictionary->size_bits_by_length[len]);
+        (transform_id << dictionary->words->size_bits_by_length[len]);
   }
-  if (backward >= BROTLI_MAX_DISTANCE) {
+  if (backward > max_distance) {
     return BROTLI_FALSE;
   }
   score = BackwardReferenceScore(matchlen, backward);
@@ -188,9 +190,10 @@
 }
 
 static BROTLI_INLINE void SearchInStaticDictionary(
-    const BrotliDictionary* dictionary, const uint16_t* dictionary_hash,
+    const BrotliEncoderDictionary* dictionary,
     HasherHandle handle, const uint8_t* data, size_t max_length,
-    size_t max_backward, HasherSearchResult* out, BROTLI_BOOL shallow) {
+    size_t max_backward, size_t max_distance,
+    HasherSearchResult* out, BROTLI_BOOL shallow) {
   size_t key;
   size_t i;
   HasherCommon* self = GetHasherCommon(handle);
@@ -199,11 +202,11 @@
   }
   key = Hash14(data) << 1;
   for (i = 0; i < (shallow ? 1u : 2u); ++i, ++key) {
-    size_t item = dictionary_hash[key];
+    size_t item = dictionary->hash_table[key];
     self->dict_num_lookups++;
     if (item != 0) {
       BROTLI_BOOL item_matches = TestStaticDictionaryItem(
-          dictionary, item, data, max_length, max_backward, out);
+          dictionary, item, data, max_length, max_backward, max_distance, out);
       if (item_matches) {
         self->dict_num_matches++;
       }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_forgetful_chain_inc.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_forgetful_chain_inc.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_forgetful_chain_inc.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -28,8 +28,8 @@
 static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 4; }
 
 /* HashBytes is the function that chooses the bucket to place the address in.*/
-static BROTLI_INLINE size_t FN(HashBytes)(const uint8_t *data) {
-  const uint32_t h = BROTLI_UNALIGNED_LOAD32(data) * kHashMul32;
+static BROTLI_INLINE size_t FN(HashBytes)(const uint8_t* data) {
+  const uint32_t h = BROTLI_UNALIGNED_LOAD32LE(data) * kHashMul32;
   /* The higher bits contain more mixture from the multiplication,
      so we take our results from there. */
   return h >> (32 - BUCKET_BITS);
@@ -115,7 +115,7 @@
 }
 
 static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle,
-    const uint8_t *data, const size_t mask, const size_t ix_start,
+    const uint8_t* data, const size_t mask, const size_t ix_start,
     const size_t ix_end) {
   size_t i;
   for (i = ix_start; i < ix_end; ++i) {
@@ -154,11 +154,12 @@
    Writes the best match into |out|.
    |out|->score is updated only if a better match is found. */
 static BROTLI_INLINE void FN(FindLongestMatch)(HasherHandle handle,
-    const BrotliDictionary* dictionary, const uint16_t* dictionary_hash,
+    const BrotliEncoderDictionary* dictionary,
     const uint8_t* BROTLI_RESTRICT data, const size_t ring_buffer_mask,
     const int* BROTLI_RESTRICT distance_cache,
     const size_t cur_ix, const size_t max_length, const size_t max_backward,
-    const size_t gap, HasherSearchResult* BROTLI_RESTRICT out) {
+    const size_t gap, const size_t max_distance,
+    HasherSearchResult* BROTLI_RESTRICT out) {
   HashForgetfulChain* self = FN(Self)(handle);
   const size_t cur_ix_masked = cur_ix & ring_buffer_mask;
   /* Don't accept a short copy from far away. */
@@ -240,9 +241,9 @@
     FN(Store)(handle, data, ring_buffer_mask, cur_ix);
   }
   if (out->score == min_score) {
-    SearchInStaticDictionary(dictionary, dictionary_hash,
-        handle, &data[cur_ix_masked], max_length, max_backward + gap, out,
-        BROTLI_FALSE);
+    SearchInStaticDictionary(dictionary,
+        handle, &data[cur_ix_masked], max_length, max_backward + gap,
+        max_distance, out, BROTLI_FALSE);
   }
 }
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match64_inc.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match64_inc.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match64_inc.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -20,7 +20,7 @@
 static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 8; }
 
 /* HashBytes is the function that chooses the bucket to place the address in. */
-static BROTLI_INLINE uint32_t FN(HashBytes)(const uint8_t *data,
+static BROTLI_INLINE uint32_t FN(HashBytes)(const uint8_t* data,
                                             const uint64_t mask,
                                             const int shift) {
   const uint64_t h = (BROTLI_UNALIGNED_LOAD64LE(data) & mask) * kHashMul64Long;
@@ -105,7 +105,7 @@
 
 /* Look at 4 bytes at &data[ix & mask].
    Compute a hash from these, and store the value of ix at that position. */
-static BROTLI_INLINE void FN(Store)(HasherHandle handle, const uint8_t *data,
+static BROTLI_INLINE void FN(Store)(HasherHandle handle, const uint8_t* data,
     const size_t mask, const size_t ix) {
   HashLongestMatch* self = FN(Self)(handle);
   uint16_t* num = FN(Num)(self);
@@ -119,7 +119,7 @@
 }
 
 static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle,
-    const uint8_t *data, const size_t mask, const size_t ix_start,
+    const uint8_t* data, const size_t mask, const size_t ix_start,
     const size_t ix_end) {
   size_t i;
   for (i = ix_start; i < ix_end; ++i) {
@@ -158,11 +158,11 @@
    Writes the best match into |out|.
    |out|->score is updated only if a better match is found. */
 static BROTLI_INLINE void FN(FindLongestMatch)(HasherHandle handle,
-    const BrotliDictionary* dictionary, const uint16_t* dictionary_hash,
+    const BrotliEncoderDictionary* dictionary,
     const uint8_t* BROTLI_RESTRICT data, const size_t ring_buffer_mask,
     const int* BROTLI_RESTRICT distance_cache, const size_t cur_ix,
     const size_t max_length, const size_t max_backward, const size_t gap,
-    HasherSearchResult* BROTLI_RESTRICT out) {
+    const size_t max_distance, HasherSearchResult* BROTLI_RESTRICT out) {
   HasherCommon* common = GetHasherCommon(handle);
   HashLongestMatch* self = FN(Self)(handle);
   uint16_t* num = FN(Num)(self);
@@ -257,9 +257,9 @@
     ++num[key];
   }
   if (min_score == out->score) {
-    SearchInStaticDictionary(dictionary, dictionary_hash,
-        handle, &data[cur_ix_masked], max_length, max_backward + gap, out,
-        BROTLI_FALSE);
+    SearchInStaticDictionary(dictionary,
+        handle, &data[cur_ix_masked], max_length, max_backward + gap,
+        max_distance, out, BROTLI_FALSE);
   }
 }
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match_inc.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match_inc.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match_inc.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -20,8 +20,8 @@
 static BROTLI_INLINE size_t FN(StoreLookahead)(void) { return 4; }
 
 /* HashBytes is the function that chooses the bucket to place the address in. */
-static uint32_t FN(HashBytes)(const uint8_t *data, const int shift) {
-  uint32_t h = BROTLI_UNALIGNED_LOAD32(data) * kHashMul32;
+static uint32_t FN(HashBytes)(const uint8_t* data, const int shift) {
+  uint32_t h = BROTLI_UNALIGNED_LOAD32LE(data) * kHashMul32;
   /* The higher bits contain more mixture from the multiplication,
      so we take our results from there. */
   return (uint32_t)(h >> shift);
@@ -112,7 +112,7 @@
 }
 
 static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle,
-    const uint8_t *data, const size_t mask, const size_t ix_start,
+    const uint8_t* data, const size_t mask, const size_t ix_start,
     const size_t ix_end) {
   size_t i;
   for (i = ix_start; i < ix_end; ++i) {
@@ -151,11 +151,11 @@
    Writes the best match into |out|.
    |out|->score is updated only if a better match is found. */
 static BROTLI_INLINE void FN(FindLongestMatch)(HasherHandle handle,
-    const BrotliDictionary* dictionary, const uint16_t* dictionary_hash,
+    const BrotliEncoderDictionary* dictionary,
     const uint8_t* BROTLI_RESTRICT data, const size_t ring_buffer_mask,
     const int* BROTLI_RESTRICT distance_cache, const size_t cur_ix,
     const size_t max_length, const size_t max_backward, const size_t gap,
-    HasherSearchResult* BROTLI_RESTRICT out) {
+    const size_t max_distance, HasherSearchResult* BROTLI_RESTRICT out) {
   HasherCommon* common = GetHasherCommon(handle);
   HashLongestMatch* self = FN(Self)(handle);
   uint16_t* num = FN(Num)(self);
@@ -249,9 +249,9 @@
     ++num[key];
   }
   if (min_score == out->score) {
-    SearchInStaticDictionary(dictionary, dictionary_hash,
-        handle, &data[cur_ix_masked], max_length, max_backward + gap, out,
-        BROTLI_FALSE);
+    SearchInStaticDictionary(dictionary,
+        handle, &data[cur_ix_masked], max_length, max_backward + gap,
+        max_distance, out, BROTLI_FALSE);
   }
 }
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match_quickly_inc.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match_quickly_inc.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_longest_match_quickly_inc.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -81,7 +81,7 @@
    Compute a hash from these, and store the value somewhere within
    [ix .. ix+3]. */
 static BROTLI_INLINE void FN(Store)(HasherHandle handle,
-    const uint8_t *data, const size_t mask, const size_t ix) {
+    const uint8_t* data, const size_t mask, const size_t ix) {
   const uint32_t key = FN(HashBytes)(&data[ix & mask]);
   /* Wiggle the value with the bucket sweep range. */
   const uint32_t off = (ix >> 3) % BUCKET_SWEEP;
@@ -89,7 +89,7 @@
 }
 
 static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle,
-    const uint8_t *data, const size_t mask, const size_t ix_start,
+    const uint8_t* data, const size_t mask, const size_t ix_start,
     const size_t ix_end) {
   size_t i;
   for (i = ix_start; i < ix_end; ++i) {
@@ -125,11 +125,12 @@
    Writes the best match into |out|.
    |out|->score is updated only if a better match is found. */
 static BROTLI_INLINE void FN(FindLongestMatch)(
-    HasherHandle handle, const BrotliDictionary* dictionary,
-    const uint16_t* dictionary_hash, const uint8_t* BROTLI_RESTRICT data,
+    HasherHandle handle, const BrotliEncoderDictionary* dictionary,
+    const uint8_t* BROTLI_RESTRICT data,
     const size_t ring_buffer_mask, const int* BROTLI_RESTRICT distance_cache,
     const size_t cur_ix, const size_t max_length, const size_t max_backward,
-    const size_t gap, HasherSearchResult* BROTLI_RESTRICT out) {
+    const size_t gap, const size_t max_distance,
+    HasherSearchResult* BROTLI_RESTRICT out) {
   HashLongestMatchQuickly* self = FN(Self)(handle);
   const size_t best_len_in = out->len;
   const size_t cur_ix_masked = cur_ix & ring_buffer_mask;
@@ -191,7 +192,7 @@
       }
     }
   } else {
-    uint32_t *bucket = self->buckets_ + key;
+    uint32_t* bucket = self->buckets_ + key;
     int i;
     prev_ix = *bucket++;
     for (i = 0; i < BUCKET_SWEEP; ++i, prev_ix = *bucket++) {
@@ -221,9 +222,9 @@
     }
   }
   if (USE_DICTIONARY && min_score == out->score) {
-    SearchInStaticDictionary(dictionary, dictionary_hash,
-        handle, &data[cur_ix_masked], max_length, max_backward + gap, out,
-        BROTLI_TRUE);
+    SearchInStaticDictionary(dictionary,
+        handle, &data[cur_ix_masked], max_length, max_backward + gap,
+        max_distance, out, BROTLI_TRUE);
   }
   self->buckets_[key + ((cur_ix >> 3) % BUCKET_SWEEP)] = (uint32_t)cur_ix;
 }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_to_binary_tree_inc.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_to_binary_tree_inc.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/hash_to_binary_tree_inc.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -24,8 +24,8 @@
   return MAX_TREE_COMP_LENGTH;
 }
 
-static uint32_t FN(HashBytes)(const uint8_t *data) {
-  uint32_t h = BROTLI_UNALIGNED_LOAD32(data) * kHashMul32;
+static uint32_t FN(HashBytes)(const uint8_t* data) {
+  uint32_t h = BROTLI_UNALIGNED_LOAD32LE(data) * kHashMul32;
   /* The higher bits contain more mixture from the multiplication,
      so we take our results from there. */
   return h >> (32 - BUCKET_BITS);
@@ -154,12 +154,13 @@
     {
       const size_t cur_len = BROTLI_MIN(size_t, best_len_left, best_len_right);
       size_t len;
-      assert(cur_len <= MAX_TREE_COMP_LENGTH);
+      BROTLI_DCHECK(cur_len <= MAX_TREE_COMP_LENGTH);
       len = cur_len +
           FindMatchLengthWithLimit(&data[cur_ix_masked + cur_len],
                                    &data[prev_ix_masked + cur_len],
                                    max_length - cur_len);
-      assert(0 == memcmp(&data[cur_ix_masked], &data[prev_ix_masked], len));
+      BROTLI_DCHECK(
+          0 == memcmp(&data[cur_ix_masked], &data[prev_ix_masked], len));
       if (matches && len > *best_len) {
         *best_len = len;
         InitBackwardMatch(matches++, backward, len);
@@ -199,7 +200,7 @@
    sorted by strictly increasing length and (non-strictly) increasing
    distance. */
 static BROTLI_INLINE size_t FN(FindAllMatches)(HasherHandle handle,
-    const BrotliDictionary* dictionary, const uint8_t* data,
+    const BrotliEncoderDictionary* dictionary, const uint8_t* data,
     const size_t ring_buffer_mask, const size_t cur_ix,
     const size_t max_length, const size_t max_backward, const size_t gap,
     const BrotliEncoderParams* params, BackwardMatch* matches) {
@@ -251,7 +252,7 @@
         uint32_t dict_id = dict_matches[l];
         if (dict_id < kInvalidMatch) {
           size_t distance = max_backward + gap + (dict_id >> 5) + 1;
-          if (distance < BROTLI_MAX_DISTANCE) {
+          if (distance <= params->dist.max_distance) {
             InitDictionaryBackwardMatch(matches++, distance, l, dict_id & 31);
           }
         }
@@ -264,7 +265,7 @@
 /* Stores the hash of the next 4 bytes and re-roots the binary tree at the
    current sequence, without returning any matches.
    REQUIRES: ix + MAX_TREE_COMP_LENGTH <= end-of-current-block */
-static BROTLI_INLINE void FN(Store)(HasherHandle handle, const uint8_t *data,
+static BROTLI_INLINE void FN(Store)(HasherHandle handle, const uint8_t* data,
     const size_t mask, const size_t ix) {
   HashToBinaryTree* self = FN(Self)(handle);
   /* Maximum distance is window size - 16, see section 9.1. of the spec. */
@@ -274,7 +275,7 @@
 }
 
 static BROTLI_INLINE void FN(StoreRange)(HasherHandle handle,
-    const uint8_t *data, const size_t mask, const size_t ix_start,
+    const uint8_t* data, const size_t mask, const size_t ix_start,
     const size_t ix_end) {
   size_t i = ix_start;
   size_t j = ix_start;

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram.c	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -8,9 +8,9 @@
 
 #include "./histogram.h"
 
+#include "../common/context.h"
 #include "./block_splitter.h"
 #include "./command.h"
-#include "./context.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
@@ -63,13 +63,16 @@
     BlockSplitIteratorNext(&insert_and_copy_it);
     HistogramAddCommand(&insert_and_copy_histograms[insert_and_copy_it.type_],
         cmd->cmd_prefix_);
+    /* TODO: unwrap iterator blocks. */
     for (j = cmd->insert_len_; j != 0; --j) {
       size_t context;
       BlockSplitIteratorNext(&literal_it);
-      context = context_modes ?
-          ((literal_it.type_ << BROTLI_LITERAL_CONTEXT_BITS) +
-              Context(prev_byte, prev_byte2, context_modes[literal_it.type_])) :
-          literal_it.type_;
+      context = literal_it.type_;
+      if (context_modes) {
+        ContextLut lut = BROTLI_CONTEXT_LUT(context_modes[context]);
+        context = (context << BROTLI_LITERAL_CONTEXT_BITS) +
+            BROTLI_CONTEXT(prev_byte, prev_byte2, lut);
+      }
       HistogramAddLiteral(&literal_histograms[context],
           ringbuffer[pos & mask]);
       prev_byte2 = prev_byte;
@@ -86,7 +89,7 @@
         context = (dist_it.type_ << BROTLI_DISTANCE_CONTEXT_BITS) +
             CommandDistanceContext(cmd);
         HistogramAddDistance(&copy_dist_histograms[context],
-            cmd->dist_prefix_);
+            cmd->dist_prefix_ & 0x3FF);
       }
     }
   }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -12,16 +12,19 @@
 #include <string.h>  /* memset */
 
 #include "../common/constants.h"
+#include "../common/context.h"
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./block_splitter.h"
 #include "./command.h"
-#include "./context.h"
-#include "./port.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
 #endif
 
+/* The distance symbols effectively used by "Large Window Brotli" (32-bit). */
+#define BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS 544
+
 #define FN(X) X ## Literal
 #define DATA_SIZE BROTLI_NUM_LITERAL_SYMBOLS
 #define DataType uint8_t
@@ -38,7 +41,7 @@
 #undef FN
 
 #define FN(X) X ## Distance
-#define DATA_SIZE BROTLI_NUM_DISTANCE_SYMBOLS
+#define DATA_SIZE BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS
 #include "./histogram_inc.h"  /* NOLINT(build/include) */
 #undef DataType
 #undef DATA_SIZE

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram_inc.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram_inc.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/histogram_inc.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -33,7 +33,7 @@
 }
 
 static BROTLI_INLINE void FN(HistogramAddVector)(FN(Histogram)* self,
-    const DataType *p, size_t n) {
+    const DataType* p, size_t n) {
   self->total_count_ += n;
   n += 1;
   while (--n) ++self->data_[*p++];

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/literal_cost.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/literal_cost.c	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/literal_cost.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -9,9 +9,9 @@
 
 #include "./literal_cost.h"
 
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./fast_log.h"
-#include "./port.h"
 #include "./utf8_util.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
@@ -25,7 +25,7 @@
     return BROTLI_MIN(size_t, 1, clamp);
   } else {
     /* Let's decide over the last byte if this ends the sequence. */
-    if (last < 0xe0) {
+    if (last < 0xE0) {
       return 0;  /* Completed two or three byte coding. */
     } else {  /* Next one is the 'Byte 3' of utf-8 encoding. */
       return BROTLI_MIN(size_t, 2, clamp);
@@ -34,7 +34,7 @@
 }
 
 static size_t DecideMultiByteStatsLevel(size_t pos, size_t len, size_t mask,
-                                        const uint8_t *data) {
+                                        const uint8_t* data) {
   size_t counts[3] = { 0 };
   size_t max_utf8 = 1;  /* should be 2, but 1 compresses better. */
   size_t last_c = 0;
@@ -54,7 +54,7 @@
 }
 
 static void EstimateBitCostsForLiteralsUTF8(size_t pos, size_t len, size_t mask,
-                                            const uint8_t *data, float *cost) {
+                                            const uint8_t* data, float* cost) {
   /* max_utf8 is 0 (normal ASCII single byte modeling),
      1 (for 2-byte UTF-8 modeling), or 2 (for 3-byte UTF-8 modeling). */
   const size_t max_utf8 = DecideMultiByteStatsLevel(pos, len, mask, data);
@@ -125,7 +125,7 @@
 }
 
 void BrotliEstimateBitCostsForLiterals(size_t pos, size_t len, size_t mask,
-                                       const uint8_t *data, float *cost) {
+                                       const uint8_t* data, float* cost) {
   if (BrotliIsMostlyUTF8(data, pos, mask, len, kMinUTF8Ratio)) {
     EstimateBitCostsForLiteralsUTF8(pos, len, mask, data, cost);
     return;

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/literal_cost.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/literal_cost.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/literal_cost.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -10,8 +10,8 @@
 #ifndef BROTLI_ENC_LITERAL_COST_H_
 #define BROTLI_ENC_LITERAL_COST_H_
 
+#include "../common/platform.h"
 #include <brotli/types.h>
-#include "./port.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
@@ -21,7 +21,7 @@
    ring-buffer (data, mask) will take entropy coded and writes these estimates
    to the cost[0..len) array. */
 BROTLI_INTERNAL void BrotliEstimateBitCostsForLiterals(
-    size_t pos, size_t len, size_t mask, const uint8_t *data, float *cost);
+    size_t pos, size_t len, size_t mask, const uint8_t* data, float* cost);
 
 #if defined(__cplusplus) || defined(c_plusplus)
 }  /* extern "C" */

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.c	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -9,12 +9,11 @@
 
 #include "./memory.h"
 
-#include <assert.h>
 #include <stdlib.h>  /* exit, free, malloc */
 #include <string.h>  /* memcpy */
 
+#include "../common/platform.h"
 #include <brotli/types.h>
-#include "./port.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
@@ -28,22 +27,12 @@
 #define NEW_ALLOCATED_OFFSET MAX_PERM_ALLOCATED
 #define NEW_FREED_OFFSET (MAX_PERM_ALLOCATED + MAX_NEW_ALLOCATED)
 
-static void* DefaultAllocFunc(void* opaque, size_t size) {
-  BROTLI_UNUSED(opaque);
-  return malloc(size);
-}
-
-static void DefaultFreeFunc(void* opaque, void* address) {
-  BROTLI_UNUSED(opaque);
-  free(address);
-}
-
 void BrotliInitMemoryManager(
     MemoryManager* m, brotli_alloc_func alloc_func, brotli_free_func free_func,
     void* opaque) {
   if (!alloc_func) {
-    m->alloc_func = DefaultAllocFunc;
-    m->free_func = DefaultFreeFunc;
+    m->alloc_func = BrotliDefaultAllocFunc;
+    m->free_func = BrotliDefaultFreeFunc;
     m->opaque = 0;
   } else {
     m->alloc_func = alloc_func;
@@ -132,11 +121,11 @@
         m->pointers + NEW_FREED_OFFSET, m->new_freed);
     m->perm_allocated -= annihilated;
     m->new_freed -= annihilated;
-    assert(m->new_freed == 0);
+    BROTLI_DCHECK(m->new_freed == 0);
   }
 
   if (m->new_allocated != 0) {
-    assert(m->perm_allocated + m->new_allocated <= MAX_PERM_ALLOCATED);
+    BROTLI_DCHECK(m->perm_allocated + m->new_allocated <= MAX_PERM_ALLOCATED);
     memcpy(m->pointers + PERM_ALLOCATED_OFFSET + m->perm_allocated,
            m->pointers + NEW_ALLOCATED_OFFSET,
            sizeof(void*) * m->new_allocated);

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-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/memory.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -9,8 +9,10 @@
 #ifndef BROTLI_ENC_MEMORY_H_
 #define BROTLI_ENC_MEMORY_H_
 
+#include <string.h>  /* memcpy */
+
+#include "../common/platform.h"
 #include <brotli/types.h>
-#include "./port.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
@@ -56,6 +58,28 @@
 
 BROTLI_INTERNAL void BrotliWipeOutMemoryManager(MemoryManager* m);
 
+/*
+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;                               \
+  }                                              \
+}
+
 #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-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -10,15 +10,15 @@
 #include "./metablock.h"
 
 #include "../common/constants.h"
+#include "../common/context.h"
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./bit_cost.h"
 #include "./block_splitter.h"
 #include "./cluster.h"
-#include "./context.h"
 #include "./entropy_encode.h"
 #include "./histogram.h"
 #include "./memory.h"
-#include "./port.h"
 #include "./quality.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
@@ -77,7 +77,7 @@
   if (BROTLI_IS_OOM(m)) return;
   ClearHistogramsDistance(distance_histograms, distance_histograms_size);
 
-  assert(mb->command_histograms == 0);
+  BROTLI_DCHECK(mb->command_histograms == 0);
   mb->command_histograms_size = mb->command_split.num_types;
   mb->command_histograms =
       BROTLI_ALLOC(m, HistogramCommand, mb->command_histograms_size);
@@ -90,7 +90,7 @@
       literal_histograms, mb->command_histograms, distance_histograms);
   BROTLI_FREE(m, literal_context_modes);
 
-  assert(mb->literal_context_map == 0);
+  BROTLI_DCHECK(mb->literal_context_map == 0);
   mb->literal_context_map_size =
       mb->literal_split.num_types << BROTLI_LITERAL_CONTEXT_BITS;
   mb->literal_context_map =
@@ -97,7 +97,7 @@
       BROTLI_ALLOC(m, uint32_t, mb->literal_context_map_size);
   if (BROTLI_IS_OOM(m)) return;
 
-  assert(mb->literal_histograms == 0);
+  BROTLI_DCHECK(mb->literal_histograms == 0);
   mb->literal_histograms_size = mb->literal_context_map_size;
   mb->literal_histograms =
       BROTLI_ALLOC(m, HistogramLiteral, mb->literal_histograms_size);
@@ -121,7 +121,7 @@
     }
   }
 
-  assert(mb->distance_context_map == 0);
+  BROTLI_DCHECK(mb->distance_context_map == 0);
   mb->distance_context_map_size =
       mb->distance_split.num_types << BROTLI_DISTANCE_CONTEXT_BITS;
   mb->distance_context_map =
@@ -128,7 +128,7 @@
       BROTLI_ALLOC(m, uint32_t, mb->distance_context_map_size);
   if (BROTLI_IS_OOM(m)) return;
 
-  assert(mb->distance_histograms == 0);
+  BROTLI_DCHECK(mb->distance_histograms == 0);
   mb->distance_histograms_size = mb->distance_context_map_size;
   mb->distance_histograms =
       BROTLI_ALLOC(m, HistogramDistance, mb->distance_histograms_size);
@@ -200,7 +200,7 @@
     size_t* histograms_size) {
   size_t max_num_blocks = num_symbols / min_block_size + 1;
   size_t max_num_types;
-  assert(num_contexts <= BROTLI_MAX_STATIC_CONTEXTS);
+  BROTLI_DCHECK(num_contexts <= BROTLI_MAX_STATIC_CONTEXTS);
 
   self->alphabet_size_ = alphabet_size;
   self->num_contexts_ = num_contexts;
@@ -226,7 +226,7 @@
   if (BROTLI_IS_OOM(m)) return;
   split->num_blocks = max_num_blocks;
   if (BROTLI_IS_OOM(m)) return;
-  assert(*histograms == 0);
+  BROTLI_DCHECK(*histograms == 0);
   *histograms_size = max_num_types * num_contexts;
   *histograms = BROTLI_ALLOC(m, HistogramLiteral, *histograms_size);
   self->histograms_ = *histograms;
@@ -379,7 +379,7 @@
                               const uint32_t* static_context_map,
                               MetaBlockSplit* mb) {
   size_t i;
-  assert(mb->literal_context_map == 0);
+  BROTLI_DCHECK(mb->literal_context_map == 0);
   mb->literal_context_map_size =
       mb->literal_split.num_types << BROTLI_LITERAL_CONTEXT_BITS;
   mb->literal_context_map =
@@ -398,9 +398,9 @@
 
 static BROTLI_INLINE void BrotliBuildMetaBlockGreedyInternal(
     MemoryManager* m, const uint8_t* ringbuffer, size_t pos, size_t mask,
-    uint8_t prev_byte, uint8_t prev_byte2, ContextType literal_context_mode,
+    uint8_t prev_byte, uint8_t prev_byte2, ContextLut literal_context_lut,
     const size_t num_contexts, const uint32_t* static_context_map,
-    const Command *commands, size_t n_commands, MetaBlockSplit* mb) {
+    const Command* commands, size_t n_commands, MetaBlockSplit* mb) {
   union {
     BlockSplitterLiteral plain;
     ContextBlockSplitter ctx;
@@ -441,7 +441,8 @@
       if (num_contexts == 1) {
         BlockSplitterAddSymbolLiteral(&lit_blocks.plain, literal);
       } else {
-        size_t context = Context(prev_byte, prev_byte2, literal_context_mode);
+        size_t context =
+            BROTLI_CONTEXT(prev_byte, prev_byte2, literal_context_lut);
         ContextBlockSplitterAddSymbol(&lit_blocks.ctx, m, literal,
                                       static_context_map[context]);
         if (BROTLI_IS_OOM(m)) return;
@@ -455,7 +456,7 @@
       prev_byte2 = ringbuffer[(pos - 2) & mask];
       prev_byte = ringbuffer[(pos - 1) & mask];
       if (cmd.cmd_prefix_ >= 128) {
-        BlockSplitterAddSymbolDistance(&dist_blocks, cmd.dist_prefix_);
+        BlockSplitterAddSymbolDistance(&dist_blocks, cmd.dist_prefix_ & 0x3FF);
       }
     }
   }
@@ -482,7 +483,7 @@
                                 size_t mask,
                                 uint8_t prev_byte,
                                 uint8_t prev_byte2,
-                                ContextType literal_context_mode,
+                                ContextLut literal_context_lut,
                                 size_t num_contexts,
                                 const uint32_t* static_context_map,
                                 const Command* commands,
@@ -490,19 +491,17 @@
                                 MetaBlockSplit* mb) {
   if (num_contexts == 1) {
     BrotliBuildMetaBlockGreedyInternal(m, ringbuffer, pos, mask, prev_byte,
-        prev_byte2, literal_context_mode, 1, NULL, commands, n_commands, mb);
+        prev_byte2, literal_context_lut, 1, NULL, commands, n_commands, mb);
   } else {
     BrotliBuildMetaBlockGreedyInternal(m, ringbuffer, pos, mask, prev_byte,
-        prev_byte2, literal_context_mode, num_contexts, static_context_map,
+        prev_byte2, literal_context_lut, num_contexts, static_context_map,
         commands, n_commands, mb);
   }
 }
 
-void BrotliOptimizeHistograms(size_t num_direct_distance_codes,
-                              size_t distance_postfix_bits,
+void BrotliOptimizeHistograms(uint32_t num_distance_codes,
                               MetaBlockSplit* mb) {
   uint8_t good_for_rle[BROTLI_NUM_COMMAND_SYMBOLS];
-  size_t num_distance_codes;
   size_t i;
   for (i = 0; i < mb->literal_histograms_size; ++i) {
     BrotliOptimizeHuffmanCountsForRle(256, mb->literal_histograms[i].data_,
@@ -513,9 +512,6 @@
                                       mb->command_histograms[i].data_,
                                       good_for_rle);
   }
-  num_distance_codes = BROTLI_NUM_DISTANCE_SHORT_CODES +
-      num_direct_distance_codes +
-      ((2 * BROTLI_MAX_DISTANCE_BITS) << distance_postfix_bits);
   for (i = 0; i < mb->distance_histograms_size; ++i) {
     BrotliOptimizeHuffmanCountsForRle(num_distance_codes,
                                       mb->distance_histograms[i].data_,

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-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -10,13 +10,13 @@
 #ifndef BROTLI_ENC_METABLOCK_H_
 #define BROTLI_ENC_METABLOCK_H_
 
+#include "../common/context.h"
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./block_splitter.h"
 #include "./command.h"
-#include "./context.h"
 #include "./histogram.h"
 #include "./memory.h"
-#include "./port.h"
 #include "./quality.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
@@ -85,12 +85,11 @@
    is the same for all block types. */
 BROTLI_INTERNAL void BrotliBuildMetaBlockGreedy(
     MemoryManager* m, const uint8_t* ringbuffer, size_t pos, size_t mask,
-    uint8_t prev_byte, uint8_t prev_byte2, ContextType literal_context_mode,
+    uint8_t prev_byte, uint8_t prev_byte2, ContextLut literal_context_lut,
     size_t num_contexts, const uint32_t* static_context_map,
     const Command* commands, size_t n_commands, MetaBlockSplit* mb);
 
-BROTLI_INTERNAL void BrotliOptimizeHistograms(size_t num_direct_distance_codes,
-                                              size_t distance_postfix_bits,
+BROTLI_INTERNAL void BrotliOptimizeHistograms(uint32_t num_distance_codes,
                                               MetaBlockSplit* mb);
 
 #if defined(__cplusplus) || defined(c_plusplus)

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock_inc.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock_inc.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/metablock_inc.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -67,7 +67,7 @@
       split->lengths, split->lengths_alloc_size, max_num_blocks);
   if (BROTLI_IS_OOM(m)) return;
   self->split_->num_blocks = max_num_blocks;
-  assert(*histograms == 0);
+  BROTLI_DCHECK(*histograms == 0);
   *histograms_size = max_num_types;
   *histograms = BROTLI_ALLOC(m, HistogramType, *histograms_size);
   self->histograms_ = *histograms;

Added: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/params.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/params.h	                        (rev 0)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/params.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -0,0 +1,44 @@
+/* Copyright 2017 Google Inc. All Rights Reserved.
+
+   Distributed under MIT license.
+   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Parameters for the Brotli encoder with chosen quality levels. */
+
+#ifndef BROTLI_ENC_PARAMS_H_
+#define BROTLI_ENC_PARAMS_H_
+
+#include <brotli/encode.h>
+#include "./encoder_dict.h"
+
+typedef struct BrotliHasherParams {
+  int type;
+  int bucket_bits;
+  int block_bits;
+  int hash_len;
+  int num_last_distances_to_check;
+} BrotliHasherParams;
+
+typedef struct BrotliDistanceParams {
+  uint32_t num_direct_distance_codes;
+  uint32_t distance_postfix_bits;
+  uint32_t alphabet_size;
+  size_t max_distance;
+} BrotliDistanceParams;
+
+/* Encoding parameters */
+typedef struct BrotliEncoderParams {
+  BrotliEncoderMode mode;
+  int quality;
+  int lgwin;
+  int lgblock;
+  size_t size_hint;
+  BROTLI_BOOL disable_literal_context_modeling;
+  BROTLI_BOOL large_window;
+  BrotliHasherParams hasher;
+  BrotliDistanceParams dist;
+  BrotliEncoderDictionary dictionary;
+} BrotliEncoderParams;
+
+#endif  /* BROTLI_ENC_PARAMS_H_ */


Property changes on: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/params.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/prefix.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/prefix.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/prefix.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -11,7 +11,7 @@
 #define BROTLI_ENC_PREFIX_H_
 
 #include "../common/constants.h"
-#include <brotli/port.h>
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./fast_log.h"
 
@@ -39,11 +39,10 @@
     size_t prefix = (dist >> bucket) & 1;
     size_t offset = (2 + prefix) << bucket;
     size_t nbits = bucket - postfix_bits;
-    *code = (uint16_t)(
+    *code = (uint16_t)((nbits << 10) |
         (BROTLI_NUM_DISTANCE_SHORT_CODES + num_direct_codes +
          ((2 * (nbits - 1) + prefix) << postfix_bits) + postfix));
-    *extra_bits = (uint32_t)(
-        (nbits << 24) | ((dist - offset) >> postfix_bits));
+    *extra_bits = (uint32_t)((dist - offset) >> postfix_bits);
   }
 }
 

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-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/quality.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -10,8 +10,9 @@
 #ifndef BROTLI_ENC_QUALITY_H_
 #define BROTLI_ENC_QUALITY_H_
 
+#include "../common/platform.h"
 #include <brotli/encode.h>
-#include "./port.h"
+#include "./params.h"
 
 #define FAST_ONE_PASS_COMPRESSION_QUALITY 0
 #define FAST_TWO_PASS_COMPRESSION_QUALITY 1
@@ -30,27 +31,8 @@
 
 /* For quality below MIN_QUALITY_FOR_BLOCK_SPLIT there is no block splitting,
    so we buffer at most this much literals and commands. */
-#define MAX_NUM_DELAYED_SYMBOLS 0x2fff
+#define MAX_NUM_DELAYED_SYMBOLS 0x2FFF
 
-typedef struct BrotliHasherParams {
-  int type;
-  int bucket_bits;
-  int block_bits;
-  int hash_len;
-  int num_last_distances_to_check;
-} BrotliHasherParams;
-
-/* Encoding parameters */
-typedef struct BrotliEncoderParams {
-  BrotliEncoderMode mode;
-  int quality;
-  int lgwin;
-  int lgblock;
-  size_t size_hint;
-  BROTLI_BOOL disable_literal_context_modeling;
-  BrotliHasherParams hasher;
-} BrotliEncoderParams;
-
 /* Returns hash-table size for quality levels 0 and 1. */
 static BROTLI_INLINE size_t MaxHashTableSize(int quality) {
   return quality == FAST_ONE_PASS_COMPRESSION_QUALITY ? 1 << 15 : 1 << 17;
@@ -78,10 +60,15 @@
 static BROTLI_INLINE void SanitizeParams(BrotliEncoderParams* params) {
   params->quality = BROTLI_MIN(int, BROTLI_MAX_QUALITY,
       BROTLI_MAX(int, BROTLI_MIN_QUALITY, params->quality));
+  if (params->quality <= MAX_QUALITY_FOR_STATIC_ENTROPY_CODES) {
+    params->large_window = BROTLI_FALSE;
+  }
   if (params->lgwin < BROTLI_MIN_WINDOW_BITS) {
     params->lgwin = BROTLI_MIN_WINDOW_BITS;
-  } else if (params->lgwin > BROTLI_MAX_WINDOW_BITS) {
-    params->lgwin = BROTLI_MAX_WINDOW_BITS;
+  } else {
+    int max_lgwin = params->large_window ? BROTLI_LARGE_MAX_WINDOW_BITS :
+                                           BROTLI_MAX_WINDOW_BITS;
+    if (params->lgwin > max_lgwin) params->lgwin = max_lgwin;
   }
 }
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/ringbuffer.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/ringbuffer.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/ringbuffer.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -11,9 +11,9 @@
 
 #include <string.h>  /* memcpy */
 
+#include "../common/platform.h"
 #include <brotli/types.h>
 #include "./memory.h"
-#include "./port.h"
 #include "./quality.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
@@ -41,9 +41,9 @@
   uint32_t pos_;
   /* The actual ring buffer containing the copy of the last two bytes, the data,
      and the copy of the beginning as a tail. */
-  uint8_t *data_;
+  uint8_t* data_;
   /* The start of the ring-buffer. */
-  uint8_t *buffer_;
+  uint8_t* buffer_;
 } RingBuffer;
 
 static BROTLI_INLINE void RingBufferInit(RingBuffer* rb) {
@@ -91,7 +91,7 @@
 }
 
 static BROTLI_INLINE void RingBufferWriteTail(
-    const uint8_t *bytes, size_t n, RingBuffer* rb) {
+    const uint8_t* bytes, size_t n, RingBuffer* rb) {
   const size_t masked_pos = rb->pos_ & rb->mask_;
   if (BROTLI_PREDICT_FALSE(masked_pos < rb->tail_size_)) {
     /* Just fill the tail buffer with the beginning data. */
@@ -103,7 +103,7 @@
 
 /* Push bytes into the ring buffer. */
 static BROTLI_INLINE void RingBufferWrite(
-    MemoryManager* m, const uint8_t *bytes, size_t n, RingBuffer* rb) {
+    MemoryManager* m, const uint8_t* bytes, size_t n, RingBuffer* rb) {
   if (rb->pos_ == 0 && n < rb->tail_size_) {
     /* Special case for the first write: to process the first block, we don't
        need to allocate the whole ring-buffer and we don't need the tail
@@ -144,12 +144,16 @@
              n - (rb->size_ - masked_pos));
     }
   }
-  rb->buffer_[-2] = rb->buffer_[rb->size_ - 2];
-  rb->buffer_[-1] = rb->buffer_[rb->size_ - 1];
-  rb->pos_ += (uint32_t)n;
-  if (rb->pos_ > (1u << 30)) {
-    /* Wrap, but preserve not-a-first-lap feature. */
-    rb->pos_ = (rb->pos_ & ((1u << 30) - 1)) | (1u << 30);
+  {
+    BROTLI_BOOL not_first_lap = (rb->pos_ & (1u << 31)) != 0;
+    uint32_t rb_pos_mask = (1u << 31) - 1;
+    rb->buffer_[-2] = rb->buffer_[rb->size_ - 2];
+    rb->buffer_[-1] = rb->buffer_[rb->size_ - 1];
+    rb->pos_ = (rb->pos_ & rb_pos_mask) + (uint32_t)(n & rb_pos_mask);
+    if (not_first_lap) {
+      /* Wrap, but preserve not-a-first-lap feature. */
+      rb->pos_ |= 1u << 31;
+    }
   }
 }
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict.c	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -7,21 +7,22 @@
 #include "./static_dict.h"
 
 #include "../common/dictionary.h"
+#include "../common/platform.h"
+#include "../common/transform.h"
+#include "./encoder_dict.h"
 #include "./find_match_length.h"
-#include "./port.h"
-#include "./static_dict_lut.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
 #endif
 
-static const uint8_t kUppercaseFirst = 10;
+/* TODO: use BrotliTransforms.cutOffTransforms instead. */
 static const uint8_t kOmitLastNTransforms[10] = {
   0, 12, 27, 23, 42, 63, 56, 48, 59, 64,
 };
 
-static BROTLI_INLINE uint32_t Hash(const uint8_t *data) {
-  uint32_t h = BROTLI_UNALIGNED_LOAD32(data) * kDictHashMul32;
+static BROTLI_INLINE uint32_t Hash(const uint8_t* data) {
+  uint32_t h = BROTLI_UNALIGNED_LOAD32LE(data) * kDictHashMul32;
   /* The higher bits contain more mixture from the multiplication,
      so we take our results from there. */
   return h >> (32 - kDictNumBits);
@@ -79,32 +80,33 @@
 }
 
 BROTLI_BOOL BrotliFindAllStaticDictionaryMatches(
-    const BrotliDictionary* dictionary, const uint8_t* data, size_t min_length,
-    size_t max_length, uint32_t* matches) {
+    const BrotliEncoderDictionary* dictionary, const uint8_t* data,
+    size_t min_length, size_t max_length, uint32_t* matches) {
   BROTLI_BOOL has_found_match = BROTLI_FALSE;
   {
-    size_t offset = kStaticDictionaryBuckets[Hash(data)];
+    size_t offset = dictionary->buckets[Hash(data)];
     BROTLI_BOOL end = !offset;
     while (!end) {
-      DictWord w = kStaticDictionaryWords[offset++];
+      DictWord w = dictionary->dict_words[offset++];
       const size_t l = w.len & 0x1F;
-      const size_t n = (size_t)1 << dictionary->size_bits_by_length[l];
+      const size_t n = (size_t)1 << dictionary->words->size_bits_by_length[l];
       const size_t id = w.idx;
       end = !!(w.len & 0x80);
       w.len = (uint8_t)l;
       if (w.transform == 0) {
         const size_t matchlen =
-            DictMatchLength(dictionary, data, id, l, max_length);
+            DictMatchLength(dictionary->words, data, id, l, max_length);
         const uint8_t* s;
         size_t minlen;
         size_t maxlen;
         size_t len;
-        /* Transform "" + kIdentity + "" */
+        /* Transform "" + BROTLI_TRANSFORM_IDENTITY + "" */
         if (matchlen == l) {
           AddMatch(id, l, l, matches);
           has_found_match = BROTLI_TRUE;
         }
-        /* Transforms "" + kOmitLast1 + "" and "" + kOmitLast1 + "ing " */
+        /* Transforms "" + BROTLI_TRANSFORM_OMIT_LAST_1 + "" and
+                      "" + BROTLI_TRANSFORM_OMIT_LAST_1 + "ing " */
         if (matchlen >= l - 1) {
           AddMatch(id + 12 * n, l - 1, l, matches);
           if (l + 2 < max_length &&
@@ -114,7 +116,7 @@
           }
           has_found_match = BROTLI_TRUE;
         }
-        /* Transform "" + kOmitLastN + "" (N = 2 .. 9) */
+        /* Transform "" + BROTLI_TRANSFORM_OMIT_LAST_# + "" (# = 2 .. 9) */
         minlen = min_length;
         if (l > 9) minlen = BROTLI_MAX(size_t, minlen, l - 9);
         maxlen = BROTLI_MIN(size_t, matchlen, l - 2);
@@ -126,7 +128,7 @@
           continue;
         }
         s = &data[l];
-        /* Transforms "" + kIdentity + <suffix> */
+        /* Transforms "" + BROTLI_TRANSFORM_IDENTITY + <suffix> */
         if (s[0] == ' ') {
           AddMatch(id + n, l + 1, l, matches);
           if (s[1] == 'a') {
@@ -273,12 +275,13 @@
           }
         }
       } else {
-        /* Set is_all_caps=0 for kUppercaseFirst and
-               is_all_caps=1 otherwise (kUppercaseAll) transform. */
+        /* Set is_all_caps=0 for BROTLI_TRANSFORM_UPPERCASE_FIRST and
+               is_all_caps=1 otherwise (BROTLI_TRANSFORM_UPPERCASE_ALL)
+           transform. */
         const BROTLI_BOOL is_all_caps =
-            TO_BROTLI_BOOL(w.transform != kUppercaseFirst);
+            TO_BROTLI_BOOL(w.transform != BROTLI_TRANSFORM_UPPERCASE_FIRST);
         const uint8_t* s;
-        if (!IsMatch(dictionary, w, data, max_length)) {
+        if (!IsMatch(dictionary->words, w, data, max_length)) {
           continue;
         }
         /* Transform "" + kUppercase{First,All} + "" */
@@ -323,27 +326,29 @@
   /* Transforms with prefixes " " and "." */
   if (max_length >= 5 && (data[0] == ' ' || data[0] == '.')) {
     BROTLI_BOOL is_space = TO_BROTLI_BOOL(data[0] == ' ');
-    size_t offset = kStaticDictionaryBuckets[Hash(&data[1])];
+    size_t offset = dictionary->buckets[Hash(&data[1])];
     BROTLI_BOOL end = !offset;
     while (!end) {
-      DictWord w = kStaticDictionaryWords[offset++];
+      DictWord w = dictionary->dict_words[offset++];
       const size_t l = w.len & 0x1F;
-      const size_t n = (size_t)1 << dictionary->size_bits_by_length[l];
+      const size_t n = (size_t)1 << dictionary->words->size_bits_by_length[l];
       const size_t id = w.idx;
       end = !!(w.len & 0x80);
       w.len = (uint8_t)l;
       if (w.transform == 0) {
         const uint8_t* s;
-        if (!IsMatch(dictionary, w, &data[1], max_length - 1)) {
+        if (!IsMatch(dictionary->words, w, &data[1], max_length - 1)) {
           continue;
         }
-        /* Transforms " " + kIdentity + "" and "." + kIdentity + "" */
+        /* Transforms " " + BROTLI_TRANSFORM_IDENTITY + "" and
+                      "." + BROTLI_TRANSFORM_IDENTITY + "" */
         AddMatch(id + (is_space ? 6 : 32) * n, l + 1, l, matches);
         has_found_match = BROTLI_TRUE;
         if (l + 2 >= max_length) {
           continue;
         }
-        /* Transforms " " + kIdentity + <suffix> and "." + kIdentity + <suffix>
+        /* Transforms " " + BROTLI_TRANSFORM_IDENTITY + <suffix> and
+                      "." + BROTLI_TRANSFORM_IDENTITY + <suffix>
         */
         s = &data[l + 1];
         if (s[0] == ' ') {
@@ -370,12 +375,13 @@
           }
         }
       } else if (is_space) {
-        /* Set is_all_caps=0 for kUppercaseFirst and
-               is_all_caps=1 otherwise (kUppercaseAll) transform. */
+        /* Set is_all_caps=0 for BROTLI_TRANSFORM_UPPERCASE_FIRST and
+               is_all_caps=1 otherwise (BROTLI_TRANSFORM_UPPERCASE_ALL)
+           transform. */
         const BROTLI_BOOL is_all_caps =
-            TO_BROTLI_BOOL(w.transform != kUppercaseFirst);
+            TO_BROTLI_BOOL(w.transform != BROTLI_TRANSFORM_UPPERCASE_FIRST);
         const uint8_t* s;
-        if (!IsMatch(dictionary, w, &data[1], max_length - 1)) {
+        if (!IsMatch(dictionary->words, w, &data[1], max_length - 1)) {
           continue;
         }
         /* Transforms " " + kUppercase{First,All} + "" */
@@ -411,22 +417,22 @@
     }
   }
   if (max_length >= 6) {
-    /* Transforms with prefixes "e ", "s ", ", " and "\xc2\xa0" */
+    /* Transforms with prefixes "e ", "s ", ", " and "\xC2\xA0" */
     if ((data[1] == ' ' &&
          (data[0] == 'e' || data[0] == 's' || data[0] == ',')) ||
-        (data[0] == 0xc2 && data[1] == 0xa0)) {
-      size_t offset = kStaticDictionaryBuckets[Hash(&data[2])];
+        (data[0] == 0xC2 && data[1] == 0xA0)) {
+      size_t offset = dictionary->buckets[Hash(&data[2])];
       BROTLI_BOOL end = !offset;
       while (!end) {
-        DictWord w = kStaticDictionaryWords[offset++];
+        DictWord w = dictionary->dict_words[offset++];
         const size_t l = w.len & 0x1F;
-        const size_t n = (size_t)1 << dictionary->size_bits_by_length[l];
+        const size_t n = (size_t)1 << dictionary->words->size_bits_by_length[l];
         const size_t id = w.idx;
         end = !!(w.len & 0x80);
         w.len = (uint8_t)l;
         if (w.transform == 0 &&
-            IsMatch(dictionary, w, &data[2], max_length - 2)) {
-          if (data[0] == 0xc2) {
+            IsMatch(dictionary->words, w, &data[2], max_length - 2)) {
+          if (data[0] == 0xC2) {
             AddMatch(id + 102 * n, l + 2, l, matches);
             has_found_match = BROTLI_TRUE;
           } else if (l + 2 < max_length && data[l + 2] == ' ') {
@@ -444,17 +450,17 @@
          data[3] == 'e' && data[4] == ' ') ||
         (data[0] == '.' && data[1] == 'c' && data[2] == 'o' &&
          data[3] == 'm' && data[4] == '/')) {
-      size_t offset = kStaticDictionaryBuckets[Hash(&data[5])];
+      size_t offset = dictionary->buckets[Hash(&data[5])];
       BROTLI_BOOL end = !offset;
       while (!end) {
-        DictWord w = kStaticDictionaryWords[offset++];
+        DictWord w = dictionary->dict_words[offset++];
         const size_t l = w.len & 0x1F;
-        const size_t n = (size_t)1 << dictionary->size_bits_by_length[l];
+        const size_t n = (size_t)1 << dictionary->words->size_bits_by_length[l];
         const size_t id = w.idx;
         end = !!(w.len & 0x80);
         w.len = (uint8_t)l;
         if (w.transform == 0 &&
-            IsMatch(dictionary, w, &data[5], max_length - 5)) {
+            IsMatch(dictionary->words, w, &data[5], max_length - 5)) {
           AddMatch(id + (data[0] == ' ' ? 41 : 72) * n, l + 5, l, matches);
           has_found_match = BROTLI_TRUE;
           if (l + 5 < max_length) {

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -10,8 +10,9 @@
 #define BROTLI_ENC_STATIC_DICT_H_
 
 #include "../common/dictionary.h"
+#include "../common/platform.h"
 #include <brotli/types.h>
-#include "./port.h"
+#include "./encoder_dict.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
@@ -18,7 +19,7 @@
 #endif
 
 #define BROTLI_MAX_STATIC_DICTIONARY_MATCH_LEN 37
-static const uint32_t kInvalidMatch = 0xfffffff;
+static const uint32_t kInvalidMatch = 0xFFFFFFF;
 
 /* Matches data against static dictionary words, and for each length l,
    for which a match is found, updates matches[l] to be the minimum possible
@@ -28,7 +29,7 @@
      matches array is at least BROTLI_MAX_STATIC_DICTIONARY_MATCH_LEN + 1 long
      all elements are initialized to kInvalidMatch */
 BROTLI_INTERNAL BROTLI_BOOL BrotliFindAllStaticDictionaryMatches(
-    const BrotliDictionary* dictionary,
+    const BrotliEncoderDictionary* dictionary,
     const uint8_t* data, size_t min_length, size_t max_length,
     uint32_t* matches);
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict_lut.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict_lut.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/static_dict_lut.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -23,7 +23,7 @@
 } DictWord;
 
 static const int kDictNumBits = 15;
-static const uint32_t kDictHashMul32 = 0x1e35a7bd;
+static const uint32_t kDictHashMul32 = 0x1E35A7BD;
 
 static const uint16_t kStaticDictionaryBuckets[32768] = {
 1,0,0,0,0,0,0,0,0,3,6,0,0,0,0,0,20,0,0,0,21,0,22,0,0,0,0,0,0,0,0,23,0,0,25,0,29,

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/utf8_util.c
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/utf8_util.c	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/utf8_util.c	2018-03-16 17:01:01 UTC (rev 46983)
@@ -25,37 +25,37 @@
   }
   /* 2-byte UTF8 */
   if (size > 1u &&
-      (input[0] & 0xe0) == 0xc0 &&
-      (input[1] & 0xc0) == 0x80) {
-    *symbol = (((input[0] & 0x1f) << 6) |
-               (input[1] & 0x3f));
-    if (*symbol > 0x7f) {
+      (input[0] & 0xE0) == 0xC0 &&
+      (input[1] & 0xC0) == 0x80) {
+    *symbol = (((input[0] & 0x1F) << 6) |
+               (input[1] & 0x3F));
+    if (*symbol > 0x7F) {
       return 2;
     }
   }
   /* 3-byte UFT8 */
   if (size > 2u &&
-      (input[0] & 0xf0) == 0xe0 &&
-      (input[1] & 0xc0) == 0x80 &&
-      (input[2] & 0xc0) == 0x80) {
-    *symbol = (((input[0] & 0x0f) << 12) |
-               ((input[1] & 0x3f) << 6) |
-               (input[2] & 0x3f));
-    if (*symbol > 0x7ff) {
+      (input[0] & 0xF0) == 0xE0 &&
+      (input[1] & 0xC0) == 0x80 &&
+      (input[2] & 0xC0) == 0x80) {
+    *symbol = (((input[0] & 0x0F) << 12) |
+               ((input[1] & 0x3F) << 6) |
+               (input[2] & 0x3F));
+    if (*symbol > 0x7FF) {
       return 3;
     }
   }
   /* 4-byte UFT8 */
   if (size > 3u &&
-      (input[0] & 0xf8) == 0xf0 &&
-      (input[1] & 0xc0) == 0x80 &&
-      (input[2] & 0xc0) == 0x80 &&
-      (input[3] & 0xc0) == 0x80) {
+      (input[0] & 0xF8) == 0xF0 &&
+      (input[1] & 0xC0) == 0x80 &&
+      (input[2] & 0xC0) == 0x80 &&
+      (input[3] & 0xC0) == 0x80) {
     *symbol = (((input[0] & 0x07) << 18) |
-               ((input[1] & 0x3f) << 12) |
-               ((input[2] & 0x3f) << 6) |
-               (input[3] & 0x3f));
-    if (*symbol > 0xffff && *symbol <= 0x10ffff) {
+               ((input[1] & 0x3F) << 12) |
+               ((input[2] & 0x3F) << 6) |
+               (input[3] & 0x3F));
+    if (*symbol > 0xFFFF && *symbol <= 0x10FFFF) {
       return 4;
     }
   }

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/utf8_util.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/utf8_util.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/utf8_util.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -9,8 +9,8 @@
 #ifndef BROTLI_ENC_UTF8_UTIL_H_
 #define BROTLI_ENC_UTF8_UTIL_H_
 
+#include "../common/platform.h"
 #include <brotli/types.h>
-#include "./port.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {

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-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/enc/write_bits.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -9,11 +9,8 @@
 #ifndef BROTLI_ENC_WRITE_BITS_H_
 #define BROTLI_ENC_WRITE_BITS_H_
 
-#include <assert.h>
-#include <stdio.h>  /* printf */
-
+#include "../common/platform.h"
 #include <brotli/types.h>
-#include "./port.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
@@ -38,8 +35,8 @@
    and locate the rest in BYTE+1, BYTE+2, etc. */
 static BROTLI_INLINE void BrotliWriteBits(size_t n_bits,
                                           uint64_t bits,
-                                          size_t * BROTLI_RESTRICT pos,
-                                          uint8_t * BROTLI_RESTRICT array) {
+                                          size_t* BROTLI_RESTRICT pos,
+                                          uint8_t* BROTLI_RESTRICT array) {
 #ifdef BROTLI_LITTLE_ENDIAN
   /* This branch of the code can write up to 56 bits at a time,
      7 bits are lost by being perhaps already in *p and at least
@@ -46,19 +43,19 @@
      1 bit is needed to initialize the bit-stream ahead (i.e. if 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];
+  uint8_t* p = &array[*pos >> 3];
   uint64_t v = *p;
-#ifdef BIT_WRITER_DEBUG
-  printf("WriteBits  %2d  0x%016llx  %10d\n", n_bits, bits, *pos);
-#endif
-  assert((bits >> n_bits) == 0);
-  assert(n_bits <= 56);
+  BROTLI_LOG(("WriteBits  %2d  0x%08x%08x  %10d\n", (int)n_bits,
+      (uint32_t)(bits >> 32), (uint32_t)(bits & 0xFFFFFFFF),
+      (int)*pos));
+  BROTLI_DCHECK((bits >> n_bits) == 0);
+  BROTLI_DCHECK(n_bits <= 56);
   v |= bits << (*pos & 7);
   BROTLI_UNALIGNED_STORE64LE(p, v);  /* Set some bits. */
   *pos += n_bits;
 #else
-  /* implicit & 0xff is assumed for uint8_t arithmetics */
-  uint8_t *array_pos = &array[*pos >> 3];
+  /* implicit & 0xFF is assumed for uint8_t arithmetics */
+  uint8_t* array_pos = &array[*pos >> 3];
   const size_t bits_reserved_in_first_byte = (*pos & 7);
   size_t bits_left_to_write;
   bits <<= bits_reserved_in_first_byte;
@@ -75,11 +72,9 @@
 }
 
 static BROTLI_INLINE void BrotliWriteBitsPrepareStorage(
-    size_t pos, uint8_t *array) {
-#ifdef BIT_WRITER_DEBUG
-  printf("WriteBitsPrepareStorage            %10d\n", pos);
-#endif
-  assert((pos & 7) == 0);
+    size_t pos, uint8_t* array) {
+  BROTLI_LOG(("WriteBitsPrepareStorage            %10d\n", (int)pos));
+  BROTLI_DCHECK((pos & 7) == 0);
   array[pos >> 3] = 0;
 }
 

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-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/decode.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -34,11 +34,11 @@
 typedef enum {
   /** Decoding error, e.g. corrupted input or memory allocation problem. */
   BROTLI_DECODER_RESULT_ERROR = 0,
-  /** Decoding successfully completed */
+  /** Decoding successfully completed. */
   BROTLI_DECODER_RESULT_SUCCESS = 1,
-  /** Partially done; should be called again with more input */
+  /** Partially done; should be called again with more input. */
   BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT = 2,
-  /** Partially done; should be called again with more output */
+  /** Partially done; should be called again with more output. */
   BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT = 3
 } BrotliDecoderResult;
 
@@ -83,8 +83,9 @@
   BROTLI_ERROR_CODE(_ERROR_FORMAT_, WINDOW_BITS, -13) SEPARATOR            \
   BROTLI_ERROR_CODE(_ERROR_FORMAT_, PADDING_1, -14) SEPARATOR              \
   BROTLI_ERROR_CODE(_ERROR_FORMAT_, PADDING_2, -15) SEPARATOR              \
+  BROTLI_ERROR_CODE(_ERROR_FORMAT_, DISTANCE, -16) SEPARATOR               \
                                                                            \
-  /* -16..-17 codes are reserved */                                        \
+  /* -17 code is reserved */                                               \
                                                                            \
   BROTLI_ERROR_CODE(_ERROR_, COMPOUND_DICTIONARY, -18) SEPARATOR           \
   BROTLI_ERROR_CODE(_ERROR_, DICTIONARY_NOT_SET, -19) SEPARATOR            \
@@ -135,7 +136,11 @@
    * Ring buffer is allocated according to window size, despite the real size of
    * the content.
    */
-  BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION = 0
+  BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION = 0,
+  /**
+   * Flag that determines if "Large Window Brotli" is used.
+   */
+  BROTLI_DECODER_PARAM_LARGE_WINDOW = 1
 } BrotliDecoderParameter;
 
 /**
@@ -160,7 +165,7 @@
  * @p alloc_func and @p free_func @b MUST be both zero or both non-zero. In the
  * case they are both zero, default memory allocators are used. @p opaque is
  * passed to @p alloc_func and @p free_func when they are called. @p free_func
- * should return without doing anything when asked to free a NULL pointer.
+ * has to return without doing anything when asked to free a NULL pointer.
  *
  * @param alloc_func custom memory allocation function
  * @param free_func custom memory free function

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-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/encode.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -27,6 +27,11 @@
  * @note equal to @c BROTLI_MAX_DISTANCE_BITS constant.
  */
 #define BROTLI_MAX_WINDOW_BITS 24
+/**
+ * Maximal value for ::BROTLI_PARAM_LGWIN parameter
+ * in "Large Window Brotli" (32-bit).
+ */
+#define BROTLI_LARGE_MAX_WINDOW_BITS 30
 /** Minimal value for ::BROTLI_PARAM_LGBLOCK parameter. */
 #define BROTLI_MIN_INPUT_BLOCK_BITS 16
 /** Maximal value for ::BROTLI_PARAM_LGBLOCK parameter. */
@@ -176,7 +181,11 @@
    *
    * The default value is 0, which means that the total input size is unknown.
    */
-  BROTLI_PARAM_SIZE_HINT = 5
+  BROTLI_PARAM_SIZE_HINT = 5,
+  /**
+   * Flag that determines if "Large Window Brotli" is used.
+   */
+  BROTLI_PARAM_LARGE_WINDOW = 6
 } BrotliEncoderParameter;
 
 /**
@@ -210,7 +219,7 @@
  * @p alloc_func and @p free_func @b MUST be both zero or both non-zero. In the
  * case they are both zero, default memory allocators are used. @p opaque is
  * passed to @p alloc_func and @p free_func when they are called. @p free_func
- * should return without doing anything when asked to free a NULL pointer.
+ * has to return without doing anything when asked to free a NULL pointer.
  *
  * @param alloc_func custom memory allocation function
  * @param free_func custom memory free function
@@ -231,10 +240,9 @@
 /**
  * Calculates the output size bound for the given @p input_size.
  *
- * @warning Result is not applicable to ::BrotliEncoderCompressStream output,
- *          because every "flush" adds extra overhead bytes, and some encoder
- *          settings (e.g. quality @c 0 and @c 1) might imply a "soft flush"
- *          after every chunk of input.
+ * @warning Result is only valid if quality is at least @c 2 and, in
+ *          case ::BrotliEncoderCompressStream was used, no flushes
+ *          (::BROTLI_OPERATION_FLUSH) were performed.
  *
  * @param input_size size of projected input
  * @returns @c 0 if result does not fit @c size_t

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/port.h
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/port.h	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/libs/brotli/include/brotli/port.h	2018-03-16 17:01:01 UTC (rev 46983)
@@ -4,8 +4,13 @@
    See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
 */
 
-/* Macros for compiler / platform specific features and build options. */
+/* Macros for compiler / platform specific features and build options.
 
+   Build options are:
+    * BROTLI_BUILD_MODERN_COMPILER forces to use modern compilers built-ins,
+      features and attributes
+ */
+
 #ifndef BROTLI_COMMON_PORT_H_
 #define BROTLI_COMMON_PORT_H_
 
@@ -42,51 +47,6 @@
 #define BROTLI_MODERN_COMPILER 0
 #endif
 
-/* Define "BROTLI_PREDICT_TRUE" and "BROTLI_PREDICT_FALSE" macros for capable
-   compilers.
-
-To apply compiler hint, enclose the branching condition into macros, like this:
-
-  if (BROTLI_PREDICT_TRUE(zero == 0)) {
-    // main execution path
-  } else {
-    // compiler should place this code outside of main execution path
-  }
-
-OR:
-
-  if (BROTLI_PREDICT_FALSE(something_rare_or_unexpected_happens)) {
-    // compiler should place this code outside of main execution path
-  }
-
-*/
-#if BROTLI_MODERN_COMPILER || __has_builtin(__builtin_expect)
-#define BROTLI_PREDICT_TRUE(x) (__builtin_expect(!!(x), 1))
-#define BROTLI_PREDICT_FALSE(x) (__builtin_expect(x, 0))
-#else
-#define BROTLI_PREDICT_FALSE(x) (x)
-#define BROTLI_PREDICT_TRUE(x) (x)
-#endif
-
-#if BROTLI_MODERN_COMPILER || __has_attribute(always_inline)
-#define BROTLI_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((always_inline))
-#else
-#define BROTLI_ATTRIBUTE_ALWAYS_INLINE
-#endif
-
-#if defined(_WIN32) || defined(__CYGWIN__)
-#define BROTLI_ATTRIBUTE_VISIBILITY_HIDDEN
-#elif BROTLI_MODERN_COMPILER || __has_attribute(visibility)
-#define BROTLI_ATTRIBUTE_VISIBILITY_HIDDEN \
-    __attribute__ ((visibility ("hidden")))
-#else
-#define BROTLI_ATTRIBUTE_VISIBILITY_HIDDEN
-#endif
-
-#ifndef BROTLI_INTERNAL
-#define BROTLI_INTERNAL BROTLI_ATTRIBUTE_VISIBILITY_HIDDEN
-#endif
-
 #if defined(BROTLI_SHARED_COMPILATION) && defined(_WIN32)
 #if defined(BROTLICOMMON_SHARED_COMPILATION)
 #define BROTLI_COMMON_API __declspec(dllexport)
@@ -109,32 +69,6 @@
 #define BROTLI_ENC_API
 #endif
 
-#ifndef _MSC_VER
-#if defined(__cplusplus) || !defined(__STRICT_ANSI__) || \
-    (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
-#define BROTLI_INLINE inline BROTLI_ATTRIBUTE_ALWAYS_INLINE
-#else
-#define BROTLI_INLINE
-#endif
-#else  /* _MSC_VER */
-#define BROTLI_INLINE __forceinline
-#endif  /* _MSC_VER */
-
-#if !defined(__cplusplus) && !defined(c_plusplus) && \
-    (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
-#define BROTLI_RESTRICT restrict
-#elif BROTLI_GCC_VERSION > 295 || defined(__llvm__)
-#define BROTLI_RESTRICT __restrict
-#else
-#define BROTLI_RESTRICT
-#endif
-
-#if BROTLI_MODERN_COMPILER || __has_attribute(noinline)
-#define BROTLI_NOINLINE __attribute__((noinline))
-#else
-#define BROTLI_NOINLINE
-#endif
-
 #if BROTLI_MODERN_COMPILER || __has_attribute(deprecated)
 #define BROTLI_DEPRECATED __attribute__((deprecated))
 #else
@@ -141,6 +75,4 @@
 #define BROTLI_DEPRECATED
 #endif
 
-#define BROTLI_UNUSED(X) (void)(X)
-
 #endif  /* BROTLI_COMMON_PORT_H_ */

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.cpp	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/CLCommandLine.cpp	2018-03-16 17:01:01 UTC (rev 46983)
@@ -94,6 +94,8 @@
 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);

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.hpp	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/EmSpecialHandler.hpp	2018-03-16 17:01:01 UTC (rev 46983)
@@ -21,8 +21,8 @@
 #ifndef EMSPECIALHANDLER_HPP
 #define EMSPECIALHANDLER_HPP
 
-#include <list>
 #include <unordered_map>
+#include <vector>
 #include "Pair.hpp"
 #include "SpecialHandler.hpp"
 
@@ -29,8 +29,7 @@
 class InputReader;
 class SpecialActions;
 
-class EmSpecialHandler : public SpecialHandler, public DVIEndPageListener
-{
+class EmSpecialHandler : public SpecialHandler, public DVIEndPageListener {
 	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
@@ -55,7 +54,7 @@
 
 	private:
 		std::unordered_map<int, DPair> _points; ///< points defined by special em:point
-		std::list<Line> _lines;  ///< list of lines with undefined end points
+		std::vector<Line> _lines;  ///< list of lines with undefined end points
 		double _linewidth;       ///< global line width
 		DPair _pos;              ///< current position of "graphic cursor"
 };

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/MiKTeXCom.cpp	2018-03-16 17:01:01 UTC (rev 46983)
@@ -18,6 +18,7 @@
 ** 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/RangeMap.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/RangeMap.cpp	2018-03-16 17:01:01 UTC (rev 46983)
@@ -125,11 +125,11 @@
 void RangeMap::adaptNeighbors (Ranges::iterator it) {
 	if (it != _ranges.end()) {
 		// adapt left neighbor
-		Ranges::iterator lit = it-1;    // points to left neighbor
-		if (it != _ranges.begin() && it->min() <= lit->max()) {
+		if (it != _ranges.begin() && it->min() <= (it-1)->max()) {
+			Ranges::iterator lit = it-1;  // points to left neighbor
 			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/XMLDocument.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.hpp	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLDocument.hpp	2018-03-16 17:01:01 UTC (rev 46983)
@@ -22,6 +22,7 @@
 #define XMLDOCUMENT_HPP
 
 #include <memory>
+#include <vector>
 #include "XMLNode.hpp"
 
 class XMLDocument {
@@ -36,7 +37,7 @@
 		std::ostream& write (std::ostream &os) const;
 
 	private:
-		std::list<std::unique_ptr<XMLNode>> _nodes;
+		std::vector<std::unique_ptr<XMLNode>> _nodes;
 		std::unique_ptr<XMLElementNode> _rootElement;
 };
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.cpp	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.cpp	2018-03-16 17:01:01 UTC (rev 46983)
@@ -18,6 +18,7 @@
 ** along with this program; if not, see <http://www.gnu.org/licenses/>. **
 *************************************************************************/
 
+#include <algorithm>
 #include <map>
 #include <list>
 #include <sstream>
@@ -148,9 +149,11 @@
 
 /** Removes a given child from the element. */
 void XMLElementNode::remove (const XMLNode *child) {
-	_children.remove_if([=](const unique_ptr<XMLNode> &ptr) {
+	auto it = find_if(_children.begin(), _children.end(), [=](const unique_ptr<XMLNode> &ptr) {
 		return ptr.get() == child;
 	});
+	if (it != _children.end())
+		_children.erase(it);
 }
 
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.hpp	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/XMLNode.hpp	2018-03-16 17:01:01 UTC (rev 46983)
@@ -21,7 +21,7 @@
 #ifndef XMLNODE_HPP
 #define XMLNODE_HPP
 
-#include <list>
+#include <deque>
 #include <map>
 #include <memory>
 #include <ostream>
@@ -42,7 +42,7 @@
 class XMLElementNode : public XMLNode {
 	public:
 		using AttribMap = std::map<std::string,std::string>;
-		using ChildList = std::list<std::unique_ptr<XMLNode>>;
+		using ChildList = std::deque<std::unique_ptr<XMLNode>>;
 
 	public:
 		XMLElementNode (const std::string &name);

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/dvisvgm.cpp	2018-03-16 17:01:01 UTC (rev 46983)
@@ -19,12 +19,13 @@
 *************************************************************************/
 
 #include <config.h>
+#include <algorithm>
 #include <clipper.hpp>
 #include <fstream>
 #include <iostream>
-#include <list>
 #include <potracelib.h>
 #include <sstream>
+#include <vector>
 #include <xxhash.h>
 #include <zlib.h>
 #include "CommandLine.hpp"
@@ -215,7 +216,7 @@
 		/** Writes the version information to the given output stream. */
 		void write (ostream &os) {
 			using Entry = pair<string,string>;
-			_versionPairs.sort([](const Entry &e1, const Entry &e2) {
+			sort(_versionPairs.begin(), _versionPairs.end(), [](const Entry &e1, const Entry &e2) {
 				return util::tolower(e1.first) < util::tolower(e2.first);
 			});
 			size_t maxNameLength=0;
@@ -234,7 +235,7 @@
 		}
 
 	private:
-		list<pair<string,string>> _versionPairs;
+		vector<pair<string,string>> _versionPairs;
 };
 
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/options.xml
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/options.xml	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/options.xml	2018-03-16 17:01:01 UTC (rev 46983)
@@ -24,7 +24,7 @@
 	<program>
 		<usage>[options] dvifile</usage>
 		<usage>-E [options] epsfile</usage>
-      <description>This program converts DVI files, as created by TeX/LaTeX, to\nthe XML-based scalable vector graphics format SVG.</description>
+		<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>
 	<options>
@@ -134,13 +134,13 @@
 				<arg type="string" name="dir" optional="yes"/>
 				<description>set/print path of cache directory</description>
 			</option>
-         <option long="exact" short="e">
-            <description>compute exact glyph boxes</description>
-         </option>
-		   <option long="keep">
-		      <description>keep temporary files</description>
-		   </option>
-		   <option long="libgs" if="!defined(HAVE_LIBGS) && !defined(DISABLE_GS)">
+			<option long="exact" short="e">
+				<description>compute exact glyph boxes</description>
+			</option>
+			<option long="keep">
+				<description>keep temporary files</description>
+			</option>
+			<option long="libgs" if="!defined(HAVE_LIBGS) && !defined(DISABLE_GS)">
 				<arg name="filename" type="string"/>
 				<description>set name of Ghostscript shared library</description>
 			</option>
@@ -156,7 +156,7 @@
 				<description>don't process [selected] specials</description>
 			</option>
 			<option long="trace-all" short="a">
-            <arg name="retrace" type="bool" optional="yes" default="false"/>
+				<arg name="retrace" type="bool" optional="yes" default="false"/>
 				<description>trace all glyphs of bitmap fonts</description>
 			</option>
 		</section>
@@ -172,7 +172,7 @@
 				<description>print supported special sets and exit</description>
 			</option>
 			<option long="progress" short="P">
-            <arg name="delay" type="double" optional="yes" default="0.5"/>
+				<arg name="delay" type="double" optional="yes" default="0.5"/>
 				<description>enable progress indicator</description>
 			</option>
 			<option long="verbosity" short="v">

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/src/version.hpp	2018-03-16 17:01:01 UTC (rev 46983)
@@ -22,7 +22,7 @@
 #define VERSION_HPP
 
 constexpr const char *PROGRAM_NAME = "dvisvgm";
-constexpr const char *PROGRAM_VERSION = "2.3.3";
+constexpr const char *PROGRAM_VERSION = "2.3.4";
 
 #endif
 

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.am
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.am	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.am	2018-03-16 17:01:01 UTC (rev 46983)
@@ -6,6 +6,7 @@
 EXTRA_DIST = \
 	cidjmgr0-h.tfm \
 	cmr10.600gf \
+	cmr10.pfb \
 	cmr10.tfm \
 	dvipdfm_test.map \
 	dvips_test.map \

Modified: trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.in
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.in	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/Makefile.in	2018-03-16 17:01:01 UTC (rev 46983)
@@ -275,6 +275,7 @@
 EXTRA_DIST = \
 	cidjmgr0-h.tfm \
 	cmr10.600gf \
+	cmr10.pfb \
 	cmr10.tfm \
 	dvipdfm_test.map \
 	dvips_test.map \

Added: trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.pfb
===================================================================
(Binary files differ)

Index: trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.pfb
===================================================================
--- trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.pfb	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.pfb	2018-03-16 17:01:01 UTC (rev 46983)

Property changes on: trunk/Build/source/texk/dvisvgm/dvisvgm-src/tests/data/cmr10.pfb
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Modified: trunk/Build/source/texk/dvisvgm/version.ac
===================================================================
--- trunk/Build/source/texk/dvisvgm/version.ac	2018-03-16 15:54:32 UTC (rev 46982)
+++ trunk/Build/source/texk/dvisvgm/version.ac	2018-03-16 17:01:01 UTC (rev 46983)
@@ -9,4 +9,4 @@
 dnl --------------------------------------------------------
 dnl
 dnl  m4-include this file to define the current dvisvgm version
-m4_define([dvisvgm_version], [2.3.3])
+m4_define([dvisvgm_version], [2.3.4])



More information about the tex-live-commits mailing list