RSS feed

3 May 2018: dvisvgm 2.4 has been released

This feature release brings the following additions/changes:

  • Added special pdffile similar to psfile to embed PDF graphics.
  • Added option --pdf to convert single-page PDF documents to SVG:
    $ dvisvgm --pdf -d2 helix.pdf
    processing PDF file
      graphic size: 597.51pt x 845.05pt (210mm x 297mm)
      output written to helix.svg
    file converted in 1.61882 seconds
  • Reassigned short option -P from --progress to --pdf.
  • Added option --stdin to receive input from stdin. Alternatively, a single dash can be used as well:
    $ dvisvgm -d2 - < frktest.dvi
    reading from <stdin>
    pre-processing DVI file (format version 2)
    processing page 1
      graphic size: 398.34pt x 456.34pt (140mm x 160.39mm)
      output written to stdin.svg
    1 of 1 page converted in 0.0790408 seconds
  • Option --stdout can now be combined with option --zip to redirect SVGZ data to stdout.
  • Added processing of Ghostscript operators .setshapealpha and .setblendmode that allow for conversion of more transparency parameters, e.g.:
  • Fixed outer transformations applied to psfile specials.
  • Fixed computation of bounding boxes triggered by psfile specials.
  • Several code refactorings.

23 March 2018: dvisvgm 2.3.5 has been released

This is a small maintenance release with the following changes:

  • Added the evaluation of PostScript operator setpagedevice in psfile specials. This enables the conversion of a broader range of EPS files created with dvips which sometimes contain this operator although not allowed according to the EPS specification.
  • Fixed the evaluation of dvips color names.
  • Fixed the warning message printed when using Ghostscript as of version 9.23.

14 March 2018: dvisvgm 2.3.4 has been released

This is another maintenance release with the following changes:

  • Fixed an error message printed when addding a single dash on the command-line.
  • Added a missing data file that lead to failing tests (issue #87)..
  • Updated the bundled brotli library to version 1.0.3.
  • Some code refactorings.

20 February 2018: dvisvgm 2.3.3 has been released

This is a minor maintenance release with the following changes:

  • Fixed a wrong behavior when requiring both default mapfiles and pdf:mapline or pdf:mapfile specials.
  • Fixed an exception thrown in rare cases of unavailable font files.

8 February 2018: dvisvgm 2.3.2 has been released

This is a minor maintenance release with the following changes:

  • Prevent the creation of redundant tspan elements.
  • Added support for the new JFM specification introduced in TeX Live r46452 (patch by Hironobu Yamashita).
  • Fixed a build error occurred if the Ghostscript development files were missing.
  • Fixed a potential memory error regarding option --cache.

12 January 2018: dvisvgm 2.3.1 has been released

  • Fixed the width of characters slanted by a mapfile entry (issue #82).
  • If ttfautohint fails for a font, dvisvgm now uses the unhinted font and prints a corresponding warning message.
  • Some code cleanup.

28 December 2017: dvisvgm 2.3 has been released

This is a small feature release that adds optional experimental support for ttfautohint. ttfautohint usually creates better results than the FontForge autohinter that dvisvgm uses by default if you call it with option --font-format=woff,autohint, for example. The fonts embedded in the following SVG file were hinted with ttfautohint:

In order to build dvisvgm with ttfautohint support, you need the ttfautohint library and the corresponding header files which are provided as of the latest version 1.8.1. A pre-built DLL of ttfautohint for Windows can be found here. By default, ttfautohint support is completely disabled and not available in dvisvgm. To enable it, add option --with-ttfautohint to the configure script, and optionally specify the location of the ttfautohint development files, e.g. --with-ttfautohint=/opt/ttfautohint. Depending on the configuration results, the ttfautohint library is either directly linked to the dvisvgm binary or looked up dynamically when running dvisvgm. If ttfautohint support is available, the list printed when calling dvisvgm with option -V1 contains a corresponding entry, as shown in the box on the right.

$ dvisvgm -V1
dvisvgm 2.3 (x86_64-pc-linux)
brotli:      1.0.2
clipper:     6.2.1
fontforge:   20160721
freetype:    2.8.0
Ghostscript: 9.22
kpathsea:    6.2.2
potrace:     1.15
ttfautohint: 1.8.1
woff2:       1.0.1
xxhash:      0.6.4
zlib:        1.2.11

12 December 2017: dvisvgm 2.2.3 has been released

  • Updated the bundled brotli library to version 1.0.2.
  • Updated the bundled template library mpark::variant.
  • Fixed a memory issue that may occur in conjuntion with option --clipjoin.
  • Some test and code improvements.

17 November 2017: dvisvgm 2.2.2 has been released

  • Fixed a memory issue regarding font maps that could lead to segfaults (issue #79).
  • Avoid scientific notation when printing floating point numbers.
  • Minor code improvements.

13 November 2017: dvisvgm 2.2.1 has been released

  • Fixed a portability issue when building the manpage (issue #72).
  • Fixed the incomplete conversion of the PostScript line width (issue #77).
  • Further code refactorings and improvements.

20 October 2017: dvisvgm 2.2 has been released

  • Added evaluation of pdf:pagesize specials.
  • Added evaluation of PDF hyperlink specials.
  • Try to load Ghostscript dylib on Mac systems (patch by Toby Fleming, issue #66).
  • Improved the TPIC special handler, added evaluation of the tx special.
  • Length values in dvisvgm specials now accept unit specifiers.
  • Added to default map files.
  • Fixed potential infinite loop after starting subprocesses (issue #68).
  • Files included with psfile are now also searched in the texmf tree if not present in the current working directory (issue #69).
  • Fixed transformation issue in computation of psfile position (issue #70).
  • Updated the bundled brotli, woff2, and xxHash libraries.
  • Several code refactorings and improvements.

20 February 2017: dvisvgm 2.1.3 has been released

  • Fixed build failures of the bundled fontforge library on Solaris 10.
  • Increased code portability.

12 February 2017: dvisvgm 2.1.2 has been released

  • Bundled the googletest sources to simplify building and executing the tests.
  • Fixed a couple of issues related to LLVM's libc++ (thanks to Mojca Miklavec and Rasmus Larsen for their help to isolate the problems).
  • Fixed some potential memory leaks.
  • Removed restrict keyword from xxHash sources to avoid C++ compilation errors (xxHash issue 88).

7 February 2017: dvisvgm 2.1.1 has been released

  • Metafont is now called only once for each font. If the required files can't be found, dvisvgm doesn't call Metafont again for that font.
  • Fixed a build failure on OS X (issue #65).
  • Several minor code improvements and test enhancements.

19 January 2017: dvisvgm 2.1 has been released

  • Added option --tmpdir to explicitly set folder for temporary files.
  • Temporary files are no longer created in the current working directory by default but in the system's temp folder (issue #63).
  • Added warning/error messages if temporary files could not be written.
  • Fixed collision of Unicode points in AGL table (issue #64).
  • Retain letter case of filenames even if it's not significant (Windows only).
  • Various code refactorings and code cleanup.

17 November 2016: dvisvgm 2.0.4 has been released

  • The reduced FontForge library ff-woff required to create WOFF and TrueType fonts is now bundled with the sources.
  • A few typos in the manpage and the --help output have been fixed.
  • Few minor code improvements.

27 September 2016: dvisvgm 2.0.3 has been released

This is another bugfix release with the following changes:

  • Fixed a regression in the character positioning of virtual fonts.
  • Fixed the positioning of rules.

19 September 2016: dvisvgm 2.0.2 has been released

This is a bugfix release with the following changes:

  • Fixed a regression in determining the character depths of native fonts.
  • Fixed a regression in the computation of DVI positions (issue #61).

3 September 2016: dvisvgm 2.0.1 has been released

This is a small maintenance release with the following addition:

  • Added the optional argument parameter autohint to option `--font-format` that allows to create autohinted TTF, WOFF, or WOFF2 fonts. These fonts usually look better on low-resolution devices or when using small font sizes.
    Example: dvisvgm --font-format=woff,autohint matrices.dvi creates the following result:

29 August 2016: dvisvgm 2.0 has been released

This is a major release with the following changes/additions:

  • Added option --font-format to select the data format used to embed fonts into the SVG files. Besides the default SVG format, following alternatives are supported now: TrueType, WOFF, and WOFF2. Especially, WOFF is supported by almost all recent web browsers so that the text elements present in the SVG files are rendered correctly as in the following TikZ example:

    In order to build dvisvgm with this feature, the FontForge library is required.
    Thanks to Thomas Weidner for providing important parts of the code.
  • The code base of dvisvgm has been switched from C++03 to C++11. Thus, you need a more recent compiler (e.g. GCC 4.8.1, Clang 3.3, or Visual C++ 2015) to build the binaries.
  • The command-line parser and the CommandLine class generator have been reimplemented.

4 July 2016: dvisvgm 1.16 has been released

This maintenance release provides the following changes/additions:

  • Added support for XDV version 7 introduced by XeTeX 0.99995.
  • Added optional processing of papersize specials. For further information on how to enable it, see the manual page.
  • Added support for the length units cc, dd, and sp.
  • Fixed a unit conversion issue in computation of bounding boxes.
  • Fixed the propagation of the resolution value to the glyph vectorizer.
  • Fixed the transformation of the optional background rectangle.
  • Prevent processing of corrupted GF files.
  • Major refactorings of the DVI reader and the SVG backend.

19 April 2016: dvisvgm 1.15.1 has been released

This is a small maintenance release with the following changes:

  • Added explicit encoding attribute to the XML declaration again (issue #54).
  • Added support for AGL character names of the form uFOO and uniFOO.
  • Fixed parsing of transformation parameters given on the command-line.
  • Minor code and test improvements.

27 February 2016: dvisvgm 1.15 has been released

This is a small maintenance release with the following changes:

  • Added the command-line option --comments to insert additional information to the SVG file.
  • Fixed a clipping bug in the PostScript handler.
  • Some code improvements and refactorings.
  • Moved the test data files to a separate folder.

20 January 2016: dvisvgm 1.14.2 has been released

This is a bugfix release with the following changes:

  • Fixed the handling of background color specials. Now they affect all succeeding pages until the next change occurs.
  • Fixed a potential memory issue caused by accessing an invalid iterator.
  • Updated the bundled xxHash library to version 0.5.0.
  • Added xxHash to the output of --version=1.
  • Minor additions to the manpage.
  • Added a test case to validate the hash values used in Unicode.cpp.

5 January 2016: dvisvgm 1.14.1 has been released

This is a small bugfix release with the following changes:

  • Reset the PostScript graphics state at the end of every DVI page to ensure consistent conversions if multiple page are processed.
  • Added checks for invalid GF files to prevent undefined behavior.

28 December 2015: dvisvgm 1.14 has been released

This is a maintenance release with the following additions/changes:

  • Added evaluation of PSTricks specials pst: and PST:.
  • The bounding box data created by the preview package is now adapted to create a tight box by default.
  • Added option --bbox=preview to apply the unmodified bounding box data created by the preview package.
  • Improved lookup of files located in the current working directory.
  • Fixed a memory issue related to graphics paths.
  • Improved extraction of kapathsea version number.
  • Minor code and test improvements.

8 December 2015: dvisvgm 1.13 has been released

This is a maintenance release with the following additions/changes:

  • Evaluation of PS operators ashow, awidthshow, and widthshow has been added (fixes GH issue #49).
  • The conversion of fonts referenced by PS code to graphics paths has been improved.
  • Redundant moveto commands are now removed from paths.
  • An issue concerning evaluation of PS operator setcolor has been fixed.
  • Fixed output of PS error messages shown when converting EPS files.
  • Updated the bundled xxHash library to revision 42.
  • Minor code refactorings and cleanup.

18 November 2015: dvisvgm 1.12 has been released

This is a maintenance release with the following changes:

  • Added option --colornames to replace RGB values by SVG color names.
  • Resolving of character codes for fonts without supported character maps has been fixed.
  • A memory issue that could occur when running Metafont has been fixed.

21 September 2015: dvisvgm 1.11 has been released

This is a maintenance release with the following changes:

  • The mapping of unknown characters to Unicode has been improved.
  • The handling of text elements in conjunction with \specials has been improved.
  • An issue that could lead to (invalid) U+0000 codepoints has been fixed.
  • xlink:title attributes are now properly quoted.

15 July 2015: dvisvgm 1.10 has been released

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

  • Support for the new XDV format 6 introduced by XeTeX 0.99992 has been added.
  • The mapping of PostScript character names to Unicode points has been improved.

8 April 2015: dvisvgm 1.9.2 has been released

This is a maintenance release with the following changes:

  • Avoid retracing of fonts if options --no-fonts and --trace-all=y are given.
  • Skip tracer messages if no glyphs have been traced.
  • The build system has been extended to generate code coverage reports.
  • Some tests of the test suite have been improved.
  • Several general code refactorings and improvements.

28 February 2015: dvisvgm 1.9.1 has been released

This is a maintenance release with the following changes:

  • The pattern syntax of option --output has been extended to support width specifiers and arithmetic expressions. See the manual page for further details.
  • The formatting of the manual page has been improved.
  • A Clang build issue has been fixed (patch by Peter Breitenlohner).
  • A build error occurred with old MinGW compilers has been fixed.
  • Code cleanup and some refactorings.

16 February 2015: New responsive website theme

I’ve replaced the old colorful, fixed-sized website theme with a more straightforward and responsive one. It’s based on the nice Bootswatch collection by Thomas Park.

29 December 2014: dvisvgm 1.9 has been released

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

  • Partial evaluation of the PostScript operator shfill which allows to create color gradient fills has been added. The recent version of dvisvgm supports the approximation of free- and lattice-form triangle meshes as well as Coons and tensor-product patch meshes.
  • The command-line options --grad-segments, --grad-overlap, and --grad-simplify to adapt the approximation of gradient fills have been added. See the manual page for further details.
  • Option --no-merge has been added. It forces dvisvgm to create separate text elements for each character (patch by Khaled Hosny).
  • When searching the location of the Ghostscript library, dvisvgm now also looks up the file path in the Windows registry.
  • A bug in the interaction of color specials with PostScript color operators has been fixed.
  • The validity check of DVI files has been corrected.
  • The free replacement script for my non-free opt2cpp.xsl stylesheet has been added. It’s required to create the C++ files from the XML file defining the command-line options. Thanks to Khaled Hosny for the implementation and for providing it for free.

29 August 2014: dvisvgm 1.8.1 has been released

This is a small maintenance release.

  • dvisvgm now removes clipPath elements that are not referenced in the SVG file.
  • Unexpected bop/eop operators present in PostScript specials are no longer evaluated. This prevents side-effects e.g. when using the standalone document class.
  • A few improvements to have been applied (patches by Khaled Hosny)
  • Redundant code has been removed.

30 July 2014: dvisvgm 1.8 has been released

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

  • The new command-line option --clipjoin tells dvisvgm to directly compute intersections of clipping paths and not to delegate this task to the SVG renderer.
  • The new command-line option --relative creates relative rather than absolute path commands.
  • The evaluation of PostScript operator clippath has been added.
  • PostScript operator show has been fixed to prevent the creation of unintended path overlays.
  • A memory leak in the font engine has been fixed (patch by Khaled Hosny).
  • Option --list-specials no longer throws an exception.
  • Cygwin builds of dvisvgm now look for the proper filename of the Ghostscript DLL.

8 June 2014: dvisvgm 1.7 has been released

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

  • All DVI files are pre-processed now in order to allow the implementation of features that rely on data not available on the pages being converted.
  • The evaluation of hyperref specials has been improved. Internal links that reference targets on different pages are supported now.
  • The \special command dvisvgm:rawdef has been added. It allows to insert raw SVG fragments to the <defs> section of the SVG file.
  • The \special commands dvisvgm:rawset, dvisvgm:endrawset, and dvisvgm:rawput have been added. For further information, see section support of specials of the manual page.
  • dvisvgm no longer adds the redundant SVG element missing-glyph to the generated SVG files.
  • The support of external fonts required by XDV files (DVI files created by XeTeX) has been improved.
  • The extent values assigned by the preview package are now correctly displayed in TeX point units.

23 April 2014: dvisvgm 1.6 has been released

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

  • Option --zoom has been added to "visually" scale the generated SVG graphics while preserving the original size and position values of the graphic objects.
  • Option --linkmark has been extended to allow to select the box/line color highlighting the linked areas.
  • The default value of option --linkmark has been changed from line to box.
  • Hyperlink markers (boxes and lines) are only split on line breaks while kept together in all other cases.
  • dvisvgm now looks for rather than just if the Ghostscript library is not directly linked to the binary. Supported ABI versions are X = 7, 8, and 9.
  • dvisvgm no longer adds a time stamp and machine triplet to the generated SVG files.

11 April 2014: dvisvgm 1.5.3 has been released

This is a small bugfix release.

  • A positioning bug that led to displaced DVI rules/rectangles has been fixed.
  • The positioning of PostScript graphics has been improved.

10 January 2014: dvisvgm 1.5.2 has been released

  • A bug has been fixed that could lead to wrong text colors.
  • Several code improvements have been applied.

29 October 2013: dvisvgm 1.5.1 has been released

  • The processing of bounding box data created by the preview package has been corrected.
  • The processing of font definitions across page borders has been fixed.
  • Compilation issues have been fixed that occurred if processing of PS specials was disabled.
  • Some minor code improvements.

2 September 2013: dvisvgm 1.5 has been released

This is another feature update bringing these additions:

  • Basic support for vertically oriented text.
  • Support for DVI format 3 as created by pTeX in vertical/tate mode.
  • Support for DVI format 5 (XDV) as created by XeTeX with option --no-pdf.
  • The numeric entity references in the generated SVG files have been replaced by corresponding UTF-8 characters.
  • In the stylesheet section, font-size attribute values get an explicit px unit to ensure proper glyph scaling, e.g. in Opera and Safari.

2 August 2013: dvisvgm 1.4 has been released

This is a feature release with the following additions:

  • Basic support for CMap files and CID-keyed fonts has been added. This enables the processing of DVI files created with pTeX, for example.
  • dvisvgm also tries to translate character codes according to the available encoding tables stored in the referenced TrueType/OpenType font file.
  • Support for OpenType (OTF) fonts has been added.
  • If a DVI file contains bounding box information created by the preview package, the size of the SVG is adapted accordingly. Also, dvisvgm prints a message showing the assigned width, height, and depth values in TeX point units. Especially, the depth value can be used to vertically align the SVG graphics with the baseline of surrounding text in HTML or XSL-FO documents, for example.
     $ dvisvgm test
     processing page 1 [1]
       applying bounding box set by preview package (version 11.87)
       width=88.9844pt, height=7.45308pt, depth=3.95029pt
       page size: 88.9844pt x 11.4034pt (31.2744mm x 4.00782mm)
       page written to test.svg
     1 of 1 page converted in 0.421647 seconds
  • The command-line option --linkmark has been extended to mark hyperlinked areas with an arbitrary background color.
  • The processing of PostScript header specials has been improved.
  • PostScript operator show creates much better results now.
  • The DOCTYPE declaration has been removed from the generated SVG files as the W3C recommends to omit it.
  • The encoding of the generated SVG files has been changed to UTF-8.