zs04+@andrew.cmu.edu (Zachary T. Smith) (05/11/91)
Has anyone got a utility to print out which fonts are intalled on a printer? I know it's got to be the simplest program ever to write, but I'd like to conserve my enery at it were. Thanks! -Zack Smith (zs04@andrew.cmu.edu)
jnp@tnds09.tele.nokia.fi (J|rgen N|rgaard) (05/13/91)
this piece does parts of it, not very nicely though
%!PS-Adobe-1.0
/ListFonts
{ 7 dict begin
/FontForName {/Times-Roman findfont 10 scalefont setfont} def
/Mh 20 def
/Mv 0 def
/Minc 15 def
/Mind 30 def
Mh Mv Minc add moveto
/Times-Bold findfont 10 scalefont setfont
(Font List:) show
Mh Mv moveto
FontForName
FontDirectory {
pop dup
FontForName
Mind 0 rmoveto
50 string cvs show
( :" ) show
findfont 12 scalefont setfont
(Sweet home Alabama) show
FontForName
(") show
/Mv Mv Minc sub def
Mh Mv moveto } forall
end % local dict
} def
--
ORIGIN '~jnp/stdDisclaimers';
[[--- Regards, J|rgen N|rgaard ('|' is '\o{}' in \LaTeX{}) |
| e-mail: jnp@tele.nokia.fi || Telephone: +358-0-511-5671 |
| mail: Nokia Telecommunications, PL 33, SF-02601 Espoo Finland ---]]bcockburn@acorn.co.uk (Bruce Cockburn) (05/15/91)
%! => &.Laser.Utils.Font.Print
/reencsmalldict 12 dict def
/ReEncodeSmall
{reencsmalldict begin
/newcodesandnames exch def
/newfontname exch def
/basefontname exch def
/basefontdict basefontname findfont def
/newfont basefontdict maxlength dict def
basefontdict
{exch dup /FID ne
{dup /Encoding eq
{exch dup length array copy
newfont 3 1 roll put}
{exch newfont 3 1 roll put}
ifelse
}
{pop pop}
ifelse
}forall
newfont /FontName newfontname put
newcodesandnames aload pop
newcodesandnames length 2 idiv
{newfont /Encoding get 3 1 roll put}
repeat
newfontname newfont definefont pop
end
} bind def
/display
{ /s exch def /i exch def
% -- s str cvs print (\n) print flush
i -1 eq
{ vec 1 s put
save
displayfont /xyzzy vec ReEncodeSmall
/xyzzy findfont mainsize scalefont setfont
x y moveto ( ) show
restore
x 20 add y moveto s str cvs show
}
{ x y moveto (&) show i 16 str cvrs show
chars s true put
s /.notdef ne
{ disp setfont
x 30 add y moveto 1 string dup 0 i put show
maintext
x 50 add y moveto s str cvs show
} if
} ifelse
/y y mainsize sub 0.5 sub def
y 25 lt i 64 mod 63 eq or { /y 798 def /x x 110 add def
x 510 gt {showpage /x 30 def} if
} if
} bind def
/listallfonts {
% prints a single page with the names of all
% the fonts in the font directory.
/Courier-Bold findfont 15 scalefont setfont
/str 40 string def
/entry 0 def
/y 800 def
FontDirectory {
pop /displayfont exch def
(\n) print
displayfont str cvs dup print
60 y moveto show
(, \() print
entry str cvs print
(\)) print flush
30 y moveto entry str cvs show
/y y 18 sub def
/entry entry 1 add def
} forall
showpage
} bind def
/printallfonts {
% prints all the fonts in the font directory on page per font
/which 0 def
FontDirectory {
pop which exch mark 3 1 roll
printentirefont
/which which 1 add def
} forall
} bind def
/printentirefont {
% Takes a fontname and an optional number on the stack
% i.e. mark 99 /Times-Roman printentirefont
% mark /Test printentirefont
/displayfont exch def % keep the first argument
/mainsize 8.8 def
/examplesize 16 def
/headingsize 14 def
/maintext { /Palatino-Roman findfont mainsize 1 sub scalefont setfont } bind def
/headingtext { /Times-Bold findfont headingsize scalefont setfont } bind def
/str 40 string def
/vec [ 32 /.notdef ] def
headingtext
displayfont str cvs
30 810 moveto dup show print
250 810 moveto
statusdict begin
40 string printername show
( PS ) show version show ( Rev. ) show revision 20 string cvs show
end
counttomark 0 ne {
str cvs
( \() dup show print
dup show print
(\)) dup show print
} if
cleartomark (\n) print flush
displayfont findfont examplesize scalefont setfont
30 135 moveto (THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG) show
30 110 moveto (the quick brown fox jumps over the lazy dog) show
30 85 moveto (! " # $ % & ^ ~ @ * ? | _ 0 1 2 3 4 5 6 7 8 9) show
30 60 moveto (+ - = \( \) [ ] { } < > ` ' : ; . , / \\) show
maintext
save
/disp displayfont findfont mainsize scalefont def
/chs disp /CharStrings get def
/chars 400 dict def
chs { pop chars exch false put } forall
/enc disp /Encoding get def
/x 30 def
/y 798 def
0 1 255 { dup enc 2 -1 roll get display } for
chars { {pop} {-1 exch display} ifelse } forall
showpage
restore
} bind def
% Insert test font here
% mark /Courier printentirefont
% mark /Times-Roman printentirefont