Device independent file format

DVI-Vorschau

Das Device independent file format (DVI) ist eine von David Fuchs 1979 entworfene Seitenbeschreibungssprache.[1]

Eigenschaften von DVI-Dateien

In einer DVI-Datei wird ein Text, ergänzt um Satzinformationen (Schriftarten, Zeichen- und Zeilenabstände, Zeichenpositionen), gespeichert. Die Besonderheit von DVI gegenüber ähnlichen Formaten wie PDF, PostScript oder SVG ist, dass die verwendeten Zeichensätze nicht in der Datei selbst abgelegt werden, sondern nur von dort referenziert werden, sie müssen also auf dem Zielsystem vorhanden sein. DVI-Dateien sind daher meist sehr klein; jedoch muss man, um sie lesen zu können, die entsprechenden Schriften (z. B. durch ein ähnliches TeX-Basissystem wie der Ersteller der Datei) installiert haben. Ein weiterer Vorteil neben der Größe ist, dass die Schriften auf dem Zielgerät (z. B. Drucker) für dieses optimiert sind. Dies lässt sich mit METAFONT-Schriften bewerkstelligen, bei denen für jedes Gerät ein angepasster Satz an Bitmap-Schriften erstellt wird.

Grafiken können von DVI nur indirekt behandelt werden, meist als externe Referenz (DVI special) auf eine Datei in einem passenden Grafikformat. Vom Satzaspekt her behandelt DVI eine Grafik wie ein einzelnes Zeichen, z. B. wie einen gewöhnlichen Buchstaben. Die einzige Ausnahme bilden rechteckige, ausgefüllte Bereiche, wie z. B. horizontale oder vertikale Linien. Diese können in DVI-Dateien direkt beschrieben werden.

Weit verbreitet wurde DVI wohl vor allem durch Donald Ervin Knuths Entscheidung, DVI als Ausgabeformat für sein Textsatzsystem TeX zu verwenden, da es zum Zeitpunkt der Programmierung von TeX noch keinen etablierten Standard zur Seitenbeschreibung gab. Es gibt eine Aussage von ihm, dass er damals PostScript verwendet hätte, wenn es schon existiert hätte. DVI kann in diverse andere Formate konvertiert werden, unter anderen PostScript, PDF und SVG.

DVI wird nicht nur von TeX ausgegeben, auch andere Programme, etwa groff, können DVI-Dateien erzeugen.

Werkzeuge für DVI-Dateien

Betrachter

  • xdvi ist das unter Unix, Linux und OpenVMS standardmäßig verwendete Programm zur Betrachtung von DVI-Dateien. Eine Erweiterung stellen xdvik und xhdvi dar, mit denen auch Hyperlinks in der DVI-Datei verfolgt werden können. Unter bestimmten Linux-Desktop-Umgebungen gibt es weiter
    • den PDF-Betrachter Evince, der auch DVI darstellen kann, für Gnome (wird auch mit Lubuntu und Xubuntu genutzt).
    • kdvi ist ein DVI-Betrachter (Standalone oder KPart) für KDE.
    • Okular ist ein Dokumentbetrachter für KDE ab Version 4, der u. a. auch DVI darstellen kann.
  • yap ist ein unter Windows verfügbarer Betrachter für DVI-Dateien und ist in MiKTeX enthalten.

Druckertreiber

Bis Mitte der 1990er Jahre wurden für viele verschiedene Drucker separate Druckertreiber entwickelt. Da viele Entwicklungen freie Software waren, kann man sie heute noch auf den CTAN-Archiven finden und bei Bedarf herunterladen. Seither hat sich jedoch dvips von Tomas Rokicki als der Standarddruckertreiber durchgesetzt, der aus einer DVI-Datei eine PostScript-Datei erzeugt. Nicht-PostScript-fähige Drucker werden dann mit Hilfe von ghostscript angesprochen.

Andere Druckertreiber, die zurzeit noch aktiv weiterentwickelt werden, sind

  • dvipdfmx[2] – ein Treiber, der aus DVI-Dateien direkt PDF-Dateien erzeugt
  • dvisvg[3] – ein Treiber für SVG
  • dvisvgm[4] – ein weiterer Treiber für SVG

Sonstiges

  • dvitype – gibt eine DVI-Datei in einem menschenlesbaren Format (ASCII) aus, wobei die Detaillierung über einen Parameter eingestellt werden kann. Der in WEB geschriebene Quellcode enthält die Dokumentation des DVI-Formats.
  • dvicopy – macht aus DVI-Dateien mit besonderen Eigenschaften einfachere DVI-Dateien, etwa durch Auflösen von virtuellen Fonts.

Einzelnachweise

  1. Donald E. Knuth: DVItype. December 1995
  2. KTUG
  3. Sourceforge
  4. Sourceforge

Auf dieser Seite verwendete Medien

Evince previewing a DVI file.png
Autor/Urheber: Grendelkhan, Lizenz: GPL
Screenshot of evince previewing a DVI file. Note that the image isn't included.