Am 26.04.2012 11:53, schrieb Brian Potkin:
"Print to File" doesn't use cups. It produces a pdf file with embedded
fonts dictated by the application.

Oh, interesting, I didn't even know.

    The result is the same as I described in my first post - an output
    file which is empty. Substituting the Generic-PostScript PPD file
    from foomatic for the Generic-PDF one (first deleting the test print
    queue) makes no difference.

I have reproduced your steps and... ended up with an actual file in /tmp/printout which has the LiberationMono font embedded:

$ ls -l /tmp/printout
-rw------- 1 root root 49741 Apr 26 13:02 /tmp/printout

$ sudo pdffonts /tmp/printout
name                        type              emb sub uni object ID
--------------------------- ----------------- --- --- --- ---------
MGMUUY+LiberationMono       CID TrueType      yes yes no       8  0

Apologies for the delay in replying but testing a few times took a little
while. My understanding of font behaviour is rudimentary so I'm not very
sure what is going on here. Please let me know if there is anything else
I can do to help.

Could you please get the sources for cups-filters ("sudo apt-get build-dep cups-filters; apt-get source cups-filters"), apply the attached patch ("quilt import /path/to/patch; quilt push") , rebuild the package ("debuild -us -uc") and then install the resulting cups-filters package ("sudo dpkg -i ../cups-filters_1.0.16-2_i386.deb")?

Then please try again and tell us the lines in /var/log/cups/error_log that contain "###".

 - Fabian
--- cups-filters-1.0.16.orig/filter/texttopdf.c
+++ cups-filters-1.0.16/filter/texttopdf.c
@@ -75,6 +75,9 @@ EMB_PARAMS *font_load(const char *font)
       FcPatternGetString  (candidates->fonts[i], FC_FONTFORMAT, 0, &fontformat);
       FcPatternGetInteger (candidates->fonts[i], FC_SPACING,    0, &spacing);
 
+      fprintf(stderr,"### Candidate: %s\n",
+        FcPatternFormat (candidates->fonts[i], (const FcChar8 *)"%{file|cescape}:%{fontformat}:%{spacing}"));
+
       if ( (fontformat)&&(spacing == FC_MONO) ) {
         if (strcmp((const char *)fontformat, "TrueType") == 0) {
           fontname = FcPatternFormat (candidates->fonts[i], (const FcChar8 *)"%{file|cescape}/%{index}");
@@ -86,6 +89,9 @@ EMB_PARAMS *font_load(const char *font)
       }
     }
     FcFontSetDestroy (candidates);
+
+    if (fontname)
+      fprintf(stderr,"### Chosen: %s\n", fontname);
   }
 
   if (!fontname) {

Reply via email to