Device independent file format

Device-independent (DVI)
Evince previewing a DVI file. Note that referenced images are not displayed, because they are not part of the DVI file. Images will be added in by a print driver, such as dvips.
Filename extension
.dvi
Internet media typeapplication/x-dvi (unofficial)
Developed byDavid R. Fuchs
Type of formatdocument

The device independent file format (DVI) is the output file format of the TeX typesetting program, designed by David R. Fuchs and implemented by Donald E. Knuth in 1982.[1] Unlike the TeX markup files used to generate them, DVI files are not intended to be human-readable; they consist of binary data describing the visual layout of a document in a manner not reliant on any specific image format, display hardware or printer. DVI files are typically used as input to a second program (called a DVI driver) which translates DVI files to graphical data. For example, most TeX software packages include a program for previewing DVI files on a user's computer display; this program is a driver. Drivers are also used to convert from DVI to popular page description languages (e.g. PostScript, PDF) and for printing.

TeX markup may be at least partially reverse-engineered from DVI files, although this process is unlikely to produce high-level constructs identical to those present in the original markup, especially if the original markup used high-level TeX extensions (e.g. LaTeX).

DVI differs from PostScript and PDF in that it does not support any form of font embedding, instead merely referencing external font names. (Both PostScript and PDF formats can embed their fonts inside the documents.) For a DVI file to be printed or even properly previewed, the fonts it references must be already installed. Like PDF, DVI uses a limited sort of machine language with termination guarantees that is not a full, Turing-complete programming language like PostScript.

As of 2004 there is a compilation of the specifications a DVI driver must implement by the "TUG DVI Driver Standards Committee".[2] It seems to be based on a TUGboat article of the same name from 1992, but which is much shorter.[3] These documents do not specify the endianness, which is however big endian, as can be seen looking into a DVI file itself.

  1. ^ Donald E. Knuth (December 1995). "DVItype" (WEB source code; extract full documentation using WEAVE). Version 3.6. Retrieved 2008-05-07.
  2. ^ TUG DVI Driver Standards Committee. "The DVI Driver Standard, Level 0" (PDF). ctan.org.
  3. ^ TUG DVI Driver Standards Committee (1992). "The DVI Driver Standard, Level 0" (PDF). TUGboat. 13: 54.