Introduction ============ There should be several files here along with this README file: designs.ps catalog.ps buttons.ps labels.ps another.ps These files can be used together to print out a variety of les/bi/gay designs onto round labels or onto paper which can then be used to make button badges. The designs, themselves, are in the file "designs.ps". However, this file will not print anything by itself. Instead, you must append one of the other files (catalog.ps, labels.ps, buttons.ps) to it before printing. The best way to think about this is that "designs.ps" is a library of procedures, and the other files are short programs which invoke the procedures in this library to print the designs on a PostScript printer: designs.ps + catalog.ps ----> prints a catalogue of all the designs and their names designs.ps + labels.ps ----> prints selected designs onto sheets of round labels designs.ps + buttons.ps ----> prints selected designs onto paper for making button badges Printing the catalogue ====================== The first step is to print the catalogue so that you can see which designs are available. To do this, follow the following steps: 1. Edit the file "catalog.ps" and look for the lines which start with "/PageWidth" and "/PageHeight". These lines define tell the PostScript program how big the paper is. If your printer uses American Letter size paper then make sure that the page width is set to 8.5 inches (21.59 cm) and the page height to 11 inches (27.94 cm). If you are European then your printer probably uses A4 size paper. If so, make sure that the page width is set to 8.27 inches (21 cm) and the page height to 11.69 inches (29.7 cm). (If you are unsure which paper size you use in your laser printer then simply use a ruler to measure it. You can specify the dimensions in "in" (inches), "mm" (millimeters) or "cm" (centimeters).) 2. Now join the two files designs.ps and catalog.ps together, leaving the result in a file, say, foo.ps. If you are using a UNIX system then this can be achieved by: cat designs.ps catalog.ps >foo.ps If you are using a VMS system then this can be achieved by: copy designs.ps foo.ps append catalog.ps foo.ps 3. Now print the file "foo.ps" on a PostScript printer. (You can expect the file to take a few minutes to print since some of the designs are complex and most of the designs use a different font or point size, thus rendering the font cache of the PostScript interpreter almost useless.) What you should get from the printer is one or more pages of circles with designs drawn inside them. The name of each design is written underneath it for reference. 4. The file "another.ps" contains a design which is too complex to print on some PostScript printers, notably older printers that have a limited amount of memory. For this reason I did not include this design with the other designs in the file "designs.ps" but rather placed it in "another.ps". To determine if your printer can cope with this design, do the following: Create a file, say, "foo.ps" that contains "designs.ps", "another.ps" and "catalog.ps". For example, if you are on a UNIX machine then use the command: cat designs.ps another.ps catalog.ps >foo.ps Now print the file "foo.ps" on a PostScript printer. If the file prints okay then your printer is capable of printing this complex design. (The new design will be the one in the lower-left corner of the first page.) If the file does not print (perhaps the printer will send an error message back to your computer) then you will not be able to use this design. *If* your printer can cope with the complex design in "another.ps" then you might as well append "another.ps" onto the end of "designs.ps". Printing labels or button badges ================================ After printing out the catalogue, you can choose which designs you want to print out onto sticky round labels or make into button badges. Having done that: 1. You then modify the file labels.ps (for producing sticky round labels) or buttons.ps (for making button badges) to set a few variables - such as the number, and positions, of labels on the page, which designs you want printed and so on. (Exactly what modifications you need to make will be explained later on in this file.) 2. Then join the appropriate file (labels.ps or buttons.ps) onto the end of designs.ps, leaving the result in "foo.ps". 3. Print foo.ps to your printer. The rest of this file will explain the various variables used in the files labels.ps and buttons.ps which you can alter to suit your needs. Button badges ============= Button badges are generally made by the following process: 1. Draw the artwork onto a piece of paper. 2. Cut this paper down to a size which is slightly larger than the button badge, making sure that the artwork is centered on it. 3. The paper (along with a piece of clear plastic which protects the paper and gives the artwork a gloss appearance) is placed on top of the button. The edges of the paper are wrapped around to the back of the button and held in place by the backing component of the button. A pin is also added so that the button can be worn. There are three parameters of interest to the above process: The size of the button badge. The "artwork size" - this is the size of a circle into which the artwork should fit. This is usually slightly smaller than the size of the button badge to allow for slight errors in centering the design on the button. The "cutting edge" - this is the size of the circular piece of paper (containing the artwork) which is cut out and used to make the button. This is slightly larger than the button so that it can wrap around to the back. The cutting edge and artwork size parameters will, of course, depend on the size of the button badge. However, the cutting edge value may also vary from one type of button badge machine to the next. Your local button badge making company will be able to the correct values for their machines. If you are making button badges then you should edit the file "buttons.ps" and search for the following variables (they can be found near the start of the file): PageWidth PageHeight CuttingEdge ArtworkSize WhiteOnBlack DoLabel MinSBD Buttons PageWidth, PageHeight, CuttingEdge and ArtworkSize have already been explained above. (Note that CuttingEdge and ArtworkSize represent the diameter of the circle, rather then its radius.) The software will scale the designs to "ArtworkSize" and will print a circle of "CuttingEdge" diameter to help the button badge manufacturer center the cutting tool on the artwork. WhiteOnBlack is a boolean variable (so it can take on a value of either "true" or "false"). If this is set to false then the buttons will be printed with black text/graphics on a white background. If set to true then the buttons will be drawn as if a negative, i.e., white text/graphics on a black background. If you can get some pink paper to print on then you should try setting this variable to "true" and printing some of the lesbian/gay/bisexual symbols - they will result in pink symbols on a black background and will look quite nice. In particular, you can use this to get a pink triangle on a black background. The variable "DoLabel" should be set to "false" if you are producing button badges. The "MinSBD" variable is the minimum amount of space which you want to have separating button badges. If this is set to 0 then the cutting edge circles of the buttons may well end up touching each other which might make it awkward to use the cutting tool. The higher the value you assign to this, the more space there will be between buttons on the printed page. (The software take into account the page dimensions, and the CuttingEdge and MinSBD variables to figure out how many badges it can fit onto the page. Having done this, it will then space the buttons out as widely as possible so it is quite possible that the actual spacing between buttons will be larger than MinSBD, but you are guaranteed that it will not be smaller.) "Buttons" is an array variable which specifies the designs you want printed. Refer to the catalogue (as was produced by printing the file "catalog.ps") to see the names of the designs which are available. Make sure you prefix each name with "/". For example: /Buttons [ /straight_as_an_arrow /seven_deadly_sins /nobody_is_perfect... /that's_dr_dyke_to_you ] def Setting the Buttons variable as shown above would print the specified designs onto a page (or several pages if you specified too many designs to fit onto a single page). Hint: If you can find some colored paper, you might consider printing designs onto it. This way you will get different colored button badges. Alternatively, if you have patterned paper, you could use that. Machines for making button badges ================================= If you look in the "Golden Pages" (the "Yellow Pages" as I think it is known in the USA) under a title such as "badge and emblem makers" then you should be able to find the name of a company in your area that makes button badges. You can print out your own designs and get the company to make them into button badges for you. Note however that the minimum order size of such companies is often 250 or 500 button badges. Also, the unit cost might be relatively high unless you order several thousand button badges. An alternative is to buy your own machine for making button badges. Manufacturers of such machines can usually be found in the same section of the "Golden Pages". I know of one American company that sells such machines at an affordable price. They are: Badge-A-Minit Box 800 LaSalle IL 61301 Toll-free telephone: 1-800-223-4103 Fax: (815) 883-9696 They sell a number of different machines. For example, you can buy one of their cheaper machines and enough parts for 50 button badges for $55. That is enough to get you started. You can, of course, buy parts for more button badges when you run out. If you contact them, they will be happy to send you a catalogue. Note: I have no connection with them except that I am a satisfied customer. If you live in England then you can write to: Enterprise Products Ltd 36 Ridgeway Road Redhill Surrey RH1 6PH Tel: (0737) 772185 Fax: (0737) 762669 Unfortunately, the prices of EnterPrise Products are high compared to Badge-A-Minit. It will cost you about 200 pounds or more to get started. If you are interested then write to them and ask for a catalogue. Labels ====== If you are printing labels then you should edit the file "labels.ps" and search for the following variables (they can be found near the start of the file): CuttingEdge ArtworkSize WhiteOnBlack DoLabel NumRows NumCols FirstLabelX FirstLabelY InterLabelHorizDistance InterLabelVertDistance Labels Some of these have already been explained in the previous section. You should make sure that DoLabel is set to "true" (to prevent a "CuttingEdge" circle being drawn on the label). It is advisable to set ArtworkSize to be slightly less than the diameter of the labels to allow for slight misalignment of the sheets of labels as they are being fed into the printer. If you have WhiteOnBlack set to "false" then there is no need to bother setting the CuttingEdge variable. However, if WhiteOnBlack is "true" then set CuttingEdge to be (slightly larger than) the diameter of the labels to ensure that the black background will cover the entire label. The next six variables tell the software how to locate the positions of the labels on the page. As you might expect, NumRows and NumCols tell the software how many rows and columns of labels there are on the page. The variables FirstLabelX and FirstLabelY tell the software where the CENTER of the first label on the page (i.e., the one in the lower left corner) is. The handiest way to determine these values is by the formulas: FirstLabelX = "distance from left side of page to left side of label" + "diameter of label" / 2 FirstLabelX = "distance from bottom of page to bottom of label" + "diameter of label" / 2 The variable InterLabelHorizDistance specifies the distance between the center of one label and the center of the one to its right. (Instead of measuring the distance between the centers of labels, you may find it easier to measure the distance from the left side of one label to the left side of its neighbour.) Similarly, InterLabelVertDistance specified the distance between the center of one label and the center of the one above it. (Again, this is most easily calculated by measuring the distance from the bottom of one label to the bottom of the label above it.) Labels is an array variable which specifies the designs you want printed onto labels. If there are less designs specified in this array than there are labels on the page then some labels will be printed more than once to fill up the page. If there are too many labels specified in this array than there are labels on the page then several pages will be printed. Refer to the catalogue (as was produced by printing the file "catalog.ps") to see the names of the designs which are available. Make sure you prefix each name with "/". For example: /Labels [ /nobody_is_perfect... /that's_dr_dyke_to_you ] def Setting the Labels variable as shown above would print a page of labels, where half of the labels said "Nobody is Perfect. Not Even God" straights" and the other half said "That's _Dr_ Dyke to You". Hint: If you have difficulty centering the designs on the labels then try setting the "CuttingEdge" variable to be the diameter of the labels and "DoLabel" to "false." Then print out a pages of labels. The "cutting edge" circle which is drawn should help you to figure out how far off-center the labels are being printed. Buying round labels =================== Some stationary companies sell round sticky labels in sheets of A4 or US Letter size. A place to start looking for such companies is in the "Golden Pages" ("Yellow Pages" in the USA) under a heading of "labels" or "stationary". Alternatively, you might go down to a local stationary or business supply shop. Creating your own designs ========================= This section will give some notes on how to add new designs into the file "designs.ps". To be able to attempt this, you should know how to program in PostScript. If you are not a PostScript programmer then you should skip this section. Each design is printed by a procedure. The basic outline of such a procedure is: /procedure_name { 30 mm DP ... % your code goes here DT } defD As can be seen, the predefined procedures "DP" (Design Prologue) and "DT" (Design Trailer) surround your code and the procedure is defined by using "defD" rather than "def". "defD" will define your procedure and also add its name to an array of designs (called "DesignsArray"). Using "defD" instead of "def" means that your design will be printed out as part of the catalogue. (The file "catalog.ps" iterates through DesignsArray to print out all the designs.) The "DP" procedure takes as its argument the diameter of the circle (centered on the origin) which contains the design. "DP" will use this parameter to scale your artwork to "ArtworkSize". (This allows you to produce the design at any scale which is convenient for you, and the "DP" procedure will then scale it as appropriate.) It will also print out the cutting edge circle and clear the background of the design. The design you draw should be centered on the origin. You can make any changes you want to the graphics state since the "DP"/"DT" procedures effect a gsave/grestore. You should use the procedures "fg" and "bg" to set the current color to black and white (respectively). If you use these then the user can simply set the WhiteOnBlack variable to true to obtain a "negative" of your design. If your design is to be a slogan then you may wish to make use of the "textInit" and "cr" procedures. The "textinit" procedure takes three parameters: the name of the font to be used to print text, the font size, and the line spacing (expressed as a multiple of the font size). For example, the following will set the font to be Times-Bold at a size of 10 points and the spacing between lines will be 10 * 1.2 points (i.e., 12 points): /Times-Bold 10 1.2 textInit The "cr" procedure can be thought of as "carriage return" or "newline". See the code for, say, "seven_deadly_sins" to see "textInit" and "cr" being used. If you do make use of these then note that "textInit" defines two variables in the current dictionary. If your procedure has its own local dictionary then you should allow for these. If you do decide to create your own designs then I suggest that you do _not_ add them to the file "designs.ps". Rather keep them in a file, say, "more_designs.ps". Then join these files together whenever you want to print out a catalogue of all your designs or you want to print out some button badges or labels. For example: cat designs.ps more_designs.ps catalogue.ps > foo,ps The advantage of this is that if you want to share your new designs with some friends then you only need to email them "more_designs.ps".