C C++ Shell M4 Makefile Python

README.md

dvisvgm – A fast DVI to SVG converter

Build Status Build Status Code Status License Releases

Description

dvisvgm is a utility for TeX/LaTeX users. It converts DVI and EPS files to the XML-based scalable vector graphics format SVG. The latest releases support standard DVI files (version 2) as well as DVI output created by pTeX in vertical mode (version 3), and XeTeX (versions 5 to 7, also known as XDV).

Short overview of the main features:

  • Complete font support including virtual fonts, evaluation of font encodings, CMap files, sub-font definitions and font maps.
  • Glyph outlines of all required fonts are embedded into the generated SVG files.
  • The font data can be embedded in SVG, TrueType, WOFF, or WOFF2 format.
  • Glyph outlines of fonts that are not available in a vector format are generated on-the-fly by vectorizing METAFONT's bitmap output.
  • dvisvgm allows to replace font elements by paths so that applications without SVG font support are enabled to render dvisvgm's output properly.
  • Computes tight bounding boxes for the generated graphics, but supports common paper formats and arbitrary user-defined sizes as well.
  • Option --eps allows to convert EPS files to SVG.
  • Intersections of clipping paths can be computed directly instead of delegating this task to the SVG renderer. This increases the compatibility of the generated SVG files.
  • Approximates PostScript color gradient fills not directly supported by SVG 1.1.
  • Optionally creates compressed SVGZ files.
  • Provides options for applying page transformations, like translation, rotation, scaling, and skewing.
  • Evaluates color, emTeX, tpic, hyperref/HyperTeX, papersize, PDF mapfile, and PostScript specials.
  • The converter was successfully tested on various Linux (TeX Live) and Windows (MiKTeX, W32TeX) systems.
  • dvisvgm has been added to TeX Live, W32TeX, and MiKTeX. It is therefore available for a wide range of operating systems.

Usage

For detailed information about the command-line interface and all available options of dvisvgm, see the manual page.

Dependencies

dvisvgm relies on the following free libraries:

  • Clipper
    To compute the intersection of two curved paths, dvisvgm flattens the paths to polygons, intersects them using a slightly modified version of Clipper, and reconstructs the curves afterwards. A slightly modified version of Clipper is bundled with the sources.

  • FontForge library
    dvisvgm can be built with optional WOFF support that allows to embed the font data in WOFF or TrueType format rather than as SVG. The FontForge library provides the required functions to create font files in these formats. A reduced version of the library is bundled with the dvisvgm sources. It's also available here.

  • FreeType 2
    This library is used to extract the glyph outlines from vector fonts (PFB, OTF, TTF).

  • Ghostscript
    The PostScript special handler requires the Ghostscript library libgs.so (Linux) or gsdll32.dll/gsdll64.dll (Windows) to be installed. If the configure script finds the corresponding Ghostscript development files on the system, it directly links against libgs.so.N, where N is the library's ABI version. Otherwise, the library is looked up during runtime, and the PostScript support is enabled only if libgs.so can be found. Due to incompatible changes of the Ghostscript API, dvisvgm requires Ghostscript 8.31 or later.

  • Kpathsea
    This library is part of the Web2C package and is usually installed in conjunction with a TeX distribution. Kpathsea provides functions for searching files in the large texmf tree. Please ensure that you use the kpathsea version coming with or matching your TeX system.

  • potracelib
    Peter Selinger's bitmap tracing library is utilized to vectorize Metafont's bitmap output.

  • woff2 and brotli
    These Google libraries are bundled with the dvisvgm sources. They are used to create WOFF2 from TrueType fonts.

  • xxHash
    The xxHash library provides a fast hash algorithm. dvisvgm uses it to create unique integer values from PostScript character names in order to store them in a compact way together with their Unicode points. A recent version of xxHash is bundled with the dvisvgm sources.

  • zlib
    Compressed SVG files are produced by using functions of this library and the Gzstream wrapper classes which are licensed under LGPL version 2.1 (or optionally any later version) and should be included with this package.

If you want to build and run the test suite located in the tests subdirectory, you also need the Google Test libraries.

Building dvisvgm from source

dvisvgm is written in C++11 (ISO C++ standard 2011) and requires an appropriate compiler, like GCC 4.8.1, Clang 3.3, or any later version. The configure script checks for the availability of C++11 support and adds the proper compiler options if necessary.

Quick installation info:

  • type ./autogen.sh if configure is not present in the dvisvgm root folder
  • type ./configure
  • type make
  • type make install as root (or sudo make install)

For generic configuration instructions see the file INSTALL.

The configure script should recognize all necessary parameters. If a library is installed but not detected, specify its location as command-line parameter of configure, e.g. ./configure --with-freetype=/usr/local/freetype (all available options can be displayed with ./configure --help)

The tracer module calls Metafont in case of lacking TFM or PFB files via a system call. Please ensure that Metafont is installed and reachable through the system's search path.

If you don't like compiling the sources yourself, you can download pre-compiled binaries for Windows and MiKTeX from the project website instead.

Additional Information

This package is available from CTAN, and can be downloaded from the project website as well. There you find the sources, pre-compiled binaries, the manual page, FAQs and further information about the converter and related topics.

If you've found a bug, please let me know. You can either send me an email or preferably use the bug tracker at GitHub.

Copyright

Copyright © 2005–2017 Martin Gieseking

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

See file COPYING for details.