1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
/*
================================================================================
== DVI file format ==
================================================================================
no_ops >= 0 bytes (NOP, nops before the preamble)
preamble_marker 1 ubyte (PRE)
version_id 1 ubyte (should be version 2)
numerator 4 ubytes (numerater must equal the one in postamble)
denominator 4 ubytes (denominator must equal the one in postamble)
magnification 4 ubytes (magnification must equal the one in postamble)
id_len 1 ubyte (lenght of identification string)
id_string id_len ubytes (identification string)
no_ops >= 0 bytes (NOP, nops before a page)
begin_of_page 1 ubyte (BOP)
page_nr 4 sbytes (page number)
do_be_do 36 bytes (filler ????)
prev_page_offset 4 sbytes (offset in file where previous page starts, -1 for none)
... PAGE DATA ...
end_of_page 1 ubyte (EOP)
no_ops ??? >= 0 bytes (NOPS, I think they are allowed here...)
postamble_marker 1 ubyte (POST)
last_page_offset 4 sbytes (offset in file where last page starts)
numerator 4 ubytes (numerater must equal the one in preamble)
denominator 4 ubytes (denominator must equal the one in preamble)
magnification 4 ubytes (magnification must equal the one in preamble)
max_page_height 4 ubytes (maximum page height)
max_page_width 4 ubytes (maximum page width)
max_stack 2 ubytes (maximum stack depth needed)
total_pages 2 ubytes (number of pages in file)
... FONT DEFINITIONS ...
postamble_offset 4 sbytes (offset in file where postamble starts)
version_id 1 ubyte (should be version 2)
trailer >= 4 ubytes (TRAILER)
<EOF>
FONT DEFINITIONS:
do {
switch (c = getc(dvi_fp) {
case FNTDEF1 :
case FNTDEF2 :
case FNTDEF3 :
case FNTDEF4 : define_font(c);
case POSTPOST : break;
default : error;
}
} while (c != POSTPOST);
===== A font def looks like:
1,2,3 or 4 ubytes TeXfontnumber for FNTDEF1 .. FNTDEF4
4 ubytes checksum
4 ubytes scale
4 ubytes design size
1 byte deflen1
1 byte deflen2
deflen1 + deflen2 bytes fontname.
===== A special looks like:
1,2,3 or 4 ubytes telling length of special command for XXX1 .. XXX4
all bytes in the special command are used as defined in the dvi driver.
-Marcel Mol
*/
From: schrod@iti.informatik.th-darmstadt.de (Joachim Schrod)
Date: 2 Jan 92 18:26:27 GMT
Since this question comes up often, I post the answer:
The following file format definitions are part of the TUG DVI Driver
Standards Draft:
DVI
GF
PK
TFM
You can ftp them from ftp.th-darmstadt.de, directory
pub/tex/dvi-standard/standards.
Take either draft-0.05a.tar.Z (the complete standard) or
<xxx>.tex+fileform.sty where you have to replace <xxx> by dvi, gf,
etc.
In the latter case -- when you fetch single files -- you'll need
to add a LaTeX standard frame (\documentstyle{article} +
\begin{document} + \end{document}) to get a full, LaTeXable document.
--
Joachim
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Joachim Schrod Email: schrod@iti.informatik.th-darmstadt.de
Secretary of TUG DVI Driver Standards Committee
|