PS driver font substitution table

Ian Pilcher ian.pilcher at home.com
Sun Apr 1 03:07:43 CDT 2001


At last!  Here is a patch to implement a font substitution table in the
Wine PostScript driver, along with a couple of other registry-related
changes.

Note that all registry entries are relative to:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\
    Printers\<printer name>

The font substitution table is a subkey of the form:

    [...\PrinterDriverData\FontSubTable]
    <Windows font>=<PostScript font>
    <Windows font>=<PostScript font>
    ...

For example, the patch updates documentation/psdrv.reg to include the
following default substitution table:

    [...\PrinterDriverData\FontSubTable]
    "Courier New"="Courier"
    "Arial"="Helvetica"
    "Helv"="Helvetica"
    "Times New Roman"="Times"

Other changes:

    *  The driver now looks for a PPD file name in each printer's
       registry section.  See documentation/psdrv.reg for details.

       (The updated driver will NOT read the PPD file name from
       ~/.wine/config, so I have changed documentation/printing.sgml
       to reflect this; I also mention using [afmdirs] instead of
       [afmfiles].  This patch includes Francois Gouget's suggested
       changes to make printing.sgml actually get built.)

    *  The driver will now read a default paper size from the
       registry.  For example,

           [...\PrinterDriverData]
           "Paper Size"=dword:00000001

       will set the default paper size to letter.  (See
       include/wingdi.h for possible values.)

Changelog:

    * Ian Pilcher <ian.pilcher at home.com>

      dlls/wineps/Makefile.in, font.c, init.c, psdrv.h, wineps.spec
      documentation/configuring.sgml, fonts.sgml, printing.sgml,
          psdrv.reg, wine-doc.sgml, wine-user.sgml

      Various registry-related PostScript driver enhancements

-- 
========================================================================
Ian Pilcher                                         ian.pilcher at home.com
========================================================================
-------------- next part --------------
diff -ru ../wine-20010326cvs/dlls/wineps/Makefile.in ./dlls/wineps/Makefile.in
--- ../wine-20010326cvs/dlls/wineps/Makefile.in	Sat Nov  4 22:53:17 2000
+++ ./dlls/wineps/Makefile.in	Mon Mar 26 20:25:49 2001
@@ -5,7 +5,7 @@
 MODULE    = wineps
 SOVERSION = 1.0
 ALTNAMES  = wineps16
-IMPORTS   = user32 gdi32 kernel32 ntdll
+IMPORTS   = user32 gdi32 kernel32 ntdll winspool.drv
 
 C_SRCS = \
 	afm.c \
diff -ru ../wine-20010326cvs/dlls/wineps/font.c ./dlls/wineps/font.c
--- ../wine-20010326cvs/dlls/wineps/font.c	Fri Mar 16 10:43:14 2001
+++ ./dlls/wineps/font.c	Mon Mar 26 20:25:49 2001
@@ -74,6 +74,29 @@
 	}
     }
 
+    if (physDev->pi->FontSubTableSize != 0)
+    {
+	DWORD i;
+
+	for (i = 0; i < physDev->pi->FontSubTableSize; ++i)
+	{
+	    if (!strcasecmp (FaceName,
+		    physDev->pi->FontSubTable[i].pValueName))
+	    {
+		TRACE ("substituting facename '%s' for '%s'\n",
+			(LPSTR) physDev->pi->FontSubTable[i].pData, FaceName);
+		if (strlen ((LPSTR) physDev->pi->FontSubTable[i].pData) <
+			LF_FACESIZE)
+		    strcpy (FaceName,
+			    (LPSTR) physDev->pi->FontSubTable[i].pData);
+		else
+		    WARN ("Facename '%s' is too long; ignoring substitution\n",
+			    (LPSTR) physDev->pi->FontSubTable[i].pData);
+		break;
+	    }
+	}
+    }
+
     TRACE("Trying to find facename '%s'\n", FaceName);
 
     /* Look for a matching font family */
diff -ru ../wine-20010326cvs/dlls/wineps/init.c ./dlls/wineps/init.c
--- ../wine-20010326cvs/dlls/wineps/init.c	Mon Mar 19 19:55:18 2001
+++ ./dlls/wineps/init.c	Mon Mar 26 20:25:49 2001
@@ -416,18 +416,17 @@
 }
 
 
-	
-
 /**********************************************************************
  *		PSDRV_FindPrinterInfo
  */
 PRINTERINFO *PSDRV_FindPrinterInfo(LPCSTR name) 
 {
     static PRINTERINFO *PSDRV_PrinterList;
-    DWORD type = REG_BINARY, needed, res;
+    DWORD type = REG_BINARY, needed, res, dwPaperSize;
     PRINTERINFO *pi = PSDRV_PrinterList, **last = &PSDRV_PrinterList;
     FONTNAME *font;
     AFM *afm;
+    HANDLE hPrinter;
 
     TRACE("'%s'\n", name);
     
@@ -454,10 +453,134 @@
 			  (LPBYTE)pi->Devmode, needed, &needed);
     }
 
-    PROFILE_GetWineIniString("psdrv", "ppdfile", "default.ppd",
-                             pi->Devmode->dmDrvPrivate.ppdFileName, 256);
+    if (OpenPrinterA (pi->FriendlyName, &hPrinter, NULL) == 0)
+    {
+	ERR ("OpenPrinterA failed with code %li\n", GetLastError ());
+	if (HeapFree (PSDRV_Heap, 0, pi->FriendlyName) == 0)
+	    WARN ("HeapFree failed with code %li\n", GetLastError ());
+	if (HeapFree (PSDRV_Heap, 0, pi->Devmode) == 0)
+	    WARN ("HeapFree failed with code %li\n", GetLastError ());
+	if (HeapFree (PSDRV_Heap, 0, pi) == 0)
+	    WARN ("HeapFree failed with code %li\n", GetLastError ());
+	*last = NULL;
+	return NULL;
+    }
+
+    res = GetPrinterDataA (hPrinter, "PPD File", NULL,
+	    pi->Devmode->dmDrvPrivate.ppdFileName, 256, &needed);
+    if (res != ERROR_SUCCESS)
+    {
+	ERR ("Error %li getting PPD file name for printer '%s'\n", res, name);
+	if (ClosePrinter (hPrinter) == 0)
+	    WARN ("ClosePrinter failed with code %li\n", GetLastError ());
+        if (HeapFree(PSDRV_Heap, 0, pi->FriendlyName) == 0)
+	    WARN ("HeapFree failed with code %li\n", GetLastError ());
+        if (HeapFree(PSDRV_Heap, 0, pi->Devmode) == 0)
+	    WARN ("HeapFree failed with code %li\n", GetLastError ());
+        if (HeapFree(PSDRV_Heap, 0, pi) == 0)
+	    WARN ("HeapFree failed with code %li\n", GetLastError ());
+	*last = NULL;
+	return NULL;
+    }
+
+    res = GetPrinterDataA (hPrinter, "Paper Size", NULL, (LPBYTE) &dwPaperSize,
+	    sizeof (DWORD), &needed);
+    if (res == ERROR_SUCCESS)
+	pi->Devmode->dmPublic.u1.s1.dmPaperSize = (SHORT) dwPaperSize;
+    else if (res == ERROR_FILE_NOT_FOUND)
+	TRACE ("No 'Paper Size' for printer '%s'\n", name);
+    else
+    {
+	ERR ("GetPrinterDataA returned %li\n", res);
+	if (ClosePrinter (hPrinter) == 0)
+	    WARN ("ClosePrinter failed with code %li\n", GetLastError ());
+        if (HeapFree(PSDRV_Heap, 0, pi->FriendlyName) == 0)
+	    WARN ("HeapFree failed with code %li\n", GetLastError ());
+        if (HeapFree(PSDRV_Heap, 0, pi->Devmode) == 0)
+	    WARN ("HeapFree failed with code %li\n", GetLastError ());
+        if (HeapFree(PSDRV_Heap, 0, pi) == 0)
+	    WARN ("HeapFree failed with code %li\n", GetLastError ());
+	*last = NULL;
+	return NULL;
+    }
+
+    res = EnumPrinterDataExA (hPrinter, "PrinterDriverData\\FontSubTable", NULL,
+	    0, &needed, &pi->FontSubTableSize);
+    if (res == ERROR_SUCCESS)
+	TRACE ("No 'FontSubTable' for printer '%s'\n", name);
+    else if (res == ERROR_MORE_DATA)
+    {
+	pi->FontSubTable = HeapAlloc (PSDRV_Heap, 0, needed);
+	if (pi->FontSubTable == NULL)
+	{
+	    ERR ("Failed to allocate %li bytes from heap\n", needed);
+	    if (ClosePrinter (hPrinter) == 0)
+		WARN ("ClosePrinter failed with code %li\n", GetLastError ());
+            if (HeapFree(PSDRV_Heap, 0, pi->FriendlyName) == 0)
+		WARN ("HeapFree failed with code %li\n", GetLastError ());
+            if (HeapFree(PSDRV_Heap, 0, pi->Devmode) == 0)
+		WARN ("HeapFree failed with code %li\n", GetLastError ());
+            if (HeapFree(PSDRV_Heap, 0, pi) == 0)
+		WARN ("HeapFree failed with code %li\n", GetLastError ());
+	    *last = NULL;
+	    return NULL;
+	}
+
+	res = EnumPrinterDataExA (hPrinter, "PrinterDriverData\\FontSubTable",
+		(LPBYTE) pi->FontSubTable, needed, &needed,
+		&pi->FontSubTableSize);
+	if (res != ERROR_SUCCESS)
+	{
+	    ERR ("EnumPrinterDataExA returned %li\n", res);
+	    if (ClosePrinter (hPrinter) == 0)
+		WARN ("ClosePrinter failed with code %li\n", GetLastError ());
+	    if (HeapFree (PSDRV_Heap, 0, pi->FontSubTable) == 0)
+		WARN ("HeapFree failed with code %li\n", GetLastError ());
+            if (HeapFree(PSDRV_Heap, 0, pi->FriendlyName) == 0)
+		WARN ("HeapFree failed with code %li\n", GetLastError ());
+            if (HeapFree(PSDRV_Heap, 0, pi->Devmode) == 0)
+		WARN ("HeapFree failed with code %li\n", GetLastError ());
+            if (HeapFree(PSDRV_Heap, 0, pi) == 0)
+		WARN ("HeapFree failed with code %li\n", GetLastError ());
+	    *last = NULL;
+	    return NULL;
+	}
+    }
+    else	/* error in 1st call to EnumPrinterDataExA */
+    {
+	ERR ("EnumPrinterDataExA returned %li\n", res);
+	if (ClosePrinter (hPrinter) == 0)
+	    WARN ("ClosePrinter failed with code %li\n", GetLastError ());
+        if (HeapFree(PSDRV_Heap, 0, pi->FriendlyName) == 0)
+	    WARN ("HeapFree failed with code %li\n", GetLastError ());
+        if (HeapFree(PSDRV_Heap, 0, pi->Devmode) == 0)
+	    WARN ("HeapFree failed with code %li\n", GetLastError ());
+        if (HeapFree(PSDRV_Heap, 0, pi) == 0)
+	    WARN ("HeapFree failed with code %li\n", GetLastError ());
+	*last = NULL;
+	return NULL;
+    }
+
+    if (ClosePrinter (hPrinter) == 0)
+    {
+	ERR ("ClosePrinter failed with code %li\n", GetLastError ());
+	if (ClosePrinter (hPrinter) == 0)
+	    WARN ("ClosePrinter failed with code %li\n", GetLastError ());
+	if (HeapFree (PSDRV_Heap, 0, pi->FontSubTable) == 0)
+	    WARN ("HeapFree failed with code %li\n", GetLastError ());
+        if (HeapFree(PSDRV_Heap, 0, pi->FriendlyName) == 0)
+	    WARN ("HeapFree failed with code %li\n", GetLastError ());
+        if (HeapFree(PSDRV_Heap, 0, pi->Devmode) == 0)
+	    WARN ("HeapFree failed with code %li\n", GetLastError ());
+        if (HeapFree(PSDRV_Heap, 0, pi) == 0)
+	    WARN ("HeapFree failed with code %li\n", GetLastError ());
+	*last = NULL;
+	return NULL;
+    }
+
     pi->ppd = PSDRV_ParsePPD(pi->Devmode->dmDrvPrivate.ppdFileName);
     if(!pi->ppd) {
+	HeapFree(PSDRV_Heap, 0, pi->FontSubTable);
         HeapFree(PSDRV_Heap, 0, pi->FriendlyName);
         HeapFree(PSDRV_Heap, 0, pi->Devmode);
         HeapFree(PSDRV_Heap, 0, pi);
Only in ./dlls/wineps: init.c~
diff -ru ../wine-20010326cvs/dlls/wineps/psdrv.h ./dlls/wineps/psdrv.h
--- ../wine-20010326cvs/dlls/wineps/psdrv.h	Fri Mar 16 10:43:14 2001
+++ ./dlls/wineps/psdrv.h	Mon Mar 26 20:25:49 2001
@@ -12,6 +12,7 @@
 #include "pen.h"
 #include "brush.h"
 #include "wine/wingdi16.h"
+#include "winspool.h"
 
 typedef struct {
     float	llx, lly, urx, ury;
@@ -163,11 +164,13 @@
 } PSDRV_DEVMODEA;
 
 typedef struct _tagPI {
-    char		*FriendlyName;
-    PPD			*ppd;
-    PSDRV_DEVMODEA	*Devmode;
-    FONTFAMILY		*Fonts;
-    struct _tagPI	*next;
+    char		    *FriendlyName;
+    PPD			    *ppd;
+    PSDRV_DEVMODEA	    *Devmode;
+    FONTFAMILY		    *Fonts;
+    PPRINTER_ENUM_VALUESA   FontSubTable;
+    DWORD		    FontSubTableSize;
+    struct _tagPI	    *next;
 } PRINTERINFO;
 
 typedef struct {
@@ -379,6 +382,7 @@
 				      WORD fwCapability, LPSTR lpszOutput,
 				      LPDEVMODEA lpdm);
 VOID PSDRV_DrawLine( DC *dc );
+
 #endif
 
 
diff -ru ../wine-20010326cvs/dlls/wineps/wineps.spec ./dlls/wineps/wineps.spec
--- ../wine-20010326cvs/dlls/wineps/wineps.spec	Sat Nov  4 22:53:17 2000
+++ ./dlls/wineps/wineps.spec	Mon Mar 26 20:25:49 2001
@@ -7,5 +7,6 @@
 import	gdi32.dll
 import	kernel32.dll
 import	ntdll.dll
+import	winspool.drv
 
 debug_channels (psdrv)
diff -ru ../wine-20010326cvs/documentation/configuring.sgml ./documentation/configuring.sgml
--- ../wine-20010326cvs/documentation/configuring.sgml	Thu Jan 18 17:03:47 2001
+++ ./documentation/configuring.sgml	Mon Mar 26 20:26:22 2001
@@ -1850,6 +1850,10 @@
         Good luck.
       </para>
     </sect1>
+
+    &fonts;
+    &printing;
+
   </chapter>
 
 <!-- Keep this comment at the end of the file
diff -ru ../wine-20010326cvs/documentation/fonts.sgml ./documentation/fonts.sgml
--- ../wine-20010326cvs/documentation/fonts.sgml	Thu Jan 18 17:03:47 2001
+++ ./documentation/fonts.sgml	Mon Mar 26 20:26:22 2001
@@ -1,7 +1,7 @@
-  <chapter id="fonts">
+  <sect1 id="fonts">
     <title>Dealing with Fonts</title>
 
-    <sect1 id="windows-fonts">
+    <sect2 id="windows-fonts">
       <title>Fonts</title>
 
       <para>
@@ -23,7 +23,7 @@
         </note>
       </para>
 
-      <sect2>
+      <sect3>
         <title>How To Convert Windows Fonts</title>
         <para>
           If you have access to a Windows installation you should use
@@ -109,9 +109,9 @@
           However, there is a possibility of the native TrueType
           support via FreeType renderer in the future (hint, hint :-)
         </para>
-      </sect2>
+      </sect3>
 
-      <sect2>
+      <sect3>
         <title>How To Add Font Aliases To <filename>~/.wine/config</filename></title>
         <para>
           Many Windows applications assume that fonts included in
@@ -323,9 +323,9 @@
           <filename>../fonts/Type1</filename> and
           <filename>../fonts/Speedo</filename> directories.
         </para>
-      </sect2>
+      </sect3>
 
-      <sect2>
+      <sect3>
         <title>How To Manage Cached Font Metrics</title>
         <para>
           WINE stores detailed information about available fonts in
@@ -342,9 +342,9 @@
           <filename>~/.wine/.cachedmetrics</filename> with  the new
           information. This process can take a while.
         </para>
-      </sect2>
+      </sect3>
 
-      <sect2>
+      <sect3>
         <title>Too Small Or Too Large Fonts</title>
         <para>
           Windows programs may ask WINE to render a font with the
@@ -363,9 +363,9 @@
           experiment with values in the 60 - 120 range. 96 is a good
           starting point.
         </para>
-      </sect2>
+      </sect3>
 
-      <sect2>
+      <sect3>
         <title>"FONT_Init: failed to load ..." Messages On Startup</title>
         <para>
           The most likely cause is a broken
@@ -376,10 +376,10 @@
           machine as you are not root, use <command>xset -fp
             xxx</command> to remove the broken font path.
         </para>
-      </sect2>
-    </sect1>
+      </sect3>
+    </sect2>
 
-    <sect1 id="ttfont-server">
+    <sect2 id="ttfont-server">
     <title>Setting up a TrueType Font Server</title>
       <para>
         written by ???
@@ -486,9 +486,9 @@
       <para>
         Hope this helps...
     </para>
-  </sect1>
+  </sect2>
 
-</chapter>
+</sect1>
 
 <!-- Keep this comment at the end of the file
 Local variables:
diff -ru ../wine-20010326cvs/documentation/printing.sgml ./documentation/printing.sgml
--- ../wine-20010326cvs/documentation/printing.sgml	Thu Jan 18 17:03:47 2001
+++ ./documentation/printing.sgml	Mon Mar 26 20:26:31 2001
@@ -1,8 +1,8 @@
-  <chapter id="printing">
+  <sect1 id="printing">
     <title>Printing in Wine</title>
     <para>How to print documents in Wine...</para>
 
-    <sect1 id="wine-printing">
+    <sect2 id="wine-printing">
       <title>Printing</title>
 
       <para>
@@ -33,7 +33,7 @@
 	their Windows printer drivers.  It is unclear whether they ever will.
       </para>
 
-      <sect2>
+      <sect3>
         <title>External printer drivers</title>
         <para>
           At present only 16 bit drivers will work (note that these include win9x
@@ -55,19 +55,18 @@
           to the [TrueType] section of <filename>~/.wine/config</filename>. The code for
           the driver interface is in <filename>graphics/win16drv</filename>.
         </para>
-      </sect2>
+      </sect3>
 
-      <sect2>
+      <sect3>
         <title>Builtin Wine PostScript driver</title>
         <para>
           Enables printing of PostScript files via a driver built into Wine. See
-          <filename>documentation/psdriver</filename> for installation
-          instructions. The code for the PostScript driver is in
-          <filename>graphics/psdrv</filename>.
+          below for installation instructions. The code for the PostScript
+	  driver is in <filename>graphics/psdrv</filename>.
         </para>
-      </sect2>
+      </sect3>
 
-      <sect2>
+      <sect3>
         <title>Spooling</title>
         <para>
           Spooling is rather primitive. The [spooler] section of
@@ -85,10 +84,10 @@
           with that port's name e.g. for <systemitem>LPT3:</systemitem> a file
           called <systemitem>LPT3:</systemitem> would be created.
         </para>
-      </sect2>
-    </sect1>
+      </sect3>
+    </sect2>
 
-    <sect1 id="psdriver">
+    <sect2 id="psdriver">
       <title>The Wine PostScript Driver</title>
 
       <para>
@@ -104,7 +103,7 @@
         non PostScript printer by filtering the output through ghostscript.
       </para>
 
-      <sect2>
+      <sect3>
         <title>Installation</title>
         <para>
           The driver behaves as if it were a DRV file called
@@ -136,16 +135,34 @@
           <emphasis>[sic]</emphasis>
         </para>
         <para>
-          To run 32 bit apps (and 16 bit apps using the
-          <literal>builtin</literal> commdlg) you also need to add certain
-          entries to the registry.  The easiest way to do that at the moment is
-          to use the winelib program <command>programs/regapi/regapi</command>
-          with the file <filename>documentation/psdrv.reg</filename>.  To do this
-          <command>cd</command> to <filename>programs/regapi/regapi</filename>
-          and type <userinput>make</userinput> to actually make the program, then
-          type <userinput>./regapi setValue
-            &lt;../../documentation/psdrv.reg</userinput>.  You can obviously
-          edit <filename>psdrv.reg</filename> to suit your requirements.
+	  You also need to add certain entries to the registry.  The easiest way
+	  to do this is to customise the contents of
+	  <filename>documentation/psdrv.reg</filename> (see below) and use the
+	  Winelib program <command>programs/regapi/regapi</command>.  For
+	  example, if you have installed the Wine source tree in
+	  <filename>/usr/src/wine</filename>, you could use the following
+	  series of commands:
+	  <itemizedlist>
+	    <listitem>
+	      <para>
+		<userinput>cp /usr/src/wine/documentation/psdrv.reg ~</userinput>
+	      </para>
+	    </listitem>
+	    <listitem>
+	      <para><userinput>vi ~/psdrv.reg</userinput></para>
+	    </listitem>
+	    <listitem>
+	      <para>
+		Edit the copy of <filename>psdrv.reg</filename> to suit your
+		requirements.  At a minimum, you must specify a PPD file for
+		each printer.
+	      </para>
+	    </listitem>
+	      <para>
+		<userinput>regapi setValue &lt; ~/psdrv.reg</userinput>
+	      </para>
+	    </listitem>
+	  </itemizedlist>
         </para>
         <para>
           You will need Adobe Font Metric (AFM) files for the (type 1 PostScript)
@@ -156,35 +173,33 @@
           are good places to start. Note that these are only the font metrics and
           not the fonts themselves. At the moment the driver does not download
           additional fonts, so you can only use fonts that are already present on
-          the printer.
+          the printer.  (Actually, the driver can use any font that is listed in
+	  the PPD file, for which it has an AFM file.  If you use fonts that are
+	  <emphasis>not</emphasis> installed in your printer, or in
+	  Ghostscript, you will need to use some means of embedding the font in
+	  the print job or downloading the font to the printer.  Note also that
+	  the driver does not yet properly list required fonts in its DSC
+	  comments, so a print manager that depends on these comments to
+	  download the proper fonts to the printer may not work properly.)
         </para>
         <para>
-          Then create a [afmfiles] section in your
+          Then create a [afmdirs] section in your
           <filename>wine.conf</filename> (or
           <filename>~/.wine/config</filename>) and add a line of the form
         </para>
         <screen>
-"file&lt;n&gt;" = "/unix/path/name/filename.afm"
+"dir&lt;n&gt;" = "/unix/path/name/"
         </screen>
         <para>
-          for each AFM file that you wish to use. [This might change in the future]
+          for each directory that contains AFM files you wish to use.
         </para>
         <para>
           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 <ulink url="ftp://ftp.adobe.com/pub/adobe/printerdrivers/win/all/">
-            ftp://ftp.adobe.com/pub/adobe/printerdrivers/win/all/</ulink>. Create
-          a [psdrv] section in your <filename>wine.conf</filename> (or
-          <filename>~/.wine/config</filename>) and add the  following entry:
-        </para>
-        <screen>
-"ppdfile" = "/somewhere/file.ppd"
-        </screen>
-        <para>
-          By default, the driver will look for a file named
-          <filename>default.ppd</filename> in the directory from which
-          you started wine.
+          ftp://ftp.adobe.com/pub/adobe/printerdrivers/win/all/</ulink>. See
+	  above for information on configuring the driver to use this file.
         </para>
         <para>
           To enable colour printing you need to have the
@@ -196,7 +211,7 @@
           Note that you need not set <literal>printer=on</literal> in
           the [wine] section of <filename>wine.conf</filename>, this
           enables printing via external printer drivers and does not
-          affect wineps.
+          affect the builtin PostScript driver.
         </para>
         <para>
           If you're lucky you should now be able to produce PS files
@@ -208,9 +223,9 @@
           Powerpoint2000 with some degree of success - you should be
           able to get something out, it may not be in the right place.
         </para>
-      </sect2>
+      </sect3>
 
-      <sect2>
+      <sect3>
         <title>TODO / Bugs</title>
 
         <itemizedlist>
@@ -258,9 +273,9 @@
         <para>
           &name-huw-davies; <email>&email-huw-davies;</email>
         </para>
-      </sect2>
-    </sect1>
-  </chapter>
+      </sect3>
+    </sect2>
+  </sect1>
 
 <!-- Keep this comment at the end of the file
 Local variables:
diff -ru ../wine-20010326cvs/documentation/psdrv.reg ./documentation/psdrv.reg
--- ../wine-20010326cvs/documentation/psdrv.reg	Sat Nov 13 14:55:31 1999
+++ ./documentation/psdrv.reg	Mon Mar 26 20:30:30 2001
@@ -10,6 +10,15 @@
 "Status"="dword:00000000"
 "Until Time"="dword:00000000"
 
+[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers\Wine PostScript Driver\PrinterDriverData]
+"PPD File"="/unix/path/to/PPD/file"
+
+[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers\Wine PostScript Driver\PrinterDriverData\FontSubTable]
+"Courier New"="Courier"
+"Arial"="Helvetica"
+"Helv"="Helvetica"
+"Times New Roman"="Times"
+
 [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Environments\Windows 4.0\Drivers\PS Driver]
 "Configuration File"="WINEPS.DRV"
 "Data File"=""
diff -ru ../wine-20010326cvs/documentation/wine-doc.sgml ./documentation/wine-doc.sgml
--- ../wine-20010326cvs/documentation/wine-doc.sgml	Wed Jan 24 13:36:24 2001
+++ ./documentation/wine-doc.sgml	Mon Mar 26 20:26:22 2001
@@ -10,12 +10,10 @@
 <!entity installing SYSTEM "installing.sgml">
 <!entity configuring SYSTEM "configuring.sgml">
 <!entity registry SYSTEM "registry.sgml">
-<!entity running SYSTEM "running.sgml">
-<!entity bugs SYSTEM "bugs.sgml">
-
-<!-- *** Not currently used (???) *** -->
 <!entity fonts SYSTEM "fonts.sgml">
 <!entity printing SYSTEM "printing.sgml">
+<!entity running SYSTEM "running.sgml">
+<!entity bugs SYSTEM "bugs.sgml">
 
 <!-- *** Entities for Wine Developer Guide *** -->
 <!entity compiling SYSTEM "compiling.sgml">
@@ -79,10 +77,6 @@
     &configuring;
     &running;
     &bugs;
-    <!--
-    &fonts;
-    &printing;
-    -->
   </book>
 
   <!-- *** Wine Developer Guide *** -->
diff -ru ../wine-20010326cvs/documentation/wine-user.sgml ./documentation/wine-user.sgml
--- ../wine-20010326cvs/documentation/wine-user.sgml	Fri Jan 19 14:58:37 2001
+++ ./documentation/wine-user.sgml	Mon Mar 26 20:26:22 2001
@@ -8,13 +8,11 @@
 <!entity getting SYSTEM "getting.sgml">
 <!entity installing SYSTEM "installing.sgml">
 <!entity configuring SYSTEM "configuring.sgml">
-<!entity running SYSTEM "running.sgml">
-<!entity bugs SYSTEM "bugs.sgml">
-
-<!-- *** Not currently used *** -->
 <!entity registry SYSTEM "registry.sgml">
 <!entity fonts SYSTEM "fonts.sgml">
 <!entity printing SYSTEM "printing.sgml">
+<!entity running SYSTEM "running.sgml">
+<!entity bugs SYSTEM "bugs.sgml">
 ]>
 
 <book id="index">
@@ -29,10 +27,5 @@
   &configuring;
   &running;
   &bugs;
-<!--
-  &registry;
-  &fonts;
-  &printing;
--->
 
 </book>


More information about the wine-patches mailing list