It looks like, when printing via CUPS, if the PPD file for an installed
printer does not contain entries (usually at the end of the file) like:
*DefaultFont: Courier
*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM
*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM
... (lots more)
Then when Wine goes to create the registry entries for the printers, it
prints out messages like:
To use WINEPS you need to install some AFM files.
fixme:winspool:AddPrinterW DocumentPropertiesW on printer 'L"i560"' fails
To use WINEPS you need to install some AFM files.
And printing with Wine won't work to that printer.
It looks like the PPD files supplied with CUPS contain those entries, so
this is not normally a problem. However, some manufacturers supply PPD
files that do not have them. In particular, Canon supplies a nice
package of files designed for installation into CUPS under Linux:
ftp://download.canon.jp/pub/driver/bj/linux
The package bjcups-2.4.0 contains this, including PPD files. But the
supplied PPD files do not contain the above mentioned entries. Simply
copying those entries from, for example, the Wine supplied generic.ppd
into the Canon supplied PPD file allows the printer to be installed
correctly in Wine and print:
http://www.winehq.org/pipermail/wine-users/2006-July/022856.html
Looking at the PPD spec version 4.3, the "*Font" entries are not part of
the required entries (listed at the beginning of section 5, page 41).
The same section does say that "Every feature of the device that can be
described by a PPD keyword should be included in the PPD file". So it
would appear that Canon perhaps should supply them. On the other hand,
the CUPS supplied cupstestppd flags the file as "PASS".
It seems to me that Wine probably should work in this case. Would it be
acceptable to supply the defaults used in Wine's generic PPD file if
they are not in the one being used? I could take a shot at trying to
code that if it would be acceptable. Otherwise, I could change the error
message to perhaps better explain what the problem is.