[comp.windows.news] Does definefont really work

conrad@jupiter.ucsc.edu (Al Conrad, x2370) (05/12/89)

I am trying to fix the postscript produced by dvi2ps so that I can
preview it with psview.  In the following TeXcerpt I had to:

	- add /letter {} def at the top.
	- change dict def in newfont from 7 to 8.

to sleaze past the first few problems.  Now, when it gets to setfont
it doesn't seem to like the font produced by definefont.  Does definefont
really work?  Has someone already done this?

Thanks,

Al Conrad
conrad@cis.ucsc.edu

-first 250 lienes of a dvi2ps file-----------------------------------

%!PS
executive
/letter {} def

/TeXDict 200 dict def 
TeXDict begin 
/Resolution 300 def
/Inch {Resolution mul} def 
/Mtrx 6 array def
/@letter
{ letter initmatrix
72 Resolution div dup neg scale 
1.0333 Inch 10.0166 Inch neg translate 
Mtrx currentmatrix pop 
} def
/@note
{ note initmatrix
72 Resolution div dup neg scale 
1.0333 Inch 10.0166 Inch neg translate 
Mtrx currentmatrix pop
} def
/@landscape
{ letter initmatrix
72 Resolution div dup neg scale 
Mtrx currentmatrix 0 0.0 put 
Mtrx 1 -1.0 put 
Mtrx 2 1.0 put 
Mtrx 3 0.0 put 
Mtrx setmatrix 
1 Inch 1.033 Inch translate 
Mtrx currentmatrix pop
} def
/@legal
{ legal initmatrix
72 Resolution div dup neg scale 
0.9833 Inch 12.933 Inch neg translate 
Mtrx currentmatrix pop
} def
/@manualfeed
{ statusdict /manualfeed true put
} def
/@copies
{ /#copies exch def
} def
/@newfont 
{ /newname exch def
pop
newname 8 dict def 
newname load begin
/FontType 3 def
/FontMatrix [1 0 0 -1 0 0] def
/FontBBox [0 0 1 1] def
/BitMaps 128 array def
/BuildChar {CharBuilder} def
/Encoding 128 array def
0 1 127 {Encoding exch /.undef put} for
end
newname newname load definefont pop
} def
/ch-image {ch-data 0 get} def 
/ch-width {ch-data 1 get} def 
/ch-height {ch-data 2 get} def 
/ch-xoff {ch-data 3 get} def 
/ch-yoff {ch-data 4 get} def 
/ch-tfmw {ch-data 5 get} def 
/CharBuilder 
{ /ch-code exch def 
/font-dict exch def 
/ch-data font-dict /BitMaps get ch-code get def 
ch-data null eq not
{ ch-tfmw 0 ch-xoff neg ch-yoff neg ch-width ch-xoff sub ch-height ch-yoff sub
setcachedevice
ch-width ch-height true [1 0 0 1 ch-xoff ch-yoff]
{ch-image} imagemask
}
if
} def
/@sf 
{ cvn cvx exec setfont
} def
/@dc 
{ /ch-code exch def
dup 0 get
length 2 lt
{ pop [ <00> 1 1 0 0 8.00 ] } if
/ch-data exch def
currentfont /BitMaps get ch-code ch-data put
currentfont /Encoding get ch-code 
dup (   ) cvs cvn 
put
} def
/@bop0 
{ 
} def
/@bop1 
{ pop
erasepage initgraphics 
Mtrx setmatrix
/SaveImage save def() pop
0 0 moveto 
1 setlinejoin 
} def
/@eop 
{ showpage 
SaveImage restore() pop
} def
/@start 
{ @letter 
} def
/@end 
{ end
} def
/p 
{ moveto
} def
/r 
{ 0 rmoveto
} def
/l 
{ lineto
} def
/rl 
{ rlineto
} def
/rc 
{ rcurveto
} def
/np		
{ /SaveX currentpoint /SaveY exch def def 
newpath
} def
/st 
{ stroke
SaveX SaveY moveto 
} def
/f 
{ fill
SaveX SaveY moveto 
} def
/s 
{ show
} def
/c 
{ c-string exch 0 exch put
c-string show
} def
/c-string ( ) def
/ru 
{ /dy exch neg def 
/dx exch def
/x currentpoint /y exch def def 
newpath x y moveto
dx 0 rlineto
0 dy rlineto
dx neg 0 rlineto
closepath fill
x y moveto
} def
/ellipse 
{
/endangle exch def
/startangle exch def
/yrad exch def
/xrad exch def
/y exch def
/x exch def
/savematrix matrix currentmatrix def
x y translate
xrad yrad scale
0 0 1 startangle endangle arc
savematrix setmatrix
} def
/@SpecialDefaults
{ /hs 8.5 Inch def
/vs 11 Inch def
/ho 0 def
/vo 0 def
/hsc 1 def
/vsc 1 def
/CLIP false def
} def
/@hsize {/hs exch def /CLIP true def} def
/@vsize {/vs exch def /CLIP true def} def
/@hoffset {/ho exch def} def
/@voffset {/vo exch def} def
/@hscale {/hsc exch def} def
/@vscale {/vsc exch def} def
/@setclipper
{ hsc vsc scale
CLIP
{ newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip }
if
} def
/@beginspecial 
{ gsave /SpecialSave save def
currentpoint transform initgraphics itransform translate
@SpecialDefaults 
@MacSetUp 
} def
/@setspecial 
{
MacDrwgs
{md begin /pxt ho def /pyt vo neg def end}
{ho vo translate @setclipper}
ifelse
} def
/@endspecial 
{ SpecialSave restore
grestore
} def
/MacDrwgs false def 
/@MacSetUp
{ userdict /md known 
{ userdict /md get type /dicttype eq 
{ /MacDrwgs true def
md begin 
/psu 
/psu load
{ /letter {} def 
/note {} def 
/legal {} def
statusdict /waittimeout 300 put
/page {pop} def 
/pyt vo neg def 
/pxt ho def
}
concatprocs 
def
/od 
/od load
{ @setclipper }
concatprocs
def
end }
if }
if 
} def
/concatprocs
{ /p2 exch cvlit def 
/p1 exch cvlit def
/p p1 length p2 length add array def
p 0 p1 putinterval 
p p1 length p2 putinterval
p cvx
} def
end 
TeXDict begin @start
%%Title: agenda.dvi
%%Creator: dvi2ps
%%EndProlog
1 @bop0
[ 518 ] /cmr10.518 @newfont
(cmr10.518) @sf
From: conrad@jupiter.ucsc.edu (Al Conrad, x2370)
Path: jupiter.ucsc.edu!conrad
Newsgroups: comp.windows.news
Subject: Does definefont really work? (for TeX)
Expires: 
References: 
Sender: 
Reply-To: conrad@jupiter.ucsc.edu (Al Conrad, x2370)
Followup-To: 
Distribution: world
Organization: University of California, Santa Cruz
Keywords: 

From: conrad@jupiter.ucsc.edu (Al Conrad, x2370)
Path: jupiter.ucsc.edu!conrad
Newsgroups: comp.windows.news
Subject: Does definefont really work (for TeX)?
Expires: 
References: 
Sender: 
Reply-To: conrad@jupiter.ucsc.edu (Al Conrad, x2370)
Followup-To: 
Distribution: world
Organization: University of California, Santa Cruz
Keywords: 


I am trying to fix the postscript produced by dvi2ps so that I can
preview it with psview.  In the following TeXcerpt I had to:

	- add /letter {} def at the top.
	- change dict def in newfont from 7 to 8.

to sleaze past the first few problems.  Now, when it gets to setfont
it doesn't seem to like the font produced by definefont.  Does definefont
really work?  Has someone already done this?

Thanks,

Al Conrad
conrad@cis.ucsc.edu

-first 250 lienes of a dvi2ps file-----------------------------------

%!PS
executive
/letter {} def

/TeXDict 200 dict def 
TeXDict begin 
/Resolution 300 def
/Inch {Resolution mul} def 
/Mtrx 6 array def
/@letter
{ letter initmatrix
72 Resolution div dup neg scale 
1.0333 Inch 10.0166 Inch neg translate 
Mtrx currentmatrix pop 
} def
/@note
{ note initmatrix
72 Resolution div dup neg scale 
1.0333 Inch 10.0166 Inch neg translate 
Mtrx currentmatrix pop
} def
/@landscape
{ letter initmatrix
72 Resolution div dup neg scale 
Mtrx currentmatrix 0 0.0 put 
Mtrx 1 -1.0 put 
Mtrx 2 1.0 put 
Mtrx 3 0.0 put 
Mtrx setmatrix 
1 Inch 1.033 Inch translate 
Mtrx currentmatrix pop
} def
/@legal
{ legal initmatrix
72 Resolution div dup neg scale 
0.9833 Inch 12.933 Inch neg translate 
Mtrx currentmatrix pop
} def
/@manualfeed
{ statusdict /manualfeed true put
} def
/@copies
{ /#copies exch def
} def
/@newfont 
{ /newname exch def
pop
newname 8 dict def 
newname load begin
/FontType 3 def
/FontMatrix [1 0 0 -1 0 0] def
/FontBBox [0 0 1 1] def
/BitMaps 128 array def
/BuildChar {CharBuilder} def
/Encoding 128 array def
0 1 127 {Encoding exch /.undef put} for
end
newname newname load definefont pop
} def
/ch-image {ch-data 0 get} def 
/ch-width {ch-data 1 get} def 
/ch-height {ch-data 2 get} def 
/ch-xoff {ch-data 3 get} def 
/ch-yoff {ch-data 4 get} def 
/ch-tfmw {ch-data 5 get} def 
/CharBuilder 
{ /ch-code exch def 
/font-dict exch def 
/ch-data font-dict /BitMaps get ch-code get def 
ch-data null eq not
{ ch-tfmw 0 ch-xoff neg ch-yoff neg ch-width ch-xoff sub ch-height ch-yoff sub
setcachedevice
ch-width ch-height true [1 0 0 1 ch-xoff ch-yoff]
{ch-image} imagemask
}
if
} def
/@sf 
{ cvn cvx exec setfont
} def
/@dc 
{ /ch-code exch def
dup 0 get
length 2 lt
{ pop [ <00> 1 1 0 0 8.00 ] } if
/ch-data exch def
currentfont /BitMaps get ch-code ch-data put
currentfont /Encoding get ch-code 
dup (   ) cvs cvn 
put
} def
/@bop0 
{ 
} def
/@bop1 
{ pop
erasepage initgraphics 
Mtrx setmatrix
/SaveImage save def() pop
0 0 moveto 
1 setlinejoin 
} def
/@eop 
{ showpage 
SaveImage restore() pop
} def
/@start 
{ @letter 
} def
/@end 
{ end
} def
/p 
{ moveto
} def
/r 
{ 0 rmoveto
} def
/l 
{ lineto
} def
/rl 
{ rlineto
} def
/rc 
{ rcurveto
} def
/np		
{ /SaveX currentpoint /SaveY exch def def 
newpath
} def
/st 
{ stroke
SaveX SaveY moveto 
} def
/f 
{ fill
SaveX SaveY moveto 
} def
/s 
{ show
} def
/c 
{ c-string exch 0 exch put
c-string show
} def
/c-string ( ) def
/ru 
{ /dy exch neg def 
/dx exch def
/x currentpoint /y exch def def 
newpath x y moveto
dx 0 rlineto
0 dy rlineto
dx neg 0 rlineto
closepath fill
x y moveto
} def
/ellipse 
{
/endangle exch def
/startangle exch def
/yrad exch def
/xrad exch def
/y exch def
/x exch def
/savematrix matrix currentmatrix def
x y translate
xrad yrad scale
0 0 1 startangle endangle arc
savematrix setmatrix
} def
/@SpecialDefaults
{ /hs 8.5 Inch def
/vs 11 Inch def
/ho 0 def
/vo 0 def
/hsc 1 def
/vsc 1 def
/CLIP false def
} def
/@hsize {/hs exch def /CLIP true def} def
/@vsize {/vs exch def /CLIP true def} def
/@hoffset {/ho exch def} def
/@voffset {/vo exch def} def
/@hscale {/hsc exch def} def
/@vscale {/vsc exch def} def
/@setclipper
{ hsc vsc scale
CLIP
{ newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip }
if
} def
/@beginspecial 
{ gsave /SpecialSave save def
currentpoint transform initgraphics itransform translate
@SpecialDefaults 
@MacSetUp 
} def
/@setspecial 
{
MacDrwgs
{md begin /pxt ho def /pyt vo neg def end}
{ho vo translate @setclipper}
ifelse
} def
/@endspecial 
{ SpecialSave restore
grestore
} def
/MacDrwgs false def 
/@MacSetUp
{ userdict /md known 
{ userdict /md get type /dicttype eq 
{ /MacDrwgs true def
md begin 
/psu 
/psu load
{ /letter {} def 
/note {} def 
/legal {} def
statusdict /waittimeout 300 put
/page {pop} def 
/pyt vo neg def 
/pxt ho def
}
concatprocs 
def
/od 
/od load
{ @setclipper }
concatprocs
def
end }
if }
if 
} def
/concatprocs
{ /p2 exch cvlit def 
/p1 exch cvlit def
/p p1 length p2 length add array def
p 0 p1 putinterval 
p p1 length p2 putinterval
p cvx
} def
end 
TeXDict begin @start
%%Title: agenda.dvi
%%Creator: dvi2ps
%%EndProlog
1 @bop0
[ 518 ] /cmr10.518 @newfont
(cmr10.518) @sf

don@BRILLIG.UMD.EDU (Don Hopkins) (05/12/89)

Oops, for some reason another copy of your message got appended onto
the end of your message about definefont. Sorry! (In other words,
ignore NeWS errors about "From:" being undefined!)

In NeWS 1.1, setfont expects a fonttype object, and it's trying to do
a setfont to a font dictionary, and barfing. Try applying the
following sleaze to the header file:

Change the line 58 (or so) from:
newname newname load definefont pop

To:
newname newname load definefont newname exch store

	-Don