Author: manolo
Date: 2011-02-15 07:54:06 -0800 (Tue, 15 Feb 2011)
New Revision: 8429
Log:
About PostScript text output under X11: Non-Xft fonts can have a different size 
from that required.
Give to the PostScript font the same size as that used on the display.

Modified:
   branches/branch-1.3/src/Fl_PostScript.cxx
   branches/branch-1.3/src/fl_font_x.cxx

Modified: branches/branch-1.3/src/Fl_PostScript.cxx
===================================================================
--- branches/branch-1.3/src/Fl_PostScript.cxx   2011-02-15 15:47:22 UTC (rev 
8428)
+++ branches/branch-1.3/src/Fl_PostScript.cxx   2011-02-15 15:54:06 UTC (rev 
8429)
@@ -31,6 +31,9 @@
 #include <stdio.h>
 #include <FL/Fl_PostScript.H>
 #include <FL/Fl_Native_File_Chooser.H>
+#if defined(USE_X11) && !USE_XFT
+#include "Fl_Font.H"
+#endif
 
 const char *Fl_PostScript_Graphics_Driver::class_id = 
"Fl_PostScript_Graphics_Driver";
 const char *Fl_PostScript_File_Device::class_id = "Fl_PostScript_File_Device";
@@ -927,12 +930,24 @@
 };
 
 void Fl_PostScript_Graphics_Driver::font(int f, int s) {
+  Fl_Display_Device::display_device()->driver()->font(f,s); // Use display 
fonts for font measurement
+  Fl_Graphics_Driver::font(f, s);
   if (f < FL_FREE_FONT) {
+    int ps_size = s;
     fprintf(output, "/%s SF\n" , _fontNames[f]);
-    fprintf(output,"%i FS\n", s);
+#if defined(USE_X11) && !USE_XFT
+// Non-Xft fonts can have a different size from that required.
+// Give to the PostScript font the same size as that used on the display 
+    Fl_Font_Descriptor *desc = 
Fl_Display_Device::display_device()->driver()->font_descriptor();
+    this->font_descriptor(desc);
+    char *name = desc->font->font_name_list[0];
+    char *p = strstr(name, "--");
+    if (p) {
+      sscanf(p + 2, "%d", &ps_size);
     }
-  Fl_Display_Device::display_device()->driver()->font(f,s); // Use display 
fonts for font measurement
-  Fl_Graphics_Driver::font(f, s);
+#endif
+    fprintf(output,"%i FS\n", ps_size);
+  }
 }
 
 void Fl_PostScript_Graphics_Driver::color(Fl_Color c) {

Modified: branches/branch-1.3/src/fl_font_x.cxx
===================================================================
--- branches/branch-1.3/src/fl_font_x.cxx       2011-02-15 15:47:22 UTC (rev 
8428)
+++ branches/branch-1.3/src/fl_font_x.cxx       2011-02-15 15:54:06 UTC (rev 
8429)
@@ -273,9 +273,9 @@
   if (fnum == Fl_Graphics_Driver::font() && size == 
Fl_Graphics_Driver::size()) return;
   Fl_Graphics_Driver::font(fnum, size);
   Fl_Font_Descriptor* f = find(fnum, size);
-  if (f != fl_graphics_driver->font_descriptor()) {
-    fl_graphics_driver->font_descriptor(f);
-    fl_xfont = current_font->fonts[0];
+  if (f != this->font_descriptor()) {
+    this->font_descriptor(f);
+    fl_xfont = f->font->fonts[0];
     font_gc = 0;
   }
 }

_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit

Reply via email to