From: max@hilbert.cyprs.rain.com
Newsgroups: alt.discrimination.homosexual,soc.motss
Subject: Nein on 9 poster postscript source.
Date: 14 Sep 92 15:46:24 GMT
Article-I.D.: hilbert.1992Sep14.154624.29977
Distribution: or
Organization: Cypress Semiconductor Northwest, Beaverton Oregon

Hi! I am using Postscript to make 'nein on 9' posters, and it
occurred to me that others might be able to make use of parts
of my effort.

This is the modified output of a postscript printer filter.
My postscript skills are very rusty, and this
program could be a lot better, but still, perhaps someone will
find it useful as a template. To go right to the code you may
wish to modify, search for HACKS.

It prints a title line, and a bottom header with

1) a circle-bar (that is, the international NO symbol) over a swastika.

2) Next to the crossed out swastika, it prints 'Nein on Nine'.

I then (literally) paste in text or clippings into the middle of
the page and xerox away. I find that spray adhesive works very
well - the fundies like to yank down posters they disagree with, while
putting up posters that accuse you of being a child molester if you
take it down.

-------------------cut here------------------------
%! a2ps 3.0

/$a2psdict 100 dict def
$a2psdict begin
% Initialize page description variables.
/inch {72 mul} bind def
/sheetheight 11 inch def
/sheetwidth 8.5 inch def
/margin 1 inch def
/headersize 0.0 inch def
/bodyfontsize 60 def
/lines 11 def
/columns 87 def
/date (Sep 12 1992 13:37:09) def
%!  PostScript Source Code

% General macros.
/xdef {exch def} bind def
/getfont {exch findfont exch scalefont} bind def

% Page description variables and inch function are defined by a2ps program.

% Character size for differents fonts.
/filenamefontsize 36 def
/datefontsize filenamefontsize 0.8 mul def
/headermargin filenamefontsize 0.25 mul def
/bodymargin bodyfontsize 0.7 mul def

% Font assignment to differents kinds of "objects"
/filenamefontname /Helvetica-Bold def
/stdfilenamefont filenamefontname filenamefontsize getfont def
/datefont /Helvetica datefontsize getfont def
/bodyfont /Courier-Bold bodyfontsize getfont def

% Logical page attributs (a half of a real page or sheet).
/pagewidth
   bodyfont setfont (0) stringwidth pop columns mul bodymargin dup add add
   def
/pageheight
   bodyfontsize lines mul bodymargin dup add add headersize add
   def

% Coordinates for upper corner of a logical page and for sheet number.
% Coordinates depend on format mode used.
% and right pages: upperx is an array of two elements, indexed by sheetside.
/rightmargin margin 3 div def
/leftmargin margin 2 mul 3 div def
/topmargin margin 2 div def
   /uppery rightmargin pageheight add bodymargin add def
   /sheetnumbery sheetwidth leftmargin pageheight add datefontsize add sub def
   /upperx [ topmargin dup ] def
   /sheetnumberx sheetheight topmargin sub datefontsize sub def
   % Portrait format
   /uppery topmargin pageheight add def
   /upperx [ leftmargin dup ] def
   /sheetnumberx sheetwidth rightmargin sub datefontsize sub def
   /sheetnumbery
	 sheetheight 
	 topmargin pageheight add datefontsize add headermargin add
      sub
      def


% Strings used to make easy printing numbers
/pnum 12 string def
/empty 12 string def

% Other initializations.
/datewidth date stringwidth pop def
/filenameroom
         pagewidth
	 filenamefontsize 4 mul datewidth add (Page 999) stringwidth pop add
      sub
   def


% Function startdoc: initializes printer and global variables.
/startdoc
    { /sheetside 0 def			% sheet side that contains current page
      /sheet 1 def			% sheet number
   } bind def

% Function newfile: init file name and reset page number for each new file.
/newfile
    { cleanup
      /filename xdef
      /filenamewidth filename stringwidth pop def
      /filenamefont
	 filenamewidth filenameroom gt
	 {
	       filenamefontname
	       filenamefontsize filenameroom mul filenamewidth div
	    getfont
	 }
	 {  stdfilenamefont }
	 ifelse
	 def
      /pagenum 1 def
    } bind def

% Function printpage: Print a physical page.
/printpage
    { /sheetside 0 def
      showpage 
%      pagesave restore
      /sheet sheet 1 add def
    } bind def

% Function cleanup: terminates printing, flushing last page if necessary.
/cleanup
    { 
      printpage
    } bind def

%
% Function startpage: prints page header and page border and initializes
% printing of the file lines.
/startpage
    { sheetside 0 eq
	{ % /pagesave save def
	} if
	 upperx sheetside get  bodymargin  add
	    uppery
	    bodymargin bodyfontsize add  0 add
	 sub
      moveto
      bodyfont setfont
    } bind def



%
% Function endpage: adds a sheet number to the page (footnote) and prints
% the formatted page (physical impression). Activated at the end of each
% source page (lines reached or FF character).
/endpage
   { /pagenum pagenum 1 add def
        printpage
   } bind def

% Function sheetnumber: prints the sheet number.
/sheetnumber
    { sheetnumberx sheetnumbery moveto
      datefont setfont
      sheet pnum cvs
	 dup stringwidth pop (0) stringwidth pop sub neg 0 rmoveto show
      empty pnum copy pop
    } bind def

% Function s: print a source line
/s  { gsave
        show
      grestore
      0 bodyfontsize neg rmoveto
    } bind def
%%EndProlog

/docsave save def
startdoc
(nein) newfile
/sheet 1 def
%%Page: 1 1
startpage

% - beginning of my HACKS

%
% A new title can be placed here.
% in the original, I exposed the OCA's tactic of
% accusing all who oppose them as being gay.

(     Lon) s
(Mabon is Gay!) s
() s
() s
() s
() s
() s
() s
() s
() s
( Nein on Nine) s

% the origin.
75 100 translate

% the scale (# of points = 1.0 in coordinate system swastika
% drawn in.
.3 .3 scale


.5 setgray
% draw outermost circle around swastika
newpath 0 0 100 45 405 arc closepath fill 

% the color
0 setgray

% the width of the circle
15 setlinewidth

% swastika
gsave
newpath
0 0 moveto
1.5 1.5 scale
35 0 rlineto
0 35 rlineto
-35 -35 rmoveto
90 rotate
35 0 rlineto
0 35 rlineto
-35 -35 rmoveto
90 rotate
35 0 rlineto
0 35 rlineto
-35 -35 rmoveto
90 rotate
35 0 rlineto
0 35 rlineto
-35 -35 rmoveto
90 rotate
stroke
grestore

0 setgray
12 setlinewidth
% draw outermost circle around swastika
newpath 0 0 100 45 405 arc -71 -71 lineto closepath stroke 

1 setgray
10 setlinewidth
% draw outermost circle around swastika
newpath 0 0 100 45 405 arc -71 -71 lineto closepath stroke 

endpage

%%Trailer
cleanup
docsave restore end

----end of poster text----

Any postscript masters out there?

We will win in the end, for our cause is just.

Regards,
	Max G. Webb
Newsgroups: soc.motss