Printer definition file for WSSINDEX custom print utility All lines of this file are comments until a line beginning ----. After that, alternate lines are comments and parameters. See the WSSINDEX documentation for a description of the format allowed here. The codes in this file are for a generic postscript printer, but you may alter these to suit your needs. Some items which you might expect to control in this file, such as font size and portrait or landscape orientation are instead built into Wssindex. The complex commands which do appear in this file relate to disk covers. They are made harder to read by the need to represent blank by \s and escape numbers so that they are interpreted as character. This definition file has been tested using a QMS Jetscript board driving a Canon engine. Command to advance to next cover, after translation, is currentpoint exch pop 396 lt {p}{0 -18 rmoveto}ifelse This means 1. stack the x-y coordinates of the current position 2. exchange the coordinates just stacked 3. throw away one of them (x) 4. test if y is less than 396, which is the middle of the page for 11 inch paper (72 points/inch * 11 inches / 2) 5. if y is less than 396, more than half the page has been used, so execute macro p (defined elsewhere) which starts a new page, otherwise move down 18 points (0.25") from the current line The numbers 396 and 18 might reasonably be adjusted. If you are trying to fit more than 2 covers on a page, note that the y coordinate 0 is at the bottom of the page, so for 3 covers, 396 would be replaced by approximately 264. When the disk cover box forming characters are printed, the fontsize has already been put on the postscript stack. Commands here are bracketed by gsave ... stroke grestore before being sent to the printer, so scaling and line width adjustments apply only to the box border. Looking at the top left hand corner character as a typical example, the translated command is dup scale .1 setlinewidth .5 0 rmoveto 0 .5 rlineto 1 0 rlineto which means 1. duplicate the fontsize number already stacked and use it as an overall scale factor for the lines generating the box. (x and y can be scaled independently, but there's no reason to do that here.) 2. set the line width to one tenth point (times the font size scale factor) 3. move to lower middle of character box, draw two lines making up the corner of the box. The box you are drawing is is effectively 1x1 and initially the "pen" is at the lower left. Probably the only thing you might want to change here is the line width. With 90-character wide by 45-character high covers, a font size which works well is 7 points with 1 point extra spacing. Enter these numbers on the postscript printer setup menu in Wssindex. ------------------------------------------------------------ Printer name Postscript printer Optional string printed on all labels Property of Printer initialization command for 1,2,... column printing, 50 max Printer initialization command for labels, 50 max (pitch, line spacing, etc.) Printer initialization command for disk covers, 50 max Printer deinitialization command, 10 max (form feed for laser printer, etc.) Number of spaces in left margin for labels 5 Number of columns for labels 1 Width of labels (characters) 50 Number of characters between labels (if multiple columns) 5 Length of label in lines (including unusable lines) 12 Number of usable lines for label 9 Number of spaces in left margin for disk covers 10 Width of paper for disk covers (characters) 90 Length of page in lines for disk covers 45 Printer command to position for the next disk cover currentpoint \s exch \s pop \s \3\9\6 \s lt \s { p } {\0 \s -\1\8 \s rmoveto} ifelse Character to use for sides of disk cover box (use only "pop" to omit border) dup \s scale \s .\1 \s setlinewidth \s .\5 \s \0 \s rmoveto \s \0 \s \1 \s rlineto Character to use for top and bottom lines dup \s scale \s .\1 \s setlinewidth \s \0 \s .\5 \s rmoveto \s \1 \s \0 \s rlineto Character to use for top left corner dup \s scale \s .\1 \s setlinewidth \s .\5 \s \0 \s rmoveto \s \0 \s .\5 \s rlineto \s \1 \s \0 \s rlineto Character to use for top right corner dup \s scale \s .\1 \s setlinewidth \s \0 \s .\5 \s rmoveto \s .\5 \s \0 \s rlineto \s \0 \s -.\5 \s rlineto Character to use for bottom left corner dup \s scale \s .\1 \s setlinewidth \s .\5 \s \1 \s rmoveto \s \0 \s -.\5 \s rlineto \s .\5 \s \0 \s rlineto Character to use for bottom right corner dup \s scale \s .\1 \s setlinewidth \s \0 \s .\5 \s rmoveto \s .\5 \s \0 \s rlineto \s \0 \s .\5 \s rlineto End of printer configuration file