25 October 2019: dvisvgm 2.8 has been released

This is a small feature release with the following additions/changes:

  • Added support for JPEG, PNG, PDF, and SVG files to special psfile.
  • Added support for Ghostscript 9.50 which introduced incompatible changes regarding option -dSAFER. Due to security reasons SAFER is now active by default and therefore conflicts with DELAYBIND and WRITESYSTEMDICT. Since dvisvgm requires the latter two to work correctly, Ghostscript must now be called with -dDELAYSAFER. Otherwise, it prints some warning messages and stops with a PostScript error, e.g. like so:
    *** WARNING - you have selected SAFER, indicating you want Ghostscript
                  to execute in a safer environment, but at the same time
                  have selected DELAYBIND. Unless you use this option with
                  care (and specifically, remember to call .bindnow) it is
                  possible that malicious code may be able to evade the
                  limited security offered by the SAFER option.
    
    *** WARNING - you have selected SAFER, indicating you want Ghostscript
                  to execute in a safer environment, but at the same time
                  have selected WRITESYSTEMDICT. Unless you use this option with
                  care and specifically, remember to execute code like:
                         "systemdict readonly pop"
     PostScript error: invalidfileaccess in run

    dvisvgm 2.8 fixes this issue. All versions prior to 2.8 don’t work together with GS 9.50 (and later).
  • Added support for elliptical arc segments in graphics paths.
  • Added support for CMap operator begincidchar (thanks to Akira Kakuto for sending the patch).
  • Added suport for experimental 128-bit XXH3 hashes.
  • The SVG optimizer module simplify-transform has been extended to incorporate translation and scaling components into positional and size attributes if possible.
  • The CRC32 checksums used to verify the sanity of cache files has been replaced with XXH32 hashes.
  • The bundled potrace library has been updated to version 1.16.
  • The bundled xxHash library has been updated to version 0.7.2.
  • The bundled Google Test library has been updated to version 1.10.
  • Lots of code has been refactored and improved.
28 July 2019: dvisvgm 2.7.4 has been released

This is another small maintenance release with the following changes:

  • Fixed a memory issue occurred when calling Metafont.
  • Fixed potential rounding issues in conversion of color values (issue #116).
  • Changed the location of the cache files from ~/.dvisvgm/cache to $XDG_CACHE_HOME/dvisvgm which usually expands to ~/.cache/dvisvgm (issue #112).
  • Some minor refactorings.
12 July 2019: dvisvgm 2.7.3 has been released

This is a small maintenance release with the following changes:

  • Fixed randomly missing glyph paths referenced by use elements (issue #110).
  • Minor updates of the manual page.
  • Some code refactorings.
7 June 2019: dvisvgm 2.7.2 has been released

This maintenance release fixes an issue introduced with Ghostscript 9.27. The removal of the PostScript dictionaries GS_PDF_ProcSet and pdfdict from the public interface leads to an error message when processing PDF files with dvisvgm.

The changes in Ghostscript 9.27 also break the PDF functionality of GSview 5.0 by Russell Lang. An unofficial, fixed version can be downloaded here.

20 May 2019: dvisvgm 2.7.1 has been released

This is a small maintenance release with the following changes:

  • Fixed a bug in PostScript operator setmatrix (issue #106).
  • Fixed a build issue reported on MacPorts.
  • Added the source files required to access the MiKTeX session object as the MiKTeX SDK has been deprecated.
13 April 2019: dvisvgm 2.7 has been released

The main new feature of this release is command-line option --optimize which allows for optimization of the generated SVG tree after it has completely been built from the DVI data. The optimizations are performed by running separate optimizer modules which are executed one by one in a given order and thus transform the XML tree gradually. Currently, the following optimizations are available:

  • Move common inheritable attributes of adjacent elements to group elements.
  • Combine nested groups and unwrap groups without attributes.
  • Remove redundant clipPath elements.
  • Simplify transform attributes.

More detailed information on option --optimize and the optimizer modules can be found on the manual page.

Furthermore, a couple of smaller additions and changes have been made:

  • All raw specials are now parsed and converted to proper XML nodes so that the optimizer can also process SVG fragments added by the user.
  • Several improvements to SVG graphics path descriptions:
    • Redundant spaces and leading zeros are omitted.
    • Line commands representing zero-length lines are removed.
    • The detection of reflected control points in Bézier curve sequences has been improved. As a result, the shorthand curve commands are applied more often.
  • Added support for PostScript operators xshow, yshow, and xyshow.
  • Added evaluation of optional psfile/pdffile special attribute clip which clips the drawing region to the bounding box of the image being processed.
  • Added the \special variants dvisvgm:bbox lock and dvisvgm:bbox unlock to disable and enable updating of the bounding box. By default, dvisvgm adapts the bounding box of the current page if a new graphics element is added. This behaviour can be paused and resumed with the new specials.
  • Added optional modifier transform to dvisvgm’s bbox specials to allow for applying the current transformation matrix to the bounding box.
  • Added macro {?matrix} to dvisvgm’s raw specials. It expands to the current transformation matrix, e.g. matrix(0 -1 1 0 -214.88 106).
  • Option --exact has been renamed to --exact-bbox. This change is backward compatible due to dvisvgm’s partial matching of option names.
  • The bundled xxHash library was updated to version 0.7.0.
  • Lots of code refactorings.
9 March 2019: dvisvgm 2.6.3 has been released

This is mainly a bugfix release with the following changes:

  • dvisvgm now creates short, three-digit RGB hex values for color attributes if possible, e.g. #123 instead of #112233.
  • Fixed the rejection of paper formats, like A4, given as argument to option --bbox.
  • Fixed the adaption of the vertical orientation when processing EPS/PDF files.
  • Fixed the handling of backslashes in EPS/PDF file paths (Windows only).
  • Updated the bundled Google Test library to version 1.8.1.
  • Some code refactorings and improvements of the build system.
23 January 2019: dvisvgm 2.6.2 has been released

This maintenance release resolves a couple of PostScript issues that were reported recently.

  • Fixed the scaling of line properties in PS operator grestore.
  • Fixed the handling of PS operators charpath and show which may call each other internally.
  • Improved the processing of PS operator clippath.
  • Prevent visible side-effects of PS operator stringwidth.
  • Updated the bundled brotli library to version 1.0.7.
  • Some modifications of the build system to simplify the maintenance of dvisvgm in TeX Live.