diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/utilities/psposter |
Initial commit
Diffstat (limited to 'fonts/utilities/psposter')
-rw-r--r-- | fonts/utilities/psposter/CHANGELOG | 110 | ||||
-rw-r--r-- | fonts/utilities/psposter/Makefile | 216 | ||||
-rw-r--r-- | fonts/utilities/psposter/README | 86 | ||||
-rw-r--r-- | fonts/utilities/psposter/TODO | 12 | ||||
-rw-r--r-- | fonts/utilities/psposter/bb.ps | 527 | ||||
-rw-r--r-- | fonts/utilities/psposter/fontlist.ps | 167 | ||||
-rw-r--r-- | fonts/utilities/psposter/fontlold.ps | 98 | ||||
-rw-r--r-- | fonts/utilities/psposter/fontlsim.ps | 41 | ||||
-rw-r--r-- | fonts/utilities/psposter/fontshow.ps | 190 | ||||
-rw-r--r-- | fonts/utilities/psposter/man2ps | 36 | ||||
-rw-r--r-- | fonts/utilities/psposter/psposter.awk | 1184 | ||||
-rw-r--r-- | fonts/utilities/psposter/psposter.man | 719 | ||||
-rw-r--r-- | fonts/utilities/psposter/psposter.ps | 606 | ||||
-rw-r--r-- | fonts/utilities/psposter/psposter.sh | 2 | ||||
-rw-r--r-- | fonts/utilities/psposter/rofvms.awk | 61 |
15 files changed, 4055 insertions, 0 deletions
diff --git a/fonts/utilities/psposter/CHANGELOG b/fonts/utilities/psposter/CHANGELOG new file mode 100644 index 0000000000..a9783389f9 --- /dev/null +++ b/fonts/utilities/psposter/CHANGELOG @@ -0,0 +1,110 @@ +%% /u/sy/beebe/src/psposter/CHANGELOG, Mon Jan 16 14:33:12 1995 +%% Edit by Nelson H. F. Beebe <beebe@sunrise> + + Development log for psposter + [in reverse chronological order] + +[16-Jan-1995] 0.08 + Fix a bug in the use of +table 8/h: the header line + 8 9 a b c d e f was in a Roman font instead of the + intended bold font used for the preceding line. + + Modify grep commands to redirect stderr to /dev/null, + to unneeded error messages don't confuse the user. + + Revise PostScript coding that implements the +table + option. In the original implementation of this code, + it was assumed that ASCII space and NUL had no + assigned glyph, which appears to be the case for all + Adobe PostScript fonts, and is supported by the encoding + tables in Appendix E of the PostScript Language + Reference Manual, Second Edition, Addison-Wesley + (1990). I also verified this in all 1305 .afm files + in the CTAN /tex-archive/fonts/postscript/AFMFiles + collection. + + However, for Basil K. Malashev's BaKoMa fonts, which + represent Computer Modern in hinted PostScript Type 1 + format, font positions 0 (NUL) and 32 (space) have + assigned glyphs, with the result that psposter showed + those glyphs throughout the font table, because space + had been used to separate table characters, setting + strings like (@ A B C D E F G ). The revised code + avoids the use of separating space, setting strings + like (@ABCDEFG) instead. + +[11-Jan-1995] 0.07 + Add code to support on-the-fly invocation of t1ascii + so that psposter can use the more compact .pfb binary + PostScript font files, as well as the ASCII .pfa files + supported by earlier versions. Also add support for + on-the-fly decompression of font files compressed by + compress (.Z) and gzip (.gz). Although compress will + not reduce the size of .pfb files, gzip will. + + If you don't have t1ascii installed yet, you can find + it in the Comprehensive TeX Archive Network (CTAN) + archives ("finger ctan@pip.shsu.edu" for a list of + CTAN site hostnames) in the directory + /tex-archive/fonts/utilities/t1utils. + + If you don't have gunzip installed yet, you can find + it in the Free Software Foundation GNU Project + archives on prep.ai.mit.edu:/pub/gnu, and its mirror + sites. + +[01-Jan-1995] 0.06 + Add +table option for printing tables of PostScript + fonts. + +[29-Dec-1994] 0.05 + Add code in psposter.awk to issue a warning if a font + file is found in .pfb (binary) format, and show the + user how to convert it to .pfa (ASCII) format. The + requested font will be substituted by the default font + until that conversion has been done. I don't feel + like tackling the job of converting .pfb files to .pfb + format using the awk language (dvialw and dvips have C + code to do it). + +[19-Dec-1994] 0.04 + Add code in psposter.awk to issue a warning if + afmfonts.map or rgb.txt cannot be found, and avoid + invoking grep on them if they are missing. + + Correct error in Makefile: man page was installed + with wrong extension, and formatted man page in + cat directory was not removed. + +[16-Dec-1994] 0.03 + Move awk code from psposter.sh to a separate file, + psposter.awk; DEC ULTRIX 4.x, HP HP-UX 9.x, IBM + RS/6000 AIX 3.x and SGI IRIX 4.x and 5.x shells were + unable to handle the long string containing the awk + program. There was no such problem on Cray UNICOS, + DEC OSF/1 3.x, NeXT Mach 3.0, Sun SunOS 4.1.x, and Sun + Solaris 2.x. + + Eliminate three regular expressions for argument + matching in the awk code because the Cray UNICOS nawk + complained about them. + + In psposter.awk, check for LOGNAME as well as USER to + try to get a username. + + Change definition of VERSION to use "." instead of + "\#"; the latter raises a syntax error with IBM + RS/6000 AIX 3.5 make. + +[13-Dec-1994] 0.02 + Full-fledged implementation of psposter with many new + options, manual page documentation, ready for limited + public distribution. + +[07-Dec-1994] 0.01 + First working programmable implementation of psposter, + with limited support for command-line options. + +[27-Oct-1994] 0.00 + First working outline of a PostScript poster, with + fixed text, and no programmability. diff --git a/fonts/utilities/psposter/Makefile b/fonts/utilities/psposter/Makefile new file mode 100644 index 0000000000..22d539b777 --- /dev/null +++ b/fonts/utilities/psposter/Makefile @@ -0,0 +1,216 @@ +#======================================================================= +# Makefile for files in ~/src/psposter +# +# Current target list: +# all +# doorsigns +# clean +# mostlyclean +# clobber +# distclean +# realclean +# install +# install-bin +# install-ftp +# install-US +# install-ISO +# install-man +# psposter.hlp +# psposter.ps +# psposter.shar +# psposter.tar +# psposter.txt +# psposter.zip +# psposter.zoo +# test-version +# uninstall +# uninstall-exe +# uninstall-man +# +# [11-Jan-1995] +#======================================================================= + +# These six values may require local customization: +AWK = /usr/local/bin/gawk +BINDIR = /usr/local/bin +CATDIR = $(MANDIR)/../cat$(MANEXT) +FTPDIR = /u/ftp/pub/misc +LIBDIR = /usr/local/lib/psposter +MANDIR = /usr/local/man/man$(MANEXT) +MANEXT = 1 + +# If you don't have Robert Solovay's checksum program, use cat +CHECKSUM = cat +CHECKSUM = checksum + +# You should not have to change anything below this point. +CHMOD = chmod + +COL = col -b + +COMPRESS = compress + +CP = /bin/cp + +DIST-FILES = CHANGELOG README Makefile TODO bb.ps fontlist.ps \ + fontlold.ps fontlsim.ps fontshow.ps man2ps \ + psposter.awk psposter.ps psposter.sh psposter.man \ + rofvms.awk + +DOORFILES = door.les door.nhfb door.pjb +DOORFILES = + +EXPAND = expand + +FONTNAME = CharterBT-Bold +FONTNAME = Utopia-BoldItalic +FONTNAME = URWGroteskT-Bold +FONTNAME = NimbusRomanNo9L-Regular +FONTNAME = Copperplate-ThirtyAB +FONTNAME = CharterBT-BoldItalic + +ISPELL = ispell + +LN = ln -s + +MAN2PS = ./man2ps + +NROFF = nroff + +PSPOSTER = ./psposter.sh + +PSPOSTERFLAGS = +bg powderblue +fg navyblue +paper 4inx9.5in +x 1in +y 1in +l +p 60pt +fn $(FONTNAME) +PSPOSTERFLAGS = +bg PaleGreen +fg navyblue +paper 4inx9.5in +x 1in +y 1in +l +p 60pt +fn $(FONTNAME) + +RM = /bin/rm -f + +SED = /bin/sed + +SHELL = /bin/sh + +SORT = sort + +SPELL = spell + +UNZIP = unzip + +# NB: The version number of the FTP psposter archive files is extracted +# from that of psposter.awk. +VERSION = `$(AWK) '/^...[ \t]*version *= *"[0-9.]+", *$$/ \ + { gsub(/[^0-9.]/,"",$$4); print $$4 }' psposter.awk` + +ZIP = zip + +ZOO = zoo + +#======================================================================= + +all: psposter.txt psposter.hlp psposter.ps + +doorsigns: + for f in $(DOORFILES) ; \ + do \ + $(PSPOSTER) $(PSPOSTERFLAGS) <$$f >$$f.ps ; \ + done + +clean mostlyclean: + -$(RM) *.i + -$(RM) *.o + -$(RM) *~ + -$(RM) \#* + -$(RM) a.out + -$(RM) core + +clobber distclean realclean: clean + -$(RM) psposter-?.??.??? psposter-?.??.???-??? + -$(RM) psposter.hlp + -$(RM) psposter.ps + -$(RM) psposter.shar + -$(RM) psposter.tar + -$(RM) psposter.txt + -$(RM) psposter.zip + -$(RM) psposter.zoo + +install: + @echo "Choose install-US or install-ISO to select the default paper type." + +install-bin: + $(SED) -e 's@/usr/local/bin/gawk@$(AWK)@' \ + -e 's@/usr/local/lib/psposter@$(LIBDIR)@' \ + < psposter.sh >$(BINDIR)/psposter + $(CHMOD) 775 $(BINDIR)/psposter + +install-ftp: psposter.tar psposter.zip psposter.zoo + tar tvf psposter-$(VERSION).tar >$(FTPDIR)/psposter-$(VERSION).tar-lst + $(COMPRESS) <psposter-$(VERSION).tar \ + >$(FTPDIR)/psposter-$(VERSION).tar.z + $(CP) psposter-$(VERSION).zip $(FTPDIR) + $(CP) psposter-$(VERSION).zip-lst $(FTPDIR) + $(CP) psposter-$(VERSION).zoo $(FTPDIR) + $(CP) psposter-$(VERSION).zoo-lst $(FTPDIR) + ls -l $(FTPDIR)/psposter* + +install-US: install-bin install-man + -if [ ! -d $(LIBDIR) ] ; then mkdir $(LIBDIR) ; fi + $(CP) psposter.awk $(LIBDIR)/psposter.awk + $(CHMOD) 664 $(LIBDIR)/psposter.awk + +install-ISO: install-bin install-man + -if [ ! -d $(LIBDIR) ] ; then mkdir $(LIBDIR) ; fi + $(SED) -e 's/set_paper_dimensions("A")/set_paper_dimensions("A4")/' \ + < psposter.awk | $(CHECKSUM) >$(LIBDIR)/psposter.awk + $(CHMOD) 664 $(LIBDIR)/psposter.awk + +install-man: uninstall-man + -$(RM) $(CATDIR)/psposter.$(MANEXT) + -$(CP) psposter.man $(MANDIR)/psposter.$(MANEXT) + $(CHMOD) 664 $(MANDIR)/psposter.$(MANEXT) + +# VAX VMS help file format from psposter.txt +psposter.hlp: psposter.txt rofvms.awk + $(EXPAND) <psposter.txt | $(AWK) -f rofvms.awk >psposter.hlp + +psposter.ps: psposter.man + $(MAN2PS) <psposter.man >psposter.ps + +psposter.shar: $(DIST-FILES) + shar -b -c -v $(DIST-FILES) >psposter.shar + +psposter.tar: $(DIST-FILES) + -$(RM) psposter.tar psposter.tar-lst + tar chf psposter.tar $(DIST-FILES) + -mkdir psposter-$(VERSION) + cd psposter-$(VERSION); tar xf ../psposter.tar + tar cf psposter-$(VERSION).tar psposter-$(VERSION) + -$(RM) -r psposter-$(VERSION) + -$(RM) psposter.tar + $(LN) psposter-$(VERSION).tar psposter.tar + +psposter.txt: psposter.man + $(NROFF) -man $? | $(COL) >$@ + +psposter.zip: $(DIST-FILES) + -$(RM) psposter*.zip + -$(RM) psposter*.zip-lst + $(ZIP) psposter-$(VERSION).zip $(DIST-FILES) + $(UNZIP) -v psposter-$(VERSION).zip >psposter-$(VERSION).zip-lst + $(LN) psposter-$(VERSION).zip psposter.zip + +psposter.zoo: $(DIST-FILES) + -$(RM) psposter*.zoo + -$(RM) psposter*.zoo-lst + $(ZOO) a psposter-$(VERSION).zoo $(DIST-FILES) + $(ZOO) v psposter-$(VERSION).zoo >psposter-$(VERSION).zoo-lst + $(LN) psposter-$(VERSION).zoo psposter.zoo + +test-version: + @echo "Version number is ""'"$(VERSION)"'" + +uninstall: uninstall-exe uninstall-man + +uninstall-exe: + -$(RM) $(BINDIR)/psposter + +uninstall-man: + -$(RM) $(MANDIR)/psposter.$(MANEXT) + -$(RM) $(CATDIR)/psposter.$(MANEXT) diff --git a/fonts/utilities/psposter/README b/fonts/utilities/psposter/README new file mode 100644 index 0000000000..1a94196a85 --- /dev/null +++ b/fonts/utilities/psposter/README @@ -0,0 +1,86 @@ +%% /u/sy/beebe/src/psposter/README, Fri Dec 16 15:02:08 1994 +%% Edit by Nelson H. F. Beebe <beebe@plot79.math.utah.edu> + +Author: + Nelson H. F. Beebe + Center for Scientific Computing + Department of Mathematics + University of Utah + Salt Lake City, UT 84112 + USA + Email: beebe@math.utah.edu (Internet) + Tel: +1 801 581 5254 + FAX: +1 801 581 4148 + +This directory contains psposter, an easy-to-use program for producing +simple colored posters in PostScript. + + ********************************************* + ********************************************* + *** This program is in the PUBLIC DOMAIN. *** + ********************************************* + ********************************************* + +The master copy of psposter can be found on the Internet archive +ftp.math.utah.edu:/pub/misc in compressed UNIX tar, zip, and zoo +formats. It may be automatically mirrored from there to other +Internet sites. + +If you don't have lptops installed (available in the same archive as +psposter), you can create an empty afmfonts.map file, and put it in a +directory pointed to by the AFMPATH environment variable. lptops is +very handy, and its installation will supply you with some additional +fonts for psposter. + +The files in the psposter distribution consist of: + +CHANGELOG Reverse time-ordered log of changes to psposter. + +README This file. + +Makefile UNIX Makefile for installing and uninstalling + psposter. + +TODO Record of things to do in future versions. + +bb.ps PostScript file to prepend to an EPS file for + determining the bounding box. This comes from + Tom Rokicki's dvips 5.528 distribution, + available on labrea.stanford.edu, and the CTAN + (Comprehensive TeX Archive Network) archives + (do "finger ctan@pip.shsu.edu" for a list of + CTAN sites). + +fontlist.ps PostScript file for listing the resident fonts + on a PostScript output device, in alphabetical + order. + +fontlsim.ps Simple version of fontlist.ps, without sorting; + this is the file illustrated in the man pages. + +fontlold.ps PostScript file for listing the resident fonts + on a PostScript output device; uses Level 1 + PostScript, but Adobe documentation says that + the technique is unreliable. + +fontshow.ps PostScript file for listing and illustrating + the resident fonts in alphabetical order on a + PostScript output device. + +man2ps UNIX shell script for converting UNIX manual + pages to PostScript. + +psposter.awk The program. + +psposter.hlp VAX VMS HELP file for psposter.man. + +psposter.man UNIX manual pages documenting psposter. + +psposter.txt ASCII formatted nroff output from psposter.man. + +psposter.ps PostScript typeset output from psposter.man. + +psposter.sh Pre-installation script for running psposter. + +rofvms.awk Program for converting nroff manual page + output to VAX VMS HELP file format. diff --git a/fonts/utilities/psposter/TODO b/fonts/utilities/psposter/TODO new file mode 100644 index 0000000000..2210552c34 --- /dev/null +++ b/fonts/utilities/psposter/TODO @@ -0,0 +1,12 @@ +[15-Dec-1994] +psposter currently outputs a + + %%DocumentNeededResources: font Times-Bold + +comment. However, if the font is downloaded in the output, then it +should say instead: + + %%DocumentSuppliedResources: font Times-Bold + +There should be one font list in the Supplied Resources for every +BeginResource/EndResource pair. diff --git a/fonts/utilities/psposter/bb.ps b/fonts/utilities/psposter/bb.ps new file mode 100644 index 0000000000..ef1d07ebf7 --- /dev/null +++ b/fonts/utilities/psposter/bb.ps @@ -0,0 +1,527 @@ +%! +% bb.ps -- +% +% Prints a file, but keeps track of bounding box info, and prints the box at +% the end (around the figure.) +% +% $Header: /u/sy/beebe/src/psposter/RCS/bb.ps,v 1.3 1995/01/12 04:55:01 beebe Exp beebe $ +% RCS log info at end + +50 dict /$BoundingBox exch def + +$BoundingBox begin + +/xdef { + exch def +} def + +/xstore { + exch store +} def + +/addcoords { + exch + 4 -1 roll add + 3 1 roll add +} def + +% +% Stubs of old functions. +% + +/-stroke /stroke load def +/-fill /fill load def +/-eofill /eofill load def +/-image /image load def +/-show /show load def +/-awidthshow /awidthshow load def +/-showpage /showpage load def +/-restore /restore load def +/-imagemask /imagemask load def + +end % $BoundingBox + +% +% New Functions. --- These go into the user dict to intercept the calls +% + +/stroke { + $BoundingBox begin + gsave + initmatrix + (stroke called\n) traceprint %%DEBUG + { + strokepath % Make sure to take line width into account. + 0 setlinejoin + flattenpath + } stopped { % strokepath often hits a limitcheck. + (Can't set up a strokepath\n) traceprint % DEBUG + grestore % Restore the original path + gsave + } if + includepath % Accumulate it into our box. + grestore + + -stroke + end % $BoundingBox +} def + +/fill { + $BoundingBox begin + gsave + (fill called\n) traceprint %%DEBUG + includepath + grestore + + -fill + end % $BoundingBox +} def + +/eofill { + $BoundingBox begin + gsave + (eofill called\n) traceprint %%DEBUG + includepath + grestore + + -eofill + end % $BoundingBox +} def + +% +% Text is implemented by reducing everything to an `awidthshow'. +% + +/show { + $BoundingBox begin + (show called\n) traceprint %%DEBUG + 0 0 0 0 0 % Extra parameters for awidthshow + 6 -1 roll % Bring the string back up + awidthshow + end % $BoundingBox +} def + +/widthshow { + $BoundingBox begin + (widthshow called\n) traceprint %%DEBUG + 0 0 % Extra parameters for awidthshow + 3 -1 roll % Bring the string back up. + awidthshow + end % $BoundingBox +} def + +/ashow { + $BoundingBox begin + (ashow called\n) traceprint %%DEBUG + 0 0 0 + 6 3 roll + awidthshow + end % $BoundingBox +} def + + +% This does all of the work of the text-rendering operators +% What it does, is compute, basically brute force, what 'charpath' +% would have given us virtually for free, if 'show' were the only +% operator that we needed to do. + +/awidthshow { + $BoundingBox begin + gsave + 6 (awidthshow:) debug %%DEBUG + currentpoint + 2 copy /@starty xdef /@startx xdef + 2 index stringwidth % Get the natural length of the string + addcoords % Add to the start to get the end. + + 2 index length % How many characters? + + dup % Add the offsets to each character + 6 index mul + exch 5 index mul + addcoords + + 5 index 3 index + chcount % How many padding characters? + + dup % Add the offsets for each pad. + 9 index mul + exch 8 index mul + addcoords + + /@endy xdef /@endx xdef + + % We now have the left and right edges (in user coords) + % of the text. Now we need only correct for the vertical + % displacements needed for the font and we can get the + % top and bottom edges of the enclosing box + + fontheight % Get the height and depth of the current font. + + @startx @starty addcoords + /@starty xdef /@startx xdef + @endx @endy addcoords + /@endy xdef /@endx xdef + newpath + @startx @starty moveto + @endx @starty lineto + @endx @endy lineto + @startx @endy lineto + closepath + includepath + grestore + + -awidthshow + end % $BoundingBox +} def + +% +% `image': +% +% Assume here that the image lands in the unit square. +% + +/image { + $BoundingBox begin + (image called\n) traceprint %%DEBUG + gsave + newpath + 0 0 moveto + 1 0 rlineto + 1 1 rlineto + -1 0 rlineto + closepath + includepath + grestore + + -image + end % $BoundingBox +} def + +/imagemask +{ + $BoundingBox begin + (imagemask called\n) traceprint %%DEBUG + gsave + newpath + 0 0 moveto + 1 0 rlineto + 1 1 rlineto + -1 0 rlineto + closepath + includepath + grestore + + -imagemask + end % $BoundingBox +} def + +% Just define this one out of existence +/framedevice { pop pop pop pop } def + +% Handle restoring VM --- this is all OK, except that we have to +% hang onto the bb info we collected while in the about-to-be-discarded +% environment + +/restore +{ + $BoundingBox begin + (restore called\n) traceprint %%DEBUG + tracedump %% HACK, but the only way I see right now to get this stuff! + bbox-llx bbox-lly bbox-urx bbox-ury + 5 -1 roll + -restore + /bbox-ury xstore /bbox-urx xstore + /bbox-lly xstore /bbox-llx xstore + end % $BoundingBox +} def + + +% +% `showpage': +% +% Just draw the box around the figure and print the page, and then initialize +% the bounding box variables again. +% + +$BoundingBox begin +/temp-string 10 string def +end % $BoundingBox + +/showpage { + $BoundingBox begin + initgraphics + + (showpage\n) traceprint % DEBUG + dump-bbox % DEBUG + + /bbox-llx round_down + /bbox-lly round_down + /bbox-ury round_up + /bbox-urx round_up + + bbox-llx bbox-lly moveto % Make the box + bbox-llx bbox-ury lineto + bbox-urx bbox-ury lineto + bbox-urx bbox-lly lineto + closepath + + bwstroke % Draw the box. + +% Print the size of the bounding box both above and below the actual box + 0 setgray + /Courier findfont 10 scalefont setfont + bbox-llx 36 max bbox-lly 12 sub 36 max moveto + (%%BoundingBox: ) -show + bbox-llx temp-string cvs -show ( ) -show + bbox-lly temp-string cvs -show ( ) -show + bbox-urx temp-string cvs -show ( ) -show + bbox-ury temp-string cvs -show + + bbox-llx 36 max bbox-ury 12 add 740 min moveto + (%%BoundingBox: ) -show + bbox-llx temp-string cvs -show ( ) -show + bbox-lly temp-string cvs -show ( ) -show + bbox-urx temp-string cvs -show ( ) -show + bbox-ury temp-string cvs -show + + init + -showpage + tracedump %% DEBUG + end % $BoundingBox +} def + +% +% BoundingBox functions: +% +% We accumulate the information about the bounding box into four variables. +% The data is stored in default coordinates. +% + +$BoundingBox begin + +/init { + /bbox-llx 99999 store + /bbox-lly 99999 store + /bbox-urx -99999 store + /bbox-ury -99999 store +} def + +/bbox-llx 0 def +/bbox-lly 0 def +/bbox-urx 0 def +/bbox-ury 0 def + +% +% - `includepath' - +% +% Incorporates the bounding box of the path into the bounding box info. +% ... Gets the bounding box in default coords + +/includepath { + (Adding a path: ) traceprint %%DEBUG + gsave + initmatrix + { + 0 setlinejoin + flattenpath + } stopped { + (Couldn't flatten the path\n) traceprint % DEBUG + grestore + gsave + initmatrix + } if + { pathbbox } stopped not + { + 4 2 roll % Just so we get lower-left first + 2 copy dump-coord %%DEBUG + dup bbox-lly lt { + /bbox-lly xstore + } { + pop + } ifelse + dup bbox-llx lt { + /bbox-llx xstore + } { + pop + } ifelse + + (; ) traceprint 2 copy dump-coord (\n) traceprint %%DEBUG + dup bbox-ury gt { + /bbox-ury xstore + } { + pop + } ifelse + dup bbox-urx gt { + /bbox-urx xstore + } { + pop + } ifelse + dump-bbox %%DEBUG + } if + grestore +} def + +% +% A nice black-and white line drawing function. +% + +/bwstroke { + 0 setlinewidth % Thinnest possible lines + 1 setgray % White first + [5] 0 setdash % Only half the line + gsave -stroke grestore + 0 setgray % Then black + [5] 5 setdash % On the other half + -stroke +} def + +% +% Stuff for text. +% + +% +% char-code string `chcount' occurs +% +% Counts the number of times a character appears in a string. +% + +/chcount { + 0 exch + { + 2 index eq { + 1 add + } if + } forall + exch pop +} def + +% +% - `fontheight' heightx heighty depthx depthy +% +% Returns the offsets to the lowest point and highest point in the current +% font. +% + +/fontheight { + currentfont begin + /FontBBox load aload pop + exch pop 0 exch + FontMatrix transform + 4 2 roll + exch pop 0 exch + FontMatrix transform + end +} def + +% key round_{down|up} - These will round the value of the given key +% up or down, as appropriate, to the nearest integer +/round_up { dup load ceiling cvi store } def +/round_down { dup load floor cvi store } def + +% key binddefinition - this will do a 'bind' on the procedure given by 'key' +/binddefinition +{ + dup where + { + exch + 2 copy + get bind put + } + { undefined } ifelse +} def + +% Given two numbers on the stack, return with just the smallest +/min { 2 copy ge { exch } if pop } def + +% Dito for the largest of the pair +/max { 2 copy lt { exch } if pop } def + + +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % +% +% Debugging utilities +% + +/$tracedict where +{ % Trace package loaded... do the tracing + pop +% This is a debugging function to print out what is going on. +% Format <argn> <argn-1> ... <arg1> n <string> debug <argn> ... <arg1> +% (that is, the 'n' args will be *left* on the stack!) +/debug +{ + traceprint (\n) traceprint + dup 1 add % Now total number of args (including arg count) + copy + { + ( ) traceprint + trace= + (\n) traceprint + } repeat + pop % Remove the extra copy of the arg count +} def + +% Print out a coordinate on the stack: x y --- +/dump-coord +{ + (\() traceprint exch trace= (, ) traceprint trace= (\)) traceprint +} def + +% Print out bb's current notion of its bounding box + +/dump-bbox +{ + (Bounding Box: ) traceprint + bbox-llx bbox-lly dump-coord + (; ) traceprint + bbox-urx bbox-ury dump-coord + (\n) traceprint +} def + +tracebegin %% DEBUG + +} +{ % No trace package loaded, so don't trace. Stub out the various calls + +/traceprint { pop } def +/dump-coord { pop pop } def +/dump-bbox { } def +/debug { pop pop } def +/tracedump { } def + +} ifelse + +% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % + +% Bind everything + +/xdef binddefinition +/xstore binddefinition +/addcoords binddefinition +/stroke binddefinition +/fill binddefinition +/eofill binddefinition +/show binddefinition +/widthshow binddefinition +/ashow binddefinition +/awidthshow binddefinition +/image binddefinition +/showpage binddefinition +/init binddefinition +/includepath binddefinition +/bwstroke binddefinition +/chcount binddefinition +/fontheight binddefinition + +/debug binddefinition +/dump-coord binddefinition +/dump-bbox binddefinition + +% Start it up. + +init + +end % $BoundingBox + +% end of bb.ps diff --git a/fonts/utilities/psposter/fontlist.ps b/fonts/utilities/psposter/fontlist.ps new file mode 100644 index 0000000000..039148a665 --- /dev/null +++ b/fonts/utilities/psposter/fontlist.ps @@ -0,0 +1,167 @@ +%!PS-Adobe-3.0 +%======================================================================= +% Send this file to a PostScript device to list the names of all of +% the resident fonts, in ascending order. +%======================================================================= +%%Title: fontlist.ps +%%CreationDate: Thu Dec 15 09:31:00 MST 1994 +%%Creator: Nelson H. F. Beebe <beebe@sunrise> +%%For: Nelson H. F. Beebe <beebe@sunrise> +%%BoundingBox: 0 0 612 792 +%%DocumentMedia: A 612 792 () () () +%%DocumentData: Clean7Bit +%%DocumentFonts: font Courier Times-Bold +%%DocumentNeededResources: font Courier Times-Bold +%%DocumentSuppliedResources: +%%Orientation: Portrait +%%PageOrder: Ascend +%%Pages: 1 +% NB: The number of pages depends on the number of resident fonts +%%EndComments +%======================================================================= +%%BeginProlog +/fontlistdict 50 dict def +fontlistdict begin + +/inch { 72 mul } def + +/PointSize 10 def + +/ColumnWidth 3.24 inch def % slightly less than (8.5 - 2)/2 + +/Courier findfont PointSize scalefont setfont + +/BaselineSkip PointSize 1.2 mul def + +/BottomOfColumn { y 1 inch lt } def + +/Bubblesort % Here is the sorting routine, courtesy of ulfis@nada.kth.se +{ % Usage: array Bubblesort + % This code may be used for arrays of strings and arrays of numbers + /TheArray exch def + /num TheArray length def + num 1 gt + { + 1 1 num 1 sub + { + /localcount exch def + num 1 sub -1 localcount + { + /innercount exch def + /firststring TheArray innercount 1 sub get def + /secondstring TheArray innercount get def + firststring secondstring gt + { + TheArray innercount 1 sub secondstring put + TheArray innercount firststring put + } if + } for + } for + } if +} def + +/ColumnOffPage { x ColumnWidth add 7.5 inch gt } def + +/NewColumn +{ + /x x ColumnWidth add def + /y Y def + ColumnOffPage { showpage NewPage } if + x y moveto +} def + +/NewLine +{ + /y y BaselineSkip sub def + BottomOfColumn { NewColumn } if + x y moveto +} def + +/NewPage +{ + /x 1 inch def + /y 10 inch def + /Y y def + x y moveto +} def + +end % fontlistdict +%%EndProlog +%======================================================================= +%%BeginSetup +/#copies 1 def +fontlistdict begin + +% Count the fonts available, while putting all of the font names on +% the stack. We need to create a new string for each of them, because +% scratch gets reused on each loop iteration. +/n 0 def +systemdict /resourceforall known + { % Level 2 PostScript + /scratch 256 string def + (*) { /n n 1 add def dup length string cvs } scratch /Font resourceforall + } + { % Level 1 PostScript + FontDirectory { pop /n n 1 add def dup length string cvs } forall + } +ifelse + +% Make an array to hold the font names and then store them from the stack +/FontArray n array def +FontArray astore + +% Sort the font array (astore left FontArray on the stack) +Bubblesort + +end %fontlistdict +%%EndSetup +%======================================================================= +%%Page: 1 1 +%%BeginPageSetup +fontlistdict begin +NewPage +end % fontlistdict +%%EndPageSetup + +fontlistdict begin + +% Display the sorted fonts: this make take several pages +/n 0 def +/nstr 10 string def +FontArray +{ + /n n 1 add def + n 10 lt { ( ) show } if + n 100 lt { ( ) show } if + n 1000 lt { ( ) show } if + n nstr cvs show + (: ) show + show + NewLine +} +forall + +/Times-Bold findfont PointSize scalefont setfont +(Total memory: ) show +vmstatus 40 string cvs show +NewLine + +(Memory used: ) show +40 string cvs show +NewLine + +pop % discard 3rd vmstatus value + +(Free memory: ) show +vmstatus exch sub 40 string cvs show +NewLine + +pop % discard 3rd vmstatus value + +end % fontlistdict + +showpage +%%PageTrailer +%======================================================================= +%%Trailer +%%EOF diff --git a/fonts/utilities/psposter/fontlold.ps b/fonts/utilities/psposter/fontlold.ps new file mode 100644 index 0000000000..3253298fef --- /dev/null +++ b/fonts/utilities/psposter/fontlold.ps @@ -0,0 +1,98 @@ +%! +% Prints a sorted list of resident fonts. + +/MaxNrOfFonts 100 def % Maximum numbers of fonts... +/Xpos 136 def +/Ypos 690 def +/num 0 def % local counter +/incr { + /num num 1 add def +} def + +/s40 { 40 string } def % Proper length of the fontname + +/showline { % Show and newlines + show + newline +} def + +/newline { % Spacing between lines + /Ypos Ypos 12 sub def + Xpos Ypos moveto +} def + +/CountFonts { % Count the fonts and put the names into array + FontDirectory + { + pop + s40 + cvs + incr + } + forall + /FontArray num array def + FontArray astore + pop +} def + +/ListFonts { % Sort the fonts and show them on paper + Bubbelsort + FontArray + { + showline + } + forall +} def + +/Bubbelsort { % Here is the sorting routine + 1 1 num 1 sub + { + /localcount exch def + num 1 sub -1 localcount + { + /innercount exch def + /firststring FontArray innercount 1 sub get def + /secondstring FontArray innercount get def + firststring secondstring gt + { + FontArray innercount 1 sub secondstring put + FontArray innercount firststring put + } if + } for + } for +} def + +/prettyline +{ /YPOSition exch def + newpath + Xpos Ypos YPOSition add moveto + Xpos 100 add Ypos YPOSition add lineto + stroke +} def + +/Times-Roman findfont 12 scalefont setfont +14 prettyline + +Xpos Ypos 18 add moveto +CountFonts +(Number of fonts: ) show +num s40 cvs show + +30 prettyline +Xpos Ypos moveto +ListFonts +newline + +/Times-Bold findfont 12 scalefont setfont +(Total memory: ) show +vmstatus s40 cvs show newline +(Memory used: ) show +s40 cvs show newline +pop +(Free memory: ) show +vmstatus exch sub s40 cvs show newline newline +pop +/Times-Roman findfont 12 scalefont setfont +(From ulfis@nada.kth.se, 88-10-05) show + +showpage diff --git a/fonts/utilities/psposter/fontlsim.ps b/fonts/utilities/psposter/fontlsim.ps new file mode 100644 index 0000000000..1440d8bc81 --- /dev/null +++ b/fonts/utilities/psposter/fontlsim.ps @@ -0,0 +1,41 @@ +%! +% fontlist.ps +% Send this file to a PostScript device to list +% the names of all of the resident fonts. +% [13-Dec-1994] +/inch { 72 mul } def +/PointSize 10 def +/ColumnWidth 3 inch def +/Courier findfont PointSize scalefont setfont +/n 0 def +/newcolumn +{ + /x x ColumnWidth add def + x y moveto + 8 inch x gt { showpage newpage } if +} def +/newpage +{ + /x 1 inch def + /y 10 inch def + x y moveto +} def +/nstr 10 string def +/scratch 256 string def +newpage +(*) +{ + /n n 1 add def + gsave + n nstr cvs show + (: ) show + show + grestore + 0 PointSize -1.2 mul rmoveto + currentpoint exch pop 1 inch lt + { + newcolumn + } if +} +scratch /Font resourceforall +showpage diff --git a/fonts/utilities/psposter/fontshow.ps b/fonts/utilities/psposter/fontshow.ps new file mode 100644 index 0000000000..9e626223d0 --- /dev/null +++ b/fonts/utilities/psposter/fontshow.ps @@ -0,0 +1,190 @@ +%!PS-Adobe-3.0 +%======================================================================= +% Send this file to a PostScript device to list the names of all of +% the resident fonts, in ascending order, together with a small sample +% of each font. +%======================================================================= +%%Title: fontshow.ps +%%CreationDate: Thu Dec 15 09:31:00 MST 1994 +%%Creator: Nelson H. F. Beebe <beebe@sunrise> +%%For: Nelson H. F. Beebe <beebe@sunrise> +%%BoundingBox: 0 0 612 792 +%%DocumentMedia: A 612 792 () () () +%%DocumentData: Clean7Bit +%%DocumentFonts: font Courier Times-Bold +%%DocumentNeededResources: font Courier Times-Bold +%%DocumentSuppliedResources: +%%Orientation: Portrait +%%PageOrder: Ascend +%%Pages: 1 +% NB: The number of pages depends on the number of resident fonts +%%EndComments +%======================================================================= +%%BeginProlog +/fontshowdict 50 dict def +fontshowdict begin + +/inch { 72 mul } def + +/PointSize 10 def + +/ColumnWidth 3.24 inch def % slightly less than (8.5 - 2)/2 + +/Courier findfont PointSize scalefont setfont + +/BaselineSkipFactor 1.2 def + +/BaselineSkip { PointSize BaselineSkipFactor mul } def + +/BottomOfColumn { y 1 inch lt } def + +/ColumnOffPage { x ColumnWidth add 7.5 inch gt } def + +/Bubblesort % Here is the sorting routine, courtesy of ulfis@nada.kth.se +{ % Usage: array Bubblesort + % This code may be used for arrays of strings and arrays of numbers + /TheArray exch def + /num TheArray length def + num 1 gt + { + 1 1 num 1 sub + { + /localcount exch def + num 1 sub -1 localcount + { + /innercount exch def + /firststring TheArray innercount 1 sub get def + /secondstring TheArray innercount get def + firststring secondstring gt + { + TheArray innercount 1 sub secondstring put + TheArray innercount firststring put + } if + } for + } for + } if +} def + +/ColumnSpaceCheck +{ % Usage: vertical-space-needed ColumnSpaceCheck + y exch + neg y add /y exch def + BottomOfColumn { pop NewColumn } { /y exch def } ifelse +} def + +/FontShow +{ % Usage: fontname FontShow + currentfont exch + findfont 0.8 PointSize mul scalefont setfont + (ABCDEFGHIJKLMNOPQRSTUVWXYZ) show NewLine + (abcdefghijklmnopqrstuvwxyz) show NewLine + (0123456789 !@#$%^&*()_+|~-=\\`{}[]:";'<>?,./) show NewLine + (The quick brown fox jumps over the lazy dog.) show NewLine + NewLine + setfont +} def + +/NewColumn +{ + /x x ColumnWidth add def + /y Y def + ColumnOffPage { showpage NewPage } if + x y moveto +} def + +/NewLine +{ + /y y BaselineSkip sub def + BottomOfColumn { NewColumn } if + x y moveto +} def + +/NewPage +{ + /x 1 inch def + /Y 10 inch PointSize BaselineSkipFactor mul sub def % top of column + /y Y def + x y moveto +} def + +end % fontshowdict +%%EndProlog +%======================================================================= +%%BeginSetup +/#copies 1 def +fontshowdict begin + +% Count the fonts available, while putting all of the font names on +% the stack. We need to create a new string for each of them, because +% scratch gets reused on each loop iteration. +/n 0 def +systemdict /resourceforall known + { % Level 2 PostScript + /scratch 256 string def + (*) { /n n 1 add def dup length string cvs } scratch /Font resourceforall + } + { % Level 1 PostScript + FontDirectory { pop /n n 1 add def dup length string cvs } forall + } +ifelse + +% Make an array to hold the font names and then store them from the stack +/FontArray n array def +FontArray astore + +% Sort the font array (astore left FontArray on the stack) +Bubblesort + +end %fontshowdict +%%EndSetup +%======================================================================= +%%Page: 1 1 +%%BeginPageSetup +fontshowdict begin +NewPage +%%EndPageSetup + +% Display the sorted fonts: this make take several pages +/n 0 def +/nstr 10 string def +FontArray +{ + dup + BaselineSkip 2 mul BaselineSkip 0.8 mul 5 mul add ColumnSpaceCheck + /n n 1 add def + n 10 lt { ( ) show } if + n 100 lt { ( ) show } if + n 1000 lt { ( ) show } if + n nstr cvs show + (: ) show + show + NewLine + cvn FontShow +} +forall + +/Times-Bold findfont PointSize scalefont setfont +(Total memory: ) show +vmstatus 40 string cvs show +NewLine + +(Memory used: ) show +40 string cvs show +NewLine + +pop % discard 3rd vmstatus value + +(Free memory: ) show +vmstatus exch sub 40 string cvs show +NewLine + +pop % discard 3rd vmstatus value + +end % fontshowdict + +showpage +%%PageTrailer +%======================================================================= +%%Trailer +%%EOF + diff --git a/fonts/utilities/psposter/man2ps b/fonts/utilities/psposter/man2ps new file mode 100644 index 0000000000..8d0f230443 --- /dev/null +++ b/fonts/utilities/psposter/man2ps @@ -0,0 +1,36 @@ +#!/bin/sh +# Filter for converting "troff -mxx" to PostScript. This script is +# normally linked to the names man2ps, ms2ps, me2ps, and mm2ps. +# +# Usage: +# man2ps [<] cc.1 >cc.ps +# me2ps [<] foo.me >foo.ps +# mm2ps [<] foo.mm >foo.ps +# ms2ps [<] foo.ms >foo.ps +# +# [08-May-1993] + +# Choose a troff format according to the scrip name. +case `basename $0` in + man*) FORMAT=-man ;; + me*) FORMAT=-me ;; + mm*) FORMAT=-mm ;; + ms*) FORMAT=-ms ;; + *) echo "Unknown troff format:" ; exit 1 ;; +esac + +# We can use either GNU groff or Sun Solaris troff + dpost +if [ -x /usr/local/bin/groff ] +then # GNU groff + TROFF="groff $FORMAT" + TROFF2PS="cat" +elif [ -x /usr/lib/lp/postscript/dpost ] +then # Solaris 2.1 + TROFF="troff $FORMAT" + TROFF2PS="/usr/lib/lp/postscript/dpost" +else + echo "Cannot find troff-to-PostScript filter" + exit 1 +fi + +tbl $* | eqn | $TROFF | $TROFF2PS diff --git a/fonts/utilities/psposter/psposter.awk b/fonts/utilities/psposter/psposter.awk new file mode 100644 index 0000000000..cf6163161a --- /dev/null +++ b/fonts/utilities/psposter/psposter.awk @@ -0,0 +1,1184 @@ +### ==================================================================== +### @Awk-file{ +### author = "Nelson H. F. Beebe", +### version = "0.08", +### date = "16 January 1995", +### time = "14:49:41 MST", +### filename = "psposter.sh", +### address = "Center for Scientific Computing +### Department of Mathematics +### University of Utah +### Salt Lake City, UT 84112 +### USA", +### telephone = "+1 801 581 5254", +### FAX = "+1 801 581 4148", +### checksum = "19029 1184 5360 42015", +### email = "beebe@math.utah.edu (Internet)", +### codetable = "ISO/ASCII", +### keywords = "poster, PostScript", +### supported = "yes", +### docstring = "Display a centered message in a very large +### font for a poster, which is represented as an +### output Encapsulated PostScript file which +### will produce exactly one page. +### +### Usage: +### psposter [+author] [+bd color] [+bg color] +### [+bs factor] [+bw dimension] +### [+c nnn] [+copyright] [+d ] +### [+fg color] [+fn fontname] +### [+h dimension] [+help] [+l] +### [+mw dimension] [+p dimension] +### [+paper form] [+s factor] +### [+table {8/o | 8/h | 16/o | 16/h}] +### [+version] [+w dimension] +### [+x dimension] [+y dimension] +### ['?'] [++] +### [word(s) or <infile] >PostScript-file +### +### The font size is normally chosen +### automatically so that the longest line fills +### the page, but a fixed font size may be +### requested if required. +### +### If there are too many lines to fit on one +### page, lines will be lost at the top and +### bottom of the page. +### +### Options are provided to change colors, to +### request multiple copies, to adjust the +### position, scale, and orientation, and to +### select the font. +### +### Each poster line consists of one argument, +### if the words come from the command line, or +### one line, if the words come from a file. +### +### The checksum field above contains a CRC-16 +### checksum as the first value, followed by the +### equivalent of the standard UNIX wc (word +### count) utility output of lines, words, and +### characters. This is produced by Robert +### Solovay's checksum utility.", +### } +### ==================================================================== +BEGIN { + VERSION_NUMBER = "0.08" + VERSION = "Version " VERSION_NUMBER " [16-Jan-1995]" + AFMPATH = ENVIRON["AFMPATH"] + if (AFMPATH == "") # supply default fallback search path + AFMPATH = "/usr/local/lib/afm" + split(AFMPATH,afmpath,":") + AFMMAPFILE = find_file(afmpath,"afmfonts.map") + if (AFMMAPFILE == "") + warning("Cannot find font mapping file [afmfonts.map]") + + DEFAULT_FONT_NAME = "Times-Bold" + + RGBPATH = ENVIRON["RGBPATH"] + if (RGBPATH == "") # supply default fallback search path + RGBPATH = "/usr/lib/X11:/usr/openwin/lib/X11:/usr/local/lib/X11:/usr/local/X11R5/lib" + split(RGBPATH,rgbpath,":") + RGBTXTFILE = find_file(rgbpath,"rgb.txt") + if (RGBTXTFILE == "") + warning("Cannot find X11 color data base file [rgb.txt]") + + angle = "" # empty string means unset + background = "0.9 0.9 0.9" # 10% gray + baseline_skip = 1.2 + border_color = "0.5 0.5 0.5" # 50% gray + border_width = 10 # big points + copies = 1 + display_fontsize = 0 + font_name = DEFAULT_FONT_NAME + foreground = "0 0 0" # black + height = 0 + width = 0 + landscape = 0 + make_font_table = 0 + margin_width = "" # empty string means unset + paper_name = "" + point_size = 0 + ScaleFactor = 1 + x_offset = 0 + y_offset = 0 + + initialize_paper_table() + + for (k = 1; k < ARGC; ++k) # preserve original command-line arguments + OLD_ARGV[k] = ARGV[k] + + for (k = 1; k < ARGC; k++) # collect +switches + { + if (ARGV[k] == "+author") + author() + else if (ARGV[k] == "+bd") + { + border_color = ARGV[++k] + ARGV[k] = "" # forget this argument + } + else if (ARGV[k] == "+bg") + { + background = ARGV[++k] + ARGV[k] = "" # forget this argument + } + else if (ARGV[k] == "+bs") + { + baseline_skip = ARGV[++k] + 0 + ARGV[k] = "" # forget this argument + } + else if (ARGV[k] == "+bw") + { + border_width = bigpoint(ARGV[++k]) + ARGV[k] = "" # forget this argument + } + else if (ARGV[k] == "+c") + { + copies = ARGV[++k] + 0 + ARGV[k] = "" # forget this argument + } + else if (ARGV[k] == "+copyright") + copyright() + else if (ARGV[k] == "+d") + display_fontsize = 1 + else if (ARGV[k] == "+fg") + { + foreground = ARGV[++k] + ARGV[k] = "" # forget this argument + } + else if (ARGV[k] == "+fn") + { + font_name = ARGV[++k] + ARGV[k] = "" # forget this argument + } + else if (ARGV[k] == "+h") + { + height = bigpoint(ARGV[++k]) + ARGV[k] = "" # forget this argument + } + else if ((ARGV[k] == "+help") || (ARGV[k] == "?")) + usage() + else if (ARGV[k] == "+l") + { + landscape = 1 + angle = +90 + } + else if (ARGV[k] == "+mw") + { + margin_width = bigpoint(ARGV[++k]) + ARGV[k] = "" # forget this argument + } + else if (ARGV[k] == "+s") + { + ScaleFactor = ARGV[++k] + 0 + ARGV[k] = "" # forget this argument + } + else if (ARGV[k] == "+table") + { + parse_table_type(ARGV[++k]) + ARGV[k] = "" # forget this argument + } + else if (ARGV[k] == "+p") + { + point_size = bigpoint(ARGV[++k]) + ARGV[k] = "" # forget this argument + } + else if (ARGV[k] == "+paper") + { + set_paper_dimensions(ARGV[++k]) + ARGV[k] = "" # forget this argument + } + else if (ARGV[k] == "+r") + { + angle = ARGV[++k] + 0 + ARGV[k] = "" # forget this argument + angle = angle % 360 # reduce to -360 .. 360 + if (angle < 0) # and reduce again to 0 .. 359 + angle += 360 + if (!((angle == 0) || (angle == 90) || (angle == 180) || (angle == 270))) + error("rotation angle is not a multiple of 90 degrees in -360 .. +360") + } + else if (ARGV[k] == "+version") + version() + else if (ARGV[k] == "+w") + { + width = bigpoint(ARGV[++k]) + ARGV[k] = "" # forget this argument + } + else if (ARGV[k] == "+x") + { + x_offset = bigpoint(ARGV[++k]) + ARGV[k] = "" # forget this argument + } + else if (ARGV[k] == "+y") + { + y_offset = bigpoint(ARGV[++k]) + ARGV[k] = "" # forget this argument + } + else if (ARGV[k] == "++") # no more arguments + { + while (k < ARGC) # remaining words are for poster text + { + word[++n] = ARGV[++k] + ARGV[k] = "" # forget this argument + } + } + else if (ARGV[k] ~ /^[ \t]*[+]/) + error("unrecognized option [" ARGV[k] "]: try +help for more information") + else + word[++n] = ARGV[k] + } + + if ((n == 0) && (make_font_table == 0)) + { # no words supplied, so read stdin for lines to print + while (getline <"/dev/stdin" > 0) + word[++n] = $0 + } + + if (paper_name == "") + set_paper_dimensions("A") + + if (margin_width == "") + margin_width = (paper_left + paper_right + paper_top + paper_bottom)/4 + if (height == 0) + height = paper_height + if (width == 0) + width = paper_width + + # + # Here is what the picture will look like. Ps mark the PAGE + # boundary, enclosing a region of size (PageWidth,PageHeight). + # Ms mark the MARGIN, and Bs mark the border; both have + # constant width on all four edges. The inner frame contains + # the poster text; it has width W (TextWidth) and height H + # (TextHeight). The lower-left corner of the MARGIN area is at + # (xoffset,yoffset) from the lower-left page corner. The + # BoundingBox surrounds the border rectangle marked by Bs. + # + # For full page posters, normally (xoffset,yoffset) = (0,0), + # but the MarginWidth is non-zero, because most PostScript + # output devices are incapable of printing closer than about + # 5mm to the edge of the printing surface. + # + # The inner frame may be further scaled by ScaleFactor; + # that scaling applies to everything, EXCEPT + # (xoffset,yoffset), because those offsets are used to + # position the scaled picture on the page. + # + # PPPPPPPPPPPPPPPPPPPPPPPP + # P P + # P P + # P MMMMMMMMMMMMMMMMMM P + # P MMMMMMMMMMMMMMMMMM P + # P MMBBBBBBBBBBBBBBMM P + # P MMB ^ BMM P + # P MMB | BMM P + # P MMB<-+----W--->BMM P + # P MMB | BMM P + # P MMB | BMM P + # P MMB H BMM P + # P MMB | BMM P + # P MMB | BMM P + # P MMB | BMM P + # P MMB | BMM P + # P MMB | BMM P + # P MMB v BMM P + # P MMBBBBBBBBBBBBBBMM P + # P MMMMMMMMMMMMMMMMMM P + # P MMMMMMMMMMMMMMMMMM P + # ^ P P + # | P P + # yoffset | P P + # | P P + # v PPPPPPPPPPPPPPPPPPPPPPPP + # <->xoffset + # + + # NB: text_width and text_height must match the definitions of the + # PostScript values TextWidth and TextHeight below + text_width = width - 2*margin_width - 2*border_width + text_height = height - 2*margin_width - 2*border_width + + "date" | getline current_date_and_time + if ("USER" in ENVIRON) + username = ENVIRON["USER"] + else if ("LOGNAME" in ENVIRON) + username = ENVIRON["LOGNAME"] + else + username = "unknown" + "awk -F: '/^" username "/ {print $5}' /etc/passwd" | \ + getline personal_name + "hostname" | getline hostname + + print "%!PS-Adobe-3.0 EPSF-3.0" + printf("%%%%Title: psposter") + for (k = 1; k < ARGC; ++k) + printf(" %s",OLD_ARGV[k]) + print "" + + print "%%CreationDate:", current_date_and_time + print "%%Creator: psposter", VERSION + print "%%For: " personal_name " <" username "@" hostname ">" + print "%%BoundingBox:", \ + floor(x_offset + ScaleFactor * margin_width), \ + floor(y_offset + ScaleFactor * margin_width), \ + ceil(x_offset + \ + ScaleFactor * (margin_width + text_width + 2*border_width)), \ + ceil(y_offset + \ + ScaleFactor * (margin_width + text_height + 2*border_width)) + print "%%DocumentMedia:", paper_name, \ + ceil(paper_width), ceil(paper_height), "() () ()" + print "%%DocumentData: Clean7Bit" + print "%%DocumentFonts: font",font_name + print "%%DocumentNeededResources: font", font_name + print "%%Orientation:", (landscape ? "Landscape" : "Portrait") + print "%%PageOrder: Ascend" + print "%%Pages: 1" + print "%%EndComments" + print "%=======================================================================" + print "%%BeginProlog" + print "/psposterdict 50 dict def" + print "psposterdict begin" + print "/inch { 72 mul } def" + print "/BackgroundColor {", getcolor(background), "} def %",background + print "/BaselineSkipFactor", baseline_skip, "def" + print "/BorderColor {", getcolor(border_color), "} def %",border_color + print "/BorderWidth", border_width, "def" + print "/CapHeight" + print "{" + print "\tgsave newpath 0 0 moveto (M) true charpath pathbbox" + print "\texch pop sub neg exch pop grestore" + print "} def" + print "/ForegroundColor {", getcolor(foreground), "} def %",foreground + if (angle != "") # "+rotation angle" overrides "+l" + landscape = (angle / 90) % 2 + print "/LandscapeMode", (landscape ? "true" : "false"), "def" + print "/MarginWidth", margin_width, "def" + print "/PageHeight", paper_height, "def" + print "/PageWidth", paper_width, "def" + print "/Height", height, "def" + print "/Width", width, "def" + print "/PointSize", point_size, "def" + print "/ROTATE_0 {} def" + print "/ROTATE_90 {Width 0 translate 90 rotate} bind def" + print "/ROTATE_180 {Width Height translate 180 rotate} bind def" + print "/ROTATE_270 {0 Height translate 270 rotate} bind def" + print "/ScaleFactor", ScaleFactor, "def" + + print "LandscapeMode" + print "{" + print "\t/TextHeight Width MarginWidth 2 mul sub BorderWidth 2 mul sub def" + print "\t/TextWidth Height MarginWidth 2 mul sub BorderWidth 2 mul sub def" + print "}" + print "{" + print "\t/TextHeight Height MarginWidth 2 mul sub BorderWidth 2 mul sub def" + print "\t/TextWidth Width MarginWidth 2 mul sub BorderWidth 2 mul sub def" + print "}" + print "ifelse" + + print "/XOffset", x_offset, "def" + print "/YOffset", y_offset, "def" + + print "% Center and show a string at the current point, leaving" + print "% point at the center of the next line." + print "% Usage: (string) cshow" + print "/cshow" + print "{" + print "\tcurrentpoint /cpy exch def /cpx exch def" + print "\tdup stringwidth pop 0.5 mul neg 0 rmoveto show" + print "\tcpx cpy moveto" + print "\tNewLine" + print "} def" + + print "/max" + print "{" + print "\t/a exch def" + print "\t/b exch def" + print "\ta b gt { a } { b } ifelse" + print "} def" + + print "/min" + print "{" + print "\t/a exch def" + print "\t/b exch def" + print "\ta b lt { a } { b } ifelse" + print "} def" + + print "/TheFont /" font_name " def" + + print "% Set the font size so that longest PosterLines string fills the TextWidth" + print "% Usage: setfontsize" + print "/setfontsize" + print "{" + print "\tTheFont findfont 10 scalefont setfont" + print "\t% Set TheFontSize according to maximum string width" + print "\t0 PosterLines { stringwidth pop max } forall TextWidth exch div 10 mul" + print "\t/TheFontSize exch def" + print "\t% Adjust TheFontSize according to the number of text lines" + print "\tLineCount TheFontSize mul BaselineSkipFactor mul" + print "\tTextHeight div" + print "\tdup 1 gt { TheFontSize exch div /TheFontSize exch def } { pop } ifelse" + if (point_size > 0) # override + { + print "\t% NB: The following definition silently overrides the previous one" + print "\t/TheFontSize PointSize def" + } + print "\t/BaselineSkip BaselineSkipFactor TheFontSize mul def" + print "\tTheFont findfont TheFontSize scalefont setfont" + print "} def" + + print "/NewLine {0 BaselineSkip neg rmoveto} def" + + print "/PosterLines" + print "[" + for (k = 1; k <= n; ++k) + print "\t(" word[k] ")" + print "] def" + print "/LineCount PosterLines length 1 max def" + if (make_font_table) + print_font_table_macros() + print "end % psposterdict" + print "%%EndProlog" + + print "%=======================================================================" + print "%%BeginSetup" + print "/#copies", copies," def" + + # Now see if we have a font that must be downloaded. If we do not + # find it, we silently assume that it is a resident font on the + # output PostScript device. AFMMAPFILE lines look like this: + # ZapfChancery-MediumItalic = ZapChaMI % Optional comment + + if (AFMMAPFILE == "") + mapline = "" + else + "grep 2>/dev/null \"^" font_name "[ \t]\" " AFMMAPFILE | getline mapline + + k = index(mapline,"=") + if (k > 0) # copy font using mapped filename + { + basename = substr(mapline,k+1) + gsub(/%.*$/,"",basename) # discard inline comment + gsub(/[ \t]/,"",basename) # and spaces + } + else # try to copy font using native file name + basename = font_name + + filename = find_file(afmpath, basename ".pfa") + if (filename == "") + filename = find_file(afmpath, basename ".pfb") + if (filename == "") + filename = find_file(afmpath, basename ".pfa.gz") + if (filename == "") + filename = find_file(afmpath, basename ".pfa.Z") + if (filename == "") + filename = find_file(afmpath, basename ".pfb.gz") + if (filename == "") + filename = find_file(afmpath, basename ".pfb.Z") + if (filename != "") # download the font + copyfont(filename) + + print "%%EndSetup" + + print "%=======================================================================" + print "%%Page: 1 1" + print "%%BeginPageSetup" + print "psposterdict begin" + print "XOffset YOffset translate" + print "ScaleFactor dup scale" + print "ROTATE_" (angle + 0) + print "end % psposterdict" + print "%%EndPageSetup" + print "" + print "psposterdict begin" + print "% Draw a frame box and fill it with the background color, and a border color." + print "BorderWidth setlinewidth" + print "newpath" + print "MarginWidth BorderWidth 0.5 mul add dup moveto" + print "TextWidth BorderWidth add 0 rlineto" + print "0 TextHeight BorderWidth add rlineto" + print "TextWidth BorderWidth add neg 0 rlineto" + print "closepath" + print "BackgroundColor setrgbcolor gsave fill grestore" + print "BorderColor setrgbcolor stroke" + + print "" + print "0 0 0 setrgbcolor % revert to black" + + print "" + print "% Set the clipping path to the text region" + print "0 setlinewidth" + print "newpath" + print "MarginWidth BorderWidth add dup moveto" + print "TextWidth 0 rlineto" + print "0 TextHeight rlineto" + print "TextWidth neg 0 rlineto" + print "closepath" + print "clip" + + print "" + print "% Move origin to text box center, since x = 0 is a convenient" + print "% value for centering text." + print "LandscapeMode" + print "\t{ Height 0.5 mul Width 0.5 mul translate }" + print "\t{ Width 0.5 mul Height 0.5 mul translate }" + print "ifelse" + + if (make_font_table) + { + print "% Typeset the poster text." + print "TheFont MakeFontTable" + } + else + { + print "% Set font size so that the longest line just fills the TextWidth." + print "setfontsize" + print "% Center the text vertically, such that the middle line has its text" + print "% (rather than baseline distance) centered on a horizontal line" + print "% passing through the center of the picture." + print "0 LineCount 0.5 mul BaselineSkip mul BaselineSkip sub moveto" + + print "0 BaselineSkip CapHeight sub 0.5 mul rmoveto" + + print "ForegroundColor setrgbcolor" + print "% Typeset the poster text." + print "PosterLines { cshow } forall" + } + print "end % psposterdict" + print "showpage" + print "%%PageTrailer" + + if (display_fontsize) + { + print "%%Page: 2 2" + print "%%BeginPageSetup" + print "psposterdict begin" + print "/tempstr 25 string def" + print "/Courier findfont 20 scalefont setfont" + print "/BaselineSkip 20 1.2 mul def" + print "72 PageHeight 2 div moveto" + print "(Set font pointsize by) show" + print "/Courier-BoldOblique findfont 20 scalefont setfont" + print "( +p ) show" + print "TheFontSize ScaleFactor div tempstr cvs show" + print "(bp) show" + print "showpage" + print "end % psposterdict" + print "%%PageTrailer" + } + + print "%=======================================================================" + print "%%Trailer" + print "%%EOF" + + exit (0) # all done (no command-line words are files) +} + +function author() +{ + print \ + "Author:\n" \ + "\tNelson H. F. Beebe\n" \ + "\tCenter for Scientific Computing\n" \ + "\tDepartment of Mathematics\n" \ + "\tUniversity of Utah\n" \ + "\tSalt Lake City UT 84112\n" \ + "\tUSA\n" \ + "\tTel: +1 801 581 5254\n" \ + "\tFAX: +1 801 581 4801\n" \ + "\tEmail: <beebe@math.utah.edu>\n" + url() + exit (0) +} + +function bigpoint(dimension) +{ + return (72 * inch(dimension)) +} + +function ceil(x, n) +{ + n = int(x) + if (n < x) ++n + return (n) +} + +function copyfont(filename, filter,fontline) +{ + # NB: .pfb files are binary: gawk can copy them, but nawk cannot. + # Even so, before the font can be included in a PostScript file, + # it must be converted to ASCII form. We therefore invoke t1ascii + # on-the-fly to handle the conversion, plus gunzip or uncompress, + # if needed for decompression. t1ascii writes a version banner + # to stderr, so we redirect it to /dev/null. + + print "%%BeginResource: font " font_name + if (filename ~ /.pfb$/) # convert from .pfb to .pfa on-the-fly + filter = "t1ascii 2>/dev/null " filename + else if (filename ~ /.pfa.gz$/) # convert from .pfa.gz to .pfa on-the-fly + filter = "gunzip <" filename + else if (filename ~ /.pfb.gz$/) # convert from .pfb.gz to .pfa on-the-fly + filter = "gunzip <" filename " | t1ascii 2>/dev/null " + else if (filename ~ /.pfa.Z$/) # convert from .pfa.Z to .pfa on-the-fly + filter = "uncompress <" filename + else if (filename ~ /.pfb.Z$/) # convert from .pfb.Z to .pfa on-the-fly + filter = "uncompress <" filename " | t1ascii 2>/dev/null " + else + filter = "cat " filename + print "% file:", filename + if (filter !~ /^cat /) print "% filter:", filter + while (filter | getline fontline) + print fontline + close (filter) + print "% font:",font_name + print "% file:",filename + print "%%EndResource" +} + +function copyright() +{ + print \ + "*********************************************\n" \ + "*********************************************\n" \ + "*** This program is in the PUBLIC DOMAIN. ***\n" \ + "*********************************************\n" \ + "*********************************************\n" + url() + exit (0) +} + +function error(message) +{ + print message > "/dev/tty" + exit (1) +} + +function file_exists(filename) +{ + # Unfortunately, getline in both nawk and gawk will hang if its + # file does not exist, so we need to test for file existence by + # invoking a shell command, sigh... + + return (system("test -f " filename) == 0) +} + +function find_file(path,filename, fullname,k) +{ + for (k = 1; k in path; ++k) + { + fullname = path[k] "/" filename + if (file_exists(fullname)) + return (fullname) + } + return ("") +} + +function floor(x, n) +{ + n = int(x) + if (n > x) --n + return (n) +} + +function getcolor(value) +{ # value is e.g. "0.5/0.25/0.9" or "yellow" + if (value ~ /[A-Za-z]/) # named color + { + if (RGBTXTFILE == "") + rgbline = "0 0 0" # default to black + else + ("grep 2>/dev/null -i '^[0-9 \t]*" value "[ \t]*$' " RGBTXTFILE) | \ + getline rgbline + split(rgbline,rgb," ") + value = (rgb[1] / 255) " " (rgb[2] / 255) " " (rgb[3] / 255) + } + else # expect numbered color + gsub(/[^0-9.]/," ",value) # eliminate punctuation + return (value) +} + +function inch(units, value) +{ + value = units + 0 # coerce to number + + if (units ~ "[-+]?[0-9]+[.]?[0-9]*bp") # big points + value /= 72.0 + else if (units ~ "[-+]?[0-9]+[.]?[0-9]*in") # inches + ; # NO-OP + else if (units ~ "[-+]?[0-9]+[.]?[0-9]*cm") # centimeters + value /= 2.54 + else if (units ~ "[-+]?[0-9]+[.]?[0-9]*pt") # points + value /= 72.27 + else if (units ~ "[-+]?[0-9]+[.]?[0-9]*cc") # cicero + value *= 12.0 * (1238.0 / 1157.0) / 72.27 + else if (units ~ "[-+]?[0-9]+[.]?[0-9]*dd") # didot points + value *= (1238.0 / 1157.0) / 72.27 + else if (units ~ "[-+]?[0-9]+[.]?[0-9]*mm") # millimeters + value /= 25.4 + else if (units ~ "[-+]?[0-9]+[.]?[0-9]*pc") # pica + value *= 12.0 / 72.27 + else if (units ~ "[-+]?[0-9]+[.]?[0-9]*sp") # scaled points + value /= (65536.0 * 72.27) + else + error("unrecognized dimension " units) + return (value) +} + +function initialize_paper_table() +{ + # name width height left right bottom top + + # ANSI (note that B folded in half becomes A, etc.) (portrait) + + paper["A"] = "8.5in 11in 1in 1in 1in 1in" + paper["B"] = "11in 17in 1in 1in 1in 1in" + paper["C"] = "17in 22in 1in 1in 1in 1in" + paper["D"] = "22in 34in 1in 1in 1in 1in" + paper["E"] = "34in 44in 1in 1in 1in 1in" + + # Common US designations (portrait) + + paper["Computer-1411"] = "14in 11in 1in 1in 1in 1in" + paper["Legal"] = "8.5in 13in 1in 1in 1in 1in" + paper["Letter"] = "8.5in 11in 1in 1in 1in 1in" + paper["US-Legal"] = "8.5in 14in 1in 1in 1in 1in" + + # Common US designations (landscape) + + paper["A-L"] = "11in 8.5in 1in 1in 1in 1in" + paper["Computer-1411-L"] = "11in 14in 1in 1in 1in 1in" + paper["Legal-L"] = "13in 8.5in 1in 1in 1in 1in" + paper["Letter-L"] = "11in 8.5in 1in 1in 1in 1in" + paper["US-Legal-L"] = "14in 8.5in 1in 1in 1in 1in" + + # Additional paper and envelope sizes taken from <<Hewlett-Packard + # LaserJet Family Paper Specification Guide>> (1992). + + paper["COM10"] = "4.1in 9.5in 1in 1in 1in 1in" + paper["DL"] = "110mm 220mm 25mm 25mm 25mm 25mm" + paper["Executive"] = "7.25in 10.5in 1in 1in 1in 1in" + paper["Monarch"] = "3.9in 7.5in 1in 1in 1in 1in" + + # Miscellaneous and Imagen Ultrascript paper sizes + + paper["A4Small"] = "210mm 297mm 25mm 25mm 25mm 25mm" + paper["Ledger"] = "11in 17in 1in 1in 1in 1in" + paper["LetterSmall"] = "8.5in 11in 1in 1in 1in 1in" + paper["Note"] = "8.5in 11in 1in 1in 1in 1in" + + # ISO standard paper A-series (portrait). Note that Xn folded in half + # becomes Xn+1 (X = A, B, C) + + paper["A0"] = "841mm 1189mm 25mm 25mm 25mm 25mm" + paper["A1"] = "594mm 841mm 25mm 25mm 25mm 25mm" + paper["A2"] = "420mm 594mm 25mm 25mm 25mm 25mm" + paper["A3"] = "297mm 420mm 25mm 25mm 25mm 25mm" + paper["A4"] = "210mm 297mm 25mm 25mm 25mm 25mm" + paper["A5"] = "148mm 210mm 25mm 25mm 25mm 25mm" + paper["A6"] = "105mm 148mm 25mm 25mm 25mm 25mm" + paper["A7"] = "74mm 105mm 25mm 25mm 25mm 25mm" + paper["A8"] = "52mm 74mm 25mm 25mm 25mm 25mm" + paper["A9"] = "37mm 52mm 25mm 25mm 25mm 25mm" + paper["A10"] = "26mm 37mm 25mm 25mm 25mm 25mm" + + # ISO standard paper A-series (landscape). Note that the final L + # is NOT prefixed by a hyphen. + + paper["A0L"] = "1189mm 841mm 25mm 25mm 25mm 25mm" + paper["A1L"] = "841mm 594mm 25mm 25mm 25mm 25mm" + paper["A2L"] = "594mm 420mm 25mm 25mm 25mm 25mm" + paper["A3L"] = "420mm 297mm 25mm 25mm 25mm 25mm" + paper["A4L"] = "297mm 210mm 25mm 25mm 25mm 25mm" + paper["A5L"] = "210mm 148mm 25mm 25mm 25mm 25mm" + paper["A6L"] = "148mm 105mm 25mm 25mm 25mm 25mm" + paper["A7L"] = "105mm 74mm 25mm 25mm 25mm 25mm" + paper["A8L"] = "74mm 52mm 25mm 25mm 25mm 25mm" + paper["A9L"] = "52mm 37mm 25mm 25mm 25mm 25mm" + paper["A10L"] = "37mm 26mm 25mm 25mm 25mm 25mm" + + # ISO intermediate paper B-series (portrait) + + paper["B0"] = "1000mm 1414mm 25mm 25mm 25mm 25mm" + paper["B1"] = "707mm 1000mm 25mm 25mm 25mm 25mm" + paper["B2"] = "500mm 707mm 25mm 25mm 25mm 25mm" + paper["B3"] = "353mm 500mm 25mm 25mm 25mm 25mm" + paper["B4"] = "250mm 353mm 25mm 25mm 25mm 25mm" + paper["B5"] = "176mm 250mm 25mm 25mm 25mm 25mm" + paper["B6"] = "125mm 176mm 25mm 25mm 25mm 25mm" + + # ISO intermediate paper B-series (landscape) + + paper["B0L"] = "1414mm 1000mm 25mm 25mm 25mm 25mm" + paper["B1L"] = "1000mm 707mm 25mm 25mm 25mm 25mm" + paper["B2L"] = "707mm 500mm 25mm 25mm 25mm 25mm" + paper["B3L"] = "500mm 353mm 25mm 25mm 25mm 25mm" + paper["B4L"] = "353mm 250mm 25mm 25mm 25mm 25mm" + paper["B5L"] = "250mm 176mm 25mm 25mm 25mm 25mm" + paper["B6L"] = "176mm 125mm 25mm 25mm 25mm 25mm" + + # ISO envelopes for A-series + + paper["C0"] = "1294mm 916mm 25mm 25mm 25mm 25mm" + paper["C1"] = "916mm 647mm 25mm 25mm 25mm 25mm" + paper["C2"] = "647mm 458mm 25mm 25mm 25mm 25mm" + paper["C3"] = "458mm 323mm 25mm 25mm 25mm 25mm" + paper["C4"] = "323mm 229mm 25mm 25mm 25mm 25mm" + paper["C5"] = "229mm 161mm 25mm 25mm 25mm 25mm" + paper["C6"] = "161mm 114mm 25mm 25mm 25mm 25mm" + + # British paper sizes (some are also used in the USA) + + paper["Octavo"] = "5in 8in 1in 1in 1in 1in" + paper["Sixmo"] = "6.5in 8in 1in 1in 1in 1in" + paper["Quarto"] = "8in 10in 1in 1in 1in 1in" + paper["Foolscap"] = "8.5in 13in 1in 1in 1in 1in" + paper["Government-legal"] = "8.5in 13in 1in 1in 1in 1in" + paper["Folio"] = "8.3in 13in 1in 1in 1in 1in" +} + +function parse_table_type(s, parts,t) +{ + t = s + gsub(/[^0-9A-Za-z]/," ",t) + split(t,parts," ") + table_columns = 0 + parts[1] + label_base = (parts[2] ~ /^[oO]$/) ? 8 : ((parts[2] ~ /^[hH]$/) ? 16 : 0) + if (((table_columns != 8) && (table_columns != 16)) || \ + ((label_base != 8) && (label_base != 16))) + { + warning("Unrecognized +table value `" s \ + "': expected one of 8/o 16/o 8/h 16/h. Defaulting to 8/o.") + parse_table_type("8/o") + } + make_font_table = s +} + +function print_font_table_macros() +{ + print "/Black { 0 0 0 } def" + print "/LabelBase " label_base " def" + print "/TableColumns " table_columns " def" + print "/LabelChars 3 def % 0x3_ or \\12_; 3 looks better than 4" + print "/RowChars TableColumns def" + print "/TheRow RowChars string def % 8 or 16 characters" + print "/TitleLines TableColumns 8 eq LabelBase 16 eq and { 3 } { 2 } ifelse def" + print "/TableLines 256 TableColumns div TitleLines add def % 16 or 32 char rows and 2 or 3 title rows" + print "PointSize 0 eq" + print "\t{" + print "\t\t/dx" + print "\t\t\tTextWidth RowChars LabelChars add div" + print "\t\t\tTextHeight TableLines BaselineSkipFactor mul div" + print "\t\t\tmin" + print "\t\t\tcvi" + print "\t\tdef" + print "\t}" + print "\t{" + print "\t\t/dx PointSize def" + print "\t}" + print "ifelse" + print "/TheFontSize dx def" + print "/BaselineSkip BaselineSkipFactor TheFontSize mul def" + print "/LabelWidth dx LabelChars mul def" + print "/TableHeight BaselineSkip TableLines mul def" + print "/TableWidth dx 2 mul RowChars mul dx add LabelWidth add def" + print "/TitleBoxHeight BaselineSkip TitleLines mul def" + print "" + print "/KernShow" + print "{ % Usage: (string) KernShow % show with characters of width 2*dx" + print "\tSavePosition" + print "\t{ % stack: c(n) c(n+1)" + print "\t\tpop pop" + print "\t\t/x x dx 2 mul add def" + print "\t\tx y moveto" + print "\t}" + print "\texch kshow" + print "} def" + print "/MakeFontTable" + print "{ % Usage: /fontname MakeFontTable" + print " % (0,0) is at page center" + print "\tfindfont TheFontSize scalefont setfont" + print "\tTableWidth -2 div TableHeight 2 div moveto" + print "\tShowTableTitle" + print "\tgsave" + print "\t\tSetLabelFont" + print "\t\tSetLabelColor" + print "\t\tLabelWidth dx add 0 rmoveto" + print "\t\tTableColumns 16 eq" + print "\t\t\t{" + print "\t\t\t\tLabelBase 16 eq" + print "\t\t\t\t\t{(0123456789abcdef)}" + print "\t\t\t\t\t{(0123456701234567)}" + print "\t\t\t\tifelse" + print "\t\t\t}" + print "\t\t\t{" + print "\t\t\t\t(01234567)" + print "\t\t\t}" + print "\t\tifelse" + print "\t\tKernShow" + print "\tgrestore" + print "\tTableColumns 8 eq LabelBase 16 eq and" + print "\t\t{" + print "\t\t\tNewLine" + print "\t\t\tgsave" + print "\t\t\t\tSetLabelFont" + print "\t\t\t\tSetLabelColor" + print "\t\t\t\tLabelWidth dx add 0 rmoveto" + print "\t\t\t\t(89abcdef) KernShow" + print "\t\t\tgrestore" + print "\t\t}" + print "\tif" + print "\tSavePosition" + print "\t1 setlinewidth" + print "\tSetLabelColor" + print "\tx y TitleBoxHeight add TableWidth ShowHorizontalRule" + print "\tx y TableWidth ShowHorizontalRule" + print "\tx y TitleBoxHeight add TableHeight ShowVerticalRule" + print "\tx LabelWidth add y TitleBoxHeight add TableHeight ShowVerticalRule" + print "\tx TableWidth add y TitleBoxHeight add TableHeight ShowVerticalRule" + print "\tTableColumns 16 eq" + print "\t\t{" + print "\t\t\tx LabelWidth add TableWidth LabelWidth sub 2 div add" + print "\t\t\ty TableHeight TitleBoxHeight sub ShowVerticalRule" + print "\t\t}" + print "\tif" + print "\tx y moveto" + print "\tNewLine" + print "\tForegroundColor setrgbcolor" + print "\tShowCharacterTable" + print "\tSetLabelColor" + print "\tReverseNewline" + print "\tx y TableWidth ShowHorizontalRule" + print "} def" + print "\t/NewLine {0 BaselineSkip neg rmoveto SavePosition} def" + print "/ReverseNewline {0 BaselineSkip rmoveto SavePosition} def" + print "/RuleVerticalOffset BaselineSkip -0.2 mul def" + print "/SavePosition { currentpoint /y exch def /x exch def } def" + print "/SetLabelColor { Black setrgbcolor } def" + print "/SetLabelFont" + print "{" + print "\t/Times-BoldItalic findfont TheFontSize scalefont setfont" + print "} def" + print "/ShowCharacterTable" + print "{" + print "\t0 TableColumns 255" + print "\t{" + print "\t\t/n exch def" + print "\t\tn 8#100 mod 8#070 eq" + print "\t\t{" + print "\t\t\tgsave" + print "\t\t\t SetLabelColor" + print "\t\t\t x y TableWidth ShowHorizontalRule" + print "\t\t\tgrestore" + print "\t\t} if" + print "\t\tShowRowLabel" + print "\t\tgsave" + print "\t\t\tLabelWidth dx add 0 rmoveto" + print "\t\t\tShowRow" + print "\t\tgrestore" + print "\t\tNewLine" + print "\t} for" + print "} def" + print "/ShowHorizontalRule" + print "{ % Usage: x y len ShowHorizontalRule" + print "\tgsave" + print "\t\t/r exch def" + print "\t\tnewpath" + print "\t\t\tmoveto" + print "\t\t\t0 RuleVerticalOffset rmoveto" + print "\t\t\tr 0 rlineto" + print "\t\tstroke" + print "\tgrestore" + print "} def" + print "/ShowRow" + print "{ % Usage: ShowRow" + print "\tgsave" + print "\t\t0 1 TableColumns 1 sub" + print "\t\t{" + print "\t\t\t/k exch def" + print "\t\t\tTheRow k n k add put % char" + print "\t\t} for % create character row" + print "\t\tSavePosition" + print "\t\tTheRow KernShow" + print "\tgrestore" + print "} def" + print "/ShowRowLabel" + print "{ % Usage: ShowRowLabel" + print "\tcurrentpoint" + print "\tgsave" + print "\t\tSetLabelColor" + print "\t\tSetLabelFont" + print "\t\tLabelBase 16 eq" + print "\t\t\t{" + print "\t\t\t\t/TempStr 5 string def" + print "\t\t\t\tTempStr 0 ( ) putinterval" + print "\t\t\t\tn 16 idiv 8#10000 add 16 TempStr cvrs pop" + print "\t\t\t\t/k 0 def" + print "\t\t\t\tTempStr" + print "\t\t\t\t{ % convert to lowercase" + print "\t\t\t\t\tdup dup 8#100 ge exch 8#107 le and { 32 add } if" + print "\t\t\t\t\tTempStr exch k exch put" + print "\t\t\t\t\t/k k 1 add def" + print "\t\t\t\t} forall" + print "\t\t\t\tTempStr 0 (\\\\0x) putinterval" + print "\t\t\tTempStr 4 (_) putinterval" + print "\t\t\t}" + print "\t\t\t{" + print "\t\t\t\t/TempStr 4 string def" + print "\t\t\t\tTempStr 0 ( ) putinterval" + print "\t\t\t\tn 8 idiv 8#100 add 8 TempStr cvrs pop" + print "\t\t\t\tTempStr 0 (\\\\) putinterval" + print "\t\t\t\tTempStr 3 (_) putinterval" + print "\t\t\t}" + print "\t\tifelse" + print "\t\tLabelWidth 2 div 0 rmoveto" + print "\t\tTempStr cshow" + print "\tgrestore" + print "\tmoveto" + print "\tSavePosition" + print "} def" + print "/ShowTableTitle" + print "{ % Usage: ShowTableTitle" + print "\tNewLine" + print "\tgsave" + print "\t\tSetLabelColor" + print "\t\tSetLabelFont" + print "\t\tLabelWidth 0 rmoveto" + print "\t\tTableWidth LabelWidth sub 2 div 0 rmoveto" + print "\t\t% Create centered title, e.g. 23bp FontName" + print "\t\t/TitleString TheFont length 5 add string def" + print "\t\tTitleString 0 TheFontSize 4 string cvs putinterval" + print "\t\tTitleString 2 (bp ) putinterval" + print "\t\tTitleString 5 TheFont dup length string cvs putinterval" + print "\t\tTitleString cshow" + print "\tgrestore" + print "\tNewLine" + print "} def" + print "/ShowVerticalRule" + print "{ % Usage: x y len ShowVerticalRule" + print "\tgsave" + print "\t\t/r exch def" + print "\t\tnewpath" + print "\t\t\tmoveto" + print "\t\t\t0 RuleVerticalOffset rmoveto" + print "\t\t\t0 r neg rlineto" + print "\t\tstroke" + print "\tgrestore" + print "} def" +} + +function set_paper_dimensions(name, n,swap,value) +{ + if (name in paper) + { + n = split(paper[name],value," ") + if (n == 6) + { + paper_name = name + paper_width = bigpoint(value[1]) + paper_height = bigpoint(value[2]) + paper_left = bigpoint(value[3]) + paper_right = bigpoint(value[4]) + paper_bottom = bigpoint(value[5]) + paper_top = bigpoint(value[6]) + } + else + error("internal error: corrupt paper dimensions for paper type " name) + } + else + { # expect something like 8.5inx11in + n = split(name,value,"x") + if (n == 2) + { + paper_name = name + paper_width = bigpoint(value[1]) + paper_height = bigpoint(value[2]) + paper_left = bigpoint("1in") + paper_right = bigpoint("1in") + paper_bottom = bigpoint("1in") + paper_top = bigpoint("1in") + } + else + error("unrecognized paper type " name) + } + if (paper_width > paper_height) + landscape = 1 +} + +function url() +{ + print \ + "Internet source distribution:\n" \ + "\tURL: ftp://ftp.math.utah.edu/pub/misc/psposter-" \ + VERSION_NUMBER ".tar.z\n" \ + "\tURL: ftp://ftp.math.utah.edu/pub/misc/psposter-" \ + VERSION_NUMBER ".zip\n" \ + "\tURL: ftp://ftp.math.utah.edu/pub/misc/psposter-" \ + VERSION_NUMBER ".zoo" +} + + +function usage() +{ + print "Usage: psposter [+option value] ... word1 word2 ..." + print "" + print "Recognized options are:" + print "\t+author display program author and quit" + print "\t+bd color set border color" + print "\t+bg color set background color" + print "\t+bs factor set baselineskip to factor times font pointsize" + print "\t+bw dimension set border width" + print "\t+c nnn number of copies to print" + print "\t+copyright display program copyright and quit" + print "\t+d display font pointsize on second page" + print "\t+fg color set foreground color" + print "\t+fn fontname select PostScript font" + print "\t+h dimension poster height" + print "\t+help display this message and quit" + print "\t+l landscape (instead of portrait) orientation" + print "\t+mw dimension set margin width" + print "\t+p dimension set font pointsize" + print "\t+paper form set paper size" + print "\t+r angle set text rotation angle in degrees (only multiples of 90)" + print "\t+s factor set poster scale factor" + print "\t+table {8/o | 8/h | 16/o | 16/h} show font character table" + print "\t+version display program version and quit" + print "\t+w dimension set poster width" + print "\t+x dimension set x offset" + print "\t+y dimension set y offset" + print "\t? display this message and quit" + print "\t++ no more options: remaining words are for poster text" + print "" + print "Any command-line arguments that are not recognized as options will be" + print "typeset on the poster, one argument per line. If no poster text words" + print "are supplied on the command line, then poster lines are read from" + print "standard input." + print "" + print "Color names may be any named X Window System color, or red/green/blue" + print "values in 0..1 separated by characters other than digits or period." + print "E.g. 0/1/0 is green, and 0.5:0.5:0.5 is 50% grey." + print "" + print "Dimensions consist of a (possibly signed) number followed by a TeX" + print "dimension unit: bp (big points), cc (ciceros), cm (centimeters), dd" + print "(didot points), in (inches), mm (millimeters), pc (picas), pt (points)," + print "or sp (scaled points). E.g. 72bp, 2.54cm, 67.542dd, 1in, 25.4mm," + print "6.023pc, 72.27pt, and 4736286.72sp all specify a dimension of one inch." + print "" + print "Paper names may be either standard ones like A, A4, Foolscap, etc., or" + print "width and height dimensions separated by an x, so that 210mmx297mm and" + print "A4 are equivalent, and 8.5inx11in and A are too." + + exit (0) +} + +function version() +{ + print "psposter", VERSION "\n" + url() + exit (0) +} + + +function warning(message) +{ + print message >"/dev/tty" +} diff --git a/fonts/utilities/psposter/psposter.man b/fonts/utilities/psposter/psposter.man new file mode 100644 index 0000000000..55b08379a4 --- /dev/null +++ b/fonts/utilities/psposter/psposter.man @@ -0,0 +1,719 @@ +.\" ==================================================================== +.\" @Troff-man-file{ +.\" author = "Nelson H. F. Beebe", +.\" version = "0.08", +.\" date = "16 January 1995", +.\" time = "14:33:47 MST", +.\" filename = "psposter.man", +.\" address = "Center for Scientific Computing +.\" Department of Mathematics +.\" University of Utah +.\" Salt Lake City, UT 84112 +.\" USA", +.\" telephone = "+1 801 581 5254", +.\" FAX = "+1 801 581 4148", +.\" checksum = "30262 719 2765 18363", +.\" email = "beebe@math.utah.edu (Internet)", +.\" codetable = "ISO/ASCII", +.\" keywords = "PostScript, poster", +.\" supported = "yes", +.\" docstring = "This file contains the UNIX manual pages +.\" for the psposter utility, a program for +.\" creating simple one-page posters in +.\" PostScript. +.\" +.\" The checksum field above contains a CRC-16 +.\" checksum as the first value, followed by the +.\" equivalent of the standard UNIX wc (word +.\" count) utility output of lines, words, and +.\" characters. This is produced by Robert +.\" Solovay's checksum utility.", +.\" } +.\" ==================================================================== +.if t .ds Ps P\s-2OST\s+2S\s-2CRIPT\s+2 +.if n .ds Ps PostScript +.if t .ds Te T\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X +.if n .ds Te TeX +.TH PSPOSTER 1 "16 January 1995" "Version 0.08" +psposter \- create simple one-page colored posters in PostScript +.\"====================================================================== +.SH SYNOPSIS +.B psposter +[ +.B +author +] +[ +.BI +bd " color" +] +[ +.BI +bg " color" +] +.if n .ti +9n +[ +.BI +bs " factor" +] +[ +.BI +bw " dimension" +] +[ +.BI +c " nnn" +] +.if t .ti +.5i +.if n .ti +9n +[ +.B +copyright +] +[ +.B +d +] +[ +.BI +fg " color" +] +.if n .ti +9n +[ +.BI +fn " fontname" +] +[ +.BI +h " dimension" +] +[ +.B +help +] +[ +.B +l +] +.if t .ti +.5i +.if n .ti +9n +[ +.BI +mw " dimension" +] +[ +.BI +p " dimension" +] +[ +.BI +paper " form" +] +.if n .ti +9n +[ +.BI +r " angle" +] +[ +.BI +s " factor" +] +.if n .ti +9n +.if t .ti +.5i +[ +.BI +table " { 8/o | 8/h | 16/o | 16/h }" +] +[ +.B +version +] +.if n .ti +9n +[ +.BI +w " dimension" +] +[ +.BI +x " dimension" +] +.if t .ti +.5i +[ +.BI +y " dimension" +] +.if n .ti +9n +[ +.B '?' +] +[ +.B ++ +] +.if t .ti +.5i +.if n .ti +9n +[ word(s) or +.RI < infile +] +.RI > \*(Ps\&-file +.\"====================================================================== +.SH DESCRIPTION +.B psposter +creates an Encapsulated \*(Ps\& file containing a +one-page poster. It may be included as a figure +in any document processing system that supports +inclusion of \*(Ps\& figures. +.PP +The poster text is typeset inside a colored box of +specified width and height, with an empty +surrounding margin, and a colored border. +.PP +The text area has a width of +.IR "(boxwidth - 2*marginwidth - 2*borderwidth)" , +and a height of +.IR "(boxheight - 2*marginwidth - 2*borderwidth)" . +.PP +When landscape orientation is chosen, poster text +will be rotated 90 degrees counterclockwise, so +that it runs from bottom to top. The width and +height of the poster box are +.I not +affected by this. +.\"====================================================================== +.SH OPTIONS +Most options require values, which are supplied as +the +.I next +command-line argument. +.PP +The current implementation (in awk) requires +options to begin with a `+', rather than the +conventional `\-', so as to distinguish them from +.BR nawk (1) +options. +.PP +Color values can be specified as any named X +Window System color, or red/green/blue values in +0\|.\|.\|1 separated by characters other than digits +or period. E.g. 0/1/0 is green, and 0.5:0.5:0.5 +is 50% gray. Letter case in color names is +.I not +significant. +.PP +Dimensions consist of a (possibly signed) number +followed by a \*(Te\& dimension unit: +.IR bp " (big points)," +.IR cc " (ciceros)," +.IR cm " (centimeters)," +.IR dd " (didot points)," +.IR in " (inches)," +.IR mm " (millimeters)," +.IR pc " (picas), " +.IR pt " (points)," +or +.IR sp " (scaled points)." +E.g. 72bp, 2.54cm, 67.542dd, 1in, 25.4mm, +6.023pc, 72.27pt, and 4\|736\|286.72sp all specify +a dimension of one inch. \*(Ps\& uses +.I "big points" +as its default units, and its documentation refers +to them as points. +.PP +Poster text is given either as separate arguments +on the command line, or as separate lines of a +file supplied on standard input. Multiple-word +arguments must be quoted or their spaces escaped +to be properly recognized. +.\"----------------------------------------------- +.TP \w'xxmwxdimension'u+3n +.B +author +Display an author credit on standard output and +quit. Sometimes an executable program is +separated from its documentation and source code; +this option provides a way to recover from that. +.\"----------------------------------------------- +.TP +.BI +bd " color" +Define border color. +.I "Default: 0.5:0.5:0.5 (50% gray)." +.\"----------------------------------------------- +.TP +.BI +bg " color" +Define background color. +.I "Default: 0.9:0.9:0.9 (10% gray)." +.\"----------------------------------------------- +.TP +.BI +bs " factor" +Set the baseline skip to factor times font +pointsize. This value defines the interline +spacing, or +.IR leading , +as it is called in typography. +.I "Default: 1.2." +.\"----------------------------------------------- +.TP +.BI +bw " dimension" +Define border width. +.I "Default: 10bp." +.\"----------------------------------------------- +.TP +.BI +c " nnn" +Define number of copies to print. +.I "Default: 1." +.\"----------------------------------------------- +.TP +.B +copyright +Display copyright information on standard output and +quit. +.\"----------------------------------------------- +.TP +.B +d +Display the font size on a second output page. +This option is useful for making a series of +posters with the same font size: specify +.B +d +for the poster with the longest text lines, then +use the output font size in an explicit +.B +p +option for all of the other posters. This +round-about way is required because automatic text +sizing happens inside the \*(Ps\& output device, +rather than in +.BR psposter . +.\"----------------------------------------------- +.TP +.BI +fg " color" +Define foreground color. +.I "Default: 0:0:0 (black)." +.\"----------------------------------------------- +.TP +.BI +fn " fontname" +Select the \*(Ps\& font. The name can be either +the long name of a Type 1 \*(Ps\& font, such as +.IR NewCenturySchlbk-BoldItalic , +or the basename of a \*(Ps\& font in ASCII +.RI ( .pfa ), +or binary +.RI ( .pfb ) +format, such as +.IR NewCenBI . +.B psposter +will also handle compressed variants of these +files from +.BR compress (1) +and +.BR gzip (1) +.RI ( .pfa.Z , +.IR .pfb.Z , +.IR .pfa.gz , +and +.IR .pfb.gz ), +decompressing them on-the-fly. +.I "Default: Times-Bold." +.IP +Most \*(Ps\& printers contain a number of resident +fonts, but only a small number of downloadable +Type 1 \*(Ps\& fonts are available without a font +license, notably Adobe Courier and Utopia, +Bitstream Charter and Courier, and URW Antiqua, +Grotesk, and Nimbus. These three vendors have +generously made these fonts available for free +distribution, but retain the copyrights. More +than 2300 fonts are listed in the +.I afmfonts.map +file (see the +.B "\s-2ENVIRONMENT VARIABLES\s+2" +section below), but only a very small number are +likely to be available at a given site. +.IP +On a UNIX system, you can list the downloadable +fonts available at your site by +.IR "grep /FontName /usr/local/lib/afm/*.pfa" , +assuming that +.I /usr/local/lib/afm +is where they reside. +.IP +For a list of printer resident fonts, consult your +printer documentation, or print the small \*(Ps\& +file, +.IR fontlist.ps , +that is distributed with +.BR psposter . +For convenience, that file is reproduced here; you +can adjust PointSize, ColumnWidth, and the default +display font (Courier) if you wish: +.RS +.nf +%! +% fontlist.ps +% Send this file to a PostScript device to list +% the names of all of the resident fonts. +% [13-Dec-1994] +/inch { 72 mul } def +/PointSize 10 def +/ColumnWidth 3 inch def +/Courier findfont PointSize scalefont setfont +/n 0 def +/newcolumn +{ + /x x ColumnWidth add def + x y moveto + 8 inch x gt { showpage newpage } if +} def +/newpage +{ + /x 1 inch def + /y 10 inch def + x y moveto +} def +/nstr 10 string def +/scratch 256 string def +newpage +(*) +{ + /n n 1 add def + gsave + n nstr cvs show + (: ) show + show + grestore + 0 PointSize -1.2 mul rmoveto + currentpoint exch pop 1 inch lt + { + newcolumn + } if +} +scratch /Font resourceforall +showpage +.fi +.RE +.\"----------------------------------------------- +.TP +.BI +h " dimension" +Define poster height. +.I "Default: paper height." +.\"----------------------------------------------- +.TP +.B +help +Display a help message on standard output and +quit. +.\"----------------------------------------------- +.TP +.BI +l +Use landscape (instead of portrait) orientation +for text. Text is rotated 90 degrees +counterclockwise, so that it runs from bottom to +top. This is a shorthand for the rotation option +.B "+r 90" +(see below). Only text, +.I not +the poster box, is affected by this option. +.\"----------------------------------------------- +.TP +.BI +mw " dimension" +Define margin width. Most \*(Ps\& hardcopy output +devices are incapable of imaging closer than about +5mm to the edge of the display surface, so a +non-zero margin width is usually desirable. +.I "Default: 1in (or 25mm for ISO paper sizes)." +.\"----------------------------------------------- +.TP +.BI +p " dimension" +Set font pointsize. Normally, the size is chosen +to make the poster text just fill the text frame, +either horizontally or vertically. You can use +this option to force a particular font size, +e.g. to produce a series of posters with different +text, all at the same size. +.IP +Any poster text outside the text frame is clipped, +and not displayed. +.I "Default: automatically set." +.\"----------------------------------------------- +.TP +.BI +paper " form" +Set paper size. See +.BR lptops (1) +for a list of supported sizes. +.IP +In addition to the standard sizes, any particular +size can be requested by giving it in the form +.IR widthxheight , +e.g. 8.5inx11in or 210mmx297mm. +.IP +.I "Default: installation dependent: usually A (in" +.I "the USA) and A4 (elsewhere)." +.\"----------------------------------------------- +.TP +.BI +r " angle" +Set the text rotation angle, which must be a +multiple of 90 degrees. It is measured +counterclockwise from the horizontal axis. The +.B +l +landscape option is equivalent to +.BR "+r 90" . +.I "Default: 0." +.\"----------------------------------------------- +.TP +.BI +s " factor" +Define poster scale factor. This option can be +used to resize a poster without having to change +any other command-line options. +.I "Default: 1." +.\"----------------------------------------------- +.TP +.BI +table " { 8/o | 8/h | 16/o | 16/h }" +When this option is given, command-line poster +words are ignored, and standard input is not read. +Instead, +.B psposter +makes a table of all of the characters in the +poster font. The option value defines the number +of columns (8 or 16) and the label number base +(octal or hexadecimal). The delimiter character +\&`/' can be any punctuation character. With +16-column tables, you probably also want to +specify the landscape option +.BR +l . +.IP +The table title includes the font size and name. +The title, and the row/column labels, are always +set in black Times-BoldItalic text. +.IP +Unless an explicit +.BI +p " dimension" +option is provided, the font size is automatically +adjusted to an integer value that maximizes table +size. +.IP +.I "Default: no font table." +.\"----------------------------------------------- +.TP +.BI +version +Display the program version number on standard +output and quit. +.\"----------------------------------------------- +.TP +.BI +w " dimension" +Define poster width. +.I "Default: paper width." +.\"----------------------------------------------- +.TP +.BI +x " dimension" +Define horizontal offset. A positive value moves +the poster right on the output surface, and is +.I unaffected +by any poster scale factor, or by the choice of +rotated text. +.I "Default: 0bp." +.\"----------------------------------------------- +.TP +.BI +y " dimension" +Define vertical offset. A positive value moves +the poster up on the output surface, and is +.I unaffected +by any poster scale factor, or by the choice of +rotated text. +.I "Default: 0bp." +.\"----------------------------------------------- +.TP +.B ? +Display a help message and quit. +.\"----------------------------------------------- +.TP +.B ++ +No more options: remaining words are for poster +text. This option is only needed if any of the +poster words begin with a `+'. +.\"====================================================================== +.SH "EXAMPLES" +Print a full-size poster with an announcement: +.RS +.nf +.I "psposter Chemistry 101 Examination 1:00pm--3:00pm | lpr" +.fi +.RE +.PP +Make a door sign in landscape mode: +.RS +.nf +.I "psposter +l +w 10cm +h 25cm 'Prof. Jane Smith' >doorsign.ps" +.fi +.RE +.PP +Print the same sign, in color: +.RS +.nf +.I "psposter +l +w 10cm +h 25cm +bd blue +bg skyblue \e" +.I " +fg navyblue 'Prof. Jane Smith' | lpr" +.fi +If a \*(Ps\& printer is incapable of printing in +color, it will simulate color by shades of gray. +.RE +.PP +Make a sale sign: +.RS +.nf +.I "psposter +bg yellow <<END-OF-DATA >yardsale.ps" +.I "Terrific" +.I "Yard Sale" +.I "Today" +.I "123 Elm St." +.I "END-OF-DATA" +.fi +.RE +.PP +Make a seminar announcement: +.RS +.nf +.I "psposter +bg orange <<EOF >seminar.ps +.I "Biology Colloquium" +.I "Friday 23-Sep-1994" +.I "3pm--4pm" +.I "LSB 234" +.I "" +.I "Dr. Judith Brown" +.I "Sex Life of Gnats" +.I "EOF" +.fi +.RE +.PP +Make a Danish road sign (the octal escape sequences +select the letters AE and o-slash; see Appendix E +of the +.IR "PostScript Language Reference Manual" , +Addison-Wesley, 1990, ISBN 0-201-18127-4): +.RS +.nf +.I "psposter +bg yellow +fg black '\e341resk\e371bing' 5km >vejskilt.ps" +.fi +.RE +.PP +Make another road sign in a downloaded font, supplying one leading and +trailing blank on each line: +.RS +.nf +.I "psposter +bg green +fg white +fn URWGroteskT-Bold +r -90 \e +.I " ' Green River ' ' 106 miles ' >roadsign.ps" +.fi +.RE +(The stretch of highway I-70 in Utah from Salina +to Green River is claimed to be the longest in the +US Interstate Highway System without services.) +.PP +Make a poster showing the dingbat font layout: +.RS +.nf +.I "psposter +fn ZapfDingbats +table 8/o >dingbats.ps" +.\"====================================================================== +.SH "ENVIRONMENT VARIABLES" +.TP \w'AFMPATH'u+2n +AFMPATH +Search path for \*(Ps\& font mapping file, +.RI ( afmfonts.map ), +and for downloadable fonts in +\*(Ps ASCII +.RI ( .pfa ) +and binary +.RI ( .pfb ) +formats. The font mapping file connects long +\*(Ps\& font names with (usually shorter) file +names on the host computer. +.IP +On UNIX, the search path is a colon-separated list +of directories. On other operating systems, the +search path follows the conventions of those +systems. +.TP +RGBPATH +Search path for the X Window System color +definition file, +.IR rgb.txt . +.\"====================================================================== +.SH "FILES" +.TP \w'\fIafmfonts.map\fP'u+3n +.I afmfonts.map +\*(Ps\& font mapping file. It is distributed, +together with some freely-distributable Type 1 +fonts in +.I .pfa +and +.I .pfb +formats, and numerous Adobe Font Metric +.RI ( .afm ) +files, with +.BR lptops (1). +.B psposter +looks for this file, and downloadable fonts, in the +.I AFMPATH +search path. +.IP +Typical lines in +.I afmfonts.map +look like this: +.RS +.nf +.I "% This line is a comment." +.I "% This font name is too long for some" +.I "% operating systems, so we store it under a" +.I "% shorter name. The font files will be" +.I "% HelvNaBI.afm, containing the character" +.I "% metrics (assorted dimensions), and" +.I "% HelvNaBI.pfa (ASCII) or HelvNaBI.pfb" +.I "% (binary), containing encrypted \*(Ps\&" +.I "% definitions of the character shapes." +.I "Helvetica-Narrow-BoldOblique = HelvNaBI" +.fi +.RE +.TP +.I rgb.txt +Color mapping file distributed with the X Window +System. +.B psposter +looks for this file in the +.I RGBPATH +search path. +.IP +Typical lines in +.I rgb.txt +look like this: +.RS +.nf +.I "000 000 000 black" +.I "000 000 255 blue" +.I "000 255 000 green" +.I "000 255 255 cyan" +.I "255 000 000 red" +.I "255 000 255 magenta" +.I "255 255 000 yellow" +.I "255 255 255 white" +.I "250 235 215 antique white" +.I "250 235 215 AntiqueWhite" +.fi +.RE +.IP +There is no comment syntax. +.IP +The first three numbers define red, green, and +blue intensities on a scale of 0\|.\|.\|255, and +the remaining text on each line is the color name, +which, in the case of compound color names, appears +in two forms, one in lower case with blank +separators, and one without blanks, in mixed case. +.\"====================================================================== +.SH "SEE ALSO" +.BR compress (1), +.BR dxpsview (1), +.BR ghostview (1), +.BR gs (1), +.BR gzip (1), +.BR lptops (1), +.BR pageview (1), +.BR rgb (1), +.BR tex (1). +.\"====================================================================== +.SH AUTHOR +.nf +Nelson H. F. Beebe, Ph.D. +Center for Scientific Computing +Department of Mathematics +University of Utah +Salt Lake City, UT 84112 +Tel: +1 801 581 5254 +FAX: +1 801 581 4148 +Email: <beebe@math.utah.edu> +.fi +.\"====================================================================== +.SH COPYRIGHT +This program is in the +.BR "public domain" . +.\"====================================================================== +.SH AVAILABILITY +Internet source distribution of +.B psposter +is available through the World-Wide Web Uniform +Resource Locator addresses +.RS +.nf +.I "ftp://ftp.math.utah.edu/pub/misc/psposter-0.08.tar.z" +.I "ftp://ftp.math.utah.edu/pub/misc/psposter-0.08.zip" +.I "ftp://ftp.math.utah.edu/pub/misc/psposter-0.08.zoo" +.fi +.RE +.\"==============================[The End]============================== diff --git a/fonts/utilities/psposter/psposter.ps b/fonts/utilities/psposter/psposter.ps new file mode 100644 index 0000000000..0064930009 --- /dev/null +++ b/fonts/utilities/psposter/psposter.ps @@ -0,0 +1,606 @@ +%!PS-Adobe-3.0 +%%Creator: groff version 1.08 +%%DocumentNeededResources: font Times-Roman +%%+ font Times-Bold +%%+ font Times-Italic +%%DocumentSuppliedResources: procset grops 1.08 0 +%%Pages: 6 +%%PageOrder: Ascend +%%Orientation: Portrait +%%EndComments +%%BeginProlog +%%BeginResource: procset grops 1.08 0 +/setpacking where{ +pop +currentpacking +true setpacking +}if +/grops 120 dict dup begin +/SC 32 def +/A/show load def +/B{0 SC 3 -1 roll widthshow}bind def +/C{0 exch ashow}bind def +/D{0 exch 0 SC 5 2 roll awidthshow}bind def +/E{0 rmoveto show}bind def +/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def +/G{0 rmoveto 0 exch ashow}bind def +/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/I{0 exch rmoveto show}bind def +/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def +/K{0 exch rmoveto 0 exch ashow}bind def +/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/M{rmoveto show}bind def +/N{rmoveto 0 SC 3 -1 roll widthshow}bind def +/O{rmoveto 0 exch ashow}bind def +/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/Q{moveto show}bind def +/R{moveto 0 SC 3 -1 roll widthshow}bind def +/S{moveto 0 exch ashow}bind def +/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def +/SF{ +findfont exch +[exch dup 0 exch 0 exch neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/MF{ +findfont +[5 2 roll +0 3 1 roll +neg 0 0]makefont +dup setfont +[exch/setfont cvx]cvx bind def +}bind def +/level0 0 def +/RES 0 def +/PL 0 def +/LS 0 def +/PLG{ +gsave newpath clippath pathbbox grestore +exch pop add exch pop +}bind def +/BP{ +/level0 save def +1 setlinecap +1 setlinejoin +72 RES div dup scale +LS{ +90 rotate +}{ +0 PL translate +}ifelse +1 -1 scale +}bind def +/EP{ +level0 restore +showpage +}bind def +/DA{ +newpath arcn stroke +}bind def +/SN{ +transform +.25 sub exch .25 sub exch +round .25 add exch round .25 add exch +itransform +}bind def +/DL{ +SN +moveto +SN +lineto stroke +}bind def +/DC{ +newpath 0 360 arc closepath +}bind def +/TM matrix def +/DE{ +TM currentmatrix pop +translate scale newpath 0 0 .5 0 360 arc closepath +TM setmatrix +}bind def +/RC/rcurveto load def +/RL/rlineto load def +/ST/stroke load def +/MT/moveto load def +/CL/closepath load def +/FL{ +currentgray exch setgray fill setgray +}bind def +/BL/fill load def +/LW/setlinewidth load def +/RE{ +findfont +dup maxlength 1 index/FontName known not{1 add}if dict begin +{ +1 index/FID ne{def}{pop pop}ifelse +}forall +/Encoding exch def +dup/FontName exch def +currentdict end definefont pop +}bind def +/DEFS 0 def +/EBEGIN{ +moveto +DEFS begin +}bind def +/EEND/end load def +/CNT 0 def +/level1 0 def +/PBEGIN{ +/level1 save def +translate +div 3 1 roll div exch scale +neg exch neg exch translate +0 setgray +0 setlinecap +1 setlinewidth +0 setlinejoin +10 setmiterlimit +[]0 setdash +/setstrokeadjust where{ +pop +false setstrokeadjust +}if +/setoverprint where{ +pop +false setoverprint +}if +newpath +/CNT countdictstack def +userdict begin +/showpage{}def +}bind def +/PEND{ +clear +countdictstack CNT sub{end}repeat +level1 restore +}bind def +end def +/setpacking where{ +pop +setpacking +}if +%%EndResource +%%IncludeResource: font Times-Roman +%%IncludeResource: font Times-Bold +%%IncludeResource: font Times-Italic +grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL +792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron/scaron/zcaron +/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space +/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft +/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four +/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C +/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash +/bracketright/circumflex/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q +/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase +/guillemotleft/guillemotright/bullet/florin/fraction/perthousand/dagger +/daggerdbl/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut +/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash +/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar +/section/dieresis/copyright/ordfeminine/guilsinglleft/logicalnot/minus +/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu +/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guilsinglright +/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde +/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute +/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis +/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute +/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve +/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex +/udieresis/yacute/thorn/ydieresis]def/Times-Italic@0 ENC0/Times-Italic RE +/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE +%%EndProlog +%%Page: 1 1 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 345.48(PSPOSTER\(1\) PSPOSTER\(1\))72 48 R +(psposter \255 create simple one-page colored posters in PostScript)72 84 Q/F1 +9/Times-Bold@0 SF(SYNOPSIS)72 100.8 Q/F2 10/Times-Bold@0 SF(psposter)108 112.8 +Q F0([)2.5 E F2(+author)2.5 E F0 2.5(][)2.5 G F2(+bd)A/F3 10/Times-Italic@0 SF +(color)2.5 E F0 2.5(][)2.5 G F2(+bg)A F3(color)2.5 E F0 2.5(][)2.5 G F2(+bs)A +F3(factor)2.5 E F0 2.5(][)2.5 G F2(+bw)A F3(dimension)2.5 E F0 2.5(][)2.5 G F2 +(+c)A F3(nnn)2.5 E F0(])2.5 E([)144 124.8 Q F2(+copyright)2.5 E F0 2.5(][)2.5 G +F2(+d)A F0 2.5(][)2.5 G F2(+fg)A F3(color)2.5 E F0 2.5(][)2.5 G F2(+fn)A F3 +(fontname)2.5 E F0 2.5(][)2.5 G F2(+h)A F3(dimension)2.5 E F0 2.5(][)2.5 G F2 +(+help)A F0 2.5(][)2.5 G F2(+l)A F0(])2.5 E([)144 136.8 Q F2(+mw)2.5 E F3 +(dimension)2.5 E F0 2.5(][)2.5 G F2(+p)A F3(dimension)2.5 E F0 2.5(][)2.5 G F2 +(+paper)A F3(form)2.5 E F0 2.5(][)2.5 G F2(+r)A F3(angle)2.5 E F0 2.5(][)2.5 G +F2(+s)A F3(factor)2.5 E F0(])2.5 E([)144 148.8 Q F2(+table)2.5 E F3 2.5({8)2.5 +G(/o | 8/h | 16/o | 16/h })190.64 148.8 Q F0 2.5(][)2.5 G F2(+v)A(ersion)-.1 E +F0 2.5(][)2.5 G F2(+w)A F3(dimension)2.5 E F0 2.5(][)2.5 G F2(+x)A F3 +(dimension)2.5 E F0(])2.5 E([)144 160.8 Q F2(+y)2.5 E F3(dimension)2.5 E F0 2.5 +(][)2.5 G F2('?')A F0 2.5(][)5 G F2(++)A F0(])2.5 E 2.5([w)144 172.8 S +(ord\(s\) or <)156.95 172.8 Q F3(in\214le).01 E F0 2.5(]>)2.5 G F3(P)234.28 +172.8 Q/F4 8/Times-Italic@0 SF(OST)A F3(S)A F4(CRIPT)A F3(-\214le)A F1 +(DESCRIPTION)72 189.6 Q F2(psposter)108 201.6 Q F0 .934 +(creates an Encapsulated P)3.434 F/F5 8/Times-Roman@0 SF(OST)A F0(S)A F5(CRIPT) +A F0 .934(\214le containing a one-page poster)3.434 F 5.934(.I)-.55 G 3.434(tm) +446.184 201.6 S .933(ay be included as a)460.178 201.6 R(\214gure in an)108 +213.6 Q 2.5(yd)-.15 G(ocument processing system that supports inclusion of P) +165.9 213.6 Q F5(OST)A F0(S)A F5(CRIPT)A F0(\214gures.)2.5 E 1.011 +(The poster te)108 230.4 R 1.011(xt is typeset inside a colored box of speci\ +\214ed width and height, with an empty surrounding)-.15 F(mar)108 242.4 Q +(gin, and a colored border)-.18 E(.)-.55 E 1.346(The te)108 259.2 R 1.346 +(xt area has a width of)-.15 F F3 1.346(\(boxwidth - 2*mar)3.846 F 1.346 +(ginwidth - 2*bor)-.37 F(derwidth\))-.37 E F0 3.846(,a).06 G 1.346 +(nd a height of)426.902 259.2 R F3 1.345(\(boxheight -)3.845 F(2*mar)108 271.2 +Q(ginwidth - 2*bor)-.37 E(derwidth\))-.37 E F0(.).06 E 1.102 +(When landscape orientation is chosen, poster te)108 288 R 1.103 +(xt will be rotated 90 de)-.15 F 1.103(grees counterclockwise, so that it)-.15 +F(runs from bottom to top.)108 300 Q +(The width and height of the poster box are)5 E F3(not)2.5 E F0(af)2.5 E +(fected by this.)-.25 E F1(OPTIONS)72 316.8 Q F0(Most options require v)108 +328.8 Q(alues, which are supplied as the)-.25 E F3(ne)2.5 E(xt)-.2 E F0 +(command-line ar)2.5 E(gument.)-.18 E .45(The current implementation \(in a)108 +345.6 R .45(wk\) requires options to be)-.15 F .45 +(gin with a `+', rather than the con)-.15 F -.15(ve)-.4 G .45(ntional `\255',) +.15 F(so as to distinguish them from)108 357.6 Q F2(nawk)2.5 E F0 +(\(1\) options.)A .254(Color v)108 374.4 R .255(alues can be speci\214ed as an) +-.25 F 2.755(yn)-.15 G .255(amed X W)261.852 374.4 R(indo)-.4 E 2.755(wS)-.25 G +.255(ystem color)338.347 374.4 R 2.755(,o)-.4 G 2.755(rr)395.397 374.4 S .255 +(ed/green/blue v)404.812 374.4 R .255(alues in 0)-.25 F -3.077 1.666(..1 s) +1.666 H(ep-)-1.666 E 1.124(arated by characters other than digits or period.) +108 386.4 R 1.124(E.g. 0/1/0 is green, and 0.5:0.5:0.5 is 50% gray)6.124 F +6.124(.L)-.65 G(etter)522.23 386.4 Q(case in color names is)108 398.4 Q F3(not) +2.5 E F0(signi\214cant.)2.5 E .935 +(Dimensions consist of a \(possibly signed\) number follo)108 415.2 R .935 +(wed by a T)-.25 F(E)-1.667 2.4 M 3.436(Xd)-1.25 -2.4 O .936(imension unit:) +402.04 415.2 R F3(bp)3.436 E F0 .936(\(big points\),)3.626 F F3(cc)3.436 E F0 +(\(ciceros\),)108 427.2 Q F3(cm)3.413 E F0(\(centimeters\),)3.733 E F3(dd)3.413 +E F0 .913(\(didot points\),)4.183 F F3(in)3.413 E F0(\(inches\),)3.653 E F3(mm) +3.413 E F0(\(millimeters\),)3.733 E F3(pc)3.413 E F0(\(picas\),)3.722 E F3(pt) +3.412 E F0 .912(\(points\), or)4.092 F F3(sp)3.412 E F0 .326 +(\(scaled points\).)108 439.2 R .327 +(E.g. 72bp, 2.54cm, 67.542dd, 1in, 25.4mm, 6.023pc, 72.27pt, and 4)5.326 F +-.834(736 286.72sp)1.666 F .327(all spec-)2.827 F .01 +(ify a dimension of one inch.)108 451.2 R(P)5.009 E F5(OST)A F0(S)A F5(CRIPT)A +F0(uses)2.509 E F3 .009(big points)2.509 F F0 .009(as its def)2.509 F .009 +(ault units, and its documentation refers to)-.1 F(them as points.)108 463.2 Q +.205(Poster te)108 480 R .205(xt is gi)-.15 F -.15(ve)-.25 G 2.705(ne).15 G +.206(ither as separate ar)191.6 480 R .206 +(guments on the command line, or as separate lines of a \214le supplied)-.18 F +.546(on standard input.)108 492 R(Multiple-w)5.546 E .546(ord ar)-.1 F .546 +(guments must be quoted or their spaces escaped to be properly recog-)-.18 F +(nized.)108 504 Q F2(+author)108 520.8 Q F0 .751 +(Display an author credit on standard output and quit.)194.67 520.8 R .751 +(Sometimes an e)5.751 F -.15(xe)-.15 G .751(cutable pro-).15 F .155 +(gram is separated from its documentation and source code; this option pro) +194.67 532.8 R .155(vides a w)-.15 F(ay)-.1 E(to reco)194.67 544.8 Q -.15(ve) +-.15 G 2.5(rf).15 G(rom that.)240.46 544.8 Q F2(+bd)108 561.6 Q F3(color)2.5 E +F0(De\214ne border color)194.67 561.6 Q(.)-.55 E F3 +(Default: 0.5:0.5:0.5 \(50% gr)5 E(ay\).)-.15 E F2(+bg)108 578.4 Q F3(color)2.5 +E F0(De\214ne background color)194.67 578.4 Q(.)-.55 E F3 +(Default: 0.9:0.9:0.9 \(10% gr)5 E(ay\).)-.15 E F2(+bs)108 595.2 Q F3(factor) +2.5 E F0 1.187(Set the baseline skip to f)194.67 595.2 R 1.187 +(actor times font pointsize.)-.1 F 1.187(This v)6.187 F 1.187 +(alue de\214nes the interline)-.25 F(spacing, or)194.67 607.2 Q F3(leading)2.5 +E F0 2.5(,a).22 G 2.5(si)280.71 607.2 S 2.5(ti)289.88 607.2 S 2.5(sc)297.94 +607.2 S(alled in typograph)308.77 607.2 Q -.65(y.)-.05 G F3(Default: 1.2.)5.65 +E F2(+bw)108 624 Q F3(dimension)2.5 E F0(De\214ne border width.)194.67 624 Q F3 +(Default: 10bp.)5 E F2(+c)108 640.8 Q F3(nnn)2.5 E F0 +(De\214ne number of copies to print.)194.67 640.8 Q F3(Default: 1.)5 E F2 +(+copyright)108 657.6 Q F0(Display cop)194.67 657.6 Q +(yright information on standard output and quit.)-.1 E F2(+d)108 674.4 Q F0 +1.376(Display the font size on a second output page.)194.67 674.4 R 1.376 +(This option is useful for making a)6.376 F 1.07 +(series of posters with the same font size: specify)194.67 686.4 R F2(+d)3.571 +E F0 1.071(for the poster with the longest)3.571 F(te)194.67 698.4 Q 1.174 +(xt lines, then use the output font size in an e)-.15 F(xplicit)-.15 E F2(+p) +3.673 E F0 1.173(option for all of the other)3.673 F 4.619(posters. This)194.67 +710.4 R 2.119(round-about w)4.619 F 2.119(ay is required because automatic te) +-.1 F 2.119(xt sizing happens)-.15 F(inside the P)194.67 722.4 Q F5(OST)A F0(S) +A F5(CRIPT)A F0(output de)2.5 E(vice, rather than in)-.25 E F2(psposter)2.5 E +F0(.)A -1.11(Ve)72 768 S(rsion 0.08)1.11 E(16 January 1995)272.95 768 Q(1)535 +768 Q EP +%%Page: 2 2 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 345.48(PSPOSTER\(1\) PSPOSTER\(1\))72 48 R/F1 10 +/Times-Bold@0 SF(+fg)108 84 Q/F2 10/Times-Italic@0 SF(color)2.5 E F0 +(De\214ne fore)194.67 84 Q(ground color)-.15 E(.)-.55 E F2 +(Default: 0:0:0 \(blac)5 E(k\).)-.2 E F1(+fn)108 100.8 Q F2(fontname)2.5 E F0 +1.912(Select the P)194.67 100.8 R/F3 8/Times-Roman@0 SF(OST)A F0(S)A F3(CRIPT)A +F0 4.412(font. The)4.412 F 1.912(name can be either the long name of a T)4.412 +F 1.911(ype 1)-.8 F(P)194.67 112.8 Q F3(OST)A F0(S)A F3(CRIPT)A F0 3.711 +(font, such as)6.211 F F2(Ne)6.212 E(wCenturySc)-.15 E(hlbk-BoldItalic)-.15 E +F0 6.212(,o).31 G 6.212(rt)447.402 112.8 S 3.712(he basename of a)459.724 112.8 +R(P)194.67 124.8 Q F3(OST)A F0(S)A F3(CRIPT)A F0 3.201(font in ASCII \()5.701 F +F2(.pfa).23 E F0 3.201(\), or binary \().26 F F2(.pfb).23 E F0 5.7(\)f).23 G +3.2(ormat, such as)423.72 124.8 R F2(Ne)5.7 E(wCenBI)-.15 E F0(.)1.01 E F1 +(psposter)194.67 136.8 Q F0 1.261(will also handle compressed v)3.76 F 1.261 +(ariants of these \214les from)-.25 F F1(compr)3.761 E(ess)-.18 E F0 1.261 +(\(1\) and)B F1(gzip)194.67 148.8 Q F0 .324(\(1\) \()B F2(.pfa.Z).23 E F0(,)1 E +F2(.pfb)2.824 E(.Z)-.4 E F0(,)1 E F2(.pfa.gz)2.824 E F0 2.823(,a).41 G(nd) +326.265 148.8 Q F2(.pfb)2.823 E(.gz)-.4 E F0 .323 +(\), decompressing them on-the-\215y).41 F(.)-.65 E F2(Default:)5.323 E -.55 +(Ti)194.67 160.8 S(mes-Bold.).55 E F0 .639(Most P)194.67 177.6 R F3(OST)A F0(S) +A F3(CRIPT)A F0 .64(printers contain a number of resident fonts, b)3.139 F .64 +(ut only a small num-)-.2 F 1.291(ber of do)194.67 189.6 R 1.291(wnloadable T) +-.25 F 1.291(ype 1 P)-.8 F F3(OST)A F0(S)A F3(CRIPT)A F0 1.29(fonts are a)3.791 +F -.25(va)-.2 G 1.29(ilable without a font license,).25 F 1.105 +(notably Adobe Courier and Utopia, Bitstream Charter and Courier)194.67 201.6 R +3.606(,a)-.4 G 1.106(nd UR)478.898 201.6 R 3.606(WA)-.55 G(nti-)526.11 201.6 Q +1.439(qua, Grotesk, and Nimb)194.67 213.6 R 3.938(us. These)-.2 F 1.438 +(three v)3.938 F 1.438(endors ha)-.15 F 1.738 -.15(ve g)-.2 H 1.438 +(enerously made these fonts).15 F -.2(av)194.67 225.6 S 1.523 +(ailable for free distrib)-.05 F 1.523(ution, b)-.2 F 1.523(ut retain the cop) +-.2 F 4.023(yrights. More)-.1 F 1.524(than 2300 fonts are)4.024 F .303 +(listed in the)194.67 237.6 R F2(afmfonts.map)2.803 E F0 .303(\214le \(see the) +2.803 F/F4 8/Times-Bold@0 SF(ENVIR)2.803 E .303(ONMENT V)-.24 F(ARIABLES)-1.08 +E F0 .303(section belo)2.803 F .302(w\), b)-.25 F(ut)-.2 E(only a v)194.67 +249.6 Q(ery small number are lik)-.15 E(ely to be a)-.1 E -.25(va)-.2 G +(ilable at a gi).25 E -.15(ve)-.25 G 2.5(ns).15 G(ite.)444.36 249.6 Q .244 +(On a UNIX system, you can list the do)194.67 266.4 R .245(wnloadable fonts a) +-.25 F -.25(va)-.2 G .245(ilable at your site by).25 F F2(gr)2.745 E(ep)-.37 E +(/F)194.67 278.4 Q 2.599(ontName /usr/local/lib/afm/*.pfa)-1.05 F F0 5.099(,a) +.26 G 2.599(ssuming that)348.538 278.4 R F2(/usr/local/lib/afm)5.099 E F0 2.598 +(is where the)5.098 F(y)-.15 E(reside.)194.67 290.4 Q -.15(Fo)194.67 307.2 S +3.885(ral).15 G 1.385(ist of printer resident fonts, consult your printer docu\ +mentation, or print the)223.4 307.2 R .372(small P)194.67 319.2 R F3(OST)A F0 +(S)A F3(CRIPT)A F0(\214le,)2.872 E F2(fontlist.ps)2.872 E F0 2.872(,t).27 G +.372(hat is distrib)336.742 319.2 R .371(uted with)-.2 F F1(psposter)2.871 E F0 +5.371(.F)C .371(or con)476.869 319.2 R -.15(ve)-.4 G(nience,).15 E .72 +(that \214le is reproduced here; you can adjust PointSize, ColumnW)194.67 331.2 +R .72(idth, and the def)-.4 F(ault)-.1 E(display font \(Courier\) if you wish:) +194.67 343.2 Q(%!)194.67 355.2 Q 2.5(%f)194.67 367.2 S(ontlist.ps)208.83 367.2 +Q 2.5(%S)194.67 379.2 S(end this \214le to a PostScript de)211.06 379.2 Q +(vice to list)-.25 E 2.5(%t)194.67 391.2 S +(he names of all of the resident fonts.)208.28 391.2 Q 2.5(%[)194.67 403.2 S +(13-Dec-1994])208.83 403.2 Q(/inch { 72 mul } def)194.67 415.2 Q +(/PointSize 10 def)194.67 427.2 Q(/ColumnW)194.67 439.2 Q(idth 3 inch def)-.4 E +(/Courier \214ndfont PointSize scalefont setfont)194.67 451.2 Q(/n 0 def)194.67 +463.2 Q(/ne)194.67 475.2 Q(wcolumn)-.25 E({)194.67 487.2 Q(/x x ColumnW)204.67 +499.2 Q(idth add def)-.4 E 2.5(xym)204.67 511.2 S -.15(ove)227.45 511.2 S(to) +.15 E 2.5(8i)204.67 523.2 S(nch x gt { sho)214.95 523.2 Q(wpage ne)-.25 E +(wpage } if)-.25 E 2.5(}d)194.67 535.2 S(ef)206.97 535.2 Q(/ne)194.67 547.2 Q +(wpage)-.25 E({)194.67 559.2 Q(/x 1 inch def)204.67 571.2 Q(/y 10 inch def) +204.67 583.2 Q 2.5(xym)204.67 595.2 S -.15(ove)227.45 595.2 S(to).15 E 2.5(}d) +194.67 607.2 S(ef)206.97 607.2 Q(/nstr 10 string def)194.67 619.2 Q +(/scratch 256 string def)194.67 631.2 Q(ne)194.67 643.2 Q(wpage)-.25 E(\(*\)) +194.67 655.2 Q({)194.67 667.2 Q(/n n 1 add def)204.67 679.2 Q(gsa)204.67 691.2 +Q -.15(ve)-.2 G 2.5(nn)214.67 703.2 S(str cvs sho)227.17 703.2 Q(w)-.25 E +(\(: \) sho)214.67 715.2 Q(w)-.25 E(sho)214.67 727.2 Q(w)-.25 E -1.11(Ve)72 768 +S(rsion 0.08)1.11 E(16 January 1995)272.95 768 Q(2)535 768 Q EP +%%Page: 3 3 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 345.48(PSPOSTER\(1\) PSPOSTER\(1\))72 48 R(grestore) +204.67 84 Q 2.5(0P)204.67 96 S(ointSize -1.2 mul rmo)217.73 96 Q -.15(ve)-.15 G +(to).15 E(currentpoint e)204.67 108 Q(xch pop 1 inch lt)-.15 E({)204.67 120 Q +(ne)214.67 132 Q(wcolumn)-.25 E 2.5(}i)204.67 144 S(f)214.75 144 Q(})194.67 156 +Q(scratch /F)194.67 168 Q(ont resourceforall)-.15 E(sho)194.67 180 Q(wpage)-.25 +E/F1 10/Times-Bold@0 SF(+h)108 196.8 Q/F2 10/Times-Italic@0 SF(dimension)2.5 E +F0(De\214ne poster height.)194.67 196.8 Q F2(Default: paper height.)5 E F1 +(+help)108 213.6 Q F0(Display a help message on standard output and quit.) +194.67 213.6 Q F1(+l)108 230.4 Q F0 1.704 +(Use landscape \(instead of portrait\) orientation for te)194.67 230.4 R 4.203 +(xt. T)-.15 F -.15(ex)-.7 G 4.203(ti).15 G 4.203(sr)455.341 230.4 S 1.703 +(otated 90 de)466.764 230.4 R(grees)-.15 E .283 +(counterclockwise, so that it runs from bottom to top.)194.67 242.4 R .284 +(This is a shorthand for the rota-)5.283 F .002(tion option)194.67 254.4 R F1 +.002(+r 90)2.502 F F0 .002(\(see belo)2.502 F 2.502(w\). Only)-.25 F(te)2.502 E +(xt,)-.15 E F2(not)2.502 E F0 .002(the poster box, is af)2.502 F .001 +(fected by this option.)-.25 F F1(+mw)108 271.2 Q F2(dimension)2.5 E F0 1.7 +(De\214ne mar)194.67 271.2 R 1.7(gin width.)-.18 F 1.7(Most P)6.7 F/F3 8 +/Times-Roman@0 SF(OST)A F0(S)A F3(CRIPT)A F0(hardcop)4.201 E 4.201(yo)-.1 G +1.701(utput de)414.036 271.2 R 1.701(vices are incapable of)-.25 F .269 +(imaging closer than about 5mm to the edge of the display surf)194.67 283.2 R +.268(ace, so a non-zero mar)-.1 F(-)-.2 E(gin width is usually desirable.) +194.67 295.2 Q F2(Default: 1in \(or 25mm for ISO paper sizes\).)5 E F1(+p)108 +312 Q F2(dimension)2.5 E F0 1.12(Set font pointsize.)194.67 312 R(Normally)6.12 +E 3.62(,t)-.65 G 1.12(he size is chosen to mak)322.11 312 R 3.62(et)-.1 G 1.12 +(he poster te)435.38 312 R 1.12(xt just \214ll the)-.15 F(te)194.67 324 Q .076 +(xt frame, either horizontally or v)-.15 F(ertically)-.15 E 5.076(.Y)-.65 G +.076(ou can use this option to force a particu-)378.316 324 R .145 +(lar font size, e.g. to produce a series of posters with dif)194.67 336 R .145 +(ferent te)-.25 F .146(xt, all at the same size.)-.15 F(An)194.67 352.8 Q 3.546 +(yp)-.15 G 1.046(oster te)220.286 352.8 R 1.046(xt outside the te)-.15 F 1.045 +(xt frame is clipped, and not displayed.)-.15 F F2 1.045(Default: auto-)6.045 F +(matically set.)194.67 364.8 Q F1(+paper)108 381.6 Q F2(form)2.5 E F0 +(Set paper size.)194.67 381.6 Q(See)5 E F1(lptops)2.5 E F0 +(\(1\) for a list of supported sizes.)A .83 +(In addition to the standard sizes, an)194.67 398.4 R 3.33(yp)-.15 G .83 +(articular size can be requested by gi)354.2 398.4 R .83(ving it in)-.25 F +(the form)194.67 410.4 Q F2(widthxheight)2.5 E F0 2.5(,e).68 G +(.g. 8.5inx11in or 210mmx297mm.)293.12 410.4 Q F2 +(Default: installation dependent: usually A \(in the USA\) and A4 \(else)194.67 +427.2 Q(wher)-.15 E(e\).)-.37 E F1(+r)108 444 Q F2(angle)2.5 E F0 1.119 +(Set the te)194.67 444 R 1.119 +(xt rotation angle, which must be a multiple of 90 de)-.15 F 3.618(grees. It) +-.15 F 1.118(is measured)3.618 F .9(counterclockwise from the horizontal axis.) +194.67 456 R(The)5.9 E F1(+l)3.4 E F0 .9(landscape option is equi)3.4 F -.25 +(va)-.25 G .9(lent to).25 F F1(+r 90)194.67 468 Q F0(.)A F2(Default: 0.)5 E F1 +(+s)108 484.8 Q F2(factor)2.5 E F0 .645(De\214ne poster scale f)194.67 484.8 R +(actor)-.1 E 5.645(.T)-.55 G .644 +(his option can be used to resize a poster without ha)312.12 484.8 R(ving)-.2 E +(to change an)194.67 496.8 Q 2.5(yo)-.15 G(ther command-line options.)257.56 +496.8 Q F2(Default: 1.)5 E F1(+table)108 513.6 Q F2 2.5({8)2.5 G +(/o | 8/h | 16/o | 16/h })148.81 513.6 Q F0 2.074(When this option is gi)194.67 +525.6 R -.15(ve)-.25 G 2.075(n, command-line poster w).15 F 2.075 +(ords are ignored, and standard)-.1 F .153(input is not read.)194.67 537.6 R +(Instead,)5.153 E F1(psposter)2.653 E F0(mak)2.653 E .152 +(es a table of all of the characters in the poster)-.1 F 2.782(font. The)194.67 +549.6 R .282(option v)2.782 F .283 +(alue de\214nes the number of columns \(8 or 16\) and the label number)-.25 F +.403(base \(octal or he)194.67 561.6 R 2.903(xadecimal\). The)-.15 F .402 +(delimiter character `/' can be an)2.903 F 2.902(yp)-.15 G .402 +(unctuation char)474.538 561.6 R(-)-.2 E(acter)194.67 573.6 Q 5.235(.W)-.55 G +.235(ith 16-column tables, you probably also w)230.325 573.6 R .235 +(ant to specify the landscape option)-.1 F F1(+l)194.67 585.6 Q F0(.)A .521 +(The table title includes the font size and name.)194.67 602.4 R .52 +(The title, and the ro)5.521 F .52(w/column labels,)-.25 F(are al)194.67 614.4 +Q -.1(wa)-.1 G(ys set in black T).1 E(imes-BoldItalic te)-.35 E(xt.)-.15 E +1.777(Unless an e)194.67 631.2 R(xplicit)-.15 E F1(+p)4.277 E F2(dimension) +4.277 E F0 1.777(option is pro)4.277 F 1.778 +(vided, the font size is automatically)-.15 F(adjusted to an inte)194.67 643.2 +Q(ger v)-.15 E(alue that maximizes table size.)-.25 E F2 +(Default: no font table)194.67 660 Q(.)-.15 E F1(+v)108 676.8 Q(ersion)-.1 E F0 +(Display the program v)194.67 676.8 Q +(ersion number on standard output and quit.)-.15 E F1(+w)108 693.6 Q F2 +(dimension)2.5 E F0(De\214ne poster width.)194.67 693.6 Q F2 +(Default: paper width.)5 E F1(+x)108 710.4 Q F2(dimension)2.5 E F0 1.055 +(De\214ne horizontal of)194.67 710.4 R 3.555(fset. A)-.25 F(positi)3.555 E +1.355 -.15(ve v)-.25 H 1.055(alue mo)-.1 F -.15(ve)-.15 G 3.555(st).15 G 1.054 +(he poster right on the output sur)402.775 710.4 R(-)-.2 E -.1(fa)194.67 722.4 +S 1.47(ce, and is).1 F F2(unaf)3.97 E(fected)-.18 E F0 1.47(by an)3.97 F 3.97 +(yp)-.15 G 1.47(oster scale f)329.42 722.4 R(actor)-.1 E 3.97(,o)-.4 G 3.97(rb) +411.08 722.4 S 3.97(yt)423.38 722.4 S 1.47(he choice of rotated te)435.13 722.4 +R(xt.)-.15 E -1.11(Ve)72 768 S(rsion 0.08)1.11 E(16 January 1995)272.95 768 Q +(3)535 768 Q EP +%%Page: 4 4 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 345.48(PSPOSTER\(1\) PSPOSTER\(1\))72 48 R/F1 10 +/Times-Italic@0 SF(Default: 0bp.)194.67 84 Q/F2 10/Times-Bold@0 SF(+y)108 100.8 +Q F1(dimension)2.5 E F0 .033(De\214ne v)194.67 100.8 R .033(ertical of)-.15 F +2.532(fset. A)-.25 F(positi)2.532 E .332 -.15(ve v)-.25 H .032(alue mo)-.1 F +-.15(ve)-.15 G 2.532(st).15 G .032(he poster up on the output surf)384.906 +100.8 R .032(ace, and)-.1 F(is)194.67 112.8 Q F1(unaf)2.647 E(fected)-.18 E F0 +.147(by an)2.647 F 2.647(yp)-.15 G .147(oster scale f)282.698 112.8 R(actor)-.1 +E 2.647(,o)-.4 G 2.647(rb)360.389 112.8 S 2.647(yt)371.366 112.8 S .148 +(he choice of rotated te)381.793 112.8 R(xt.)-.15 E F1 .148(Default: 0bp.)5.148 +F F2(?)108 129.6 Q F0(Display a help message and quit.)194.67 129.6 Q F2(++)108 +146.4 Q F0 .719(No more options: remaining w)194.67 146.4 R .719 +(ords are for poster te)-.1 F 3.218(xt. This)-.15 F .718 +(option is only needed if)3.218 F(an)194.67 158.4 Q 2.5(yo)-.15 G 2.5(ft)216.46 +158.4 S(he poster w)225.07 158.4 Q(ords be)-.1 E(gin with a `+'.)-.15 E/F3 9 +/Times-Bold@0 SF(EXAMPLES)72 175.2 Q F0 +(Print a full-size poster with an announcement:)108 187.2 Q F1 +(psposter Chemistry 101 Examination 1:00pm--3:00pm | lpr)144 199.2 Q F0(Mak)108 +216 Q 2.5(ead)-.1 G(oor sign in landscape mode:)145.11 216 Q F1 +(psposter +l +w 10cm +h 25cm 'Pr)144 228 Q(of)-.45 E 2.5(.J)-.15 G +(ane Smith' >door)300.51 228 Q(sign.ps)-.1 E F0(Print the same sign, in color:) +108 244.8 Q F1(psposter +l +w 10cm +h 25cm +bd blue +bg sk)144 256.8 Q +(yblue \\)-.1 E(+fg navyblue 'Pr)166.5 268.8 Q(of)-.45 E 2.5(.J)-.15 G +(ane Smith' | lpr)251.73 268.8 Q F0(If a P)144 280.8 Q/F4 8/Times-Roman@0 SF +(OST)A F0(S)A F4(CRIPT)A F0(printer is incapable of printing in color)2.5 E 2.5 +(,i)-.4 G 2.5(tw)373.864 280.8 S(ill simulate color by shades of gray)386.364 +280.8 Q(.)-.65 E(Mak)108 297.6 Q 2.5(eas)-.1 G(ale sign:)144 297.6 Q F1 +(psposter +bg yellow <<END-OF-D)144 309.6 Q -.37(AT)-.35 G 2.5(A>)-.13 G(yar) +314.77 309.6 Q(dsale)-.37 E(.ps)-.15 E -.92(Te)144 321.6 S(rri\214c).92 E -.92 +(Ya)144 333.6 S .74 -.37(rd S).92 H(ale).37 E -.92(To)144 345.6 S(day).92 E +(123 Elm St.)144 357.6 Q(END-OF-D)144 369.6 Q -.37(AT)-.35 G(A)-.13 E F0(Mak) +108 386.4 Q 2.5(eas)-.1 G(eminar announcement:)144 386.4 Q F1(psposter +bg or) +144 398.4 Q(ang)-.15 E 2.5(e<)-.1 G(<EOF >seminar)236.97 398.4 Q(.ps)-1.11 E +(Biolo)144 410.4 Q(gy Colloquium)-.1 E -.55(Fr)144 422.4 S(iday 23-Sep-1994).55 +E(3pm--4pm)144 434.4 Q(LSB 234)144 446.4 Q(Dr)144 470.4 Q 2.5(.J)-1.11 G +(udith Br)163.09 470.4 Q(own)-.45 E(Se)144 482.4 Q 2.5(xL)-.2 G(ife of Gnats) +165.74 482.4 Q(EOF)144 494.4 Q F0(Mak)108 511.2 Q 3.054(eaD)-.1 G .554(anish r\ +oad sign \(the octal escape sequences select the letters AE and o-slash; see A\ +ppendix E of)148.438 511.2 R(the)108 523.2 Q F1 -.8(Po)2.5 G(stScript Langua).8 +E .2 -.1(ge R)-.1 H(efer).1 E(ence Manual)-.37 E F0 2.5(,A).51 G(ddison-W) +294.34 523.2 Q(esle)-.8 E 1.3 -.65(y, 1)-.15 H(990, ISBN 0-201-18127-4\):).65 E +F1(psposter +bg yellow +fg blac)144 535.2 Q 2.5(k')-.2 G(\\341r)272.57 535.2 Q +(esk\\371bing' 5km >vejskilt.ps)-.37 E F0(Mak)108 552 Q 2.5(ea)-.1 G +(nother road sign in a do)137.61 552 Q +(wnloaded font, supplying one leading and trailing blank on each line:)-.25 E +F1(psposter +bg gr)144 564 Q(een +fg white +fn UR)-.37 E(WGr)-.18 E(oteskT)-.45 +E(-Bold +r -90 \\)-.74 E 2.5('G)166.5 576 S -.37(re)179.55 576 S +(en River ' ' 106 miles ' >r).37 E(oadsign.ps)-.45 E F0 1.1 +(\(The stretch of highw)108 588 R 1.1(ay I-70 in Utah from Salina to Green Ri) +-.1 F -.15(ve)-.25 G 3.6(ri).15 G 3.6(sc)384.54 588 S 1.1 +(laimed to be the longest in the US)396.47 588 R(Interstate Highw)108 600 Q +(ay System without services.\))-.1 E(Mak)108 616.8 Q 2.5(eap)-.1 G(oster sho) +145.11 616.8 Q(wing the dingbat font layout:)-.25 E F1 +(psposter +fn ZapfDingbats +table 8/o >dingbats.ps)144 628.8 Q F3(ENVIR)72 +645.6 Q(ONMENT V)-.27 E(ARIABLES)-1.215 E F0(AFMP)108 657.6 Q -1.11(AT)-.92 G +10(HS)1.11 G .107(earch path for P)169.31 657.6 R F4(OST)A F0(S)A F4(CRIPT)A F0 +.107(font mapping \214le, \()2.607 F F1(afmfonts.map).33 E F0 .107 +(\), and for do).19 F .108(wnloadable fonts in)-.25 F(P)163.75 669.6 Q F4(OST)A +F0(S)A F4(CRIPT)A F0 1.555(ASCII \()4.055 F F1(.pfa).23 E F0 4.055(\)a).26 G +1.555(nd binary \()277.799 669.6 R F1(.pfb).23 E F0 4.055(\)f).23 G 4.055 +(ormats. The)351.244 669.6 R 1.554(font mapping \214le connects long)4.055 F(P) +163.75 681.6 Q F4(OST)A F0(S)A F4(CRIPT)A F0 +(font names with \(usually shorter\) \214le names on the host computer)2.5 E(.) +-.55 E 1.266 +(On UNIX, the search path is a colon-separated list of directories.)163.75 +698.4 R 1.266(On other operating sys-)6.266 F(tems, the search path follo) +163.75 710.4 Q(ws the con)-.25 E -.15(ve)-.4 G(ntions of those systems.).15 E +-1.11(Ve)72 768 S(rsion 0.08)1.11 E(16 January 1995)272.95 768 Q(4)535 768 Q EP +%%Page: 5 5 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 345.48(PSPOSTER\(1\) PSPOSTER\(1\))72 48 R(RGBP)108 84 +Q -1.11(AT)-.92 G 11.11(HS)1.11 G(earch path for the X W)169.31 84 Q(indo)-.4 E +2.5(wS)-.25 G(ystem color de\214nition \214le,)293.63 84 Q/F1 10/Times-Italic@0 +SF -.37(rg)2.5 G -.4(b.).37 G(txt).4 E F0(.).68 E/F2 9/Times-Bold@0 SF(FILES)72 +100.8 Q F1(afmfonts.map)108 112.8 Q F0(P)177.17 112.8 Q/F3 8/Times-Roman@0 SF +(OST)A F0(S)A F3(CRIPT)A F0 1.407(font mapping \214le.)3.907 F 1.407 +(It is distrib)6.407 F 1.406(uted, together with some freely-distrib)-.2 F +(utable)-.2 E -.8(Ty)177.17 124.8 S .513(pe 1 fonts in).8 F F1(.pfa)3.013 E F0 +(and)3.013 E F1(.pfb)3.013 E F0 .513(formats, and numerous Adobe F)3.013 F .514 +(ont Metric \()-.15 F F1(.afm).23 E F0 3.014<298c>.32 G .514(les, with)505.596 +124.8 R/F4 10/Times-Bold@0 SF(lptops)177.17 136.8 Q F0(\(1\).)A F4(psposter) +5.69 E F0 .689(looks for this \214le, and do)3.19 F .689 +(wnloadable fonts, in the)-.25 F F1(AFMP)3.189 E -.37(AT)-.9 G(H).37 E F0 +(search)3.189 E(path.)177.17 148.8 Q -.8(Ty)177.17 165.6 S(pical lines in).8 E +F1(afmfonts.map)2.5 E F0(look lik)2.5 E 2.5(et)-.1 G(his:)338.22 165.6 Q F1 2.5 +(%T)177.17 177.6 S(his line is a comment.)193.56 177.6 Q 2.5(%T)177.17 189.6 S +(his font name is too long for some)193.56 189.6 Q 2.5(%o)177.17 201.6 S(per) +193 201.6 Q(ating systems, so we stor)-.15 E 2.5(ei)-.37 G 2.5(tu)314.7 201.6 S +(nder a)324.98 201.6 Q 2.5(%s)177.17 213.6 S(horter name)191.89 213.6 Q 5(.T) +-.15 G(he font \214les will be)253.96 213.6 Q 2.5(%H)177.17 225.6 S +(elvNaBI.afm, containing the c)195.22 225.6 Q(har)-.15 E(acter)-.15 E 2.5(%m) +177.17 237.6 S(etrics \(assorted dimensions\), and)195.22 237.6 Q 2.5(%H)177.17 +249.6 S(elvNaBI.pfa \(ASCII\) or HelvNaBI.pfb)195.22 249.6 Q 2.5(%\()177.17 +261.6 S(binary\), containing encrypted P)191.33 261.6 Q/F5 8/Times-Italic@0 SF +(OST)A F1(S)A F5(CRIPT)A F1 2.5(%d)177.17 273.6 S(e\214nitions of the c)193 +273.6 Q(har)-.15 E(acter shapes.)-.15 E(Helvetica-Narr)177.17 285.6 Q +(ow-BoldOblique = HelvNaBI)-.45 E -.37(rg)108 302.4 S -.4(b.).37 G(txt).4 E F0 +.341(Color mapping \214le distrib)177.17 302.4 R .341(uted with the X W)-.2 F +(indo)-.4 E 2.841(wS)-.25 G(ystem.)389.608 302.4 Q F4(psposter)5.342 E F0 .342 +(looks for this \214le in)2.842 F(the)177.17 314.4 Q F1(RGBP)2.5 E -.37(AT)-.9 +G(H).37 E F0(search path.)2.5 E -.8(Ty)177.17 331.2 S(pical lines in).8 E F1 +-.37(rg)2.5 G -.4(b.).37 G(txt).4 E F0(look lik)2.5 E 2.5(et)-.1 G(his:)309.67 +331.2 Q F1(000 000 000)177.17 343.2 Q(blac)249.67 343.2 Q(k)-.2 E(000 000 255) +177.17 355.2 Q(blue)249.67 355.2 Q(000 255 000)177.17 367.2 Q(gr)249.67 367.2 Q +(een)-.37 E(000 255 255)177.17 379.2 Q(cyan)249.67 379.2 Q(255 000 000)177.17 +391.2 Q -.37(re)249.67 391.2 S(d).37 E(255 000 255)177.17 403.2 Q(ma)249.67 +403.2 Q -.1(ge)-.1 G(nta).1 E(255 255 000)177.17 415.2 Q(yellow)249.67 415.2 Q +(255 255 255)177.17 427.2 Q(white)249.67 427.2 Q(250 235 215)177.17 439.2 Q +(antique white)249.67 439.2 Q(250 235 215)177.17 451.2 Q(AntiqueWhite)249.67 +451.2 Q F0(There is no comment syntax.)177.17 468 Q .897(The \214rst three num\ +bers de\214ne red, green, and blue intensities on a scale of 0)177.17 484.8 R +1.666(..2)1.666 G .896(55, and)-1.666 F .815(the remaining te)177.17 496.8 R +.815(xt on each line is the color name, which, in the case of compound color) +-.15 F 1.165(names, appears in tw)177.17 508.8 R 3.665(of)-.1 G 1.164 +(orms, one in lo)276.43 508.8 R 1.164 +(wer case with blank separators, and one without)-.25 F(blanks, in mix)177.17 +520.8 Q(ed case.)-.15 E F2(SEE ALSO)72 537.6 Q F4(compr)108 549.6 Q(ess)-.18 E +F0(\(1\),)A F4(dxpsview)2.5 E F0(\(1\),)A F4(ghostview)2.5 E F0(\(1\),)A F4(gs) +2.5 E F0(\(1\),)A F4(gzip)2.5 E F0(\(1\),)A F4(lptops)2.5 E F0(\(1\),)A F4 +(page)2.5 E(view)-.15 E F0(\(1\),)A F4 -.1(rg)2.5 G(b).1 E F0(\(1\),)A F4(tex) +2.5 E F0(\(1\).)A F2 -.45(AU)72 566.4 S(THOR).45 E F0(Nelson H. F)108 578.4 Q +2.5(.B)-.8 G(eebe, Ph.D.)167.48 578.4 Q(Center for Scienti\214c Computing)108 +590.4 Q(Department of Mathematics)108 602.4 Q(Uni)108 614.4 Q -.15(ve)-.25 G +(rsity of Utah).15 E(Salt Lak)108 626.4 Q 2.5(eC)-.1 G(ity)155.12 626.4 Q 2.5 +(,U)-.65 G 2.5(T8)177.25 626.4 S(4112)190.86 626.4 Q -.7(Te)108 638.4 S +(l: +1 801 581 5254).7 E -.74(FA)108 650.4 S(X: +1 801 581 4148).74 E +(Email: <beebe@math.utah.edu>)108 662.4 Q F2(COPYRIGHT)72 679.2 Q F0 +(This program is in the)108 691.2 Q F4(public domain)2.5 E F0(.)A -1.11(Ve)72 +768 S(rsion 0.08)1.11 E(16 January 1995)272.95 768 Q(5)535 768 Q EP +%%Page: 6 6 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF 345.48(PSPOSTER\(1\) PSPOSTER\(1\))72 48 R/F1 9 +/Times-Bold@0 SF -.855 -1.305(AV A)72 84 T(ILABILITY)1.305 E F0 .3 +(Internet source distrib)108 96 R .3(ution of)-.2 F/F2 10/Times-Bold@0 SF +(psposter)2.8 E F0 .3(is a)2.8 F -.25(va)-.2 G .3(ilable through the W).25 F +(orld-W)-.8 E .3(ide W)-.4 F .3(eb Uniform Resource Loca-)-.8 F(tor addresses) +108 108 Q/F3 10/Times-Italic@0 SF(ftp://ftp.math.utah.edu/pub/misc/psposter)144 +120 Q(-0.08.tar)-.2 E(.z)-1.11 E(ftp://ftp.math.utah.edu/pub/misc/psposter)144 +132 Q(-0.08.zip)-.2 E(ftp://ftp.math.utah.edu/pub/misc/psposter)144 144 Q +(-0.08.zoo)-.2 E F0 -1.11(Ve)72 768 S(rsion 0.08)1.11 E(16 January 1995)272.95 +768 Q(6)535 768 Q EP +%%Trailer +end +%%EOF diff --git a/fonts/utilities/psposter/psposter.sh b/fonts/utilities/psposter/psposter.sh new file mode 100644 index 0000000000..1e186e0cd3 --- /dev/null +++ b/fonts/utilities/psposter/psposter.sh @@ -0,0 +1,2 @@ +#!/bin/sh +/usr/local/bin/gawk -f /usr/local/lib/psposter/psposter.awk "$@" diff --git a/fonts/utilities/psposter/rofvms.awk b/fonts/utilities/psposter/rofvms.awk new file mode 100644 index 0000000000..dedb9ce181 --- /dev/null +++ b/fonts/utilities/psposter/rofvms.awk @@ -0,0 +1,61 @@ +# rofvms.awk -*-awk-*- +# Filter to convert nroff -man output to VMS .hlp file format according +# to the rules: +# +# 13 or more consecutive blank lines are reduced to 1 +# 3--12 consecutive blank lines are dropped +# 2 consecutive blank lines are reduced to 1 +# All others output verbatim. +# +# The peculiar number 13 handles the case where a paragraph break +# coincides with a page break. +# +# In addition, whenever a line in non-blank in column 1, and then +# previous line was blank, we insert a blank line; this provides +# vertical space before a section heading. +# +# The output of nroff -man on different UNIX systems is regrettably +# quite variable in appearance; this file is likely to need +# modifications on other than Sun OS. +# +# Too bad nroff doesn't have an option to suppress titling! +# +# The NAME section head becomes 1 BIBCLEAN, and others become +# 2 XXX followed by XXX. +# [27-Mar-1993] +BEGIN { if (NAME == "") NAME = "DVI" } + +# Match and delete page headers: xxx(nnn) .... xxx(nnn) +/^[A-Za-z][-_A-Za-z0-9]*\([0-9A-Za-z]+\).*[A-Za-z][-_A-Za-z0-9]*\([0-9A-Za-z]+\)$/ {next} + +# Match and delete page footers: Sun Release ...nnn +# These vary from system to system, so extra patterns may be needed here +/^Sun Release.*[0-9]+$/ {next} # Sun OS x.x +/^Sun Microsystems.*[0-9]+$/ {next} +/^Printed.*[0-9]+$/ {next} # BSD 4.3 +/^Page [0-9].*$/ {next} # Silicon Graphics +/^Version.*Last change:/ {next} # bibclean.txt on SunOS 4.1.1 + +# Match all lines and do blank line processing +{ + if (NF == 0) # blank line + nb++; + else # non blank line + { + if ((nb == 1) || (nb == 2) || (nb >= 13)) + printf("\n"); + else if ((nb > 0) && (substr($0,1,1) != " ") && (nf > 0)) + printf("\n"); + if ($0 == "NAME") # level 1 header + $0 = "1 " NAME; + else if (substr($0,1,1) != " ") # level 2 header + { + header = $0; + gsub(/ /,"-",header); + $0 = "2 " header "\n " $0; + } + printf("%s\n",$0); + nb = 0; + nf++; + } +} |