home *** CD-ROM | disk | FTP | other *** search
- % <BEEBE.TEX.DVI>DVIALW.PS.19, 20-Sep-88 10:58:09, Edit by BEEBE
- % Modify BOJ to use default matrix if neither note nor letter are known
- % Add commented-out Ctl-D macro for use on DEC-LPS40
- % <BEEBE.TEX.DVI>DVIALW.PS.18, 1-Sep-88 18:03:44, Edit by BEEBE
- % Increase BitMaps array in NF macro from 128 to 256 entries to support
- % extended 8-bit character sets
- % <BEEBE.TEX.DVI>DVIALW.PS.17, 18-Sep-87 17:48:04, Edit by BEEBE
- % Add test for note paper and if unknown, use letter paper instead.
- % Non-Apple PostScript implementations do not know about note paper
- % but its use on the Apple LaserWriter gains 92K of virtual memory
- % <BEEBE.TEX.DVI>DVIALW.PS.16, 18-Sep-87 15:50:52, Edit by BEEBE
- % Modify coordinate computations to remove round-off errors
- % in landscape mode, and correct landscape page origin
- % <BEEBE.TEX.DVI>DVIALW.PS.14, 22-Jun-87 09:55:05, Edit by BEEBE
- % Add missing "0 900 translate Mtrx currentmatrix pop" to /LEGAL
- % <BEEBE.TEX.DVI>DVIALW.PS.13, 7-Jan-87 17:38:51, Edit by BEEBE
- % Add translate command to BOP so that (0,0) really corresponds to
- % the top left physical page corner. The standard LaTeX file
- % TESTPAGE.TEX can be used for this calibration; it might be sensitive
- % to the particular printer used.
- % <BEEBE.TEX.DVI.NEW>DVIALW.PS.12, 10-Dec-86 17:24:50, Edit by BEEBE
- % Fix off-by-one error in definition of /B; to draw a box N pixels
- % wide, microscopic examination of output shows that the box width
- % must be N-1, not N, pixels; the boundary counts in the filling.
- % <BEEBE.TEX.DVI.NEW>DVIALW.PS.9, 28-Nov-86 19:00:52, Edit by BEEBE
- % Change definition of EOP to use #copies and showpage
- % instead of {copypage} repeat erasepage
- % <BEEBE.TEX.DVI.NEW>DVIALW.PS.7, 16-Oct-86 13:09:36, Edit by BEEBE
- % Following Macintosh LaserWriter md dictionary, change most
- % def's to bdf's (bind def); this is claimed to speed up
- % operator access
- % <BEEBE.TEX.DVI.NEW>DVIALW.PS.5, 16-Oct-86 12:01:12, Edit by BEEBE
- % Change CTL-L to caret-L in comment
- % <BEEBE.TEX.DVI.NEW>DVIALW.PS.3, 13-Jun-86 10:48:39, Edit by BEEBE
- % Fix definition of NOTE, make it default in BOJ macro to try to reduce
- % incidence of VM errors
- % ----------------------------------------------------------------------
- % DVIALW PostScript macro definitions (keep in alphabetical order). For
- % readability, these are heavily commented, but we adhere to the
- % convention that percent is used ONLY to mark the beginning of a
- % comment (NEVER occurs inside a PostScript string), and lines are
- % limited to 80 characters. That way, DVIALW can read these definitions
- % from a file and discard comments and trailing white space before
- % transmission to the PostScript output file. In the interests of
- % compactness, macros which receive any significant degree of use are
- % given single letter names -- PostScript is already much too verbose.
- %
- % Coordinates are assumed to be in pixels (Resolution per inch). The
- % page origin follows the PostScript convention of being in the lower
- % left corner, y positive upwards along the longer side of the page, x
- % positive to the right. Letter and legal sizes are therefore
- % equivalent as far as PostScript is concerned, but y coordinates can be
- % bigger in legal size. In landscape mode, the page is rotated to place
- % the origin in the upper left corner, x positive downward along the
- % longer side of the page, y positive to the right. That way, pages
- % eject from the printer upright when viewed from the front of the
- % printer.
- %
- % Document format is something like this:
- %
- % %!PS-Adobe-1.0
- % %%Dimensions: 0 0 612 792
- % %%Title: DVIALW -o1 -s300 foo12
- % %%CreationDate: Sat Mar 8 10:52:52 1986
- % %%Creator: BEEBE and [TeX82 DVI Translator Version 2.03b...]
- % %%Pages: (atend)
- % %%BugHistory: Incorporates save/restore and font reloading...
- % %%BugHistory: Incorporates Allan Hetzel's 31-Oct-85 DARPA...
- % %%EndComments
- % %%EndProlog
- % %%Page: 0 1
- % TeXdict begin
- % BOJ
- % BOP
- % ...
- % 1 EOP
- % ~LBOP
- % ...
- % 1 EOP
- % ~LBOP
- % ...
- % 1 EOP
- % ~LEOJ
- % %%Trailer
- % %%Pages: 7
- % %%PageTable: 0 1 3434
- % ~D
- %
- % One formfeed is output for each printed page copy, in order to make
- % spooler page accounting simple. The additional comments wrapping the
- % BOJ .. EOJ sequence conform to Adobe PostScript file structuring
- % conventions, and the first line can be used by the spooler to identify
- % the file as containing PostScript.
- % ----------------------------------------------------------------------
-
-
- % control D (EOT) -- do nothing.
- % Usage -- for PostScript printers that do not use the LaserWriter's
- % serial protocol, the ~D described above will be sent to the
- % interpreter for execution. Make sure that it does nothing. This
- % definition must be outside TeXdict since it is invoked at the end of
- % file, after TeXdict is removed from the stack by EOJ.
- %
- % Remove the following 3 %%% lines for such printers.
- %%%(\004) cvn
- %%%{
- %%%} def
- statusdict
- begin
- product % this gets printer name
- (PrintServer 40) eq % if DEC LPS-40
- {(\004) cvn{ } def} % then make Ctl-d a no-op
- {} % else do nothing
- ifelse
- end
-
- /TeXdict 200 dict def % dictionary for these definitions
- TeXdict begin
-
- % bdf -- bind def (for efficiency)
- % Usage -- just like def, but not on constant objects
- /bdf {bind def} def
-
- % B -- draw bar (TeX rule) of size w by h at currentpoint
- % Usage -- w h B
- /B
- {
- /h exch def
- /w exch def
- gsave
- currentpoint
- newpath
- moveto
- w 1 sub 0 rlineto
- 0 h 1 sub rlineto
- w 1 sub neg 0 rlineto
- closepath fill
- grestore
- } bdf
-
- % BOJ -- beginning of job (EOF ends it and closes TeXdict)
- % Usage -- BOJ
- /BOJ
- {
- 72 Resolution div 72 Resolution div scale
- userdict /note known
- {NOTE} % default page format for ALW
- {userdict /letter known
- {LETTER} % default page format for others
- {Mtrx currentmatrix pop} ifelse} % if letter unknown, use current
- ifelse
- } bdf
-
- % BOP -- beginning of page
- % Usage -- BOP
- /BOP
- {
- clear
- Mtrx setmatrix
- 25 0 translate % Physical page origin is at (-25,0) from the top left corner
- } bdf
-
- % ch-fieldname -- extract field from ch-data array (order defined by positions
- % in first array argument to macro D)
- % Usage -- ch-fieldname
- /ch-image {ch-data 0 get} bdf % the bitmap hex string image
- /ch-xoff {ch-data 1 get} bdf % pixels from left edge of bitmap to char origin
- /ch-yoff {ch-data 2 get} bdf % pixels from top edge of bitmap to char origin
- /ch-width {ch-data 3 get} bdf % bitmap width in pixels
- /ch-height {ch-data 4 get} bdf % bitmap height in pixels
- /ch-tfmw {ch-data 5 get} bdf % pixels to next character (precise flt value)
-
- % CharBuilder -- image one character
- % Usage -- fontdict ch CharBuilder
- /CharBuilder
- {
- /ch-code exch def % save the char code
- /font-dict exch def % and the font dict.
- /ch-data font-dict /BitMaps get
- ch-code get def % get the bitmap descriptor for char
- ch-data null eq not % show character if entry is not empty
- {
- ch-tfmw 0
- ch-xoff neg ch-yoff ch-height sub
- ch-width ch-xoff sub ch-yoff
- setcachedevice
- 0 0 SNAP translate
- ch-width ch-height true [ 1 0 0 -1 ch-xoff ch-yoff ]
- {ch-image} imagemask
- } if
- } bdf
-
-
- % D -- define new character in current font
- % Usage -- [<bitmap> xoff yoff pixwid pixht tfmpixwid] charnum D
- /D
- {
- /ch-code exch def
- /ch-data exch def
- currentfont /BitMaps get ch-code ch-data put
- currentfont /Encoding get ch-code dup 3 string cvs cvn put
- } bdf
-
- % EOJ -- end of job
- % Usage -- EOJ
- /EOJ
- {
- end % matches begin issued before BOJ
- } bdf
-
- % EOP -- end of page
- % Usage -- ncopies EOP
- /EOP
- {
- /#copies exch def
- showpage
- } bdf
-
- % LANDSCAPE -- landscape format page (11inH x 8.5inV)
- % Usage -- LANDSCAPE
- /LANDSCAPE
- {
- letter initmatrix
- 72 Resolution div dup scale
- 0 3300 translate
- -90 rotate
- 0 -750 translate
- Mtrx currentmatrix pop
- } bdf
-
- % LEGAL -- legal format page (8.5inH x 13inV)
- % Usage -- LEGAL
- /LEGAL
- {
- legal initmatrix
- 72 Resolution div dup scale
- 0 900 translate
- Mtrx currentmatrix pop
- } bdf
-
- % LETTER -- letter format page
- % Usage -- LETTER
- /LETTER
- {
- letter initmatrix
- 72 Resolution div dup scale
- Mtrx currentmatrix pop
- } bdf
-
- % M -- moveto
- % Usage -- x y M
- /M
- {
- moveto
- } bdf
-
- % Mtrx -- permanent storage for page transformation matrix
- % Usage -- Mtrx
- /Mtrx 6 array def
-
- % NF -- define new font
- % Usage -- /fontname NF
- /NF
- {
- /newname exch def
- newname 7 dict def
- newname load
- begin
- /BitMaps 256 array def
- /BuildChar { CharBuilder } def
- /Encoding 256 array def
- 0 1 255 { Encoding exch /.notdef put } for
- /FontBBox [ 0 0 1 1 ] def
- /FontMatrix [ 1 0 0 1 0 0 ] def
- /FontType 3 def
- end
- newname newname load definefont pop
- } bdf() pop
-
- % NOTE -- note format page (increases available virtual memory from 240K
- % to 340K on Apple LaserWriter)
- % Usage -- NOTE
- /NOTE
- {
- note initmatrix
- 72 Resolution div dup scale % set scaling to 1.
- Mtrx currentmatrix pop
- } bdf
-
- % P -- show string at current point, updating horizontal position to new endpt
- % Usage -- (string) P
- /P {show} bdf() pop
-
- % Q -- draw bar of last size set by B command at specified point
- % Usage -- x y Q
- /Q {moveto w h B} bdf() pop
-
- % R -- move relative right and show string, updating horizontal position to
- % new endpoint
- % Usage -- (string) xxx R
- /R {0 rmoveto show} bdf() pop
-
- % Resolution -- device resolution in dots/inch
- % Usage -- Resolution
- /Resolution 300 def
-
- % S -- move absolute and show string, updating horizontal position to new endpt
- % Usage -- (string) xxx yyy S
- /S {moveto show} bdf() pop
-
- % SF -- set new font at scale nnn (nnn = 1 normally; 2 gives double size chars)
- % Usage -- nnn /fontname SF
- /SF {findfont exch scalefont setfont} bdf() pop
-
- % SNAP -- convert coordinates to integer device coordinates and back again
- % Usage -- xxx yyy SNAP (leave xxx' yyy' on stack)
- /SNAP {transform 2 {floor 0.5 add exch} repeat itransform} bdf
-
- % T -- move absolute horizontally and show string, updating horizontal position
- % to new endpt
- % Usage -- (string) xxx T
- /T {currentpoint exch pop moveto show} bdf() pop
-
- end % TeXdict
- % the end the end the end the end the end the end the end the end the end
-