I think I see what you're trying to do. You want to move the origin to UpperLeft corner, and then make Y increase DOWN the page, right?
You can't use scale for that. Scale affects the underlying coordinate system. Does that make sense?
When you do a 1 -1 scale, yes, things will flow top-down. But they'll also be upside down, because you've inverted the entire coordinate system.
Think of it this way. What does a font contain? Not just characters, but actual glyphs, little drawings of the letters. Those little drawings use PostScript, and they use moveto, lineto, etc. When you do "scalefont", you are scaling the font coordinate system up to the current transformation matrix (YOUR coordinate system), where everything is flipped on the Y-axis. So, your letters will be drawn upside down.
What you need to do is not flip or negate the Y axis, but only the Y coordinate value. You can do that by, for example, redefining moveto. Here's some sample code:
Code:
%!PS
/setLayout
{ % sets proper page size
% repositions origin to "top left"
% in: pageSizeX pageSizeY
% pageSizeX and pageSizeY are numbers in points
% example: 612 792 or 792 612
/Y exch def
/X exch def
<</PageSize [X Y]>> setpagedevice % Page Size (orientation implicit)
0 Y translate % moves origin to upper-left corner
% need to redefine moveto to invert Y value
/mt /moveto load def % store the "real" moveto
/moveto
{ % now write our own
% on stack Y, X
neg mt % negate the Y, then call real moveto
} bind def
} bind def
792 612 setLayout
/Courier 24 selectfont
0 30 moveto (This near the top) show
0 72 moveto (This an inch "down") show
0 144 moveto (This two inches "down") show
showpage
Thomas D. Greer
Providing PostScript & PDF
Training, Development & Consulting