[fa.laser-lovers] PostScript hackery

laser-lovers@uw-beaver (07/24/85)

From: Christopher A Kent <cak@Purdue.EDU>

I'm trying to get Purdue's logo (a stylized griffin) out onto our
printer's cover sheets. I have a digitized version and PostScript code
to print it out, but it's terribly slow. I'm defining my own font,
following the example in the cookbook, and it occurs to me that the
printer is probably bit tuning the logo every time it has to create it.
This isn't necessary -- I'd be happy just to get exactly the bits I
gave it back. Is there any way that I can construct the font machinery
code so that this is what happens?

Since the logo is large (about 1 square inch), and it's only used on
the cover page of each job, it doesn't end up in the cache very often.

Thanks,
chris
----------

laser-lovers@uw-beaver (07/24/85)

From: Brian Reid <reid@Glacier>

The companies that sell fonts tend to be paranoid about letting copies
of the font rasters fall into the hands of users. I know that at least
one of the big-name font companies will not license its fonts to laser
printer manufacturers unless they put the fonts into the printer
itself (rather than in some companion software external to the
printer). I believe that the font companies are afraid that someone
will steal their rasters and re-sell them. As Chuck Bigelow has pointed
out several times, U.S. law does not prohibit the theft of fonts (only
the mis-use of trademarked font names), so font companies must resort
to technical schemes to protect their fonts instead of legal schemes.

The bottom line of all this is that you are quite unlikely to find a
way to recover font rasters from any manufacturer's laser printer, in
order to make a logo or anything else. I'm reasonably certain that you
can't do it on a PostScript printer. What I recommend that you do is
to print the logo out in a large size (PostScript will help you here by
letting you scale the logo to fill an 8.5 x 11 page), and then digitize
it. The Macintosh ThunderScan is a very fine digitizer for that kind of
application. You can then feed it to your PostScript printer as a
scanned image instead of a synthetic image.
--
	Brian Reid	decwrl!glacier!reid
	Stanford	reid@SU-Glacier.ARPA

laser-lovers@uw-beaver (07/24/85)

From: Christopher A Kent <cak@Purdue.EDU>

Apparently I didn't make myself very clear in my original message.
Allow me to try again:

Purdue has this stylized griffin as its logo; I'd like to print it on
our PostScript printers' banner page for each job. I've already scanned
it for another project, and have it at about 300 dpi resolution, on
disk. The question is how best to load this into the printer and print
it; "best" in this case means "fastest."

I started off by using the Cookbook example of user-defined fonts to
define my own font based on the scanned image -- using imagemask, as is
done for the turkey character. I load the font definition code (and the
scanned image) into system VM, so it is only sent down once per
power-cycle. Then my banner program merely does a getfont scalefont
setfont and prints the appropriate character.

The problem is that printing the character, even when it's already
loaded into the printer, takes quite a while. This is apparently (based
on experiments involving printing the griffin at various point sizes)
because the printer scales and bit smooths the character every time;
it's a large character, printed infrequently, so it's probably never in
the cache.

I'm happy with the digitization, and don't need to have the image
smoothed. I'm looking for a way to trick the font machinery into not
smoothing the image every time, but just copying the bits I loaded onto
the page (or into the cache) as fast as it can.

Studying the manual last night leads me to believe that I may have gone
about this whole thing in the wrong way -- what I'm going to try today
is a routine that just prints the griffin using imagemask, save that
routine in system VM, and have the banner routine invoke that one. Then
it should end up as just a straight bitcopy (I hope.)

Cheers,
chris
----------

laser-lovers@uw-beaver (07/24/85)

From: Christopher A Kent <cak@Purdue.EDU>

As a postscript (sorry) to my last message, I've tried just doing

100 100 moveto
%
368 384 true [368 0 0 -384 0 384]
{
<
  [hexstring]
>
} imagemask
%
showpage

and always get a blank page. The code between the % signs is exactly
what was called by the BuildChar for my user-defined font that works
perfectly. I'm at a loss ... anyone see the flaw?

Thanks,
chris
----------

laser-lovers@uw-beaver (07/25/85)

From: Neal Holtz <holtz%cascade.carleton.cdn%ubc.csnet@csnet-relay.arpa>

   Re:  flaw calling imagemask

   At least 2 flaws:

   1. imagemask does not deposit image at current point,
      so your first line should read '100 100 translate';

   2. It scans your image into a 1 unit square, so you should have a line
      to scale it, something like:

            368 300 div 72 mul  384 300 div 72 mul scale

      to draw it pixel for pixel;

    What you got was 1 pt by 1 pt image at (0,0) which is off the imageable area.


    Re: your earlier question regarding images:

    I too would like to know if one can persuade PostScript to leave images alone.
    That seems like a fair bit of work, scan-converting all those little
    rectangles onto the page image (in your case 368*384=141312 of them).  Even
    though the LaserWriter, for one, is amazingly fast at doing all that work,
    it would be nice to tell it not to do the work at all.

laser-lovers@uw-beaver (07/27/85)

From: Christopher A Kent <cak@Purdue.EDU>

The code you sent did the trick, but it's still pathetically slow. The
printer must still be doing a lot of work to scale and translate every
pixel of the scanned image. 

There's gotta be a better way to do this. Anyone else care to try?

chris
----------