delong@frith.msu.edu (Keith Delong) (08/30/90)
Does anyone have a postscript program that will print a short sample of all the fonts that my printer has? We have several postscript printers and some say they have different number of fonts built in. We would like to compare them. We even have one with a hard disk with fonts on it, but we don't know what they are, it was sold to us by someone getting out of the business of publishing. Keith delong@frith.egr.msu.edu
calvin@sequent.UUCP (Calvin Goodrich) (08/31/90)
In article <1990Aug30.115009.16513@msuinfo.cl.msu.edu> delong@frith.msu.edu (Keith Delong) writes: >Does anyone have a postscript program that will print a short sample >of all the fonts that my printer has? We have several postscript printers >and some say they have different number of fonts built in. We would like >to compare them. We even have one with a hard disk with fonts on it, >but we don't know what they are, it was sold to us by someone getting >out of the business of publishing. > >Keith >delong@frith.egr.msu.edu i was kinda curious too. i saw in one of the books that there were scads of font types so i came up with a quick and dirty sampler. (mind you it's just that. it doesn't even print out straight. but since all you want to look at is the fonts themselves, who cares, right? :] ) if anyone knows of any more fonts besides these, please let me know. calvin. -------------8<--------cut here------8<---------cut here-------8<------------ %! % font demo program /defont { % sets font (stack: font scale) /dscale exch def /dfont exch def dfont findfont dscale scalefont setfont } def 72 772 moveto [/AvantGarde-Book /AvantGarde-BookOblique /AvantGarde-Demi /AvantGarde-DemiOblique /Bookman-Demi /Bookman-DemiItalic /Bookman-Light /Bookman-LightItalic /Courier /Courier-Bold /Courier-BoldOblique /Courier-Oblique /Helvetica /Helvetica-Bold /Helvetica-BoldOblique /Helvetica-Narrow /Helvetica-Narrow-Bold /Helvetica-Narrow-BoldOblique /Helvetica-Narrow-Oblique /Helvetica-Oblique /NewCenturySchlbk /NewCenturySchlbk-Bold /NewCenturySchlbk-BoldItalic /NewCenturySchlbk-Italic /NewCenturySchlbk-Roman /Palatino /Palatino-Bold /Palatino-BoldItalic /Palatino-Italic /Palatino-Roman /Times-Roman /Times-BoldItalic /Times-Italic /Times-Bold /ZapfChancery /ZapfChancery-MediumItalic ] { /name exch def name 18 defont /sname 50 string def name sname cvs sname show sname stringwidth pop cvi not -20 rmoveto } forall stroke showpage
jtkohl@MIT.EDU (John T Kohl) (08/31/90)
Here's a 'font book' PS file some people cooked up here at MIT Project
Athena. Warning: it takes a long time to print, since it will put
every character of every font through the font cache.
%!
%%%%
%%%%
%%%% fontbook.PS
%%%%
%%%% Mark W. Eichin <eichin@athena.mit.edu> 1/10/88
%%%%
%%%% Prints a set of all of the encoded fonts in the printer, 32 by 8
%%%% characters per page, labelled in octal with the name across the
%%%% top of the page. Prints a coverpage at the end (see fontpage.PS
%%%% for more details.)
%%%%
%%%% The sort routine is from <amgreene@athena.mit.edu>, with a lot of
%%%% stuff squished in and around the ends.
%%%%
%%%% The page driver is a reengineering of an earlier project which
%%%% was not portable between the LaserWriter and LPS-40. This version
%%%% has the math worked out; note that these two printers dump pages
%%%% in the opposite order. This file is set for the LPS-40; if you
%%%% need the correct page order for the LaserWriter, examine the
%%%% comments near the end of the file.
%%%%
%%%% No More Collating! Yaaaay!
%%%%
%%%% STANDARD DEFINITIONS
/pica { 12 mul } def
/inch { 72 mul } def
/over %%%% a b ==> a b a
{
1 index
} bind def
/pageside 11 inch def
/pagetop 8.5 inch def
%%%% Specific local definitions
/sidelen 9 inch def %%%% the height of the box of chars
/toplen 6 inch def %%%% the width of the box of chars
/nrowsofboxes 32 1 add def %%%% Number of rows (chars + labels)
/ncolsofboxes 8 1 add def %%%% Number of columns (chars + labels)
/xbox toplen ncolsofboxes div def %%%% x dimension of the box
/ybox sidelen nrowsofboxes div def %%%% y dimension of the box
/underpad 2 def %%%% padding under the characters
/boxfontsize ybox underpad 2 mul sub def
%%%% the font size is a bit smaller than the box
/labtmp (\\00x) def
/labelfont /Times-Roman findfont boxfontsize scalefont def
/mcenter %%%% width-of-box width-of-thing ==> offset-from-left
{
sub 2 div %%%% a/2 - b/2 == (a-b)/2
} def
/center %%%% (string) width-of-box ==> (string) offset-from-left
{
over stringwidth pop %%%% just leave x of stringwidth
mcenter %%%% calculate offset
} def
/octallabel %%%% row-number ==> (string)
{
dup 8 mod cvi ( ) cvs labtmp exch 2 exch putinterval
8 div cvi ( ) cvs labtmp exch 1 exch putinterval
labtmp
} def
/achar ( ) def
/doline { %%%% line-number ==> -
/linnum exch def
currentpoint %%%% mark where we are
toplen 0 rlineto stroke %%%% draw the line
linnum 0 ge {
over over moveto %%%% go back to the side
labelfont setfont
linnum octallabel xbox center
underpad rmoveto
show %%%% draw the side label
dispfont setfont
moveto
xbox 0 rmoveto
currentpoint
0 1 7
{
linnum 8 mul add cvi achar 0 3 -1 roll put %%%% make a 1-char string
achar xbox center underpad rmoveto show
moveto
xbox 0 rmoveto
currentpoint
}
for
} if
pop pop %%%% clear currentpoint
} def
/docolumn { %%%% column-number ==> -
/colnum exch def %%%% save column number
0 sidelen rlineto %%%% mark vertical line
currentpoint stroke %%%% draw it and reference top
ybox sub moveto %%%% jump back down
colnum 0 eq { (octal) }
{ colnum 9 eq { ( ) } { colnum 1 sub cvi ( ) cvs } ifelse }
ifelse
xbox center underpad rmoveto show
} def
/MAIN { %%%% fontname ==> -
%%%% save the name of the font we are showing
/fontname exch def
%%%% open the font and scale it, so we have it around
/dispfont fontname cvn findfont boxfontsize scalefont def
%%%% move to the upper corner
pagetop toplen mcenter
pageside sidelen mcenter
translate %%%% moves to lower left corner of boxes
0 0 moveto
currentpoint
31 -1 -2
{
doline
moveto 0 ybox rmoveto currentpoint
}
for
pop pop
0 0 0 0 moveto
labelfont setfont
0 1 9
{
docolumn
moveto xbox 0 rmoveto currentpoint
}
for
pop pop %%%% clear the stack
fontname toplen center %%%% center the name across the top (name) x-off
sidelen underpad add %%%% find y
moveto show
showpage
} def
%!
% Sort Routine in PostScript (R)
%
% by Andrew Marc Greene
% Dec. 1987
% Pieces ripped out to fit into font cataloguer (Mark W. Eichin Jan 1988)
%
% [PostScript is a trademark of Adobe Systems, Inc.]
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Initialize num, which will contain number of items to sort
/num 0 def
% Get list of items to sort
FontDirectory
{ pop %%%% punt value (font), just keep key (fontname)
/st 70 string def %%%% alloc space for name
/num num 1 add def %%%% count the fontname
st cvs } %%%% save the fontname on the stack
forall
%%%% stub test:
% (Times-Bold)
% (Helvetica)
% (Symbol)
% (AvantGarde-DemiOblique)
% /num 4 def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Sort Routines
% Compare top element to current "best"
% If top element is "better," switch them,
% otherwise leave top element on top;
% then roll the stack
/OneComp { /elt exch def
elt best gt {best /best elt def} {elt} ifelse
n 1 roll } def
% Go through n items one time, leaving "best" item on bottom
% Then decrement n and, if n>0, recursively call NComp
/NComp { /best exch def
/n n 1 sub def
1 1 n {pop OneComp} for
best n 1 add 1 roll
n 0 gt {NComp} if } def
% Initialize n to the number of elements to sort (num)
% and begin the sort
/n num def
NComp
% Display the sorted elements
%%%%
%%%% The first is for LPS40's, the second for LASERWRITERS...
%%%%
%%%% *******************
1 1 num {pop dup MAIN num 1 roll} for %%%% build an index page too
%%%% ********************
%%%% 1 1 num {pop num -1 roll dup MAIN} for %%%% build an index page too
%%%% ********************
%%%%
%%%% Note that we are just rolling the stack in different directions,
%%%% so that we print the pages in a different order. The LaserWriter
%%%% stacks paper face up, the LPS-40 face down (as does the DEC LN03R).
%%%%
%%%% still put the header page last...
gsave
7 inch 1 inch translate
90 rotate 1.5 dup scale labelfont setfont
0 0 moveto
statusdict begin
(Fonts for the ) show
product show
(named ) show
32 string printername show
end
0 boxfontsize neg moveto
(postscript:/mit/postscript/fontbook.PS) show
grestore
labelfont setfont
2 inch sidelen 1 inch add translate 0 0 moveto
1 1 num { ( ) cvs %%%% (name) (##)
gsave
show (: ) show show %%%% ##. name
grestore
0 ybox neg rmoveto %%%% moved down the next line
} for
showpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% /mit/amgreene/PS/dictshow.ps
% by Andrew Marc Greene Dec 1987
% End of File
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Local Variables:
%%%% mode: C
%%%% comment-column:0
%%%% comment-start: "%%%% "
%%%% comment-end: " "
%%%% End:
--
John Kohl <jtkohl@ATHENA.MIT.EDU> or <jtkohl@MIT.EDU>
Digital Equipment Corporation/Project Athena
(The above opinions are MINE. Don't put my words in somebody else's mouth!)cosell@bbn.com (Bernie Cosell) (09/02/90)
As something 'inbetween' the fancy athena one and the quick-and-dirty one,
here's a font sampler that was posted here a couple of years ago.
/Bernie\
%! PostScript!
%
/Times-Roman findfont 10 scalefont setfont
/inch { 72 mul } def
/LM 1.0 inch def
/RM 7 inch def
/BM .5 inch def
/TM 10 inch def
/tmpstr 80 string def
/xpos LM def
/ypos TM def
xpos ypos moveto
/dy 18 def
/crlf
{
/xpos LM def
/ypos ypos dy sub def
ypos BM lt
{ showpage /ypos TM def } if
ypos xpos exch moveto
} def
/c-crlf { stringwidth pop currentpoint pop add RM gt { crlf } if } def
/c-show { dup c-crlf show } def
/putnum { tmpstr cvs c-show ( ) show } def
/puttype { type tmpstr cvs c-show ( ) show } def
/showfont
{
crlf
dup findfont 15 scalefont setfont
tmpstr cvs show (: ) show
(ABCDEFGHIJKLMNOPQRSTUVWXYZ ) c-show
(abcdefghijklmnopqrstuvwxyz ) c-show
(0123456789 ) c-show
(!"#$%&' ) c-show (\(\)*+,-./ ) c-show
(:;<=>?@ ) c-show ([\\]^_` ) c-show
({|}~ ) c-show
( ) tmpstr copy
0 1 31 { tmpstr exch dup 8#240 add put } for tmpstr c-show
0 1 31 { tmpstr exch dup 8#300 add put } for tmpstr c-show
0 1 31 { tmpstr exch dup 8#340 add put } for tmpstr c-show
crlf
} def
FontDirectory length (length = ) show putnum crlf crlf
FontDirectory
{pop showfont} forall
showpagedaveb@comspec.uucp (David Berman) (09/04/90)
In article <41652@sequent.UUCP>, calvin@sequent.UUCP (Calvin Goodrich) writes: > In article <1990Aug30.115009.16513@msuinfo.cl.msu.edu> delong@frith.msu.edu (Keith Delong) writes: > >Does anyone have a postscript program that will print a short sample > >of all the fonts that my printer has? We have several postscript printers > >Keith > >delong@frith.egr.msu.edu > > i was kinda curious too. i saw in one of the books that there were scads of > font types so i came up with a quick and dirty sampler. > calvin. I had a similar problem, and so I hunted around, and found a dictionary with all of the font names in it. If the code is poor, forgive me. If you like it, mail me. I did it as an etude... %!%%%%%%%%%%%%%%%%%%%%%%%%%%%%% the gillotine cuts here %%%%%%%%%%%% %! % testfont.ps 90 july 23 % % use this after copying anyfont.ps to your postscript printer % to confirm it is working. -Dave Berman % % tested using GoScript interactively % % let me know what happens on other printers... % /inch {72 mul} def /setxy {.5 inch 10 inch moveto currentpoint /y exch def /x exch def} def setxy /nl {/y y fsize 3 add sub def y 0 lt {showpage setxy} if x y moveto} def /buffer 75 string def /dKB (%stdin) (r) file def (\007\015\012\015\012TESTFONT: Which font to print with? ) print dKB buffer readline pop cvn /TheFont exch def /fsize 40 def TheFont findfont [40 0 0 fsize 0 0] makefont setfont (This is ) show TheFont buffer cvs show nl /fsize 30 def TheFont findfont [20 0 0 fsize 0 0] makefont setfont (abcdefghijklmnopqrstuvw) show ( ABCDEFGHIJKLMNOPQRSTUVW) show nl (xyz XYZ 1234567890) show ( ~!@#$%^&*()_-+`--={}[]:) show (;'"<>?,./) show nl /fsize 20 def TheFont findfont [15 0 0 fsize 0 0] makefont setfont FontDirectory /FontDirectory load { pop buffer cvs show nl } forall %/fsize 90 def %TheFont findfont [80 0 0 fsize 0 0] makefont setfont % %(Enjoy!) show nl %(Dave Berman daveb@comspec.uucp) show nl showpage % did it work? quit /IncLine {line lh sub /line exch def lines 1 add dup pl ge {pop 0 fspage /line sl def} if /lines exch def} def /create {lm line moveto shbuf IncLine} def /dRead { readline pop dup (\013) search { pop = pop pop /buffer 2000 string def input buffer readline pop } { pop } ifelse } def %was /al {input buffer readline pop dup = create} def /al {input buffer dRead dup = create} def %was /input (%stdin) (r) file def /*start { d* propf /line sl def /lines 0 def #P propf /#s sv /s# findfont 10 ckh /ptsize 10 def {al} loop } def /d* { /dKB (%stdin) (r) file def (\007\015\012\015\012Enter the [next] file to process: ) print dKB buffer readline pop /dFName exch def /input dFName (r) file def } def *start I believe that this undocumented command exists in most printers, but it does not work to well. (at least in my experience you lose total control of the machine, and there apears to be no way to recover control.) I experimented with this quite a bit and wound up abandoning it. Perhaps I just didnot understand it well enough. You can find this, by dumping serverdict and/or statusdict.... in interactive mode: serverdict statusdict /serverdict load {== ==} forall /statusdict load {== ==} forall -- Dave Berman 436 Perth Av #U-907 daveb@comspec.UUCP Computer at work Toronto Ontario uunet!mnetor!becker!comspec!daveb Canada M6P 3Y7 416-785-3668 Fax at work