Dvisvgm: Generating Scalable Vector Graphics from DVI and EPS Files

Total Page:16

File Type:pdf, Size:1020Kb

Dvisvgm: Generating Scalable Vector Graphics from DVI and EPS Files TUGboat, Volume 38 (2017), No. 3 359 dvisvgm: Generating scalable vector both utilities apparently stalled, and the website of graphics from DVI and EPS files dvi2svg disappeared several months later. The al- ternative approach of creating SVG files from PDF Martin Gieseking didn't work satisfactorily either, due to the missing Abstract conversion of hyperlinks across pages inside the doc- ument, and the weak support of METAFONT-based dvisvgm is a command-line utility that converts DVI fonts, which were embedded as bitmap fonts if no and EPS files to the XML-based vector graphics for- vector versions were available. mat SVG, an open standard developed by the W3C. Since I had already written a couple of small DVI Today, SVG is supported by many applications in- utilities before and therefore had working DVI and cluding text processors, graphics editors, and web TFM readers available, I started to build a simple browsers. Therefore, it's a convenient format with SVG converter on top of them. The first public which to enrich websites and non-T X documents E release of dvisvgm was in August 2005. Since then, with self-contained, arbitrarily scalable T X output. E it's been a private free-time project and has evolved This article gives an overview of selected features of a lot over the years, largely because of wonderful dvisvgm and addresses some challenges faced in its feedback, detailed bug reports and interesting feature development. suggestions. dvisvgm is included in TEX Live and MiKTEX, and is also available through MacPorts. 1 How it all started In 2005 I was working on a wiki-based cross media 2 About dvisvgm and basic usage publishing system called media2mult [3], which was dvisvgm is a command-line utility written in C++. It supposed to produce documents in various output for- supports standard DVI files with a version identifier mats from a single source without the need to force of 2, as well as DVI files created by pTEX in vertical the authors to scatter format and layout specific mode (version 3) and X TE EX (versions 5 to 7).1 The settings throughout the input document. Since the latter are also known as XDV files and are created if conversion back-end was built on the XML format- X TE EX is called with option -no-pdf. ting technology XSL-FO, which at that time didn't The basic usage of dvisvgm is straightforward provide sufficient math support through MathML,I and similar to other DVI drivers. If no other options needed a way to embed scalable TEX output in the are specified, it converts the first page of the given XSL-FO files. The preferred format for this task was DVI file to an SVG file with the same name. If the SVG, because it is XML-based and therefore fit nicely DVI file has more than one page, the page number into the other involved XML technologies; for exam- is appended to the base name. For example, ple, the files could be post-processed easily by apply- dvisvgm myfile.dvi ing XSLT and XQuery scripts. Furthermore, SVG was creates the file myfile.svg if myfile.dvi consists decently supported by Apache's open-source XSL-FO of a single page only, else myfile-01.svg. This processor FOP and the related Batik SVG toolkit. was originally because the initial releases of dvisvgm Fortunately, two DVI to SVG converters were could process only single DVI pages in one run; the already available, dvisvg [7] by Rudolf Sabo and behavior is still retained for compatibility. To select a dvi2svg [2] by Adrian Frischauf. Both utilities looked different page or a sequence of page ranges, the option promising, and created nice results from my initial --page is required. It accepts a single page number test files. dvi2svg even supported color and hyperref or a comma-separated list of ranges. Regardless of specials, which was another advanced requirement whether any page numbers are specified multiple for my needs. However, the main drawback for the times, e.g. by overlapping range specification, all planned document conversion engine was that both selected pages are converted to separate SVG files tools relied on pre-converted SVG font files derived only once. The command from a selection of common TEX fonts, notably the dvisvgm --page=1,3,5-9,8-10 myfile.dvi Computer Modern family. There was no simple way is identical to to process DVI files referencing arbitrary fonts sup- dvisvgm --page=1,3,5-10 myfile.dvi ported by the TEX ecosystem. The latter had to be generated in advance by some kind of DVI pre- and converts the pages 1, 3, and 5 through 10. The processing and by extracting the glyph data from file names get the corresponding number suffixes as PostScript or TrueType fonts, e.g. as described in [4, 1 When an incompatible change in X TE EX's XDV format pp. 272{274]. is made, the DVI version identifier is increased. The recent Sadly, around that time, the development of X TE EX revision 0.99998 creates DVI files of version 7. dvisvgm: Generating scalable vector graphics from DVI and EPS files 360 TUGboat, Volume 38 (2017), No. 3 --output=hpatterni SVG file name of page 1 ment. While this approach keeps DVI files compact, it also reduces their cross-platform portability and %f myfile.svg delegates significant processing to the driver. On %f-%p myfile-01.svg the other hand, the requirement for a working T X newfile-%p newfile-01.svg E system enables full access to all font data, including %f-%4p-of-%P myfile-0001-of-20.svg those usually not embedded into PDF files. This %f-%4(p-1) myfile-0000.svg is especially important regarding METAFONT-based %f-%(P-p+1) myfile-20.svg fonts not available in other formats. ../%f/svg/%3p ../myfile/svg/001.svg Since I was confronted with a wide variety of Table 1: Effect of several output patterns applied to documents using a wide variety of fonts, it was impor- myfile.dvi consisting of 20 pages. tant to provide dvisvgm with comprehensive font sup- port including virtual fonts, various font encodings, above. It's also possible to give open page ranges by CMaps, sub-font definitions, font maps, handling of omitting the start or end number: glyph names and Japanese fonts which often use an dvisvgm --page=-5,10- extended TFM format called JFM. The proper map- converts all pages from the beginning up to page 5, ping of PostScript character names, as used in Type 1 as well as page 10 and all following ones. Regardless fonts, to corresponding Unicode points, required the of the number of pages converted, dvisvgm always inclusion of the Adobe Glyph List (AGL).3 prescans the entire DVI file in advance to collect Furthermore, the generated SVG files needed global data, like font definitions, PostScript headers to be compatible with XSL-FO converters and SVG and hyperlink targets. In this way it is possible renderers, like web browsers. It turned out that each to convert selected pages correctly even if required type of applications evidently focused on different information is located on excluded pages. aspects of the SVG standard, as some elements are In order to change the names of the generated not evaluated completely, leading to incorrect or in- SVG files, --output can be used. It supports pat- complete visual results. To work around this, I added terns containing the placeholders %f, %p, and %P command-line options to alter the representation of which expand to the base name of the DVI file, the glyphs and other graphic components in the gen- current physical page number, and the total number erated SVG files as needed. The following sections of pages in the DVI file, respectively. The command cover some of the challenges involved in this area. dvisvgm --output=%f-%p-%P myfile converts the first page of myfile.dvi to the SVG file 3.1 Vectorization of bitmap fonts myfile-01-20.svg, given that the DVI file contains Today, many popular fonts used in (LA)TEX docu- 20 pages. The number of digits used for %p is adapted ments are available in OpenType, TrueType or Post- to that of %P but can be explicitly determined by a Script Type 1 format, greatly simplifying their con- prepended number, e.g., . Table 1 shows some %4p version to SVG as they are already vectorized. This further examples of specifying the naming scheme of also includes many fonts originally developed with the generated files. More details can be found in the METAFONT 2 , such as the beautiful Old German deco- dvisvgm manual page. rative initials by Yannis Haralambous. However, dur- Because of the lengthy text-based nature of XML ing the first releases of dvisvgm, I regularly stumbled documents, SVG files tend to be bigger than other over documents that could not be converted com- vector graphics formats. To reduce the file size, the pletely because they relied on fonts only available as SVG standard specifies gzip- and deflate-compressed METAFONT source. Some of these were designed by SVG files which normally use the extension .svgz. the document authors to provide special characters To create compressed files on the fly during a DVI or little drawings. conversion, the option --zip is available. The problem is that although METAFONT allows detailed, high-level vectorial descriptions of glyphs, 3 Font support it doesn't create vector but bitmap output, in the In contrast to PostScript and PDF, DVI provides no form of GF (Generic Font) files.
Recommended publications
  • XMP SPECIFICATION PART 3 STORAGE in FILES Copyright © 2016 Adobe Systems Incorporated
    XMP SPECIFICATION PART 3 STORAGE IN FILES Copyright © 2016 Adobe Systems Incorporated. All rights reserved. Adobe XMP Specification Part 3: Storage in Files NOTICE: All information contained herein is the property of Adobe Systems Incorporated. No part of this publication (whether in hardcopy or electronic form) may be reproduced or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior written consent of Adobe Systems Incorporated. Adobe, the Adobe logo, Acrobat, Acrobat Distiller, Flash, FrameMaker, InDesign, Illustrator, Photoshop, PostScript, and the XMP logo are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries. MS-DOS, Windows, and Windows NT are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. Apple, Macintosh, Mac OS and QuickTime are trademarks of Apple Computer, Inc., registered in the United States and other countries. UNIX is a trademark in the United States and other countries, licensed exclusively through X/Open Company, Ltd. All other trademarks are the property of their respective owners. This publication and the information herein is furnished AS IS, is subject to change without notice, and should not be construed as a commitment by Adobe Systems Incorporated. Adobe Systems Incorporated assumes no responsibility or liability for any errors or inaccuracies, makes no warranty of any kind (express, implied, or statutory) with respect to this publication, and expressly disclaims any and all warranties of merchantability, fitness for particular purposes, and noninfringement of third party rights. Contents 1 Embedding XMP metadata in application files .
    [Show full text]
  • Encapsulated Postscript File Format Specification
    ® Encapsulated PostScript File Format Specification ®® Adobe Developer Support Version 3.0 1 May 1992 Adobe Systems Incorporated Adobe Developer Technologies 345 Park Avenue San Jose, CA 95110 http://partners.adobe.com/ PN LPS5002 Copyright 1985–1988, 1990, 1992 by Adobe Systems Incorporated. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior written consent of the publisher. Any software referred to herein is furnished under license and may only be used or copied in accordance with the terms of such license. PostScript is a registered trademark of Adobe Systems Incorporated. All instances of the name PostScript in the text are references to the PostScript language as defined by Adobe Systems Incorpo- rated unless otherwise stated. The name PostScript also is used as a product trademark for Adobe Sys- tems’ implementation of the PostScript language interpreter. Any references to a “PostScript printer,” a “PostScript file,” or a “PostScript driver” refer to printers, files, and driver programs (respectively) which are written in or support the PostScript language. The sentences in this book that use “PostScript language” as an adjective phrase are so constructed to rein- force that the name refers to the standard language definition as set forth by Adobe Systems Incorpo- rated. PostScript, the PostScript logo, Display PostScript, Adobe, the Adobe logo, Adobe Illustrator, Tran- Script, Carta, and Sonata are trademarks of Adobe Systems Incorporated registered in the U.S.A. and other countries. Adobe Garamond and Lithos are trademarks of Adobe Systems Incorporated.
    [Show full text]
  • Web Compatible SAS/GRAPH Output the Easy
    Web Compatible SAS/GRAPH® Output the Easy Way Ahsan Ullah, Pinkerton Computer Consultants, Inc., Alexandria, VA ABSTRACT • Proper use of colors is a must to make the image attractive. • (TM) This paper describes some concepts and analyses required If there is an option to print the image, a PostScript to create SAS/GRAPH images for use in WEB pages. It file needs to be tagged along with the image which will deals with an automated SAS/AF® Frame system designed to keep the usual form of the printed output create and print a number of graphs and produce suitable • In order to print a hard copy of the graph from the graph image files for inclusion on WEB pages. Topics internet, a PostScript color or black and white with discussed include drill-down design, programming minimum of 0.5 X 0.5 inch margin should be selected. (TM) techniques for creating GIF files, and the creation of custom Most Hewlett Packard printers satisfy the SAS Device Drivers. requirements. INTRODUCTION A user-friendly SAS/AF Frame system needs to be created to perform the following functions: • Interactive or batch process to create images. SAS software is a major leader in information and • Support the selection of device drivers to print or management systems. It has powerful features that support transport postscript or GIF file. the creation of customized hard copy output that includes • both data and graphic output. Until now, SAS custom graphs Automatically add HTML code to create Web-ready could not take their place in the Web world because of: graph images • Sophistication of SAS custom graphs • True portability across platforms Device Drivers • Interactive way to create and process graphs A GIF device driver is needed for SAS software to create a GIF Image file of the graph.
    [Show full text]
  • Making TIFF Files from Drawing, Word Processing, Powerpoint And
    Making TIFF and EPS files from Drawing, Word Processing, PowerPoint and Graphing Programs In the worlds of electronic publishing and video production programs, the need for TIFF or EPS formatted files is a necessity. Unfortunately, most of the imaging work done in research for presen- tation is done in PowerPoint, and this format simply cannot be used in most situations for these three ends. Files can be generally be saved or exported (by using either Save As or Export under File) into TIFF, PICT or JPEG files from PowerPoint, drawing, word processing and graphing programs—all called vector programs—but the results are often poor in resolution (in Photoshop these are shown as having a resolution of 72dpi when opening the Image Size dialogue box: under Image on the menu select Image Size). Here are four ways to save as TIFF (generally the way in which image files are saved) or EPS (gen- erally the way in which files are saved which contain lines or text): Option 1. Use the Program’s Save As or Export option. If it exists, use the Export or Save As option in your vector program. This only works well when a dialogue box appears so that specific values for height, width and resolution can be typed in (as in the programs Canvas and CorelDraw). Anti-aliasing should be checked. Resolution values of 300 dots per inch or pixels per inch is for images, 600 dpi is for images with text and 1200 dpi is for text, graphs and drawings. If no dialogue box exists to type in these values, go to option 2 - 4.
    [Show full text]
  • Adobe Type 1 Font Format Adobe Systems Incorporated
    Type 1 Specifications 6/21/90 final front.legal.doc Adobe Type 1 Font Format Adobe Systems Incorporated Addison-Wesley Publishing Company, Inc. Reading, Massachusetts • Menlo Park, California • New York Don Mills, Ontario • Wokingham, England • Amsterdam Bonn • Sydney • Singapore • Tokyo • Madrid • San Juan Library of Congress Cataloging-in-Publication Data Adobe type 1 font format / Adobe Systems Incorporated. p. cm Includes index ISBN 0-201-57044-0 1. PostScript (Computer program language) 2. Adobe Type 1 font (Computer program) I. Adobe Systems. QA76.73.P67A36 1990 686.2’2544536—dc20 90-42516 Copyright © 1990 Adobe Systems Incorporated. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior written permission of Adobe Systems Incorporated and Addison-Wesley, Inc. Printed in the United States of America. Published simultaneously in Canada. The information in this book is furnished for informational use only, is subject to change without notice, and should not be construed as a commitment by Adobe Systems Incorporated. Adobe Systems Incorporated assumes no responsibility or liability for any errors or inaccuracies that may appear in this book. The software described in this book is furnished under license and may only be used or copied in accordance with the terms of such license. Please remember that existing font software programs that you may desire to access as a result of information described in this book may be protected under copyright law. The unauthorized use or modification of any existing font software program could be a violation of the rights of the author.
    [Show full text]
  • EXT EX Product Family Product Family for Occasional Graphics Users and Comparison Comparison Creative Consumers
    TEXT EX Product Family Product Family For occasional graphics users and Comparison Comparison creative consumers For graphics hobbyists and home businesses For occasional For graphics For graphics graphics users and hobbyists and professionals in small Full-featured suite creative consumers home businesses to large businesses for graphics professionals in small to large businesses Main Applications Most Popular CorelDRAW® 2020 Corel PHOTO-PAINT™ 2020 Corel Font Manager™ 2020 PowerTRACE™ (Quick Trace only) (included as part of the CorelDRAW application) CAPTURE™ CorelDRAW.app™ Key Features & Tools (Highlights) Corel AfterShot™ 3 HDR Bevel tool, Shadow tools, Spiral, Smooth and Smear tool, Contour tool Key Features & Tools (Highlights) Clone Tool, Artistic Media Bevel tool, Shadow tools, Spiral, Smooth and Smear tool, Contour tool Key Features & Tools (Highlights) Dimension dockers, Alignment guides Clone Tool, Artistic Media Symmetry drawing mode, Block Shadow tool, Impact tool, Pointillizer, Dimension dockers, Alignment guides PhotoCocktail Barcode Wizard Symmetry drawing mode, Block Professional Print options Duplexing Wizard Shadow tool, Impact tool, Pointillizer, Remove (CMYK features, Composite, Color PhotoCocktail separations, Postscript, Prepress tabs) GPL Ghostscript for enhanced EPS Advanced page layout: left & right master Object styles, Color styles, Color harmonies and PS support pages, custom placeholder text, image rendering above 150dpi Professional Print options (CMYK features, Composite, Color separations, Postscript, Enhanced
    [Show full text]
  • HP Designjet Printers: Purchasing Adobe® Postscript Models September 2007
    HP Designjet Printers: Purchasing Adobe® Postscript Models September 2007 Adobe PostScript PostScript is a page description language developed by Adobe Systems Incorporated. It is a way of describing what a page should look like. Its main application is its ability to handle complex text and graphics. Most HP Designjet platforms offer standard and Adobe PostScript models. And in all cases, the HP Designjet printers with embedded Adobe PostScript often have advantages that go far beyond their ability to print PostScript files. General Guidelines In general, traditional line drawing uses are least likely to need PostScript. But even someone who prints primarily line drawings may want or need to choose a model with PostScript. Users should always opt for the Adobe PostScript model if any of the following is true: 1. Your primary applications (or those of someone who shares your device) are those from the Adobe Suite of software, such as Illustrator, PhotoShop, or InDesign. In general, any of these applications, especially if they use a mixture of vector and raster images, will yield the best results when using an Adobe PostScript driver. 2. Your company or organization has standardized on PostScript printers. Some IT managers require that all equipment be PostScript compatible for simplicity and consistency of support. 3. Your particular application generates only PostScript files. This is not common, but check with your application vendor if you are not sure. 4. You utilize EPS, or embedded PostScript images in your files. Some clip art, for instance, is only available in EPS format, especially on Macintosh computers. These images will only print correctly on a printer with PostScript capabilities.
    [Show full text]
  • Up & Running: PDFLATEX in Miktex 1.09
    Up & Running: PDFLATEX in MikTEX 1.09 David Meeker February 25, 1998 1 Configuration I upgraded from MikTEX 1.08 to 1.09 just by downloading and unzipping the distribution files ending in 109 from CTAN. Since I already had the full set of Type1 CM fonts stored in a direc- tory outside my texmf tree, I had to modify \texmf\miktex\config\miktex.environment, line 64 to reflect where I have my fonts. If the whole 1.09 distribution is unpacked as-is, then this modification is probably unnecessary. To ensure that everything is consistent with this change, run configure.exe in same directory. I also discovered that I did not have copies of the files supp-pdf.tex and supp-mis.tex that are necessary to properly include graphics into PDFLATEX files. They can be downloaded off of CTAN from the directory macros/pdftex/graphics/. They should be moved to \texmf\tex\latex\base, where the can be found by PDFLATEX. 2 Running PDFLATEX A few special commands need to be put into your LATEX document so that it will produce PDF correctly. In preamble (just before \begin{document}) you need the following: \pdfcompresslevel=9 Requests full compression of the PDF \pdfoutput=1 Tells the program to produce PDF instead of DVI To get automatic links in your pdf, as well as a table of contents, use the package ‘hyperref’ (available from CTAN in /macros/latex/contrib/supported/hyperref). It is called with \usepackage[pdftex]{hyperref}, which should be the last package called before \begin{document}. Your document should be compiled at least three times in a row so that all the bookmarks are included properly in the PDF.
    [Show full text]
  • Viewing Postscript on a Macintosh
    Charles A. Poynton 56A Lawrence Avenue E Toronto, ON M4N 1S3 CANADA tel +1 416 486 3271 fax +1 416 486 3657 [email protected] Viewing PostScript on a Macintosh This note concerns the viewing and printing of PostScript on a Macintosh. The note contains an Introduction to PostScript, information about Printing PostScript on a Mac,a section concerning Viewing and printing PostScript on a Mac, and an introduction to Encapsulated PostScript (EPS). 1 Introduction to PostScript PostScript is a programming language specialized to produce images with type and drawn elements. It is possible to encode a continuous-tone image into a PostScript file, but TIFF is better suited to that purpose. A PostScript file is independent of the resolution of the output device: the interpreter in a particular device produces an image appropriate for that device. A PostScript file generally contains only characters from the 96-character ASCII set, and accommo- dates any line-end convention (UNIX, MS-DOS and Mac) so it is relatively easy to move PostScript files through networks and across e-mail links. Since PostScript includes a complete programming language, it is generally not possible to convert a PostScript file into some other format – either an object-oriented format like PICT or WMF, or a bitmapped format like GIF or TIFF – without using a full PostScript language interpreter. A few restricted, specialized dialects of PostScript – such as the Adobe Illustrator file format [4] – can be translated without a full interpreter. PostScript was invented by Adobe Systems, Inc. The specification of the PostScript language [1] and the PostScript font format [2] have been made public by Adobe, and several PostScript “clones” are commercially available.
    [Show full text]
  • Digital Preservation Guidance Note: Graphics File Formats
    Digital Preservation Guidance Note: 4 Graphics File Formats Digital Preservation Guidance Note 4: Graphics file formats Document Control Author: Adrian Brown, Head of Digital Preservation Research Document Reference: DPGN-04 Issue: 2 Issue Date: August 2008 ©THE NATIONAL ARCHIVES 2008 Page 2 of 15 Digital Preservation Guidance Note 4: Graphics file formats Contents 1 INTRODUCTION .....................................................................................................................4 2 TYPES OF GRAPHICS FORMAT........................................................................................4 2.1 Raster Graphics ...............................................................................................................4 2.1.1 Colour Depth ............................................................................................................5 2.1.2 Colour Spaces and Palettes ..................................................................................5 2.1.3 Transparency............................................................................................................6 2.1.4 Interlacing..................................................................................................................6 2.1.5 Compression ............................................................................................................7 2.2 Vector Graphics ...............................................................................................................7 2.3 Metafiles............................................................................................................................7
    [Show full text]
  • Submitting Electronic Artwork This Guide Contains Information About Submitting Electronic Artwork to Our Journals
    Submitting electronic artwork This guide contains information about submitting electronic artwork to our journals. If you have further queries after reading this guide, please email [email protected] for help. Contents Checklist .............................................................................................................................................. 2 Third-party material ............................................................................................................................ 2 Preparation ......................................................................................................................................... 2 Recommended image resolutions .................................................................................................. 2 Size .................................................................................................................................................. 2 File formats for submission to peer review .................................................................................... 2 PS and EPS (PostScript and Encapsulated PostScript) ..................................................................... 3 Creating JPEG and EPS ..................................................................................................................... 3 Placement within manuscript files .................................................................................................. 3 Submission .........................................................................................................................................
    [Show full text]
  • Introduction To
    Tutorials and worked examples for simulation, curve fitting, statistical analysis, and plotting. SimfitSimfitSimfitSimfitSimfitSimfitSimfitSimfitSimfitSimfitSimfitSimfitSimfitSimfit https://simfit.org.uk In order to appreciate the nature and use of scalable vector graphics files (*.SVG) it is useful to review the two document types, namely bitmap and vector, that are used to archive graphs and include them into computer generated documents or web pages. Bitmaps These files (*.BMP) contain the raw information for every pixel captured by a digital photograph or displayed on a computer screen. They have the following properties. • The larger the number of pixels then the greater the detail recorded. • Such files are very easy to display, include in documents, or print but, unless there is a large number of pixels, then lines and curves will appear stepped and fonts will pixelate. • For complicated portraits, landscapes, capture of microscope fields, or 3D display of molecules etc. requiring shading such files are indispensable. • Where there are appreciable homogeneous patches such as blue sky in a landscape then considerable compression into formats such those of the joint photographic expert group (*.JPG) or portable network graphics (*.PNG) can result in smaller files, but compression is not always lossless. • Where a bitmap has been created using antialiasing to smooth out polygons and polylines as in text, curves, or lines then compression can lead to fuzzy curves or distorted characters. Traditional computer graphics hardly ever looked good on computer screens because hard edges at an angle would show as a series of steps (a distortion known as aliasing). This made even the simplest graph – such as a sine curve, look ugly.
    [Show full text]