Wine PostScript Driver
======================

When complete this will allow Wine to generate PostScript files without needing
an external printer driver. It should be possible to print to a non PostScript
printer by filtering the output through ghostscript.


Installation
------------

At the moment the driver will only work for 16 bit apps, the move to 32 bit
should be quite easy, I'd just like to improve it first. The driver behaves as
if it were a DRV file called WINEPS.DRV . To install it as the default printer
driver add

device=Wine PostScript Driver,WINEPS,LPT1:

to the [windows] section of win.ini . You may prefer to add

Wine PostScript Driver=WINEPS,LPT1:

to the [devices] section of win.ini instead.

You will need Adobe Font Metric (AFM) files for the (type 1 PostScript) fonts
that you wish to use. You can get these from

ftp://ftp.adobe.com/pub/adobe/type/win/all/afmfiles . The directories base17 or
base35 are good places to start.

Note that these are only the font metrics and not the fonts themselves. At
present the driver does not download additional fonts, so you can only use
fonts that are already present on the printer.

Then create a [afmfiles] section in your wine.conf (or ~/.winerc) and add a
line of the form

file=/unix/path/name/filename.afm

for each AFM file that you wish to use. [This might change in the future]

You also require a PPD file for your printer. This describes certain
characteristics of the printer such as which fonts are installed, how to select
manual feed etc. Adobe also has many of these on its website, have a look in
ftp://ftp.adobe.com/pub/adobe/printerdrivers/win/all/
Put the PPD in the directory from which you start wine and call it default.ppd
[this will definitely change soon].

To enable colour printing you need to have the *ColorDevice entry in the PPD
set to true, otherwise the driver will generate greyscale.

Note that you need not set printer=on in the [wine] section of wine.conf, this
enables printing via external printer drivers and does not affect wineps.

If you're lucky you should now be able to produce PS files from Wine!

I've tested it with win3.1 notepad/write, Winword6 and Origin4.0 with some
degree of success - you should be able to get something out, it may not be in
the right place.

TODO / Bugs
-----------

Driver does read PPD files, but ignores all constraints and doesn't let you
specify whether you have optional extras such as envelope feeders. You will
therefore find a larger than normal selection of input bins in the print setup
dialog box. I've only really tested ppd parsing on the hp4m6_v1.ppd file.

No TrueType download.

StretchDIBits uses level 2 PostScript.

AdvancedSetup dialog box.

Many partially implemented functions.

ps.c is becoming messy.

No clipping.

Notepad often starts text too far to the left depending on the margin
settings. However the win3.1 pscript.drv (under wine) also does this.

Probably many more...

Since the driver is very alpha, things are likely to change quickly.
Please contact me if you want to help so that we can avoid duplication.

Huw Davies <h.davies1@physics.ox.ac.uk>
