changeset 25307:f2eb8bfcccb6 stable

Use consistent gnuplot toolkit font syntax allow SVG fractional font size (bug #53737) * print.m: Document the cgm and eepic terminals (gnuplot only). * __gnuplot_print__.m: Condition "background" option on several of the terminal types which otherwise would produce a gnuplot warning. Add terminal type cases "cgm" and "latex" to the list of generic plotting formats. (font_spec): Use the 'font "<name>,<size>"' format in almost all cases, which has been made more consistent in recent gnuplot versions. Remove code that rounds the SVG font size. * __print_parse_opts__.m: Add to the dev_list "canvas", "cgm", "latex" and "eepic" and correspondingly to the suffixes "js", "cgm", "tex" and "tex".
author Daniel J Sebald <daniel.sebald@ieee.org>
date Tue, 24 Apr 2018 14:08:30 -0500
parents a6419af90031
children 74fbe0d91994 7d32780f4dea
files scripts/plot/util/print.m scripts/plot/util/private/__gnuplot_print__.m scripts/plot/util/private/__print_parse_opts__.m
diffstat 3 files changed, 40 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/plot/util/print.m	Tue Apr 24 13:29:20 2018 -0700
+++ b/scripts/plot/util/print.m	Tue Apr 24 14:08:30 2018 -0500
@@ -151,6 +151,10 @@
 ##   @itemx @nospell{corel}
 ##     @nospell{CorelDraw}
 ##
+##   @item cgm
+##     Computer Graphics Metafile, Version 1, ANSI X3.122-1986
+## (only available for the Gnuplot graphics toolkit).
+##
 ##   @item dxf
 ##     AutoCAD
 ##
@@ -165,7 +169,8 @@
 ## (default is @option{-textnormal})
 ##
 ##   @item gif
-##     GIF image (only available for the Gnuplot graphics toolkit)
+##     GIF image
+## (only available for the Gnuplot graphics toolkit).
 ##
 ##   @item hpgl
 ##     HP plotter language
@@ -175,8 +180,9 @@
 ##     JPEG image
 ##
 ##   @item latex
-##     @LaTeX{} picture environment (only available for the Gnuplot graphics
-## toolkit).
+##   @itemx eepic
+##     @LaTeX{} picture environment and extended picture environment
+## (only available for the Gnuplot graphics toolkit).
 ##
 ##   @item mf
 ##     Metafont
--- a/scripts/plot/util/private/__gnuplot_print__.m	Tue Apr 24 13:29:20 2018 -0700
+++ b/scripts/plot/util/private/__gnuplot_print__.m	Tue Apr 24 14:08:30 2018 -0500
@@ -45,12 +45,15 @@
   ## The axes-label and tick-label spacing is determined by
   ## the font spec given in "set terminal ..."
   gp_opts = font_spec (opts);
-  bg = get (opts.figure, "color");
-  if (isnumeric (bg))
-    gp_opts = sprintf ('%s background rgb "#%02x%02x%02x"',
-                       gp_opts, round (255 * bg));
-  else
-    gp_opts = sprintf ("%s nobackground", gp_opts);
+  if (! any (strcmpi (opts.devopt, {"fig", "dxf", "hpgl", "mf", "pstricks", ...
+                                    "texdraw", "latex", "eepic"})))
+    bg = get (opts.figure, "color");
+    if (isnumeric (bg))
+      gp_opts = sprintf ('%s background rgb "#%02x%02x%02x"',
+                         gp_opts, round (255 * bg));
+    else
+      gp_opts = sprintf ("%s nobackground", gp_opts);
+    endif
   endif
 
   pipeline = "";
@@ -144,7 +147,8 @@
                "print.m: '%s' output is not available for gnuplot-%s",
                upper (opts.devopt), __gnuplot_version__ ());
       endif
-    case {"canvas", "dxf", "hpgl", "latex", "mf", "gif", "pstricks", "texdraw"}
+    case {"canvas", "cgm", "dxf", "hpgl", "latex", "mf", "gif", ...
+          "pstricks", "texdraw"}
       if (__gnuplot_has_terminal__ (opts.devopt))
         local_drawnow ([opts.devopt " " gp_opts], opts.name, opts);
       else
@@ -246,7 +250,7 @@
       elseif (! isempty (opts.font))
         f = sprintf ('font "%s"', opts.font);
       elseif (! isempty (opts.fontsize))
-        f = sprintf ("%d", opts.fontsize);
+        f = sprintf ('font ",%d"', opts.fontsize);
       endif
     case {"eps", "eps2", "epsc", "epsc2"}
       ## Gnuplot renders fonts as half their specification, which
@@ -258,19 +262,15 @@
       elseif (! isempty (opts.font))
         f = sprintf ('font "%s"', opts.font);
       elseif (! isempty (opts.fontsize))
-        f = sprintf ("%d", 2 * opts.fontsize);
+        f = sprintf ('font ",%d"', 2 * opts.fontsize);
       endif
     case "svg"
-      ## FIXME: Why does svg format use round on the fontsize while
-      ##        other terminals don't?
       if (! isempty (opts.font) && ! isempty (opts.fontsize))
-        fontsize = round (opts.fontsize * 0.75);
-        f = sprintf ('fname "%s" fsize %d', opts.font, fontsize);
+        f = sprintf ('font "%s,%d"', opts.font, opts.fontsize * 0.75);
       elseif (! isempty (opts.font))
-        f = sprintf ('fname "%s"', opts.font);
+        f = sprintf ('font "%s"', opts.font);
       elseif (! isempty (opts.fontsize))
-        fontsize = round (opts.fontsize * 0.75);
-        f = sprintf ("fsize %d", fontsize);
+        f = sprintf ('font ",%d"', opts.fontsize * 0.75);
       endif
     case "pdf"
       if (! isempty (opts.font) && ! isempty (opts.fontsize))
@@ -305,7 +305,7 @@
       endif
     case {"gif", "jpeg", "png"}
       if (! isempty (opts.font) && ! isempty (opts.fontsize))
-        f = sprintf ('font "%s ,%d"', opts.font, opts.fontsize);
+        f = sprintf ('font "%s,%d"', opts.font, opts.fontsize);
       elseif (! isempty (opts.font))
         f = sprintf ('font "%s"', opts.font);
       elseif (! isempty (opts.fontsize))
@@ -313,31 +313,31 @@
       endif
     case "emf"
       if (! isempty (opts.font) && ! isempty (opts.fontsize))
-        f = sprintf ('"%s" %d', opts.font, opts.fontsize);
+        f = sprintf ('font "%s,%d"', opts.font, opts.fontsize);
       elseif (! isempty (opts.font))
-        f = sprintf ('"%s"', opts.font);
+        f = sprintf ('font "%s"', opts.font);
       elseif (! isempty (opts.fontsize))
-        f = sprintf ("%d", opts.fontsize);
+        f = sprintf ('font ",%d"', opts.fontsize);
       endif
     case "canvas"
       if (! isempty (opts.fontsize))
-        f = sprintf ("fsize %d", opts.fontsize);
+        f = sprintf ('font ",%d"', opts.fontsize);
       endif
     case {"aifm", "corel"}
       if (! isempty (opts.font) && ! isempty (opts.fontsize))
-        f = sprintf ("%s %d", opts.font, opts.fontsize);
+        f = sprintf ('font "%s,%d"', opts.font, opts.fontsize);
       elseif (! isempty (opts.font))
-        f = sprintf ("%s", opts.font);
+        f = sprintf ('font "%s"', opts.font);
       elseif (! isempty (opts.fontsize))
-        f = sprintf ("%d", opts.fontsize);
+        f = sprintf ('font ",%d"', opts.fontsize);
       endif
     case "fig"
       if (! isempty (opts.font) && ! isempty (opts.fontsize))
-        f = sprintf ("font %s fontsize %d", opts.font, opts.fontsize);
+        f = sprintf ('font "%s,%d"', opts.font, opts.fontsize);
       elseif (! isempty (opts.font))
-        f = sprintf ("font %s", opts.font);
+        f = sprintf ('font "%s"', opts.font);
       elseif (! isempty (opts.fontsize))
-        f = sprintf ("fontsize %d", opts.fontsize);
+        f = sprintf ('font ",%d"', opts.fontsize);
       endif
   endswitch
 
--- a/scripts/plot/util/private/__print_parse_opts__.m	Tue Apr 24 13:29:20 2018 -0700
+++ b/scripts/plot/util/private/__print_parse_opts__.m	Tue Apr 24 14:08:30 2018 -0500
@@ -225,7 +225,8 @@
               "epscairo", "pdfcairo", "pngcairo", "cairolatex", ...
               "pdfcairolatex", "pdfcairolatexstandalone", ...
               "epscairolatex", "epscairolatexstandalone", "pstricks", ...
-              "epswrite", "eps2write", "pswrite", "ps2write", "pdfwrite"};
+              "epswrite", "eps2write", "pswrite", "ps2write", "pdfwrite", ...
+              "canvas", "cgm", "latex", "eepic"};
 
   persistent suffixes = {"ai", "cdr", "fig", "png", "jpg", ...
               "gif", "pbm", "pbm", "dxf", "mf", ...
@@ -239,7 +240,8 @@
               "eps", "pdf", "png", "tex", ...
               "tex", "tex", ...
               "tex", "tex", "tex", ...
-              "eps", "eps", "ps", "ps", "pdf"};
+              "eps", "eps", "ps", "ps", "pdf", ...
+              "js", "cgm", "tex", "tex"};
 
   if (isfigure (arg_st.figure))
     __graphics_toolkit__ = get (arg_st.figure, "__graphics_toolkit__");