diff --git a/gnuplot-4.2.3.tar.bz2 b/gnuplot-4.2.3.tar.bz2 deleted file mode 100644 index e94d151..0000000 --- a/gnuplot-4.2.3.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b0981514eb21605c0f872f4ed3a595e4874b213d9c5f2c4ab1d85e69acd041e8 -size 2315568 diff --git a/gnuplot-4.2.0-demo.dif b/gnuplot-4.2.5-demo.dif similarity index 89% rename from gnuplot-4.2.0-demo.dif rename to gnuplot-4.2.5-demo.dif index aa5da7e..88a2177 100644 --- a/gnuplot-4.2.0-demo.dif +++ b/gnuplot-4.2.5-demo.dif @@ -1,6 +1,6 @@ ---- demo/all.dem -+++ demo/all.dem 2007-08-15 20:54:29.000000000 +0200 -@@ -5,213 +5,213 @@ +--- demo/all.dem 2009-02-19 22:16:03.000000000 +0100 ++++ demo/all.dem 2009-05-09 14:44:57.000000000 +0200 +@@ -5,218 +5,218 @@ # print "******************** file simple.dem ********************" @@ -68,8 +68,10 @@ print "******************** file multiplt.dem ********************" -load "multiplt.dem" -load "layout.dem" +-load "margins.dem" +load "@@GNUPLOTDEMOPATH@@multiplt.dem" +load "@@GNUPLOTDEMOPATH@@layout.dem" ++load "@@GNUPLOTDEMOPATH@@margins.dem" reset print "******************** file surface1.dem ********************" @@ -194,6 +196,11 @@ +load "@@GNUPLOTDEMOPATH@@pm3dgamma.dem" reset + print "********************** file heatmaps.dem ***********************" +-load "heatmaps.dem" ++load "@@GNUPLOTDEMOPATH@@heatmaps.dem" + reset + print "********************** file hidden2.dem ***********************" -load "hidden2.dem" +load "@@GNUPLOTDEMOPATH@@hidden2.dem" @@ -270,8 +277,9 @@ -load "rectangle.dem" +load "@@GNUPLOTDEMOPATH@@rectangle.dem" reset ---- demo/animate.dem -+++ demo/animate.dem 2007-08-15 20:52:01.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/animate.dem demo/animate.dem +--- demo/animate.dem 2006-01-08 00:21:02.000000000 +0100 ++++ demo/animate.dem 2009-05-09 14:44:57.000000000 +0200 @@ -20,7 +20,7 @@ xview(xrot)=(50.+30.*sin((xrot%180)/180.*pi)) zview(zrot)=(60.+45.*sin(zrot/180.*pi)) @@ -288,8 +296,9 @@ -load "gnuplot.rot" +load '@@GNUPLOTDEMOPATH@@gnuplot.rot' reset ---- demo/arrowstyle.dem -+++ demo/arrowstyle.dem 2007-08-15 20:52:01.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/arrowstyle.dem demo/arrowstyle.dem +--- demo/arrowstyle.dem 2003-07-03 02:13:29.000000000 +0200 ++++ demo/arrowstyle.dem 2009-05-09 14:44:57.000000000 +0200 @@ -40,42 +40,42 @@ set title 'Top: plot with vectors arrowstyle 1, Bottom: explicit arrows' @@ -354,8 +363,9 @@ # pause -1 "Hi return to continue" # ---- demo/binary.dem -+++ demo/binary.dem 2007-08-15 20:52:01.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/binary.dem demo/binary.dem +--- demo/binary.dem 2003-10-28 06:35:54.000000000 +0100 ++++ demo/binary.dem 2009-05-09 14:44:57.000000000 +0200 @@ -9,20 +9,20 @@ set xrange [-3:3] @@ -380,8 +390,9 @@ pause -1 "Hit return to continue (3)" reset ---- demo/candlesticks.dem -+++ demo/candlesticks.dem 2007-08-15 20:52:01.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/candlesticks.dem demo/candlesticks.dem +--- demo/candlesticks.dem 2005-03-30 08:02:45.000000000 +0200 ++++ demo/candlesticks.dem 2009-05-09 14:44:57.000000000 +0200 @@ -8,7 +8,7 @@ set yrange [0:10] # @@ -407,8 +418,9 @@ '' using 1:4:4:4:4 with candlesticks lt -1 lw 2 notitle pause -1 "Hit return to continue" # ---- demo/contours.dem -+++ demo/contours.dem 2007-08-15 20:55:56.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/contours.dem demo/contours.dem +--- demo/contours.dem 2006-06-25 19:24:32.000000000 +0200 ++++ demo/contours.dem 2009-05-09 14:44:57.000000000 +0200 @@ -85,13 +85,13 @@ set style data lines set title "3D gnuplot demo - contour of data grid plotting" @@ -425,8 +437,9 @@ pause -1 "Hit return to continue (20)" set view map unset surface ---- demo/datastrings.dem -+++ demo/datastrings.dem 2007-08-15 20:52:01.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/datastrings.dem demo/datastrings.dem +--- demo/datastrings.dem 2009-03-14 01:11:12.000000000 +0100 ++++ demo/datastrings.dem 2009-05-09 14:44:57.000000000 +0200 @@ -17,7 +17,7 @@ set yrange [0:200] # @@ -458,17 +471,17 @@ pause -1 " to plot same data from table format" set title "Plot from table format (titles taken from column headers)" unset x2tics --plot 'table.dat' using ($0-0.2):2 title 2 with boxes, \ -+plot '@@GNUPLOTDEMOPATH@@table.dat' using ($0-0.2):2 title 2 with boxes, \ - '' using ($0+0.2):3 title 3 with boxes, \ - '' using ($0):4 title 4 with linespoints, \ - '' using ($0):5:xtic(1) title 5 with linespoints +-plot 'table.dat' using ($0-0.2):2 title column(2) with boxes, \ ++plot '@@GNUPLOTDEMOPATH@@table.dat' using ($0-0.2):2 title column(2) with boxes, \ + '' using ($0+0.2):3 title column(3) with boxes, \ + '' using ($0):4 title column(4) with linespoints, \ + '' using ($0):5:xtic(1) title column(5) with linespoints @@ -63,7 +63,7 @@ pause -1 " to show double use of y values" # set title "Plot actual y-value as a label" --plot 'table.dat' using 0:2 title 2 with boxes, \ -+plot '@@GNUPLOTDEMOPATH@@table.dat' using 0:2 title 2 with boxes, \ +-plot 'table.dat' using 0:2 title columnhead with boxes, \ ++plot '@@GNUPLOTDEMOPATH@@table.dat' using 0:2 title columnhead with boxes, \ '' using 0:2:2 with labels center offset 0,1 notitle # pause -1 " continue" @@ -497,8 +510,9 @@ +load '@@GNUPLOTDEMOPATH@@starmap.dem' # pause -1 " to end demo" ---- demo/fillbetween.dem -+++ demo/fillbetween.dem 2007-08-15 20:52:01.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/fillbetween.dem demo/fillbetween.dem +--- demo/fillbetween.dem 2004-07-09 02:32:34.000000000 +0200 ++++ demo/fillbetween.dem 2009-05-09 14:44:57.000000000 +0200 @@ -8,7 +8,7 @@ set style data lines set xrange [10:*] @@ -517,8 +531,9 @@ '' u 1:2:($3+$1/50.) w filledcurves below title 'Below', \ '' u 1:2 lt -1 lw 2 title 'curve 1', \ '' u 1:($3+$1/50.) lt 3 lw 2 title 'curve 2' ---- demo/fit.dem -+++ demo/fit.dem 2007-08-15 20:52:01.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/fit.dem demo/fit.dem +--- demo/fit.dem 2004-09-25 05:39:20.000000000 +0200 ++++ demo/fit.dem 2009-05-09 14:44:57.000000000 +0200 @@ -5,65 +5,66 @@ print "Some examples how data fitting using nonlinear least squares fit" print "can be done." @@ -734,8 +749,9 @@ pause -1 "Hit return to continue" set title 'fitted parameters' replot ---- demo/hidden.dem -+++ demo/hidden.dem 2007-08-15 20:52:01.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/hidden.dem demo/hidden.dem +--- demo/hidden.dem 2003-10-28 06:35:54.000000000 +0100 ++++ demo/hidden.dem 2009-05-09 14:44:57.000000000 +0200 @@ -48,7 +48,7 @@ # autoranging loses the verticals set xrange [0:15] @@ -745,56 +761,19 @@ pause -1 "Hit return to continue (6)" set view 50 ---- demo/histograms2.dem -+++ demo/histograms2.dem 2007-08-15 20:52:01.000000000 +0200 -@@ -25,7 +25,7 @@ - # - plot \ - newhistogram "Northern Europe", \ --'immigration.dat' using 6:xtic(1) t 6, '' u 13 t 13, '' u 14 t 14, \ -+'@@GNUPLOTDEMOPATH@@immigration.dat' using 6:xtic(1) t 6, '' u 13 t 13, '' u 14 t 14, \ - newhistogram "Southern Europe", \ - '' u 9:xtic(1) t 9, '' u 17 t 17, '' u 22 t 22, \ - newhistogram "British Isles", \ -@@ -35,7 +35,7 @@ - set title "Explicit start color in 'newhistogram' command" - plot \ - newhistogram "Northern Europe" lt 4, \ --'immigration.dat' using 6:xtic(1) t 6, '' u 13 t 13, '' u 14 t 14, \ -+'@@GNUPLOTDEMOPATH@@immigration.dat' using 6:xtic(1) t 6, '' u 13 t 13, '' u 14 t 14, \ - newhistogram "Southern Europe" lt 4, \ - '' u 9:xtic(1) t 9, '' u 17 t 17, '' u 22 t 22, \ - newhistogram "British Isles" lt 4, \ -@@ -47,7 +47,7 @@ - set style fill pattern 1 border -1 - plot \ - newhistogram "Northern Europe" fs pattern 1, \ --'immigration.dat' using 6:xtic(1) t 6, '' u 13 t 13, '' u 14 t 14, \ -+'@@GNUPLOTDEMOPATH@@immigration.dat' using 6:xtic(1) t 6, '' u 13 t 13, '' u 14 t 14, \ - newhistogram "Southern Europe" fs pattern 1, \ - '' u 9:xtic(1) t 9, '' u 17 t 17, '' u 22 t 22, \ - newhistogram "British Isles" fs pattern 1, \ -@@ -59,7 +59,7 @@ - set style fill pattern 1 border -1 - plot \ - newhistogram "Northern Europe" lt 2 fs pattern 1, \ --'immigration.dat' using 6:xtic(1) t 6, '' u 13 t 13, '' u 14 t 14, \ -+'@@GNUPLOTDEMOPATH@@immigration.dat' using 6:xtic(1) t 6, '' u 13 t 13, '' u 14 t 14, \ - newhistogram "Southern Europe" lt 2 fs pattern 1, \ - '' u 9:xtic(1) t 9, '' u 17 t 17, '' u 22 t 22, \ - newhistogram "British Isles" lt 2 fs pattern 1, \ ---- demo/histograms.dem -+++ demo/histograms.dem 2007-08-15 20:56:59.000000000 +0200 -@@ -8,7 +8,7 @@ - # +diff -U 3 -H -d -r -N -- demo/histograms.dem demo/histograms.dem +--- demo/histograms.dem 2009-03-14 01:11:12.000000000 +0100 ++++ demo/histograms.dem 2009-05-09 14:44:57.000000000 +0200 +@@ -9,7 +9,7 @@ # First plot using linespoints set style data linespoints --plot 'immigration.dat' using 2:xtic(1) t 2, \ -+plot '@@GNUPLOTDEMOPATH@@immigration.dat' using 2:xtic(1) t 2, \ - '' u 3 t 3, '' u 4 t 4, '' u 5 t 5, '' u 6 t 6, \ - '' u 7 t 7, '' u 8 t 8, '' u 9 t 9, '' u 10 t 10, \ - '' u 11 t 11, '' u 12 t 12, '' u 13 t 13, '' u 14 t 14, \ -@@ -26,7 +26,7 @@ + set key autotitle columnhead +-plot 'immigration.dat' using 2:xtic(1), \ ++plot '@@GNUPLOTDEMOPATH@@immigration.dat' using 2:xtic(1), \ + '' u 3, '' u 4, '' u 5, '' u 6, \ + '' u 7, '' u 8, '' u 9, '' u 10, \ + '' u 11, '' u 12, '' u 13, '' u 14, \ +@@ -27,7 +27,7 @@ set boxwidth 0.9 set xtic rotate by -45 #set bmargin 10 @@ -803,7 +782,7 @@ # pause -1 " to change the gap between clusters" # -@@ -51,7 +51,7 @@ +@@ -52,7 +52,7 @@ set style fill solid border -1 set boxwidth 0.75 # @@ -812,16 +791,16 @@ '' using 3, \ '' using 4, \ '' using 5, \ -@@ -89,7 +89,7 @@ +@@ -90,7 +90,7 @@ set style fill solid border -1 set boxwidth 0.75 # --plot 'immigration.dat' using (100.*$2/$24):xtic(1) t 2, \ -+plot '@@GNUPLOTDEMOPATH@@immigration.dat' using (100.*$2/$24):xtic(1) t 2, \ - '' using (100.*$3/$24) t 3, \ - '' using (100.*$4/$24) t 4, \ - '' using (100.*$5/$24) t 5, \ -@@ -128,7 +128,7 @@ +-plot 'immigration.dat' using (100.*$2/$24):xtic(1) title column(2), \ ++plot '@@GNUPLOTDEMOPATH@@immigration.dat' using (100.*$2/$24):xtic(1) title column(2), \ + '' using (100.*$3/$24) title column(3), \ + '' using (100.*$4/$24) title column(4), \ + '' using (100.*$5/$24) title column(5), \ +@@ -129,7 +129,7 @@ set ytics unset xtics set xtics norotate nomirror @@ -830,17 +809,57 @@ '' using 13 ti col, '' using 14:key(1) ti col # pause -1 "Next we do several sets of parallel histograms" -@@ -148,7 +148,7 @@ +@@ -150,7 +150,7 @@ set auto y plot \ newhistogram "Northern Europe", \ --'immigration.dat' using 6:xtic(1) t 6, '' u 13 t 13, '' u 14 t 14, \ -+'@@GNUPLOTDEMOPATH@@immigration.dat' using 6:xtic(1) t 6, '' u 13 t 13, '' u 14 t 14, \ +-'immigration.dat' using 6:xtic(1), '' u 13, '' u 14, \ ++'@@GNUPLOTDEMOPATH@@immigration.dat' using 6:xtic(1), '' u 13, '' u 14, \ newhistogram "Southern Europe", \ - '' u 9:xtic(1) t 9, '' u 17 t 17, '' u 22 t 22, \ + '' u 9:xtic(1), '' u 17, '' u 22, \ newhistogram "British Isles", \ ---- demo/image.dem -+++ demo/image.dem 2007-08-15 20:58:34.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/histograms2.dem demo/histograms2.dem +--- demo/histograms2.dem 2009-03-14 01:11:12.000000000 +0100 ++++ demo/histograms2.dem 2009-05-09 14:44:57.000000000 +0200 +@@ -26,7 +26,7 @@ + # + plot \ + newhistogram "Northern Europe", \ +-'immigration.dat' using 6:xtic(1), '' u 13, '' u 14, \ ++'@@GNUPLOTDEMOPATH@@immigration.dat' using 6:xtic(1), '' u 13, '' u 14, \ + newhistogram "Southern Europe", \ + '' u 9:xtic(1), '' u 17, '' u 22, \ + newhistogram "British Isles", \ +@@ -36,7 +36,7 @@ + set title "Explicit start color in 'newhistogram' command" + plot \ + newhistogram "Northern Europe" lt 4, \ +-'immigration.dat' using 6:xtic(1), '' u 13, '' u 14, \ ++'@@GNUPLOTDEMOPATH@@immigration.dat' using 6:xtic(1), '' u 13, '' u 14, \ + newhistogram "Southern Europe" lt 4, \ + '' u 9:xtic(1), '' u 17, '' u 22, \ + newhistogram "British Isles" lt 4, \ +@@ -48,7 +48,7 @@ + set style fill pattern 1 border -1 + plot \ + newhistogram "Northern Europe" fs pattern 1, \ +-'immigration.dat' using 6:xtic(1), '' u 13, '' u 14, \ ++'@@GNUPLOTDEMOPATH@@immigration.dat' using 6:xtic(1), '' u 13, '' u 14, \ + newhistogram "Southern Europe" fs pattern 1, \ + '' u 9:xtic(1), '' u 17, '' u 22, \ + newhistogram "British Isles" fs pattern 1, \ +@@ -60,7 +60,7 @@ + set style fill pattern 1 border -1 + plot \ + newhistogram "Northern Europe" lt 2 fs pattern 1, \ +-'immigration.dat' using 6:xtic(1), '' u 13, '' u 14, \ ++'@@GNUPLOTDEMOPATH@@immigration.dat' using 6:xtic(1), '' u 13, '' u 14, \ + newhistogram "Southern Europe" lt 2 fs pattern 1, \ + '' u 9:xtic(1), '' u 17, '' u 22, \ + newhistogram "British Isles" lt 2 fs pattern 1, \ +diff -U 3 -H -d -r -N -- demo/image.dem demo/image.dem +--- demo/image.dem 2006-12-28 22:19:20.000000000 +0100 ++++ demo/image.dem 2009-05-09 14:44:57.000000000 +0200 @@ -32,7 +32,7 @@ set xrange [-10:137] set yrange [-10:157] @@ -1119,8 +1138,9 @@ pause -1 "Hit return to continue" reset ---- demo/layout.dem -+++ demo/layout.dem 2007-08-15 20:52:01.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/layout.dem demo/layout.dem +--- demo/layout.dem 2005-08-08 11:13:02.000000000 +0200 ++++ demo/layout.dem 2009-05-09 14:44:57.000000000 +0200 @@ -8,7 +8,7 @@ plot sin(x)/x # @@ -1175,8 +1195,9 @@ '' using 7 with histograms , \ '' using 8 with histograms , \ '' using 11 with histograms ---- demo/mgr.dem -+++ demo/mgr.dem 2007-08-15 20:52:01.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/mgr.dem demo/mgr.dem +--- demo/mgr.dem 2004-01-13 08:01:10.000000000 +0100 ++++ demo/mgr.dem 2009-05-09 14:44:57.000000000 +0200 @@ -7,7 +7,7 @@ set ylabel "Amplitude" set key box @@ -1256,8 +1277,9 @@ +plot [0:50] "@@GNUPLOTDEMOPATH@@battery.dat" u 1:2:4 t "Power" w yerr, n(x) t "Theory" w lines reset ---- demo/multimsh.dem -+++ demo/multimsh.dem 2007-08-15 20:52:01.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/multimsh.dem demo/multimsh.dem +--- demo/multimsh.dem 2003-10-28 06:35:54.000000000 +0100 ++++ demo/multimsh.dem 2009-05-09 14:44:57.000000000 +0200 @@ -9,40 +9,40 @@ set zrange [-2:2] set style data line @@ -1307,8 +1329,9 @@ pause -1 "Press Return" reset ---- demo/pm3d.dem -+++ demo/pm3d.dem 2007-08-15 20:52:01.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/pm3d.dem demo/pm3d.dem +--- demo/pm3d.dem 2007-01-19 22:15:47.000000000 +0100 ++++ demo/pm3d.dem 2009-05-09 14:44:57.000000000 +0200 @@ -8,7 +8,7 @@ # Otherwise you can use the output to postscript, for example: # set term push; set term postscript color enhanced @@ -1376,8 +1399,9 @@ pause -1 "Hit return to continue" ---- demo/pointsize.dem -+++ demo/pointsize.dem 2007-08-15 20:52:01.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/pointsize.dem demo/pointsize.dem +--- demo/pointsize.dem 2006-02-23 09:10:57.000000000 +0100 ++++ demo/pointsize.dem 2009-05-09 14:44:57.000000000 +0200 @@ -13,16 +13,16 @@ # plot a 2D map with locations marked by variable sized points # @@ -1421,19 +1445,9 @@ pause -1 "Hit return to continue" reset ---- demo/prob2.dem -+++ demo/prob2.dem 2007-08-15 21:00:52.000000000 +0200 -@@ -34,7 +34,7 @@ - print "" - pause -1 " Press Return to start demo ..." - --load "stat.inc" -+load "@@GNUPLOTDEMOPATH@@stat.inc" - rnd(x) = floor(x+0.5) - r_xmin = -1 - r_sigma = 4.0 ---- demo/prob.dem -+++ demo/prob.dem 2007-08-15 20:59:07.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/prob.dem demo/prob.dem +--- demo/prob.dem 2006-06-14 05:24:09.000000000 +0200 ++++ demo/prob.dem 2009-05-09 14:44:57.000000000 +0200 @@ -17,7 +17,7 @@ print " Press Ctrl-C to exit right now" pause -1 " Press Return to start demo ..." @@ -1443,8 +1457,21 @@ eps = 1.0e-10 # Supposed to be float resolution (nice if were defined internally) ---- demo/rainbow.dem -+++ demo/rainbow.dem 2007-08-16 10:04:44.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/prob2.dem demo/prob2.dem +--- demo/prob2.dem 2006-06-14 05:24:09.000000000 +0200 ++++ demo/prob2.dem 2009-05-09 14:44:57.000000000 +0200 +@@ -34,7 +34,7 @@ + print "" + pause -1 " Press Return to start demo ..." + +-load "stat.inc" ++load "@@GNUPLOTDEMOPATH@@stat.inc" + rnd(x) = floor(x+0.5) + r_xmin = -1 + r_sigma = 4.0 +diff -U 3 -H -d -r -N -- demo/rainbow.dem demo/rainbow.dem +--- demo/rainbow.dem 2006-08-07 22:27:13.000000000 +0200 ++++ demo/rainbow.dem 2009-05-09 14:44:57.000000000 +0200 @@ -79,7 +79,7 @@ # # Load terminal-independent colorwheel (HSV full saturation) @@ -1454,8 +1481,9 @@ # # define line styles using macros and a fixed palette # ---- demo/random.dem -+++ demo/random.dem 2007-08-15 21:15:37.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/random.dem demo/random.dem +--- demo/random.dem 2008-09-24 01:11:31.000000000 +0200 ++++ demo/random.dem 2009-05-09 14:44:57.000000000 +0200 @@ -79,7 +79,7 @@ pause -1 "Hit return to continue" unset contour @@ -1465,8 +1493,9 @@ print "" print "Simple Monte Carlo simulation" ---- demo/rgb_variable.dem -+++ demo/rgb_variable.dem 2007-08-16 10:40:03.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/rgb_variable.dem demo/rgb_variable.dem +--- demo/rgb_variable.dem 2006-10-16 18:09:00.000000000 +0200 ++++ demo/rgb_variable.dem 2009-05-09 14:44:57.000000000 +0200 @@ -12,7 +12,7 @@ # rgb(r,g,b) = int(r)*65536 + int(g)*256 + int(b) @@ -1494,8 +1523,9 @@ title "variable pointsize and rgb color computed from coords" pause -1 "Hit return to continue" ---- demo/scatter.dem -+++ demo/scatter.dem 2007-08-15 20:59:07.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/scatter.dem demo/scatter.dem +--- demo/scatter.dem 2003-10-28 06:35:54.000000000 +0100 ++++ demo/scatter.dem 2009-05-09 14:44:57.000000000 +0200 @@ -13,48 +13,48 @@ set style data points set xlabel "data style point - no dgrid" @@ -1553,8 +1583,9 @@ +splot "@@GNUPLOTDEMOPATH@@scatter2.dat" pause -1 "Hit return to continue (8)" reset ---- demo/simple.dem -+++ demo/simple.dem 2007-08-15 21:02:07.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/simple.dem demo/simple.dem +--- demo/simple.dem 2009-05-09 14:44:29.000000000 +0200 ++++ demo/simple.dem 2009-05-09 14:44:57.000000000 +0200 @@ -4,7 +4,7 @@ # Requires data files "[123].dat" from this directory, # so change current working directory to this directory before running. @@ -1577,8 +1608,9 @@ pause -1 "Hit return to continue" reset ---- demo/singulr.dem -+++ demo/singulr.dem 2007-08-15 20:59:07.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/singulr.dem demo/singulr.dem +--- demo/singulr.dem 2003-10-28 06:35:54.000000000 +0100 ++++ demo/singulr.dem 2009-05-09 14:44:57.000000000 +0200 @@ -163,14 +163,14 @@ set ticslevel 0. set view 50,15 #HBB: ,1,1.7 @@ -1596,8 +1628,9 @@ pause -1 "Hit return to continue (20)" reset ---- demo/starmap.dem -+++ demo/starmap.dem 2007-08-15 20:59:07.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/starmap.dem demo/starmap.dem +--- demo/starmap.dem 2006-06-30 04:17:22.000000000 +0200 ++++ demo/starmap.dem 2009-05-09 14:44:57.000000000 +0200 @@ -14,7 +14,7 @@ set title "Gliese star catalog - 7 parsec neighborhood centered on Earth" set cblabel "Luminosity" offset 0,1 @@ -1607,8 +1640,9 @@ '' using 5:6:7:11 with points pt 7 ps 1 pal notitle, \ '' using 5:6:7:2 with labels font "Helvetica,9" left \ point pt 0 offset 1,0 notitle ---- demo/steps.dem -+++ demo/steps.dem 2007-08-15 20:59:07.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/steps.dem demo/steps.dem +--- demo/steps.dem 2003-10-17 17:02:21.000000000 +0200 ++++ demo/steps.dem 2009-05-09 14:44:57.000000000 +0200 @@ -8,16 +8,16 @@ # function. @@ -1631,8 +1665,9 @@ unset xlabel unset ylabel ---- demo/stringvar.dem -+++ demo/stringvar.dem 2007-08-15 21:03:04.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/stringvar.dem demo/stringvar.dem +--- demo/stringvar.dem 2008-09-02 23:06:44.000000000 +0200 ++++ demo/stringvar.dem 2009-05-09 14:44:57.000000000 +0200 @@ -73,7 +73,7 @@ # set xrange [300:400] @@ -1660,8 +1695,9 @@ u 1:2 lt -1 lw 0.5 notitle, \ '' u 1:($3+$1/50.) lt 3 lw 0.5 notitle, \ '' using 1:2:( ($2>($3+$1/50.)) ? "J" : "D" ) with labels font "WingDings,28"\ ---- demo/surface1.dem -+++ demo/surface1.dem 2007-08-15 20:59:07.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/surface1.dem demo/surface1.dem +--- demo/surface1.dem 2004-09-17 07:01:12.000000000 +0200 ++++ demo/surface1.dem 2009-05-09 14:44:57.000000000 +0200 @@ -171,34 +171,34 @@ set style data lines set title "Data grid plotting" @@ -1703,8 +1739,9 @@ pause -1 "Hit return to continue (24)" # mandelbrot demo ---- demo/timedat.dem -+++ demo/timedat.dem 2007-08-15 20:59:07.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/timedat.dem demo/timedat.dem +--- demo/timedat.dem 2003-10-28 06:35:54.000000000 +0100 ++++ demo/timedat.dem 2009-05-09 14:44:57.000000000 +0200 @@ -13,10 +13,10 @@ set format x "%d/%m\n%H:%M" set grid @@ -1720,8 +1757,9 @@ pause -1 "Hit return to continue" reset ---- demo/using.dem -+++ demo/using.dem 2007-08-15 20:59:07.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/using.dem demo/using.dem +--- demo/using.dem 2003-10-28 06:35:54.000000000 +0100 ++++ demo/using.dem 2009-05-09 14:44:57.000000000 +0200 @@ -1,15 +1,15 @@ # # $Id: using.dem,v 1.6 2003/10/28 05:35:54 sfeam Exp $ @@ -1754,21 +1792,9 @@ unset label pause -1 "Hit return to continue" reset ---- demo/world2.dem -+++ demo/world2.dem 2007-08-15 20:59:07.000000000 +0200 -@@ -22,8 +22,8 @@ - set colorb vert user size 0.02, 0.75 - unset hidden - splot cos(u)*cos(v),cos(u)*sin(v),sin(u) notitle with lines lt 5, \ -- 'world.dat' notitle with lines lt 2, \ -- 'srl.dat' using 3:2:(1):1:4 with labels notitle point pt 6 lw .1 left offset 1,0 font "Helvetica,7" tc pal -+ '@@GNUPLOTDEMOPATH@@world.dat' notitle with lines lt 2, \ -+ '@@GNUPLOTDEMOPATH@@srl.dat' using 3:2:(1):1:4 with labels notitle point pt 6 lw .1 left offset 1,0 font "Helvetica,7" tc pal - pause -1 "Same plot with hidden line removal" - set title "Labels with hidden line removal" - set hidden nooffset ---- demo/world.dem -+++ demo/world.dem 2007-08-15 20:59:07.000000000 +0200 +diff -U 3 -H -d -r -N -- demo/world.dem demo/world.dem +--- demo/world.dem 2004-09-28 08:06:10.000000000 +0200 ++++ demo/world.dem 2009-05-09 14:44:57.000000000 +0200 @@ -10,7 +10,7 @@ unset ytics # @@ -1804,3 +1830,17 @@ +'@@GNUPLOTDEMOPATH@@world.dat' with lines lt 3 , '@@GNUPLOTDEMOPATH@@world.cor' with points lt 1 pt 2 pause -1 "Hit return to continue" reset +diff -U 3 -H -d -r -N -- demo/world2.dem demo/world2.dem +--- demo/world2.dem 2005-08-07 11:43:27.000000000 +0200 ++++ demo/world2.dem 2009-05-09 14:44:57.000000000 +0200 +@@ -22,8 +22,8 @@ + set colorb vert user size 0.02, 0.75 + unset hidden + splot cos(u)*cos(v),cos(u)*sin(v),sin(u) notitle with lines lt 5, \ +- 'world.dat' notitle with lines lt 2, \ +- 'srl.dat' using 3:2:(1):1:4 with labels notitle point pt 6 lw .1 left offset 1,0 font "Helvetica,7" tc pal ++ '@@GNUPLOTDEMOPATH@@world.dat' notitle with lines lt 2, \ ++ '@@GNUPLOTDEMOPATH@@srl.dat' using 3:2:(1):1:4 with labels notitle point pt 6 lw .1 left offset 1,0 font "Helvetica,7" tc pal + pause -1 "Same plot with hidden line removal" + set title "Labels with hidden line removal" + set hidden nooffset diff --git a/gnuplot-4.2.5-fix-format-errors.dif b/gnuplot-4.2.5-fix-format-errors.dif new file mode 100644 index 0000000..a288e8c --- /dev/null +++ b/gnuplot-4.2.5-fix-format-errors.dif @@ -0,0 +1,40 @@ +--- src/gplt_x11.c 2009-01-14 19:42:02.000000000 +0100 ++++ src/gplt_x11.c 2009-05-09 13:50:34.000000000 +0200 +@@ -2889,22 +2889,22 @@ + + case PseudoColor: + fprintf(stderr, ERROR_NOTICE("PseudoColor")); +- fprintf(stderr, display_error_text_after); ++ fprintf(stderr, "%s", display_error_text_after); + break; + + case GrayScale: + fprintf(stderr, ERROR_NOTICE("GrayScale")); +- fprintf(stderr, display_error_text_after); ++ fprintf(stderr, "%s", display_error_text_after); + break; + + case StaticColor: + fprintf(stderr, ERROR_NOTICE("StaticColor")); +- fprintf(stderr, display_error_text_after); ++ fprintf(stderr, "%s", display_error_text_after); + break; + + case StaticGray: + fprintf(stderr, ERROR_NOTICE("StaticGray")); +- fprintf(stderr, display_error_text_after); ++ fprintf(stderr, "%s", display_error_text_after); + break; + + case DirectColor: +--- term/post.trm 2009-03-03 03:44:07.000000000 +0100 ++++ term/post.trm 2009-05-09 13:50:34.000000000 +0200 +@@ -1665,7 +1665,7 @@ + (ps_params->psformat == PSTERM_EPS ? 0.5 : 1.0)/PS_SC); + if (ps_params->psformat == PSTERM_LANDSCAPE) + fprintf(gppsfile,"90 rotate\n0 %d translate\n", -(int)(term->ymax)); +- fprintf(gppsfile, psg1); ++ fprintf(gppsfile, "%s", psg1); + if (ps_common_uses_fonts) + fprintf(gppsfile, "(%s) findfont %d scalefont setfont\n", + ps_params->font, (t->v_char)); diff --git a/gnuplot-4.2.3-utf8.dif b/gnuplot-4.2.5-utf8.dif similarity index 95% rename from gnuplot-4.2.3-utf8.dif rename to gnuplot-4.2.5-utf8.dif index 0861927..fcd83af 100644 --- a/gnuplot-4.2.3-utf8.dif +++ b/gnuplot-4.2.5-utf8.dif @@ -1,5 +1,231 @@ ---- term/Makefile.am.in -+++ term/Makefile.am.in 2007-11-29 15:29:04.000000000 +0100 +--- docs/gnuplot.doc 2009-02-19 22:16:05.000000000 +0100 ++++ docs/gnuplot.doc 2009-05-09 13:53:00.000000000 +0200 +@@ -5871,6 +5871,7 @@ + ?show encoding + ?encoding + ?encodings ++=UTF-8 + The `set encoding` command selects a character encoding. + Syntax: + set encoding {} +@@ -5881,6 +5882,7 @@ + iso_8859_1 - the most common Western European font used by many + Unix workstations and by MS-Windows. This encoding is + known in the PostScript world as 'ISO-Latin1'. ++ iso_8859_15 - a variant of iso_8859_1 that includes the Euro symbol + iso_8859_2 - used in Central and Eastern Europe + iso_8859_15 - a variant of iso_8859_1 that includes the Euro symbol + koi8r - popular Unix cyrillic encoding +@@ -5889,6 +5891,9 @@ + cp850 - codepage for OS/2, Western Europe + cp852 - codepage for OS/2, Central and Eastern Europe + cp1250 - codepage for MS Windows, Central and Eastern Europe ++ cp1254 - codepage for MS Windows, Turkish (superset of Latin5) ++ utf8 - variable-length (multibyte) representation of Unicode ++ entry point for each character + + Generally you must set the encoding before setting the terminal type. + Note that encoding is not supported by all terminal drivers and that +--- src/set.c 2009-03-28 22:22:54.000000000 +0100 ++++ src/set.c 2009-05-09 13:53:00.000000000 +0200 +@@ -1211,7 +1211,7 @@ + temp = lookup_table(&set_encoding_tbl[0],c_token); + + if (temp == S_ENC_INVALID) +- int_error(c_token, "expecting one of 'default', 'iso_8859_1', 'iso_8859_2', 'iso_8859_15', 'cp437', 'cp850', 'cp852', 'koi8r' or 'koi8u'"); ++ int_error(c_token, "expecting one of 'default', 'utf8', 'iso_8859_1', 'iso_8859_2', 'iso_8859_9', 'iso_8859_15', 'cp437', 'cp850', 'cp852', 'koi8r', or 'koi8u'"); + c_token++; + } + encoding = temp; +--- src/term.c 2008-12-15 05:18:36.000000000 +0100 ++++ src/term.c 2009-05-09 13:53:00.000000000 +0200 +@@ -134,19 +134,23 @@ + enum set_encoding_id encoding; + /* table of encoding names, for output of the setting */ + const char *encoding_names[] = { +- "default", "iso_8859_1", "iso_8859_2", "iso_8859_15", +- "cp437", "cp850", "cp852", "cp1250", "koi8r", "koi8u", NULL }; ++ "default", "iso_8859_1", "iso_8859_2", "iso_8859_9", "iso_8859_15", ++ "cp437", "cp850", "cp852", "cp1250", "cp1254", "koi8r", "koi8u", ++ "utf8", NULL }; + /* 'set encoding' options */ + const struct gen_table set_encoding_tbl[] = + { + { "def$ault", S_ENC_DEFAULT }, ++ { "utf$8", S_ENC_UTF8 }, + { "iso$_8859_1", S_ENC_ISO8859_1 }, + { "iso_8859_2", S_ENC_ISO8859_2 }, ++ { "iso_8859_9", S_ENC_ISO8859_9 }, + { "iso_8859_15", S_ENC_ISO8859_15 }, + { "cp4$37", S_ENC_CP437 }, + { "cp850", S_ENC_CP850 }, + { "cp852", S_ENC_CP852 }, + { "cp1250", S_ENC_CP1250 }, ++ { "cp1254", S_ENC_CP1254 }, + { "koi8$r", S_ENC_KOI8_R }, + { "koi8$u", S_ENC_KOI8_U }, + { NULL, S_ENC_INVALID } +@@ -945,7 +949,7 @@ + + void + write_multiline( +- unsigned int x, unsigned y, ++ unsigned int x, unsigned int y, + char *text, + JUSTIFY hor, /* horizontal ... */ + VERT_JUSTIFY vert, /* ... and vertical just - text in hor direction despite angle */ +diff -U 3 -H -d -r -N -- src/term_api.h src/term_api.h +--- src/term_api.h 2008-12-15 05:18:36.000000000 +0100 ++++ src/term_api.h 2009-05-09 13:53:00.000000000 +0200 +@@ -124,7 +124,9 @@ + TERM_LAYER_RESET, + TERM_LAYER_BACKTEXT, + TERM_LAYER_FRONTTEXT, +- TERM_LAYER_END_TEXT ++ TERM_LAYER_END_TEXT, ++ TERM_LAYER_BEFORE_PLOT, ++ TERM_LAYER_AFTER_PLOT + } t_termlayer; + + typedef struct fill_style_type { +@@ -134,8 +136,9 @@ + int border_linetype; + } fill_style_type; + +-typedef enum t_fillstyle { FS_EMPTY, FS_SOLID, FS_PATTERN, FS_DEFAULT } +- t_fillstyle; ++typedef enum t_fillstyle { FS_EMPTY, FS_SOLID, FS_PATTERN, FS_DEFAULT, ++ FS_TRANSPARENT_SOLID, FS_TRANSPARENT_PATTERN } ++ t_fillstyle; + #define FS_OPAQUE (FS_SOLID + (100<<4)) + + #ifdef WITH_IMAGE +@@ -159,6 +162,7 @@ + #define TERM_ENHANCED_TEXT 32 /* enhanced text mode is enabled */ + #define TERM_NO_OUTPUTFILE 64 /* terminal doesnt write to a file */ + #define TERM_CAN_CLIP 128 /* terminal does its own clipping */ ++#define TERM_CAN_DASH 256 /* terminal supports dashed lines */ + + /* The terminal interface structure --- heart of the terminal layer. + * +@@ -254,6 +258,11 @@ + */ + void (*path) __PROTO((int p)); + ++/* Scale factor for converting terminal coordinates to output ++ * pixel coordinates. Used to provide data for external mousing code. ++ */ ++ double tscale; ++ + } TERMENTRY; + + #ifdef WIN16 +@@ -263,9 +272,10 @@ + #endif + + enum set_encoding_id { +- S_ENC_DEFAULT, S_ENC_ISO8859_1, S_ENC_ISO8859_2, S_ENC_ISO8859_15, +- S_ENC_CP437, S_ENC_CP850, S_ENC_CP852, S_ENC_CP1250, +- S_ENC_KOI8_R, S_ENC_KOI8_U, ++ S_ENC_DEFAULT, S_ENC_ISO8859_1, S_ENC_ISO8859_2, S_ENC_ISO8859_9, S_ENC_ISO8859_15, ++ S_ENC_CP437, S_ENC_CP850, S_ENC_CP852, S_ENC_CP1250, S_ENC_CP1254, ++ S_ENC_KOI8_R, S_ENC_KOI8_U, ++ S_ENC_UTF8, + S_ENC_INVALID + }; + +diff -U 3 -H -d -r -N -- src/util.c src/util.c +--- src/util.c 2009-02-09 05:43:44.000000000 +0100 ++++ src/util.c 2009-05-09 13:53:00.000000000 +0200 +@@ -1218,3 +1218,85 @@ + + return fullname; + } ++ ++TBOOLEAN contains8bit(const char *s) ++{ ++ while (*s) { ++ if ((*s++ & 0x80)) ++ return TRUE; ++ } ++ return FALSE; ++} ++ ++#define INVALID_UTF8 0xfffful ++ ++/* Read from second byte to end of UTF-8 sequence. ++ used by utftoulong() */ ++TBOOLEAN ++utf8_getmore (unsigned long * wch, const char **str, int nbytes) ++{ ++ int i; ++ unsigned char c; ++ unsigned long minvalue[] = {0x80, 0x800, 0x10000, 0x200000, 0x4000000}; ++ ++ for (i = 0; i < nbytes; i++) { ++ c = (unsigned char) **str; ++ ++ if ((c & 0xc0) != 0x80) { ++ *wch = INVALID_UTF8; ++ return FALSE; ++ } ++ *wch = (*wch << 6) | (c & 0x3f); ++ (*str)++; ++ } ++ ++ /* check for overlong UTF-8 sequences */ ++ if (*wch < minvalue[nbytes-1]) { ++ *wch = INVALID_UTF8; ++ return FALSE; ++ } ++ return TRUE; ++} ++ ++/* Convert UTF-8 multibyte sequence from string to unsigned long character. ++ Returns TRUE on success. ++*/ ++TBOOLEAN ++utf8toulong (unsigned long * wch, const char ** str) ++{ ++ unsigned char c; ++ ++ c = (unsigned char) *(*str)++; ++ if ((c & 0x80) == 0) { ++ *wch = (unsigned long) c; ++ return TRUE; ++ } ++ ++ if ((c & 0xe0) == 0xc0) { ++ *wch = c & 0x1f; ++ return utf8_getmore(wch, str, 1); ++ } ++ ++ if ((c & 0xf0) == 0xe0) { ++ *wch = c & 0x0f; ++ return utf8_getmore(wch, str, 2); ++ } ++ ++ if ((c & 0xf8) == 0xf0) { ++ *wch = c & 0x07; ++ return utf8_getmore(wch, str, 3); ++ } ++ ++ if ((c & 0xfc) == 0xf8) { ++ *wch = c & 0x03; ++ return utf8_getmore(wch, str, 4); ++ } ++ ++ if ((c & 0xfe) == 0xfc) { ++ *wch = c & 0x01; ++ return utf8_getmore(wch, str, 5); ++ } ++ ++ *wch = INVALID_UTF8; ++ return FALSE; ++} +diff -U 3 -H -d -r -N -- term/Makefile.am.in term/Makefile.am.in +--- term/Makefile.am.in 2006-06-20 00:02:46.000000000 +0200 ++++ term/Makefile.am.in 2009-05-09 13:53:00.000000000 +0200 @@ -13,7 +13,7 @@ postscript_DATA = PostScript/8859-15.ps PostScript/8859-1.ps\ PostScript/8859-2.ps PostScript/cp1250.ps PostScript/cp437.ps\ @@ -9,1723 +235,19 @@ Makefile.am: Makefile.am.in rm -f $@ $@t ---- term/gd.trm -+++ term/gd.trm 2008-03-30 01:32:40.000000000 +0100 -@@ -1839,7 +1839,7 @@ - #ifdef gdFTEX_Adobe_Custom - /* libgd defaults to UTF-8 encodings. We have limited options for */ - /* over-riding this, but we can try */ -- if (ENHgd_font && !strcmp(ENHgd_font,"Symbol")) { -+ if (encoding != S_ENC_UTF8 && ENHgd_font && !strcmp(ENHgd_font,"Symbol")) { - PNG_FONT_INFO.flags |= gdFTEX_CHARMAP; - PNG_FONT_INFO.charmap = gdFTEX_Adobe_Custom; - } else { ---- term/pslatex.trm -+++ term/pslatex.trm 2008-02-22 21:02:26.000000000 +0100 -@@ -1,5 +1,5 @@ - /* Hello, Emacs, this is -*-C-*- -- * $Id: pslatex.trm,v 1.69.2.1 2008/02/22 20:34:41 sfeam Exp $ -+ * $Id: pslatex.trm,v 1.72 2008/02/22 20:02:26 sfeam Exp $ - */ - - /* GNUPLOT - pslatex.trm */ -@@ -441,7 +441,10 @@ - case S_ENC_ISO8859_2: - inputenc = "latin2"; - break; -- case S_ENC_ISO8859_15: -+ case S_ENC_ISO8859_9: /* ISO8859-9 is Latin5 */ -+ inputenc = "latin5"; -+ break; -+ case S_ENC_ISO8859_15: /* ISO8859-15 is Latin9 */ - inputenc = "latin9"; - break; - case S_ENC_CP437: ---- term/post.trm -+++ term/post.trm 2008-03-13 19:01:27.000000000 +0100 -@@ -1,5 +1,5 @@ - /* Hello, Emacs: this is -*-C-*- ! -- * $Id: post.trm,v 1.203.2.10 2008/01/10 07:31:25 mikulik Exp $ -+ * $Id: post.trm,v 1.230 2008/03/13 18:01:27 sfeam Exp $ - */ - - /* GNUPLOT - post.trm */ -@@ -61,14 +61,18 @@ - * - * Dan Sebald, 7 March 2003: terminal entry for image functionality - * -- * Harald Harders (h.harders@tu-bs.de), 2004-12-02: -- * Moved all terminal settings into a single structure. -+ * Harald Harders (h.harders@tu-bs.de), 2004-12-02: -+ * Moved all terminal settings into a single structure. - * -- * Harald Harders (h.harders@tu-bs.de), 2005-02-08: -- * Merged functionality of postscript, pslatex, pstex, and epslatex terminals. -+ * Harald Harders (h.harders@tu-bs.de), 2005-02-08: -+ * Merged functionality of postscript, pslatex, pstex, and epslatex terminals. - * -- * Ethan Merritt Mar 2006: Break out prolog and character encodings into -- * separate files loaded at runtime -+ * Ethan Merritt Mar 2006: Break out prolog and character encodings into -+ * separate files loaded at runtime -+ * -+ * Thomas Henlich Sep 2007: Add support for UTF-8 encoding via the glyphshow -+ * operator. It supports PostScript Type1 fonts that use glyph names according -+ * to the Adobe Glyph List For New Fonts. - */ - - #include "driver.h" -@@ -106,7 +110,7 @@ - TERM_PUBLIC void PS_set_color (t_colorspec *); - TERM_PUBLIC void PS_filled_polygon (int, gpiPoint *); - #ifdef WITH_IMAGE --TERM_PUBLIC void PS_image __PROTO((unsigned, unsigned, coordval *, gpiPoint *, t_imagecolor)); -+TERM_PUBLIC void PS_image __PROTO((unsigned int, unsigned int, coordval *, gpiPoint *, t_imagecolor)); - #endif - - /* To support "set term post enhanced" */ -@@ -123,6 +127,9 @@ - - TERM_PUBLIC void PS_path __PROTO((int p)); - static TBOOLEAN PS_newpath = FALSE; -+static TBOOLEAN ENHps_opened_string = FALSE; /* try to cut out empty ()'s */ -+ -+TERM_PUBLIC void PS_layer __PROTO((t_termlayer syncpoint)); - - #endif /* TERM_PROTO */ - -@@ -140,11 +147,12 @@ - } \ - } while (0) - --/* Datastructure implementing inclusion of font files */ -+/* Data structure implementing inclusion of font files */ - struct ps_fontfile_def { - struct ps_fontfile_def *next;/* pointer to next fontfile in linked list */ - char *fontfile_name; - char *fontfile_fullname; -+ char *fontname; - }; - - /* Terminal type of postscript dialect */ -@@ -181,13 +189,14 @@ - double palfunc_deviation; /* terminal option */ - TBOOLEAN oldstyle; - TBOOLEAN epslatex_standalone; -+ TBOOLEAN adobeglyphnames; /* Choice of output names for UTF8 */ - } ps_params_t; - - #define POST_PARAMS_DEFAULT { \ - PSTERM_POSTSCRIPT, 50, 50, \ - PSTERM_LANDSCAPE, FALSE, FALSE, FALSE, FALSE, 1.0, 1.0, FALSE, \ - FALSE, FALSE, NULL, "Helvetica", 14, FALSE, FALSE, 2000, 0.003, \ -- FALSE, FALSE \ -+ FALSE, TRUE \ - } - - static ps_params_t post_params = POST_PARAMS_DEFAULT; -@@ -261,7 +270,9 @@ - static char *pslatex_auxname = NULL; - - /* Routine to copy pre-existing prolog files into output stream */ -+static FILE *PS_open_prologue_file __PROTO((char *)); - static void PS_dump_prologue_file __PROTO((char *)); -+static void PS_load_glyphlist __PROTO((void)); - - static const char GPFAR * GPFAR OldEPSL_linetypes[] = { - /* Line Types */ -@@ -280,20 +291,21 @@ - /* For MFshow and MFwidth the tos is an array with the string and font info: */ - /* [ ] */ - /* EAM Mar 2004 - Add in a special case overprint 3 = save, overprint 4 = restore */ -+/* EAM Nov 2007 - Accommodate UTF-8 support (Gshow) */ - - "/MFshow {\n", - " { dup 5 get 3 ge\n", /* EAM test for overprint 3 or 4 */ - " { 5 get 3 eq {gsave} {grestore} ifelse }\n", /* EAM */ - " {dup dup 0 get findfont exch 1 get scalefont setfont\n", - " [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6\n", --" get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq\n", -+" get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq\n", - " {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5\n", - " get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div\n", - " dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get\n", - " show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop\n", - " pop aload pop M} ifelse }ifelse }ifelse }\n", - " ifelse }\n", /* EAM */ --" forall} bind def\n", -+" forall} def\n", - - /* get the width of the text */ - /* HH 2005-07-24 - Add in a special case overprint 3 = save, 4 = restore -@@ -301,9 +313,12 @@ - * additional value on the stack. between XYsave and XYrestore, - * this number is increased by the strings. By pop'ing this number, all - * strings between XYsave and XYrestore are ignored. */ -+/* EAM Nov 2007 - GSwidth is to allow the operator to work either with a string -+ * or with a glyph. Needed for UTF-8 support. Gwidth may do it better. */ -+"/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def\n", - "/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse }\n", - " {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont\n", --" 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def\n", -+" 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def\n", - - /* flush left show */ - "/MLshow { currentpoint stroke M\n", -@@ -366,8 +381,11 @@ - if (strcmp(fnp->name, myfname) == 0) - return NULL; - -- /* we did not find the name */ -+ /* Ignore it if illegal characters will corrupt the PostScript syntax */ -+ if (strpbrk(myfname, "{}[]() ")) -+ return NULL; - -+ /* we have not seen this font before; store name and apply encoding */ - fnp = (struct PS_FontName *)gp_alloc(sizeof(struct PS_FontName), - "PostScript Font record"); - fnp->name = gp_strdup(myfname); -@@ -376,12 +394,17 @@ - - switch(encoding) { - case S_ENC_ISO8859_1: -+ case S_ENC_UTF8: - recode = "reencodeISO def\n"; - break; - case S_ENC_ISO8859_2: - recode = "reencodeISO2 def\n"; - break; -- case S_ENC_ISO8859_15: -+ case S_ENC_ISO8859_9: /* ISO8859-9 is Latin5 */ -+ case S_ENC_CP1254: -+ recode = "reencodeISO9 def\n"; -+ break; -+ case S_ENC_ISO8859_15: /* ISO8859-15 is Latin9 */ - recode = "reencodeISO15 def\n"; - break; - case S_ENC_CP437: -@@ -407,11 +430,13 @@ - break; - } - -- if (can_reencode && recode) { -- fprintf(gppsfile,"/%s %s", myfname, recode); -- return NULL; -- } else -- return recode; -+ if (recode) { -+ if (ENHps_opened_string) -+ ENHPS_FLUSH(); -+ fprintf(gppsfile,"/%s %s", fnp->name, recode); -+ } -+ -+ return NULL; - } - - char * -@@ -454,6 +479,7 @@ - PSLATEX_ROTATE, PSLATEX_NOROTATE, PSLATEX_AUXFILE, PSLATEX_NOAUXFILE, - PSLATEX_OLDSTYLE, PSLATEX_NEWSTYLE, EPSLATEX_HEADER, EPSLATEX_NOHEADER, - PS_SIZE, -+ PS_ADOBEGLYPHNAMES, PS_NOADOBEGLYPHNAMES, - PS_OTHER - }; - -@@ -499,6 +525,8 @@ - { "noa$uxfile", PSLATEX_NOAUXFILE }, - { "old$style", PSLATEX_OLDSTYLE }, - { "new$style", PSLATEX_NEWSTYLE }, -+ { "adobe$glyphnames", PS_ADOBEGLYPHNAMES }, -+ { "noadobe$glyphnames", PS_NOADOBEGLYPHNAMES }, - { NULL, PS_OTHER } - }; - -@@ -848,35 +876,36 @@ - break; - case PS_FONTFILE: { - TBOOLEAN deleteentry = FALSE; -+ char *fontfilename = NULL; - c_token++; - if (ps_params->terminal != PSTERM_POSTSCRIPT) - int_error(c_token, - "extraneous argument in set terminal %s",term->name); - -- if (!isstring(c_token)) { -- if (equals(c_token, "add")) -- c_token++; -- else if (almost_equals(c_token, "del$ete")) { -- deleteentry = TRUE; -- c_token++; -- } else -- int_error(c_token, "Font filename expected"); -- } -- if (isstring(c_token)) { -- TBOOLEAN filename_doubled = FALSE; -- struct ps_fontfile_def *curr_ps_fontfile = -+ if (equals(c_token, "add")) -+ c_token++; -+ else if (almost_equals(c_token, "del$ete")) { -+ deleteentry = TRUE; -+ c_token++; -+ } -+ -+ if (!(fontfilename = try_to_get_string())) { -+ int_error(c_token, "Font filename expected"); -+ } else { -+ TBOOLEAN filename_doubled = FALSE; -+ struct ps_fontfile_def *curr_ps_fontfile = - ps_params->first_fontfile; -- struct ps_fontfile_def *prev_ps_fontfile = NULL; -- struct ps_fontfile_def *new_ps_fontfile = -- gp_alloc(sizeof(struct ps_fontfile_def), -- "new_ps_fontfile"); -- -- new_ps_fontfile->fontfile_name = -- gp_alloc (token_len(c_token), -- "new_ps_fontfile->fontfile_name"); -- quote_str(new_ps_fontfile->fontfile_name, -- c_token, token_len(c_token)); -- gp_expand_tilde(&(new_ps_fontfile->fontfile_name)); -+ struct ps_fontfile_def *prev_ps_fontfile = NULL; -+ struct ps_fontfile_def *new_ps_fontfile = -+ gp_alloc(sizeof(struct ps_fontfile_def), -+ "new_ps_fontfile"); -+ -+ new_ps_fontfile->fontfile_name = -+ gp_alloc (token_len(c_token), -+ "new_ps_fontfile->fontfile_name"); -+ gp_expand_tilde(&fontfilename); -+ new_ps_fontfile->fontfile_name = fontfilename; -+ new_ps_fontfile->fontname = NULL; - if (!deleteentry) { - #if defined(PIPES) - if (*(new_ps_fontfile->fontfile_name) != '<') { -@@ -884,7 +913,7 @@ - new_ps_fontfile->fontfile_fullname = - fontpath_fullname(new_ps_fontfile->fontfile_name); - if (!new_ps_fontfile->fontfile_fullname) -- int_error(c_token, "Font file '%s' not found", -+ int_error(c_token-1, "Font file '%s' not found", - new_ps_fontfile->fontfile_name); - #if defined(PIPES) - } else -@@ -901,45 +930,43 @@ - lf=lf->prev; - } - if ((lf && lf->interactive) || interactive) -- /* if (interactive) { */ - PS_load_fontfile(new_ps_fontfile,FALSE); - } - -- if (ps_params->first_fontfile) { -- while (curr_ps_fontfile) { -- if (strcmp(curr_ps_fontfile->fontfile_name, -- new_ps_fontfile->fontfile_name) == 0) { -- filename_doubled = TRUE; -- if (deleteentry) { -+ if (ps_params->first_fontfile) { -+ while (curr_ps_fontfile) { -+ if (strcmp(curr_ps_fontfile->fontfile_name, -+ new_ps_fontfile->fontfile_name) == 0) { -+ filename_doubled = TRUE; -+ if (deleteentry) { - delete_ps_fontfile(prev_ps_fontfile, - curr_ps_fontfile); -- curr_ps_fontfile = NULL; -- break; -- } -- } -- prev_ps_fontfile = curr_ps_fontfile; -- curr_ps_fontfile = curr_ps_fontfile->next; -- } -- if (!filename_doubled) { -- if (!deleteentry) -- prev_ps_fontfile->next = new_ps_fontfile; -- else -- int_warn(c_token,"Can't delete Font filename '%s'", -- new_ps_fontfile->fontfile_name); -- } -- } else { -- if (!deleteentry) -- ps_params->first_fontfile = new_ps_fontfile; -- else -- int_warn(c_token, "Can't delete Font filename '%s'", -- new_ps_fontfile->fontfile_name); -- } -- c_token++; -- } else -- int_error(c_token, "Font filename expected"); -- break; -- } -- case PS_NOFONTFILES: -+ curr_ps_fontfile = NULL; -+ break; -+ } -+ } -+ prev_ps_fontfile = curr_ps_fontfile; -+ curr_ps_fontfile = curr_ps_fontfile->next; -+ } -+ if (!filename_doubled) { -+ if (!deleteentry) -+ prev_ps_fontfile->next = new_ps_fontfile; -+ else -+ int_warn(c_token,"Can't delete Font filename '%s'", -+ new_ps_fontfile->fontfile_name); -+ } -+ } else { -+ if (!deleteentry) -+ ps_params->first_fontfile = new_ps_fontfile; -+ else -+ int_warn(c_token, "Can't delete Font filename '%s'", -+ new_ps_fontfile->fontfile_name); -+ } -+ c_token++; -+ } -+ break; -+ } -+ case PS_NOFONTFILES: - if (ps_params->terminal != PSTERM_POSTSCRIPT) - int_error(c_token, - "extraneous argument in set terminal %s",term->name); -@@ -948,6 +975,14 @@ - ps_params->first_fontfile); - ++c_token; - break; -+ case PS_ADOBEGLYPHNAMES: -+ ps_params->adobeglyphnames = TRUE; -+ ++c_token; -+ break; -+ case PS_NOADOBEGLYPHNAMES: -+ ps_params->adobeglyphnames = FALSE; -+ ++c_token; -+ break; - case PS_PALFUNCPARAM: - if (set_palfunc) - int_error(c_token, -@@ -1000,8 +1035,16 @@ - set_fontsize = TRUE; - *comma = '\0'; - } -- if (*s) -+ if (*s) { -+ /* Filter out characters that would confuse PostScript */ -+ if (strpbrk(s, "()[]{}| ")) { -+ int_warn(c_token-1,"Illegal characters in PostScript font name."); -+ int_warn(NO_CARET,"I will try to fix it but this may not work."); -+ while (strpbrk(s, "()[]{}| ")) -+ *(strpbrk(s, "()[]{}| ")) = '-'; -+ } - strncpy(ps_params->font, s, sizeof(ps_params->font)); -+ } - free(s); - } else - int_error(c_token-1, -@@ -1119,6 +1162,12 @@ - } - #endif - -+ if ((encoding == S_ENC_UTF8) && (ps_params->terminal == PSTERM_POSTSCRIPT)) { -+ sprintf(tmp_term_options," %sadobeglyphnames \\\n ", -+ ps_params->adobeglyphnames ? "" : "no"); -+ strcat(term_options,tmp_term_options); -+ } -+ - if (ps_explicit_size) { - if (ps_explicit_units == CM) - sprintf(tmp_term_options,"size %.2fcm, %.2fcm ", -@@ -1153,6 +1202,29 @@ - static TBOOLEAN ps_common_uses_fonts; - static unsigned int ps_common_xoff, ps_common_yoff; - -+/* The default UTF8 code will use glyph identifiers uniXXXX for all glyphs above 0x0100. -+ * If you define ADOBE_ENCODING_NAMES, then it will instead use the glyph names from the -+ * file aglfn.txt. Names in the range 0x0100 - 0x01FF correspond to those used by the -+ * Latin1 encoding scheme. This unicode code page deliberately uses the same character -+ * mapping as Latin1. Adobe also recommends names for many characters outside this -+ * range, but not all fonts adhere to this. You can substitute a different aglfn.txt -+ * file at run time if you want to use a different scheme. -+ */ -+#define ADOBE_ENCODING_NAMES 1 -+ -+#if (ADOBE_ENCODING_NAMES) -+ -+typedef struct ps_glyph { -+ unsigned long unicode; -+ char * glyphname; -+} ps_glyph; -+ -+static ps_glyph *aglist = NULL; -+static int aglist_alloc = 0; -+static int aglist_size = 0; -+static int psglyphs = 0; -+ -+#endif - - TERM_PUBLIC void - PS_load_fontfile(struct ps_fontfile_def *current_ps_fontfile, TBOOLEAN doload) -@@ -1207,7 +1279,7 @@ - current_ps_fontfile->fontfile_name + 1); - #endif - } -- else if (strcmp(ext,"ttf") == 0) { -+ else if (!strcmp(ext,"ttf") || !strcmp(ext,"otf")) { - /* TrueType */ - #if defined(PIPES) - ispipe = TRUE; -@@ -1286,6 +1358,7 @@ - strcpy(fontname,strstr(line+1,"/")+1); - fnende = strstr(fontname," "); - *fnende = '\0'; -+ current_ps_fontfile->fontname = gp_strdup(fontname); - /* Print font name */ - if (!doload) { - if (current_ps_fontfile->fontfile_fullname) -@@ -1366,6 +1439,8 @@ - - while (current_ps_fontfile) { - PS_load_fontfile(current_ps_fontfile,doload); -+ if (current_ps_fontfile->fontname) -+ PS_RememberFont(current_ps_fontfile->fontname, 1); - current_ps_fontfile = current_ps_fontfile->next; - } - } -@@ -1519,11 +1594,16 @@ - free(outstr2); - } - -+ /* Dump the body of the prologue */ -+ PS_dump_prologue_file("prologue.ps"); -+ - /* insert font encoding vector */ - if (uses_fonts) { - switch (encoding) { - case S_ENC_ISO8859_1: PS_dump_prologue_file("8859-1.ps"); break; - case S_ENC_ISO8859_2: PS_dump_prologue_file("8859-2.ps"); break; -+ case S_ENC_CP1254: -+ case S_ENC_ISO8859_9: PS_dump_prologue_file("8859-9.ps"); break; - case S_ENC_ISO8859_15: PS_dump_prologue_file("8859-15.ps"); break; - case S_ENC_CP437: PS_dump_prologue_file("cp437.ps"); break; - case S_ENC_CP850: PS_dump_prologue_file("cp850.ps"); break; -@@ -1531,14 +1611,14 @@ - case S_ENC_CP1250: PS_dump_prologue_file("cp1250.ps"); break; - case S_ENC_KOI8_R: PS_dump_prologue_file("koi8r.ps"); break; - case S_ENC_KOI8_U: PS_dump_prologue_file("koi8u.ps"); break; -+ case S_ENC_UTF8: PS_dump_prologue_file("utf-8.ps"); -+ if (!aglist) PS_load_glyphlist(); -+ break; - case S_ENC_DEFAULT: - default: break; - } - } - -- /* Dump the body of the prologue */ -- PS_dump_prologue_file("prologue.ps"); -- - /* Redefine old epslatex linetypes if requested */ - if ((ps_params->terminal == PSTERM_EPSLATEX) && ps_params->oldstyle) { - for (i = 0; OldEPSL_linetypes[i] != NULL; i++) -@@ -1583,6 +1663,7 @@ - xmax_t = term->xmax * (xsize + xoffset) / (2*PS_SC); - ymin_t = term->ymax * yoffset / (2*PS_SC); - ymax_t = term->ymax * (ysize + yoffset) / (2*PS_SC); -+ term->tscale = PS_SC * 2; - break; - case PSTERM_PORTRAIT: - if (!ps_explicit_size) { -@@ -1593,6 +1674,7 @@ - xmax_t = term->xmax * (xsize + xoffset) / PS_SC; - ymin_t = term->ymax * yoffset / PS_SC; - ymax_t = term->ymax * (ysize + yoffset) / PS_SC; -+ term->tscale = PS_SC; - break; - case PSTERM_LANDSCAPE: - if (!ps_explicit_size) { -@@ -1603,6 +1685,7 @@ - ymax_t = term->xmax * (xsize+xoffset) / PS_SC; - xmin_t = term->ymax * (1-ysize-yoffset) / PS_SC; - xmax_t = term->ymax * (1-yoffset) / PS_SC; -+ term->tscale = PS_SC; - break; - default: - int_error(NO_CARET, "invalid postscript format used"); -@@ -1695,11 +1778,6 @@ - { - fputs("%%Trailer\n", gppsfile); - -- /* I think the following commands should be executed -- `if (ps_common_uses_fonts)`. So I changed the next line. -- Please see "PS_RememberFont", too. */ /* JFi */ -- -- /* if (!ps_common_uses_fonts) { */ /* JFi */ - if (ps_common_uses_fonts) { - fputs("%%DocumentFonts: ", gppsfile); - while (PS_DocFonts) { -@@ -1876,38 +1954,97 @@ - TERM_PUBLIC void - PS_put_text(unsigned int x, unsigned int y, const char *str) - { -- char ch; -+#define PS_NONE 0 -+#define PS_TEXT 1 -+#define PS_GLYPH 2 -+ unsigned long ch; - - if (!str && !strlen(str)) - return; - PS_move(x,y); - if (ps_ang != 0) -- fprintf(gppsfile,"currentpoint gsave translate %d rotate 0 0 M\n", -- ps_ang); -- putc('(',gppsfile); -- ch = *str++; -- while(ch!='\0') { -- if ((ch=='(') || (ch==')') || (ch=='\\')) -- putc('\\', gppsfile); -- putc(ch, gppsfile); -- ch = *str++; -- } -+ fprintf(gppsfile,"currentpoint gsave translate %d rotate 0 0 M\n", ps_ang); - -- switch(ps_justify) { -- case LEFT : -- fputs(") Lshow\n", gppsfile); -- break; -- case CENTRE : -- fputs(") Cshow\n", gppsfile); -- break; -- case RIGHT : -- fputs(") Rshow\n", gppsfile); -- break; -+ if (encoding == S_ENC_UTF8 && contains8bit(str)) { -+ /* UTF-8 encoding with multibyte characters present */ -+ int mode = PS_NONE; -+ -+ putc('[', gppsfile); -+ -+ for (utf8toulong(&ch, &str); ch != '\0'; utf8toulong(&ch, &str)) { -+ if (ch < 0x100) { -+ if (mode != PS_TEXT) -+ putc('(', gppsfile); -+ if (ch == '(' || ch == ')' || ch == '\\') -+ putc('\\', gppsfile); -+ putc((char)ch, gppsfile); -+ mode = PS_TEXT; -+ } else { -+ int i; -+ if (mode == PS_TEXT) -+ putc(')', gppsfile); -+ putc('/', gppsfile); -+#if (ADOBE_ENCODING_NAMES) -+ for (i = 0; i < psglyphs; i++) { -+ if (aglist[i].unicode == ch) { -+ fputs(aglist[i].glyphname, gppsfile); -+ break; -+ } -+ } -+ if (i >= psglyphs) /* Must not have found a glyph name */ -+#endif -+ fprintf(gppsfile, (ch > 0xffff) ? "u%lX" : "uni%04lX", ch); -+ mode = PS_GLYPH; -+ } -+ } -+ -+ if (mode == PS_TEXT) -+ putc(')', gppsfile); -+ -+ switch(ps_justify) { -+ case LEFT : -+ fputs("] GLshow\n", gppsfile); -+ break; -+ case CENTRE : -+ fputs("] GCshow\n", gppsfile); -+ break; -+ case RIGHT : -+ fputs("] GRshow\n", gppsfile); -+ break; -+ } -+ -+ } else { -+ /* plain old 8-bit mode (not UTF-8), or UTF-8 string with only 7-bit characters */ -+ putc('(',gppsfile); -+ ch = (char) *str++; -+ while(ch!='\0') { -+ if ((ch=='(') || (ch==')') || (ch=='\\')) -+ putc('\\', gppsfile); -+ putc((char) ch, gppsfile); -+ ch = (char) *str++; -+ } -+ -+ switch(ps_justify) { -+ case LEFT : -+ fputs(") Lshow\n", gppsfile); -+ break; -+ case CENTRE : -+ fputs(") Cshow\n", gppsfile); -+ break; -+ case RIGHT : -+ fputs(") Rshow\n", gppsfile); -+ break; -+ } - } -+ - if (ps_ang != 0) - fputs("grestore\n", gppsfile); - ps_path_count = 0; - PS_relative_ok = FALSE; -+ -+#undef PS_NONE -+#undef PS_TEXT -+#undef PS_GLYPH - } - - -@@ -2025,6 +2162,7 @@ - switch(style & 0xf) { - - case FS_SOLID: -+ case FS_TRANSPARENT_SOLID: - /* style == 1 --> fill with intensity according to filldensity */ - filldens = (style >> 4) / 100.0; - if(filldens < 0.0) -@@ -2036,6 +2174,7 @@ - break; - - case FS_PATTERN: -+ case FS_TRANSPARENT_PATTERN: - /* style == 2 --> fill with pattern according to fillpattern */ - /* the upper 3 nibbles of 'style' contain pattern number */ - pattern = (style >> 4) % 8; -@@ -2088,8 +2227,6 @@ - - /* ENHPOST */ - --static TBOOLEAN ENHps_opened_string; /* try to cut out empty ()'s */ -- - /* - * close a postscript string if it has been opened - */ -@@ -2102,6 +2239,8 @@ - } - } - -+static char *ENHps_opensequence = NULL; -+ - /* - * open a postscript string - */ -@@ -2125,22 +2264,92 @@ - } - - if (!ENHps_opened_string) { -- fprintf(gppsfile, "[(%s) %.1f %.1f %s %s %d (", -+ int safelen = strlen(fontname) + 40; -+ free(ENHps_opensequence); -+ ENHps_opensequence = gp_alloc(safelen,"ENHPS_opensequence"); -+ /* EAM November 2007 - moved here from enhanced_recursion() */ -+ PS_RememberFont(fontname,1); -+#ifdef HAVE_SNPRINTF -+ snprintf(ENHps_opensequence, safelen, "[(%s) %.1f %.1f %s %s %d ", - fontname, fontsize, base, - widthflag ? "true" : "false", - showflag ? "true" : "false", - overprint); -+#else -+ sprintf(ENHps_opensequence, "[(%s) %.1f %.1f %s %s %d ", -+ fontname, fontsize, base, -+ widthflag ? "true" : "false", -+ showflag ? "true" : "false", -+ overprint); -+#endif -+ fprintf(gppsfile, "%s(", ENHps_opensequence); - ENHps_opened_string = TRUE; - } - } - - /* -- * write one or more characters from inside enhanced text processing -+ * Write one character from inside enhanced text processing. -+ * This is trivial except in the case of multi-byte encoding. - */ - TERM_PUBLIC void - ENHPS_WRITEC(int c) - { -- fputc(c, gppsfile); -+ static int in_utf8 = 0; /* nonzero means we are inside a multibyte sequence */ -+ static char utf8[6]; /* holds the multibyte sequence being accumulated */ -+ static int nbytes = 0; /* number of bytes expected in the sequence */ -+ -+ /* UTF-8 Encoding */ -+ if (encoding == S_ENC_UTF8 && (c & 0x80) != 0) { -+ if (in_utf8 == 0) { -+ nbytes = (c & 0xE0) == 0xC0 ? 2 -+ : (c & 0xF0) == 0xE0 ? 3 -+ : (c & 0xF8) == 0xF0 ? 4 -+ : 0; -+ if (!nbytes) /* Illegal UTF8 char; hope it's printable */ -+ fputc(c, gppsfile); -+ else -+ utf8[in_utf8++] = c; -+ } else { -+ utf8[in_utf8++] = c; -+ if (in_utf8 >= nbytes) { -+ unsigned long wch = '\0'; -+ const char *str = &utf8[0]; -+ int i; -+ -+ utf8[nbytes] = '\0'; -+ in_utf8 = 0; -+ utf8toulong(&wch, &str); -+ -+ if (wch < 0x100) { /* Single byte ISO8859-1 character */ -+ fputc(wch, gppsfile); -+ return; -+ } -+ -+ /* Finish off previous partial string, if any */ -+ ENHPS_FLUSH(); -+ -+ /* Write a new partial string for this glyph */ -+ fprintf(gppsfile, "%s/", ENHps_opensequence); -+#if (ADOBE_ENCODING_NAMES) -+ for (i = 0; i < psglyphs; i++) { -+ if (aglist[i].unicode == wch) { -+ fputs(aglist[i].glyphname, gppsfile); -+ break; -+ } -+ } -+ if (i >= psglyphs) /* Must not have found a glyph name */ -+#endif -+ fprintf(gppsfile, (wch > 0xffff) ? "u%lX" : "uni%04lX", wch); -+ fprintf(gppsfile, "]\n"); -+ -+ /* Mark string closed */ -+ ENHps_opened_string = FALSE; -+ } -+ } -+ } else -+ -+ /* Single byte character */ -+ fputc(c, gppsfile); - } - - /* a set-font routine for enhanced post : simply copies -@@ -2189,7 +2398,7 @@ - - PS_FLUSH_PATH; - -- /* if there are no magic characters, we should just be able -+ /* FIXME: if there are no magic characters, we should just be able - * punt the string to PS_put_text(), which will give shorter - * ps output [eg tics and stuff rarely need extra processing], - * but we need to make sure that the current font is the -@@ -2549,7 +2758,7 @@ - TERM_PUBLIC int PS_make_palette (t_sm_palette *palette) - { - if (palette == NULL) { -- return 0; /* postscript can do continuous colors */ -+ return 0; /* postscript can do continuous colors */ - } - - PS_make_header(palette); -@@ -2622,16 +2831,25 @@ - /* General case for solid or pattern-filled polygons - * gsave N ... density PolyFill - */ -+ int fillpar = style >> 4; -+ style = style &0xf; -+ - fprintf(gppsfile, "gsave "); - fprintf(gppsfile, "%i %i N", corners[0].x, corners[0].y); -- for (i = 1; i < points; i++) -- fprintf(gppsfile, " %i %i V", -- corners[i].x-corners[i-1].x, corners[i].y-corners[i-1].y); -+ for (i = 1; i < points; i++) { -+ /* The rationale for mixing V and L is given in PS_vector */ -+ if (i % 105) -+ fprintf(gppsfile, " %i %i V", corners[i].x-corners[i-1].x, -+ corners[i].y-corners[i-1].y); -+ else -+ fprintf(gppsfile, " %i %i L", corners[i].x, corners[i].y); -+ } - -- switch(style & 0xf) { -+ switch(style) { - - case FS_SOLID: -- filldens = (style >> 4) / 100.0; -+ case FS_TRANSPARENT_SOLID: -+ filldens = (fillpar) / 100.0; - if(filldens < 0.0) - filldens = 0.0; - if(filldens >= 1.0) -@@ -2640,8 +2858,10 @@ - fprintf(gppsfile, " %.2f PolyFill\n", filldens); - break; - -+ case FS_TRANSPARENT_PATTERN: -+ fprintf(gppsfile," /TransparentPatterns true def\n"); - case FS_PATTERN: -- pattern = (style >> 4) % 8; -+ pattern = (fillpar) % 8; - if (pattern == 0) { - filldens = 0.5; - fprintf(gppsfile, " %.1f PolyFill\n", filldens); -@@ -2698,10 +2918,11 @@ - if (prev != NULL) /* there is a previous ps_fontfile */ - prev->next = this->next; - else /* this = ps_params->first_fontfile */ -- /* so change ps_params->first_fontfile */ -+ /* so change ps_params->first_fontfile */ - ps_params->first_fontfile = this->next; - free(this->fontfile_name); - free(this->fontfile_fullname); -+ free(this->fontname); - free(this); - this = NULL; - } -@@ -2738,13 +2959,13 @@ - * routine. - */ - static char * --PS_encode_image(unsigned M, unsigned N, coordval *image, t_imagecolor color_mode, int bits_per_component, int max_colors, enum PS_ENCODING encoding, int *return_num_bytes) -+PS_encode_image(unsigned int M, unsigned int N, coordval *image, t_imagecolor color_mode, int bits_per_component, int max_colors, enum PS_ENCODING encoding, int *return_num_bytes) - { -- unsigned coord_remaining; -+ unsigned int coord_remaining; - coordval *coord_ptr; - unsigned short i_line; -- unsigned i_element; -- unsigned end_of_line; -+ unsigned int i_element; -+ unsigned int end_of_line; - unsigned short bits_remaining, bits_start; - - unsigned long tuple4; -@@ -2912,7 +3133,7 @@ - - - static void --print_five_operand_image(unsigned M, unsigned N, gpiPoint *corner, t_imagecolor color_mode, unsigned short bits_per_component) -+print_five_operand_image(unsigned int M, unsigned int N, gpiPoint *corner, t_imagecolor color_mode, unsigned short bits_per_component) - { - char *space = ps_params->level1 ? "" : " "; - -@@ -2937,7 +3158,7 @@ - - - TERM_PUBLIC void --PS_image (unsigned M, unsigned N, coordval *image, gpiPoint *corner, t_imagecolor color_mode) -+PS_image (unsigned int M, unsigned int N, coordval *image, gpiPoint *corner, t_imagecolor color_mode) - { - char *encoded_image; - int num_encoded_bytes; -@@ -3109,13 +3330,12 @@ - * If unsuccessful, look for hardcoded absolute path on UNIX, - * or hardcoded relative path on Windows and OS2, - * or files included at compile time. */ --static void --PS_dump_prologue_file(char *name) -+static FILE * -+PS_open_prologue_file(char *name) - { - char *fullname; - char *ps_prologue_dir; - FILE *prologue_fd; -- char buf[256]; - - if ((ps_prologue_dir = getenv("GNUPLOT_PS_DIR")) == NULL) { - #ifdef GNUPLOT_PS_DIR -@@ -3167,6 +3387,8 @@ - dump = prologue_8859_1_ps; - else if (!strcmp(name,"8859-2.ps")) - dump = prologue_8859_2_ps; -+ else if (!strcmp(name,"8859-9.ps")) -+ dump = prologue_8859_9_ps; - else if (!strcmp(name,"cp1250.ps")) - dump = prologue_cp1250_ps; - else if (!strcmp(name,"cp437.ps")) -@@ -3179,16 +3401,18 @@ - dump = prologue_koi8r_ps; - else if (!strcmp(name,"koi8u.ps")) - dump = prologue_koi8u_ps; -+ else if (!strcmp(name,"utf-8.ps")) -+ dump = prologue_utf_8_ps; - else if (!strcmp(name,"prologue.ps")) - dump = prologue_prologue_ps; - else -- int_error(NO_CARET,"Requested Postscript prologue is not included"); -+ int_warn(NO_CARET,"Requested Postscript prologue %s not found",name); - - if (dump) { - for (i = 0; dump[i] != NULL; ++i) - fprintf(gppsfile, "%s", dump[i]); - } -- return; -+ return NULL; - #endif /* GNUPLOT_PS_DIR */ - } - -@@ -3219,8 +3443,62 @@ - int_error(NO_CARET,"Plot failed!"); - } - free(fullname); -- while (fgets(buf, sizeof(buf), prologue_fd)) -- fputs(buf, gppsfile); -+ return prologue_fd; -+} -+ -+static void -+PS_dump_prologue_file(char *name) -+{ -+ char buf[256]; -+ FILE *prologue_fd = PS_open_prologue_file(name); -+ -+ if (prologue_fd) { -+ while (fgets(buf, sizeof(buf), prologue_fd)) -+ fputs(buf, gppsfile); -+ fclose(prologue_fd); -+ } -+} -+ -+static void -+PS_load_glyphlist() -+{ -+ char buf[256]; -+ char *next = NULL; -+ unsigned int code; -+ int len; -+ char glyph_name[32]; -+ FILE *prologue_fd = PS_open_prologue_file("aglfn.txt"); -+ -+ if (!prologue_fd) -+ return; -+ -+ while (fgets(buf, sizeof(buf), prologue_fd)) { -+ if (*buf == '#' || *buf == '\n') -+ continue; -+ code = strtol(buf,&next,16); -+ -+ /* User control over whether Adobe glyph names are used for unicode */ -+ /* entries above 0x0100. I.e. when we see a UTF-8 alpha, do we write */ -+ /* /alpha rather than /uni03B1? Some fonts want one or the other. */ -+ /* This is controlled by 'set term post adobeglyphnames'. */ -+ if (code >= 0x0100 && !ps_params->adobeglyphnames) -+ continue; -+ -+ next++; -+ len = strchr(next,';') - next; -+ strncpy(glyph_name, next, len); -+ glyph_name[len] = '\0'; -+ FPRINTF((stderr, "%04X %s\n", code, glyph_name)); -+ if (aglist_size + sizeof(ps_glyph) > aglist_alloc) { -+ aglist_alloc += 2048; -+ aglist = gp_realloc(aglist, aglist_alloc, "aglist"); -+ } -+ aglist[psglyphs].unicode = code; -+ aglist[psglyphs].glyphname = gp_strdup(glyph_name); -+ aglist_size += sizeof(ps_glyph); -+ psglyphs++; -+ } -+ - fclose(prologue_fd); - } - -@@ -3241,6 +3519,32 @@ - - } - -+TERM_PUBLIC void -+PS_layer(t_termlayer syncpoint) -+{ -+ static int plotno = 0; -+ -+ /* We must ignore all syncpoints that we don't recognize */ -+ switch (syncpoint) { -+ -+ default: -+ break; -+ -+ case TERM_LAYER_BEFORE_PLOT: -+ fprintf(gppsfile, "%% Begin plot #%d\n", ++plotno); -+ break; -+ -+ case TERM_LAYER_AFTER_PLOT: -+ fprintf(gppsfile, "%% End plot #%d\n", plotno); -+ break; -+ -+ case TERM_LAYER_RESET: -+ plotno = 0; -+ break; -+ -+ } -+} -+ - #endif /* TERM_BODY */ - - #ifdef TERM_TABLE -@@ -3253,7 +3557,7 @@ - PS_text, null_scale, PS_graphics, PS_move, PS_vector, - PS_linetype, PS_put_text, PS_text_angle, - PS_justify_text, PS_point, PS_arrow, PS_set_font, PS_pointsize, -- TERM_BINARY|TERM_IS_POSTSCRIPT|TERM_CAN_CLIP /*flags*/, -+ TERM_BINARY|TERM_IS_POSTSCRIPT|TERM_CAN_CLIP|TERM_CAN_DASH /*flags*/, - 0 /*suspend*/, 0 /*resume*/, PS_fillbox, PS_linewidth - #ifdef USE_MOUSE - , 0, 0, 0, 0, 0 /* no mouse support for postscript */ -@@ -3266,8 +3570,9 @@ - , PS_image - #endif - , ENHPS_OPEN, ENHPS_FLUSH, ENHPS_WRITEC -- , 0 /* layer control */ -+ , PS_layer /* used only to insert comments */ - , PS_path -+ , PS_SC /* terminal to pixel coord scale factor */ - TERM_TABLE_END(post_driver) - - #undef LAST_TERM -@@ -3378,7 +3683,7 @@ - " but transfers the texts to LaTeX instead of including in the PostScript", - " code. Thus, many options are the same as in the `postscript terminal`.", - "", --" From version 4.0 to 4.2, some changes have been invoked into the default ", -+" From version 4.0 to 4.1, some changes have been invoked into the default ", - " appearance of the epslatex terminal to reach better consistency with the", - " postscript terminal: The plot size has been changed from 5 x 3 inches to", - " 5 x 3.5 inches; the character width is now estimated to be 60% of the font", -@@ -3571,7 +3876,7 @@ - " \\special{psfile=...} command. Remember to close the `output file` before", - " next plot unless in `multiplot` mode.", - "", --" Gnuplot versions prior version 4.2 have generated plots of the size", -+" Gnuplot versions prior version 4.1 have generated plots of the size", - " 5 x 3 inches using the ps(la)tex terminal while the current version generates", - " 5 x 3.5 inches to be consistent with the postscript eps terminal. In", - " addition, the character width is now estimated to be 60% of the font size", -@@ -3624,7 +3929,7 @@ - " {enhanced | noenhanced}", - " {defaultplex | simplex | duplex}", - " {fontfile [add | delete] \"\"", --" | nofontfiles}", -+" | nofontfiles} {{no}adobeglyphnames}", - PS_COMMON_OPTS1 - PS_COMMON_OPTS2 - PS_COMMON_PROLOG_INFO -@@ -3694,112 +3999,6 @@ - " A PostScript file is editable, so once `gnuplot` has created one, you are", - " free to modify it to your heart's desire. See the `editing postscript`", - " section for some hints.", --"2 enhanced postscript", --"?commands set terminal postscript enhanced", --"?set terminal postscript enhanced", --"?set term postscript enhanced", --"?terminal postscript enhanced", --"?term postscript enhanced", --"?enhanced_postscript", --"?enhanced postscript", --"?Enhanced postscript", --"?enhanced text", --"?Enhanced text", --"?enhanced", --" Several terminal types support an enhanced text mode in which ", --" additional formatting information is embedded in the text string.", --"", --"@start table - first is interactive cleartext form", --" Control Examples Explanation", --" ^ a^x superscript", --" _ a_x subscript", --" @ @x or a@^b_c phantom box (occupies no width)", --" & &{space} inserts space of specified length", --" ~ ~a{.8-} overprints '-' on 'a', raised by .8", --" times the current fontsize", --"#\\begin{tabular}{|ccl|} \\hline", --"#\\multicolumn{3}{|c|}{Enhanced Text Control Codes} \\\\ \\hline", --"#Control & Examples & Explanation \\\\ \\hline", --"#\\verb~^~ & \\verb~a^x~ & superscript\\\\", --"#\\verb~_~ & \\verb~a_x~ & subscript\\\\", --"#\\verb~@~ & \\verb~@x or a@^b_c~ & phantom box (occupies no width)\\\\", --"#\\verb~&~ & \\verb~&{space}~ & inserts space of specified length\\\\", --"#\\verb|~| & \\verb|~a{.8-}| & overprints '-' on 'a', raised by .8\\\\", --"#\\verb~ ~ & \\verb~ ~ & times the current fontsize\\\\", --"%c c l .", --"%.TE", /* ugly - doc2ms uses @ for column separator, but here we */ --"%.TS", /* need @ in table, so end and restart the table ! */ --"%center box tab ($) ;", --"%c c l .", --"%Control$Examples$Explanation", --"%_", --"%^$a^x$superscript", --"%\\&_$a\\&_x$subscript", --"% @ $ @x or a\\&@^b\\&_c$phantom box (occupies no width)", --"% & $ &{space}$inserts space of specified length", --"% ~ $ ~a{.8-}$overprints '-' on 'a', raised by .8", --"% $ $times the current fontsize", --"@end table", --"", --" Braces can be used to place multiple-character text where a single character", --" is expected (e.g., 2^{10}). To change the font and/or size, use the full", --" form: {/[fontname][=fontsize | *fontscale] text}. Thus {/Symbol=20 G} is a", --" 20-point GAMMA and {/*0.75 K} is a K at three-quarters of whatever fontsize", --" is currently in effect. (The '/' character MUST be the first character after", --" the '{'.)", --"", --" If the encoding vector has been changed by `set encoding`, the default", --" encoding vector can be used instead by following the slash with a dash. This", --" is unnecessary if you use the Symbol font, however---since /Symbol uses its", --" own encoding vector, `gnuplot` will not apply any other encoding vector to", --" it.", --"", --" The phantom box is useful for a@^b_c to align superscripts and subscripts", --" but does not work well for overwriting an accent on a letter. (To do the", --" latter, it is much better to use 'set encoding iso_8859_1' to change to the", --" ISO Latin-1 encoding vector, which contains a large variety of letters with", --" accents or other diacritical marks.) Since the box is non-spacing, it is", --" sensible to put the shorter of the subscript or superscript in the box (that", --" is, after the @).", --"", --" Space equal in length to a string can be inserted using the '&' character.", --" Thus", --" 'abc&{def}ghi'", --" would produce", --" 'abc ghi'.", --"", --" The '~' character causes the next character or bracketed text to be", --" overprinted by the following character or bracketed text. The second text", --" will be horizontally centered on the first. Thus '~a/' will result in an 'a'", --" with a slash through it. You can also shift the second text vertically by", --" preceding the second text with a number, which will define the fraction of the", --" current fontsize by which the text will be raised or lowered. In this case", --" the number and text must be enclosed in brackets because more than one", --" character is necessary. If the overprinted text begins with a number, put a", --" space between the vertical offset and the text ('~{abc}{.5 000}'); otherwise", --" no space is needed ('~{abc}{.5---}'). You can change the font for one or", --" both strings ('~a{.5 /*.2 o}'---an 'a' with a one-fifth-size 'o' on top---and", --" the space between the number and the slash is necessary), but you can't", --" change it after the beginning of the string. Neither can you use any other", --" special syntax within either string. You can, of course, use control", --" characters by escaping them (see below), such as '~a{\\^}'", --"", --" You can access special symbols numerically by specifying \\character-code (in", --" octal), e.g., {/Symbol \\245} is the symbol for infinity.", --"", --" You can escape control characters using \\, e.g., \\\\, \\{, and so on.", --"", --" But be aware that strings in double-quotes are parsed differently than those", --" enclosed in single-quotes. The major difference is that backslashes may need", --" to be doubled when in double-quoted strings.", --"", --" Examples (these are hard to describe in words---try them!):", --" set xlabel 'Time (10^6 {/Symbol m}s)'", --" set title '{/Symbol=18 \\362@_{/=9.6 0}^{/=12 x}} \\", --" {/Helvetica e^{-{/Symbol m}^2/2} d}{/Symbol m}'", --"", --" The file \"ps_guide.ps\" in the /docs/psdoc subdirectory of the `gnuplot` source", --" distribution contains more examples of the enhanced syntax.", - "2 editing postscript", - "?commands set terminal postscript editing", - "?set terminal postscript editing", -@@ -3955,6 +4154,26 @@ - " controlled at the time gnuplot is built. However, you can control this", - " either by defining an environment variable GNUPLOT_PS_DIR or by using the", - " gnuplot command `set loadpath`. See `set loadpath`.", -+"2 postscript adobeglyphnames", -+"?commands set terminal postscript adobeglyphnames", -+"?set terminal postscript adobeglyphnames", -+"?terminal postscript adobeglyphnames", -+"?postscript adobeglyphnames", -+"?adobeglyphnames", -+"=UTF-8", -+" This setting is only relevant to PostScript output with UTF-8 encoding.", -+" It controls the names used to describe characters with Unicode entry points", -+" higher than 0x00FF. That is, all characters outside of the Latin1 set.", -+" In general unicode characters do not have a unique name; they have only a", -+" unicode identification code. However, Adobe have a recommended scheme for", -+" assigning names to certain ranges of characters (extended Latin, Greek, etc).", -+" Some fonts use this scheme, others do not. By default, gnuplot will use", -+" the Adobe glyph names. E.g. the lower case Greek letter alpha will be called", -+" /alpha. If you specific `noadobeglyphnames` then instead gnuplot will use", -+" /uni03B1 to describe this character. If you get this setting wrong, the", -+" character may not be found even if it is present in the font.", -+" It is probably always correct to use the default for Adobe fonts, but for", -+" other fonts you may have to try both settings. See also `fontfile`.", - "", - "" - END_HELP(post) ---- term/PostScript/cp1250.ps -+++ term/PostScript/cp1250.ps 2007-11-05 19:21:56.000000000 +0100 +diff -U 3 -H -d -r -N -- term/PostScript/8859-1.ps term/PostScript/8859-1.ps +--- term/PostScript/8859-1.ps 2006-03-24 22:48:47.000000000 +0100 ++++ term/PostScript/8859-1.ps 2009-05-09 13:53:00.000000000 +0200 @@ -1,3 +1,6 @@ +% -+% Encoding for code page 1250 (Microsoft Windows Central and Eastern European) ++% Encoding for ISO-8859-1 (also called Latin1) +% - /reencodeCP1250 { + /reencodeISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall ---- term/PostScript/unicode_small.map -+++ term/PostScript/unicode_small.map 2007-11-11 20:22:23.000000000 +0100 -@@ -0,0 +1,462 @@ -+=00 U+0000 -+=01 U+0001 -+=02 U+0002 -+=03 U+0003 -+=04 U+0004 -+=05 U+0005 -+=06 U+0006 -+=07 U+0007 -+=08 U+0008 -+=09 U+0009 -+=0A U+000A -+=0B U+000B -+=0C U+000C -+=0D U+000D -+=0E U+000E -+=0F U+000F -+=10 U+0010 -+=11 U+0011 -+=12 U+0012 -+=13 U+0013 -+=14 U+0014 -+=15 U+0015 -+=16 U+0016 -+=17 U+0017 -+=18 U+0018 -+=19 U+0019 -+=1A U+001A -+=1B U+001B -+=1C U+001C -+=1D U+001D -+=1E U+001E -+=1F U+001F -+!20 U+0020 space -+!21 U+0021 exclam -+!22 U+0022 quotedbl -+!23 U+0023 numbersign -+!24 U+0024 dollar -+!25 U+0025 percent -+!26 U+0026 ampersand -+!27 U+0027 quotesingle -+!28 U+0028 parenleft -+!29 U+0029 parenright -+!2A U+002A asterisk -+!2B U+002B plus -+!2C U+002C comma -+!2D U+002D hyphen -+!2E U+002E period -+!2F U+002F slash -+!30 U+0030 zero -+!31 U+0031 one -+!32 U+0032 two -+!33 U+0033 three -+!34 U+0034 four -+!35 U+0035 five -+!36 U+0036 six -+!37 U+0037 seven -+!38 U+0038 eight -+!39 U+0039 nine -+!3A U+003A colon -+!3B U+003B semicolon -+!3C U+003C less -+!3D U+003D equal -+!3E U+003E greater -+!3F U+003F question -+!40 U+0040 at -+!41 U+0041 A -+!42 U+0042 B -+!43 U+0043 C -+!44 U+0044 D -+!45 U+0045 E -+!46 U+0046 F -+!47 U+0047 G -+!48 U+0048 H -+!49 U+0049 I -+!4A U+004A J -+!4B U+004B K -+!4C U+004C L -+!4D U+004D M -+!4E U+004E N -+!4F U+004F O -+!50 U+0050 P -+!51 U+0051 Q -+!52 U+0052 R -+!53 U+0053 S -+!54 U+0054 T -+!55 U+0055 U -+!56 U+0056 V -+!57 U+0057 W -+!58 U+0058 X -+!59 U+0059 Y -+!5A U+005A Z -+!5B U+005B bracketleft -+!5C U+005C backslash -+!5D U+005D bracketright -+!5E U+005E asciicircum -+!5F U+005F underscore -+!60 U+0060 grave -+!61 U+0061 a -+!62 U+0062 b -+!63 U+0063 c -+!64 U+0064 d -+!65 U+0065 e -+!66 U+0066 f -+!67 U+0067 g -+!68 U+0068 h -+!69 U+0069 i -+!6A U+006A j -+!6B U+006B k -+!6C U+006C l -+!6D U+006D m -+!6E U+006E n -+!6F U+006F o -+!70 U+0070 p -+!71 U+0071 q -+!72 U+0072 r -+!73 U+0073 s -+!74 U+0074 t -+!75 U+0075 u -+!76 U+0076 v -+!77 U+0077 w -+!78 U+0078 x -+!79 U+0079 y -+!7A U+007A z -+!7B U+007B braceleft -+!7C U+007C bar -+!7D U+007D braceright -+!7E U+007E asciitilde -+=A0 U+00A0 -+!A1 U+00A1 exclamdown -+!A2 U+00A2 cent -+!A3 U+00A3 sterling -+!A4 U+00A4 currency -+!A5 U+00A5 yen -+!A6 U+00A6 brokenbar -+!A7 U+00A7 section -+!A8 U+00A8 dieresis -+!A9 U+00A9 copyright -+!AA U+00AA ordfeminine -+!AB U+00AB guillemotleft -+!AC U+00AC logicalnot -+=AD U+00AD -+!AE U+00AE registered -+!AF U+00AF macron -+!B0 U+00B0 degree -+!B1 U+00B1 plusminus -+=B2 U+00B2 -+=B3 U+00B3 -+!B4 U+00B4 acute -+=B5 U+00B5 -+!B6 U+00B6 paragraph -+!B7 U+00B7 periodcentered -+!B8 U+00B8 cedilla -+=B9 U+00B9 -+!BA U+00BA ordmasculine -+!BB U+00BB guillemotright -+!BC U+00BC onequarter -+!BD U+00BD onehalf -+!BE U+00BE threequarters -+!BF U+00BF questiondown -+!C0 U+00C0 Agrave -+!C1 U+00C1 Aacute -+!C2 U+00C2 Acircumflex -+!C3 U+00C3 Atilde -+!C4 U+00C4 Adieresis -+!C5 U+00C5 Aring -+!C6 U+00C6 AE -+!C7 U+00C7 Ccedilla -+!C8 U+00C8 Egrave -+!C9 U+00C9 Eacute -+!CA U+00CA Ecircumflex -+!CB U+00CB Edieresis -+!CC U+00CC Igrave -+!CD U+00CD Iacute -+!CE U+00CE Icircumflex -+!CF U+00CF Idieresis -+!D0 U+00D0 Eth -+!D1 U+00D1 Ntilde -+!D2 U+00D2 Ograve -+!D3 U+00D3 Oacute -+!D4 U+00D4 Ocircumflex -+!D5 U+00D5 Otilde -+!D6 U+00D6 Odieresis -+!D7 U+00D7 multiply -+!D8 U+00D8 Oslash -+!D9 U+00D9 Ugrave -+!DA U+00DA Uacute -+!DB U+00DB Ucircumflex -+!DC U+00DC Udieresis -+!DD U+00DD Yacute -+!DE U+00DE Thorn -+!DF U+00DF germandbls -+!E0 U+00E0 agrave -+!E1 U+00E1 aacute -+!E2 U+00E2 acircumflex -+!E3 U+00E3 atilde -+!E4 U+00E4 adieresis -+!E5 U+00E5 aring -+!E6 U+00E6 ae -+!E7 U+00E7 ccedilla -+!E8 U+00E8 egrave -+!E9 U+00E9 eacute -+!EA U+00EA ecircumflex -+!EB U+00EB edieresis -+!EC U+00EC igrave -+!ED U+00ED iacute -+!EE U+00EE icircumflex -+!EF U+00EF idieresis -+!F0 U+00F0 eth -+!F1 U+00F1 ntilde -+!F2 U+00F2 ograve -+!F3 U+00F3 oacute -+!F4 U+00F4 ocircumflex -+!F5 U+00F5 otilde -+!F6 U+00F6 odieresis -+!F7 U+00F7 divide -+!F8 U+00F8 oslash -+!F9 U+00F9 ugrave -+!FA U+00FA uacute -+!FB U+00FB ucircumflex -+!FC U+00FC udieresis -+!FD U+00FD yacute -+!FE U+00FE thorn -+!FF U+00FF ydieresis -+!19e U+0391 uni0391 -+!19f U+0392 uni0392 -+!1a0 U+0393 uni0393 -+!1a1 U+0394 uni0394 -+!1a2 U+0395 uni0395 -+!1a3 U+0396 uni0396 -+!1a4 U+0397 uni0397 -+!1a5 U+0398 uni0398 -+!1a6 U+0399 uni0399 -+!1a7 U+039A uni039A -+!1a8 U+039B uni039B -+!1a9 U+039C uni039C -+!1aa U+039D uni039D -+!1ab U+039E uni039E -+!1ac U+039F uni039F -+!1ad U+03A0 uni03A0 -+!1ae U+03A1 uni03A1 -+!1af U+03A3 uni03A3 -+!1b0 U+03A4 uni03A4 -+!1b1 U+03A5 uni03A5 -+!1b2 U+03A6 uni03A6 -+!1b3 U+03A7 uni03A7 -+!1b4 U+03A8 uni03A8 -+!1b5 U+03A9 uni03A9 -+!1b6 U+03B1 uni03B1 -+!1b7 U+03B2 uni03B2 -+!1b8 U+03B3 uni03B3 -+!1b9 U+03B4 uni03B4 -+!1ba U+03B5 uni03B5 -+!1bb U+03B6 uni03B6 -+!1bc U+03B7 uni03B7 -+!1bd U+03B8 uni03B8 -+!1be U+03B9 uni03B9 -+!1bf U+03BA uni03BA -+!1c0 U+03BB uni03BB -+!1c1 U+03BC uni03BC -+!1c2 U+03BD uni03BD -+!1c3 U+03BE uni03BE -+!1c4 U+03BF uni03BF -+!1c5 U+03C0 uni03C0 -+!1c6 U+03C1 uni03C1 -+!1c7 U+03C2 uni03C2 -+!1c8 U+03C3 uni03C3 -+!1c9 U+03C4 uni03C4 -+!1ca U+03C5 uni03C5 -+!1cb U+03C6 uni03C6 -+!1cc U+03C7 uni03C7 -+!1cd U+03C8 uni03C8 -+!1ce U+03C9 uni03C9 -+!1cf U+03D0 uni03D0 -+!1d0 U+03D1 uni03D1 -+!1d1 U+03D5 uni03D5 -+!1d2 U+03D6 uni03D6 -+!25b U+2016 uni2016 -+!26d U+2032 uni2032 -+!26e U+2033 uni2033 -+!26f U+2034 uni2034 -+!270 U+2035 uni2035 -+!271 U+2036 uni2036 -+!272 U+2037 uni2037 -+!273 U+2039 uni2039 -+!274 U+203A uni203A -+!275 U+203C uni203C -+!276 U+2044 uni2044 -+!277 U+20AC uni20AC -+!278 U+2107 uni2107 -+!279 U+210B uni210B -+!27a U+210E uni210E -+!27b U+210F uni210F -+!27e U+2113 uni2113 -+!284 U+211B uni211B -+!289 U+2126 uni2126 -+!28a U+2127 uni2127 -+!28d U+212B uni212B -+!295 U+2135 uni2135 -+!296 U+2136 uni2136 -+!297 U+2137 uni2137 -+!298 U+2138 uni2138 -+!299 U+2190 uni2190 -+!29a U+2191 uni2191 -+!29b U+2192 uni2192 -+!29c U+2193 uni2193 -+!29d U+2194 uni2194 -+!29e U+2195 uni2195 -+!2a1 U+21D0 uni21D0 -+!2a2 U+21D1 uni21D1 -+!2a3 U+21D2 uni21D2 -+!2a4 U+21D3 uni21D3 -+!2a5 U+21D4 uni21D4 -+!2a6 U+2200 uni2200 -+!2a7 U+2202 uni2202 -+!2a8 U+2203 uni2203 -+!2aa U+2205 uni2205 -+!2ab U+2206 uni2206 -+!2ac U+2207 uni2207 -+!2ad U+2208 uni2208 -+!2ae U+2209 uni2209 -+!2af U+220A uni220A -+!2b0 U+220B uni220B -+!2b1 U+220C uni220C -+!2b2 U+220D uni220D -+!2b4 U+220F uni220F -+!2b6 U+2211 uni2211 -+!2b7 U+2212 uni2212 -+!2b8 U+2213 uni2213 -+!2ba U+2215 uni2215 -+!2bb U+2216 uni2216 -+!2bc U+2217 uni2217 -+!2bd U+2218 uni2218 -+!2be U+2219 uni2219 -+!2bf U+221A uni221A -+!2c0 U+221B uni221B -+!2c1 U+221C uni221C -+!2c2 U+221D uni221D -+!2c3 U+221E uni221E -+!2c4 U+221F uni221F -+!2c8 U+2223 uni2223 -+!2ca U+2225 uni2225 -+!2cc U+2227 uni2227 -+!2cd U+2228 uni2228 -+!2ce U+2229 uni2229 -+!2cf U+222A uni222A -+!2d0 U+222B uni222B -+!2d1 U+222C uni222C -+!2d2 U+222D uni222D -+!2d3 U+222E uni222E -+!2d9 U+2234 uni2234 -+!2da U+2235 uni2235 -+!2db U+2236 uni2236 -+!2dc U+2237 uni2237 -+!2e1 U+223C uni223C -+!2e2 U+223D uni223D -+!2e3 U+223E uni223E -+!2e4 U+223F uni223F -+!2e6 U+2241 uni2241 -+!2e7 U+2242 uni2242 -+!2e8 U+2243 uni2243 -+!2e9 U+2244 uni2244 -+!2ea U+2245 uni2245 -+!2eb U+2246 uni2246 -+!2ec U+2247 uni2247 -+!2ed U+2248 uni2248 -+!2ee U+2249 uni2249 -+!2f4 U+224F uni224F -+!2f5 U+225F uni225F -+!2f6 U+2260 uni2260 -+!2f7 U+2261 uni2261 -+!2fa U+2264 uni2264 -+!2fb U+2265 uni2265 -+!2fc U+2266 uni2266 -+!2fd U+2267 uni2267 -+!300 U+226A uni226A -+!301 U+226B uni226B -+!302 U+226C uni226C -+!303 U+226D uni226D -+!304 U+226E uni226E -+!305 U+226F uni226F -+!306 U+2270 uni2270 -+!307 U+2271 uni2271 -+!308 U+2272 uni2272 -+!309 U+2273 uni2273 -+!30a U+2274 uni2274 -+!30b U+2275 uni2275 -+!310 U+227A uni227A -+!311 U+227B uni227B -+!312 U+227C uni227C -+!313 U+227D uni227D -+!314 U+227E uni227E -+!315 U+227F uni227F -+!316 U+2280 uni2280 -+!317 U+2281 uni2281 -+!318 U+2282 uni2282 -+!319 U+2283 uni2283 -+!31a U+2284 uni2284 -+!31b U+2285 uni2285 -+!31c U+2286 uni2286 -+!31d U+2287 uni2287 -+!31e U+2288 uni2288 -+!31f U+2289 uni2289 -+!389 U+2297 uni2297 -+!38b U+2299 uni2299 -+!320 U+22C0 uni22C0 -+!321 U+22C1 uni22C1 -+!322 U+22C2 uni22C2 -+!323 U+22C3 uni22C3 -+!327 U+2310 uni2310 -+!328 U+2320 uni2320 -+!329 U+2321 uni2321 -+!32a U+2322 uni2322 -+!32b U+2323 uni2323 -+!32c U+2329 uni2329 -+!32d U+232A uni232A -+!32e U+239B uni239B -+!32f U+239C uni239C -+!330 U+239D uni239D -+!331 U+239E uni239E -+!332 U+239F uni239F -+!333 U+23A0 uni23A0 -+!334 U+23A1 uni23A1 -+!335 U+23A2 uni2392 -+!336 U+23A3 uni23A3 -+!337 U+23A4 uni23A4 -+!338 U+23A5 uni23A5 -+!339 U+23A6 uni23A6 -+!33a U+23A7 uni23A7 -+!33b U+23A8 uni23A8 -+!33c U+23A9 uni23A9 -+!33d U+23AA uni23AA -+!33e U+23AB uni23AB -+!33f U+23AC uni23AC -+!340 U+23AD uni23AD -+!341 U+23AE uni23AE -+!342 U+23AF uni23AF -+!343 U+23B0 uni23B0 -+!344 U+23B1 uni23B1 -+!345 U+23B2 uni23B2 -+!346 U+23B3 uni23B3 -+!347 U+23B4 uni23B4 -+!348 U+23B5 uni23B5 -+!349 U+23B6 uni23B6 -+!34a U+23B7 uni23B7 -+!34b U+23B8 uni23B8 -+!34c U+23B9 uni23B9 -+!356 U+25A0 uni25A0 -+!357 U+25A1 uni25A1 -+!358 U+25AA uni25AA -+!359 U+25AB uni25AB -+!35b U+25B2 uni25B2 -+!35c U+25B3 uni25B3 -+!35d U+25BC uni25BC -+!35e U+25BD uni25BD -+!35a U+25C6 uni25C6 -+!35f U+25CA uni25CA -+!360 U+25CB uni25CB -+!361 U+25CF uni25CF -+!364 U+25E6 uni25E6 -+!362 U+25FB uni25FB -+!363 U+25FC uni25FC -+!365 U+2609 uni2609 ---- term/PostScript/8859-15.ps -+++ term/PostScript/8859-15.ps 2007-11-05 19:21:56.000000000 +0100 +diff -U 3 -H -d -r -N -- term/PostScript/8859-15.ps term/PostScript/8859-15.ps +--- term/PostScript/8859-15.ps 2006-03-24 22:48:47.000000000 +0100 ++++ term/PostScript/8859-15.ps 2009-05-09 13:53:00.000000000 +0200 @@ -1,3 +1,6 @@ +% +% Encoding for ISO-8859-15 (also called Latin9) @@ -1733,23 +255,34 @@ /reencodeISO15 { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall ---- term/PostScript/utf-8.ps -+++ term/PostScript/utf-8.ps 2007-11-11 20:22:23.000000000 +0100 -@@ -0,0 +1,58 @@ +diff -U 3 -H -d -r -N -- term/PostScript/8859-2.ps term/PostScript/8859-2.ps +--- term/PostScript/8859-2.ps 2006-08-12 00:35:05.000000000 +0200 ++++ term/PostScript/8859-2.ps 2009-05-09 13:53:00.000000000 +0200 +@@ -1,4 +1,5 @@ +-% Encoding for ISO-8859-2 (also called as Latin-2), with +% -+% Base ISO8859-1 character encoding plus support macros for UTF-8 encoding -+% via the glyphshow operator ++% Encoding for ISO-8859-2 (also called Latin2), with + % minor differences to "true" ISO-8859-2 (*commaaccent + % instead of *cedilla for sStT -> incorrect in ISO-8859-2, + % the standard will probably be modified in this respect) +diff -U 3 -H -d -r -N -- term/PostScript/8859-9.ps term/PostScript/8859-9.ps +--- term/PostScript/8859-9.ps 1970-01-01 01:00:00.000000000 +0100 ++++ term/PostScript/8859-9.ps 2009-05-09 13:53:00.000000000 +0200 +@@ -0,0 +1,44 @@ +% -+/reencodeISO { ++% Encoding for ISO_8859_9 (also called Latin5) ++% Plus code points 80-9F used in Codepage 1254 ++% ++/reencodeISO9 { +dup dup findfont dup length dict begin +{ 1 index /FID ne { def }{ pop pop } ifelse } forall +currentdict /CharStrings known { + CharStrings /Idieresis known { -+ /Encoding ISOLatin1Encoding def } if ++ /Encoding ISOLatin5Encoding def } if +} if +currentdict end definefont +} def -+/ISOLatin1Encoding [ ++/ISOLatin5Encoding [ +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef +/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef @@ -1761,73 +294,34 @@ +/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright +/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m +/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde -+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -+/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve -+/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut -+/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar ++/Euro/.notdef/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl ++/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef/.notdef/.notdef ++/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash ++/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef/Ydieresis ++/.notdef/space/exclamdown/cent/sterling/currency/yen/brokenbar +/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot +/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior -+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine ++/acute/mu/paragraph/bullet/cedilla/onesuperior/ordmasculine +/guillemotright/onequarter/onehalf/threequarters/questiondown +/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex -+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis -+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute -+/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis ++/Idieresis/Gbreve/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis ++/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Idotaccent ++/Scedilla/germandbls/agrave/aacute/acircumflex/atilde/adieresis +/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave -+/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex ++/iacute/icircumflex/idieresis/gbreve/ntilde/ograve/oacute/ocircumflex +/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis -+/yacute/thorn/ydieresis ++/dotlessi/scedilla/ydieresis +] def -+ -+/Gshow { dup type /stringtype eq { show } { glyphshow } ifelse } def -+ -+/Gsall { {Gshow} forall } def -+/Gwidth { -+ dup currentpoint pop exch -+ gsave 6 array currentmatrix nulldevice setmatrix Gsall currentpoint pop grestore sub -+ } def -+/GLshow {currentpoint stroke M 0 vshift R -+ Blacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def -+/GRshow {currentpoint stroke M dup Gwidth vshift R -+ Blacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def -+/GCshow {currentpoint stroke M dup Gwidth 2 div vshift R -+ Blacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def ---- term/PostScript/8859-1.ps -+++ term/PostScript/8859-1.ps 2007-11-05 19:21:56.000000000 +0100 -@@ -1,3 +1,6 @@ -+% -+% Encoding for ISO-8859-1 (also called Latin1) -+% - /reencodeISO { - dup dup findfont dup length dict begin - { 1 index /FID ne { def }{ pop pop } ifelse } forall ---- term/PostScript/cp437.ps -+++ term/PostScript/cp437.ps 2007-11-05 19:21:56.000000000 +0100 -@@ -1,4 +1,5 @@ --% encoding for code page 437 -+% -+% encoding for code page 437 (original MSDOS) - % version 1.0: - Mainly letters are mapped. The following positions - % (JFi) are left blank (undefined): - % -- first 32 positions, ---- term/PostScript/cp852.ps -+++ term/PostScript/cp852.ps 2007-11-05 19:21:56.000000000 +0100 -@@ -1,4 +1,5 @@ --% encoding for code page 852 -+% -+% encoding for code page 852 (MSDOS Central European) - /reencodeCP852 { - dup dup findfont dup length dict begin - { 1 index /FID ne { def }{ pop pop } ifelse } forall ---- term/PostScript/NOTE.aglfn -+++ term/PostScript/NOTE.aglfn 2008-03-31 17:44:57.145018619 +0200 +diff -U 3 -H -d -r -N -- term/PostScript/NOTE.aglfn term/PostScript/NOTE.aglfn +--- term/PostScript/NOTE.aglfn 1970-01-01 01:00:00.000000000 +0100 ++++ term/PostScript/NOTE.aglfn 2009-05-09 13:53:00.000000000 +0200 @@ -0,0 +1,2 @@ +The document aglfn.txt was obtained from http://www.adobe.com/devnet/opentype/archives/aglfn.txt +Do never change this document as this is not allowed by the license found therein. ---- term/PostScript/aglfn.txt -+++ term/PostScript/aglfn.txt 2007-11-13 04:46:16.000000000 +0100 +diff -U 3 -H -d -r -N -- term/PostScript/aglfn.txt term/PostScript/aglfn.txt +--- term/PostScript/aglfn.txt 1970-01-01 01:00:00.000000000 +0100 ++++ term/PostScript/aglfn.txt 2009-05-09 13:53:00.000000000 +0200 @@ -0,0 +1,932 @@ +# ################################################################################### +# Copyright (c) 2003,2005,2006,2007 Adobe Systems Incorporated @@ -1853,7 +347,7 @@ +# damages, whether based on tort (including without limitation negligence +# or strict liability), contract or other legal or equitable grounds even +# if Adobe has been advised or had reason to know of the possibility of -+# such damages.Ê The Adobe materials are provided on an "AS IS" basis.Ê ++# such damages.� The Adobe materials are provided on an "AS IS" basis.� +# Adobe specifically disclaims all express, statutory, or implied +# warranties relating to the Adobe materials, including but not limited to +# those concerning merchantability or fitness for a particular purpose or @@ -2761,8 +1255,49 @@ +017C;zdotaccent;LATIN SMALL LETTER Z WITH DOT ABOVE +0030;zero;DIGIT ZERO +03B6;zeta;GREEK SMALL LETTER ZETA ---- term/PostScript/koi8r.ps -+++ term/PostScript/koi8r.ps 2007-11-05 19:21:56.000000000 +0100 +diff -U 3 -H -d -r -N -- term/PostScript/cp1250.ps term/PostScript/cp1250.ps +--- term/PostScript/cp1250.ps 2006-03-24 22:48:47.000000000 +0100 ++++ term/PostScript/cp1250.ps 2009-05-09 13:53:00.000000000 +0200 +@@ -1,3 +1,6 @@ ++% ++% Encoding for code page 1250 (Microsoft Windows Central and Eastern European) ++% + /reencodeCP1250 { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse } forall +diff -U 3 -H -d -r -N -- term/PostScript/cp437.ps term/PostScript/cp437.ps +--- term/PostScript/cp437.ps 2006-08-12 00:35:05.000000000 +0200 ++++ term/PostScript/cp437.ps 2009-05-09 13:53:00.000000000 +0200 +@@ -1,4 +1,5 @@ +-% encoding for code page 437 ++% ++% encoding for code page 437 (original MSDOS) + % version 1.0: - Mainly letters are mapped. The following positions + % (JFi) are left blank (undefined): + % -- first 32 positions, +diff -U 3 -H -d -r -N -- term/PostScript/cp850.ps term/PostScript/cp850.ps +--- term/PostScript/cp850.ps 2006-08-12 00:35:05.000000000 +0200 ++++ term/PostScript/cp850.ps 2009-05-09 13:53:00.000000000 +0200 +@@ -1,4 +1,5 @@ +-% encoding for code page 850 ++% ++% encoding for code page 850 (obsolete MSDOS Western Europe) + % version 1.0: - Mainly letters are mapped. The following positions + % (JFi) are left blank (undefined): + % -- first 32 positions, +diff -U 3 -H -d -r -N -- term/PostScript/cp852.ps term/PostScript/cp852.ps +--- term/PostScript/cp852.ps 2006-08-12 00:22:05.000000000 +0200 ++++ term/PostScript/cp852.ps 2009-05-09 13:53:00.000000000 +0200 +@@ -1,4 +1,5 @@ +-% encoding for code page 852 ++% ++% encoding for code page 852 (MSDOS Central European) + /reencodeCP852 { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse } forall +diff -U 3 -H -d -r -N -- term/PostScript/koi8r.ps term/PostScript/koi8r.ps +--- term/PostScript/koi8r.ps 2006-08-12 00:35:05.000000000 +0200 ++++ term/PostScript/koi8r.ps 2009-05-09 13:53:00.000000000 +0200 @@ -1,4 +1,5 @@ -% encoding for code page koi8r +% @@ -2770,8 +1305,268 @@ % version 1.0: - Mainly letters are mapped. The following positions % (JFi) are left blank (undefined): % -- first 32 positions, ---- term/PostScript/unicode_big.map -+++ term/PostScript/unicode_big.map 2007-11-11 20:22:22.000000000 +0100 +diff -U 3 -H -d -r -N -- term/PostScript/koi8u.ps term/PostScript/koi8u.ps +--- term/PostScript/koi8u.ps 2006-03-24 22:48:47.000000000 +0100 ++++ term/PostScript/koi8u.ps 2009-05-09 13:53:00.000000000 +0200 +@@ -1,4 +1,5 @@ + % ++% encoding for code page koi8r (8-bit Ukrainian) + /reencodeKOI8U { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse } forall +diff -U 3 -H -d -r -N -- term/PostScript/prologue.ps term/PostScript/prologue.ps +--- term/PostScript/prologue.ps 2007-10-01 22:49:08.000000000 +0200 ++++ term/PostScript/prologue.ps 2009-05-09 13:53:00.000000000 +0200 +@@ -1,5 +1,5 @@ + % +-% Gnuplot Prolog Version 4.2 (August 2006) ++% Gnuplot Prolog Version 4.2 (November 2007) + % + /M {moveto} bind def + /L {lineto} bind def +@@ -9,6 +9,7 @@ + /Z {closepath} bind def + /C {setrgbcolor} bind def + /f {rlineto fill} bind def ++/Gshow {show} def % May be redefined later in the file to support UTF-8 + /vpt2 vpt 2 mul def + /hpt2 hpt 2 mul def + /Lshow {currentpoint stroke M 0 vshift R +diff -U 3 -H -d -r -N -- term/PostScript/prologues.h term/PostScript/prologues.h +--- term/PostScript/prologues.h 2006-11-20 20:06:01.000000000 +0100 ++++ term/PostScript/prologues.h 2009-05-09 13:53:00.000000000 +0200 +@@ -2,6 +2,9 @@ + * in a form suitable to inclusion in a C source code */ + + static const char *prologue_8859_1_ps[] = { ++"%\n", ++"% Encoding for ISO-8859-1 (also called Latin1)\n", ++"%\n", + "/reencodeISO {\n", + "dup dup findfont dup length dict begin\n", + "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", +@@ -46,6 +49,9 @@ + }; + + static const char *prologue_8859_15_ps[] = { ++"%\n", ++"% Encoding for ISO-8859-15 (also called Latin9)\n", ++"%\n", + "/reencodeISO15 {\n", + "dup dup findfont dup length dict begin\n", + "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", +@@ -90,7 +96,8 @@ + }; + + static const char *prologue_8859_2_ps[] = { +-"% Encoding for ISO-8859-2 (also called as Latin-2), with\n", ++"%\n", ++"% Encoding for ISO-8859-2 (also called Latin2), with\n", + "% minor differences to \"true\" ISO-8859-2 (*commaaccent \n", + "% instead of *cedilla for sStT -> incorrect in ISO-8859-2,\n", + "% the standard will probably be modified in this respect)\n", +@@ -138,7 +145,58 @@ + NULL + }; + ++static const char *prologue_8859_9_ps[] = { ++"%\n", ++"% Encoding for ISO_8859_9 (also called Latin5)\n", ++"% Plus code points 80-9F used in Codepage 1254\n", ++"%\n", ++"/reencodeISO9 {\n", ++"dup dup findfont dup length dict begin\n", ++"{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", ++"currentdict /CharStrings known {\n", ++"\tCharStrings /Idieresis known {\n", ++"\t\t/Encoding ISOLatin5Encoding def } if\n", ++"} if\n", ++"currentdict end definefont\n", ++"} def\n", ++"/ISOLatin5Encoding [\n", ++"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", ++"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", ++"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", ++"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", ++"/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright\n", ++"/parenleft/parenright/asterisk/plus/comma/minus/period/slash\n", ++"/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon\n", ++"/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N\n", ++"/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright\n", ++"/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m\n", ++"/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde\n", ++"/Euro/.notdef/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl\n", ++"/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef/.notdef/.notdef\n", ++"/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash\n", ++"/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef/Ydieresis\n", ++"/.notdef/space/exclamdown/cent/sterling/currency/yen/brokenbar\n", ++"/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot\n", ++"/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\n", ++"/acute/mu/paragraph/bullet/cedilla/onesuperior/ordmasculine\n", ++"/guillemotright/onequarter/onehalf/threequarters/questiondown\n", ++"/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla\n", ++"/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex\n", ++"/Idieresis/Gbreve/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis\n", ++"/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Idotaccent\n", ++"/Scedilla/germandbls/agrave/aacute/acircumflex/atilde/adieresis\n", ++"/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave\n", ++"/iacute/icircumflex/idieresis/gbreve/ntilde/ograve/oacute/ocircumflex\n", ++"/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis\n", ++"/dotlessi/scedilla/ydieresis\n", ++"] def\n", ++NULL ++}; ++ + static const char *prologue_cp1250_ps[] = { ++"%\n", ++"% Encoding for code page 1250 (Microsoft Windows Central and Eastern European)\n", ++"%\n", + "/reencodeCP1250 {\n", + "dup dup findfont dup length dict begin\n", + "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", +@@ -181,7 +239,8 @@ + }; + + static const char *prologue_cp437_ps[] = { +-"% encoding for code page 437\n", ++"%\n", ++"% encoding for code page 437 (original MSDOS)\n", + "% version 1.0:\t- Mainly letters are mapped. The following positions\n", + "% (JFi)\t\t are left blank (undefined):\n", + "%\t\t-- first 32 positions,\n", +@@ -233,7 +292,8 @@ + }; + + static const char *prologue_cp850_ps[] = { +-"% encoding for code page 850\n", ++"%\n", ++"% encoding for code page 850 (obsolete MSDOS Western Europe)\n", + "% version 1.0: - Mainly letters are mapped. The following positions\n", + "% (JFi)\t\t are left blank (undefined):\n", + "%\t\t-- first 32 positions,\n", +@@ -282,7 +342,8 @@ + }; + + static const char *prologue_cp852_ps[] = { +-"% encoding for code page 852\n", ++"%\n", ++"% encoding for code page 852 (MSDOS Central European)\n", + "/reencodeCP852 {\n", + "dup dup findfont dup length dict begin\n", + "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", +@@ -326,7 +387,8 @@ + }; + + static const char *prologue_koi8r_ps[] = { +-"% encoding for code page koi8r\n", ++"%\n", ++"% encoding for code page koi8r (8-bit Russian)\n", + "% version 1.0:\t- Mainly letters are mapped. The following positions\n", + "% (JFi)\t\t are left blank (undefined):\n", + "%\t\t-- first 32 positions,\n", +@@ -376,6 +438,7 @@ + + static const char *prologue_koi8u_ps[] = { + "%\n", ++"% encoding for code page koi8r (8-bit Ukrainian)\n", + "/reencodeKOI8U {\n", + "dup dup findfont dup length dict begin\n", + "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", +@@ -419,7 +482,7 @@ + + static const char *prologue_prologue_ps[] = { + "%\n", +-"% Gnuplot Prolog Version 4.2 (August 2006)\n", ++"% Gnuplot Prolog Version 4.2 (November 2007)\n", + "%\n", + "/M {moveto} bind def\n", + "/L {lineto} bind def\n", +@@ -429,6 +492,7 @@ + "/Z {closepath} bind def\n", + "/C {setrgbcolor} bind def\n", + "/f {rlineto fill} bind def\n", ++"/Gshow {show} def % May be redefined later in the file to support UTF-8\n", + "/vpt2 vpt 2 mul def\n", + "/hpt2 hpt 2 mul def\n", + "/Lshow {currentpoint stroke M 0 vshift R \n", +@@ -669,7 +733,7 @@ + " ColR ColG ColB setrgbcolor} def\n", + "/BoxColFill {gsave Rec PolyFill} def\n", + "/PolyFill {gsave Density fill grestore grestore} def\n", +-"/h {rlineto rlineto rlineto gsave fill grestore} bind def\n", ++"/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def\n", + "%\n", + "% PostScript Level 1 Pattern Fill routine for rectangles\n", + "% Usage: x y w h s a XX PatternFill\n", +@@ -789,3 +853,65 @@ + NULL + }; + ++static const char *prologue_utf_8_ps[] = { ++"%\n", ++"% Base ISO8859-1 character encoding plus support macros for UTF-8 encoding\n", ++"% via the glyphshow operator\n", ++"%\n", ++"/reencodeISO {\n", ++"dup dup findfont dup length dict begin\n", ++"{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", ++"currentdict /CharStrings known {\n", ++"\tCharStrings /Idieresis known {\n", ++"\t\t/Encoding ISOLatin1Encoding def } if\n", ++"} if\n", ++"currentdict end definefont\n", ++"} def\n", ++"/ISOLatin1Encoding [\n", ++"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", ++"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", ++"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", ++"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", ++"/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright\n", ++"/parenleft/parenright/asterisk/plus/comma/minus/period/slash\n", ++"/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon\n", ++"/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N\n", ++"/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright\n", ++"/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m\n", ++"/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde\n", ++"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", ++"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", ++"/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve\n", ++"/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut\n", ++"/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar\n", ++"/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot\n", ++"/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\n", ++"/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\n", ++"/guillemotright/onequarter/onehalf/threequarters/questiondown\n", ++"/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla\n", ++"/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex\n", ++"/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis\n", ++"/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute\n", ++"/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\n", ++"/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave\n", ++"/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex\n", ++"/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis\n", ++"/yacute/thorn/ydieresis\n", ++"] def\n", ++"\n", ++"/Gshow { dup type /stringtype eq { show } { glyphshow } ifelse } def\n", ++"\n", ++"/Gsall { {Gshow} forall } def\n", ++"/Gwidth {\n", ++"\tdup currentpoint pop exch\n", ++"\tgsave 6 array currentmatrix nulldevice setmatrix Gsall currentpoint pop grestore sub\n", ++"\t} def\n", ++"/GLshow {currentpoint stroke M 0 vshift R \n", ++"\tBlacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def\n", ++"/GRshow {currentpoint stroke M dup Gwidth vshift R\n", ++"\tBlacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def\n", ++"/GCshow {currentpoint stroke M dup Gwidth 2 div vshift R \n", ++"\tBlacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def\n", ++NULL ++}; ++ +diff -U 3 -H -d -r -N -- term/PostScript/unicode_big.map term/PostScript/unicode_big.map +--- term/PostScript/unicode_big.map 1970-01-01 01:00:00.000000000 +0100 ++++ term/PostScript/unicode_big.map 2009-05-09 13:53:00.000000000 +0200 @@ -0,0 +1,863 @@ +=00 U+0000 +=01 U+0001 @@ -3636,329 +2431,9 @@ +!37f U+25C7 uni25C7 +!380 U+2297 uni2297 +!381 U+2299 uni2299 ---- term/PostScript/8859-2.ps -+++ term/PostScript/8859-2.ps 2007-11-05 19:21:56.000000000 +0100 -@@ -1,4 +1,5 @@ --% Encoding for ISO-8859-2 (also called as Latin-2), with -+% -+% Encoding for ISO-8859-2 (also called Latin2), with - % minor differences to "true" ISO-8859-2 (*commaaccent - % instead of *cedilla for sStT -> incorrect in ISO-8859-2, - % the standard will probably be modified in this respect) ---- term/PostScript/8859-9.ps -+++ term/PostScript/8859-9.ps 2008-01-14 07:38:26.000000000 +0100 -@@ -0,0 +1,44 @@ -+% -+% Encoding for ISO_8859_9 (also called Latin5) -+% Plus code points 80-9F used in Codepage 1254 -+% -+/reencodeISO9 { -+dup dup findfont dup length dict begin -+{ 1 index /FID ne { def }{ pop pop } ifelse } forall -+currentdict /CharStrings known { -+ CharStrings /Idieresis known { -+ /Encoding ISOLatin5Encoding def } if -+} if -+currentdict end definefont -+} def -+/ISOLatin5Encoding [ -+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -+/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright -+/parenleft/parenright/asterisk/plus/comma/minus/period/slash -+/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon -+/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N -+/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright -+/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m -+/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde -+/Euro/.notdef/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl -+/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef/.notdef/.notdef -+/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash -+/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef/Ydieresis -+/.notdef/space/exclamdown/cent/sterling/currency/yen/brokenbar -+/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot -+/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior -+/acute/mu/paragraph/bullet/cedilla/onesuperior/ordmasculine -+/guillemotright/onequarter/onehalf/threequarters/questiondown -+/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla -+/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex -+/Idieresis/Gbreve/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis -+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Idotaccent -+/Scedilla/germandbls/agrave/aacute/acircumflex/atilde/adieresis -+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave -+/iacute/icircumflex/idieresis/gbreve/ntilde/ograve/oacute/ocircumflex -+/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis -+/dotlessi/scedilla/ydieresis -+] def ---- term/PostScript/cp850.ps -+++ term/PostScript/cp850.ps 2007-11-05 19:21:56.000000000 +0100 -@@ -1,4 +1,5 @@ --% encoding for code page 850 -+% -+% encoding for code page 850 (obsolete MSDOS Western Europe) - % version 1.0: - Mainly letters are mapped. The following positions - % (JFi) are left blank (undefined): - % -- first 32 positions, ---- term/PostScript/prologue.ps -+++ term/PostScript/prologue.ps 2007-11-11 20:22:22.000000000 +0100 -@@ -1,5 +1,5 @@ - % --% Gnuplot Prolog Version 4.2 (August 2006) -+% Gnuplot Prolog Version 4.2 (November 2007) - % - /M {moveto} bind def - /L {lineto} bind def -@@ -9,6 +9,7 @@ - /Z {closepath} bind def - /C {setrgbcolor} bind def - /f {rlineto fill} bind def -+/Gshow {show} def % May be redefined later in the file to support UTF-8 - /vpt2 vpt 2 mul def - /hpt2 hpt 2 mul def - /Lshow {currentpoint stroke M 0 vshift R ---- term/PostScript/prologues.h -+++ term/PostScript/prologues.h 2008-01-24 00:05:50.000000000 +0100 -@@ -2,6 +2,9 @@ - * in a form suitable to inclusion in a C source code */ - - static const char *prologue_8859_1_ps[] = { -+"%\n", -+"% Encoding for ISO-8859-1 (also called Latin1)\n", -+"%\n", - "/reencodeISO {\n", - "dup dup findfont dup length dict begin\n", - "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", -@@ -46,6 +49,9 @@ - }; - - static const char *prologue_8859_15_ps[] = { -+"%\n", -+"% Encoding for ISO-8859-15 (also called Latin9)\n", -+"%\n", - "/reencodeISO15 {\n", - "dup dup findfont dup length dict begin\n", - "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", -@@ -90,7 +96,8 @@ - }; - - static const char *prologue_8859_2_ps[] = { --"% Encoding for ISO-8859-2 (also called as Latin-2), with\n", -+"%\n", -+"% Encoding for ISO-8859-2 (also called Latin2), with\n", - "% minor differences to \"true\" ISO-8859-2 (*commaaccent \n", - "% instead of *cedilla for sStT -> incorrect in ISO-8859-2,\n", - "% the standard will probably be modified in this respect)\n", -@@ -138,7 +145,58 @@ - NULL - }; - -+static const char *prologue_8859_9_ps[] = { -+"%\n", -+"% Encoding for ISO_8859_9 (also called Latin5)\n", -+"% Plus code points 80-9F used in Codepage 1254\n", -+"%\n", -+"/reencodeISO9 {\n", -+"dup dup findfont dup length dict begin\n", -+"{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", -+"currentdict /CharStrings known {\n", -+"\tCharStrings /Idieresis known {\n", -+"\t\t/Encoding ISOLatin5Encoding def } if\n", -+"} if\n", -+"currentdict end definefont\n", -+"} def\n", -+"/ISOLatin5Encoding [\n", -+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", -+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", -+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", -+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", -+"/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright\n", -+"/parenleft/parenright/asterisk/plus/comma/minus/period/slash\n", -+"/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon\n", -+"/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N\n", -+"/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright\n", -+"/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m\n", -+"/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde\n", -+"/Euro/.notdef/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl\n", -+"/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef/.notdef/.notdef\n", -+"/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash\n", -+"/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef/Ydieresis\n", -+"/.notdef/space/exclamdown/cent/sterling/currency/yen/brokenbar\n", -+"/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot\n", -+"/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\n", -+"/acute/mu/paragraph/bullet/cedilla/onesuperior/ordmasculine\n", -+"/guillemotright/onequarter/onehalf/threequarters/questiondown\n", -+"/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla\n", -+"/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex\n", -+"/Idieresis/Gbreve/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis\n", -+"/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Idotaccent\n", -+"/Scedilla/germandbls/agrave/aacute/acircumflex/atilde/adieresis\n", -+"/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave\n", -+"/iacute/icircumflex/idieresis/gbreve/ntilde/ograve/oacute/ocircumflex\n", -+"/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis\n", -+"/dotlessi/scedilla/ydieresis\n", -+"] def\n", -+NULL -+}; -+ - static const char *prologue_cp1250_ps[] = { -+"%\n", -+"% Encoding for code page 1250 (Microsoft Windows Central and Eastern European)\n", -+"%\n", - "/reencodeCP1250 {\n", - "dup dup findfont dup length dict begin\n", - "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", -@@ -181,7 +239,8 @@ - }; - - static const char *prologue_cp437_ps[] = { --"% encoding for code page 437\n", -+"%\n", -+"% encoding for code page 437 (original MSDOS)\n", - "% version 1.0:\t- Mainly letters are mapped. The following positions\n", - "% (JFi)\t\t are left blank (undefined):\n", - "%\t\t-- first 32 positions,\n", -@@ -233,7 +292,8 @@ - }; - - static const char *prologue_cp850_ps[] = { --"% encoding for code page 850\n", -+"%\n", -+"% encoding for code page 850 (obsolete MSDOS Western Europe)\n", - "% version 1.0: - Mainly letters are mapped. The following positions\n", - "% (JFi)\t\t are left blank (undefined):\n", - "%\t\t-- first 32 positions,\n", -@@ -282,7 +342,8 @@ - }; - - static const char *prologue_cp852_ps[] = { --"% encoding for code page 852\n", -+"%\n", -+"% encoding for code page 852 (MSDOS Central European)\n", - "/reencodeCP852 {\n", - "dup dup findfont dup length dict begin\n", - "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", -@@ -326,7 +387,8 @@ - }; - - static const char *prologue_koi8r_ps[] = { --"% encoding for code page koi8r\n", -+"%\n", -+"% encoding for code page koi8r (8-bit Russian)\n", - "% version 1.0:\t- Mainly letters are mapped. The following positions\n", - "% (JFi)\t\t are left blank (undefined):\n", - "%\t\t-- first 32 positions,\n", -@@ -376,6 +438,7 @@ - - static const char *prologue_koi8u_ps[] = { - "%\n", -+"% encoding for code page koi8r (8-bit Ukrainian)\n", - "/reencodeKOI8U {\n", - "dup dup findfont dup length dict begin\n", - "{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", -@@ -419,7 +482,7 @@ - - static const char *prologue_prologue_ps[] = { - "%\n", --"% Gnuplot Prolog Version 4.2 (August 2006)\n", -+"% Gnuplot Prolog Version 4.2 (November 2007)\n", - "%\n", - "/M {moveto} bind def\n", - "/L {lineto} bind def\n", -@@ -429,6 +492,7 @@ - "/Z {closepath} bind def\n", - "/C {setrgbcolor} bind def\n", - "/f {rlineto fill} bind def\n", -+"/Gshow {show} def % May be redefined later in the file to support UTF-8\n", - "/vpt2 vpt 2 mul def\n", - "/hpt2 hpt 2 mul def\n", - "/Lshow {currentpoint stroke M 0 vshift R \n", -@@ -669,7 +733,7 @@ - " ColR ColG ColB setrgbcolor} def\n", - "/BoxColFill {gsave Rec PolyFill} def\n", - "/PolyFill {gsave Density fill grestore grestore} def\n", --"/h {rlineto rlineto rlineto gsave fill grestore} bind def\n", -+"/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def\n", - "%\n", - "% PostScript Level 1 Pattern Fill routine for rectangles\n", - "% Usage: x y w h s a XX PatternFill\n", -@@ -789,3 +853,65 @@ - NULL - }; - -+static const char *prologue_utf_8_ps[] = { -+"%\n", -+"% Base ISO8859-1 character encoding plus support macros for UTF-8 encoding\n", -+"% via the glyphshow operator\n", -+"%\n", -+"/reencodeISO {\n", -+"dup dup findfont dup length dict begin\n", -+"{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n", -+"currentdict /CharStrings known {\n", -+"\tCharStrings /Idieresis known {\n", -+"\t\t/Encoding ISOLatin1Encoding def } if\n", -+"} if\n", -+"currentdict end definefont\n", -+"} def\n", -+"/ISOLatin1Encoding [\n", -+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", -+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", -+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", -+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", -+"/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright\n", -+"/parenleft/parenright/asterisk/plus/comma/minus/period/slash\n", -+"/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon\n", -+"/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N\n", -+"/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright\n", -+"/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m\n", -+"/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde\n", -+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", -+"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n", -+"/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve\n", -+"/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut\n", -+"/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar\n", -+"/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot\n", -+"/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\n", -+"/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\n", -+"/guillemotright/onequarter/onehalf/threequarters/questiondown\n", -+"/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla\n", -+"/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex\n", -+"/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis\n", -+"/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute\n", -+"/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\n", -+"/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave\n", -+"/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex\n", -+"/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis\n", -+"/yacute/thorn/ydieresis\n", -+"] def\n", -+"\n", -+"/Gshow { dup type /stringtype eq { show } { glyphshow } ifelse } def\n", -+"\n", -+"/Gsall { {Gshow} forall } def\n", -+"/Gwidth {\n", -+"\tdup currentpoint pop exch\n", -+"\tgsave 6 array currentmatrix nulldevice setmatrix Gsall currentpoint pop grestore sub\n", -+"\t} def\n", -+"/GLshow {currentpoint stroke M 0 vshift R \n", -+"\tBlacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def\n", -+"/GRshow {currentpoint stroke M dup Gwidth vshift R\n", -+"\tBlacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def\n", -+"/GCshow {currentpoint stroke M dup Gwidth 2 div vshift R \n", -+"\tBlacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def\n", -+NULL -+}; -+ ---- term/PostScript/koi8u.ps -+++ term/PostScript/koi8u.ps 2007-11-05 19:21:56.000000000 +0100 -@@ -1,4 +1,5 @@ - % -+% encoding for code page koi8r (8-bit Ukrainian) - /reencodeKOI8U { - dup dup findfont dup length dict begin - { 1 index /FID ne { def }{ pop pop } ifelse } forall ---- term/PostScript/unicode_maps.README -+++ term/PostScript/unicode_maps.README 2007-11-11 20:22:22.000000000 +0100 +diff -U 3 -H -d -r -N -- term/PostScript/unicode_maps.README term/PostScript/unicode_maps.README +--- term/PostScript/unicode_maps.README 1970-01-01 01:00:00.000000000 +0100 ++++ term/PostScript/unicode_maps.README 2009-05-09 13:53:00.000000000 +0200 @@ -0,0 +1,75 @@ + unicode maps README + =================== @@ -4035,226 +2510,1764 @@ +But if you need more, probably you would do better to use a different +gnuplot terminal that supports direct use of UTF-8 TTF fonts (pdf, png, svg). + ---- src/term.c -+++ src/term.c 2008-02-24 20:49:37.000000000 +0100 -@@ -134,19 +134,23 @@ - enum set_encoding_id encoding; - /* table of encoding names, for output of the setting */ - const char *encoding_names[] = { -- "default", "iso_8859_1", "iso_8859_2", "iso_8859_15", -- "cp437", "cp850", "cp852", "cp1250", "koi8r", "koi8u", NULL }; -+ "default", "iso_8859_1", "iso_8859_2", "iso_8859_9", "iso_8859_15", -+ "cp437", "cp850", "cp852", "cp1250", "cp1254", "koi8r", "koi8u", -+ "utf8", NULL }; - /* 'set encoding' options */ - const struct gen_table set_encoding_tbl[] = - { - { "def$ault", S_ENC_DEFAULT }, -+ { "utf$8", S_ENC_UTF8 }, - { "iso$_8859_1", S_ENC_ISO8859_1 }, - { "iso_8859_2", S_ENC_ISO8859_2 }, -+ { "iso_8859_9", S_ENC_ISO8859_9 }, - { "iso_8859_15", S_ENC_ISO8859_15 }, - { "cp4$37", S_ENC_CP437 }, - { "cp850", S_ENC_CP850 }, - { "cp852", S_ENC_CP852 }, - { "cp1250", S_ENC_CP1250 }, -+ { "cp1254", S_ENC_CP1254 }, - { "koi8$r", S_ENC_KOI8_R }, - { "koi8$u", S_ENC_KOI8_U }, - { NULL, S_ENC_INVALID } -@@ -945,7 +948,7 @@ - - void - write_multiline( -- unsigned int x, unsigned y, -+ unsigned int x, unsigned int y, - char *text, - JUSTIFY hor, /* horizontal ... */ - VERT_JUSTIFY vert, /* ... and vertical just - text in hor direction despite angle */ ---- src/term_api.h -+++ src/term_api.h 2008-02-24 20:49:37.000000000 +0100 -@@ -124,7 +124,9 @@ - TERM_LAYER_RESET, - TERM_LAYER_BACKTEXT, - TERM_LAYER_FRONTTEXT, -- TERM_LAYER_END_TEXT -+ TERM_LAYER_END_TEXT, -+ TERM_LAYER_BEFORE_PLOT, -+ TERM_LAYER_AFTER_PLOT - } t_termlayer; - - typedef struct fill_style_type { -@@ -134,8 +136,9 @@ - int border_linetype; - } fill_style_type; - --typedef enum t_fillstyle { FS_EMPTY, FS_SOLID, FS_PATTERN, FS_DEFAULT } -- t_fillstyle; -+typedef enum t_fillstyle { FS_EMPTY, FS_SOLID, FS_PATTERN, FS_DEFAULT, -+ FS_TRANSPARENT_SOLID, FS_TRANSPARENT_PATTERN } -+ t_fillstyle; - #define FS_OPAQUE (FS_SOLID + (100<<4)) - - #ifdef WITH_IMAGE -@@ -159,6 +162,7 @@ - #define TERM_ENHANCED_TEXT 32 /* enhanced text mode is enabled */ - #define TERM_NO_OUTPUTFILE 64 /* terminal doesnt write to a file */ - #define TERM_CAN_CLIP 128 /* terminal does its own clipping */ -+#define TERM_CAN_DASH 256 /* terminal supports dashed lines */ - - /* The terminal interface structure --- heart of the terminal layer. - * -@@ -254,6 +258,11 @@ - */ - void (*path) __PROTO((int p)); - -+/* Scale factor for converting terminal coordinates to output -+ * pixel coordinates. Used to provide data for external mousing code. -+ */ -+ double tscale; +diff -U 3 -H -d -r -N -- term/PostScript/unicode_small.map term/PostScript/unicode_small.map +--- term/PostScript/unicode_small.map 1970-01-01 01:00:00.000000000 +0100 ++++ term/PostScript/unicode_small.map 2009-05-09 13:53:00.000000000 +0200 +@@ -0,0 +1,462 @@ ++=00 U+0000 ++=01 U+0001 ++=02 U+0002 ++=03 U+0003 ++=04 U+0004 ++=05 U+0005 ++=06 U+0006 ++=07 U+0007 ++=08 U+0008 ++=09 U+0009 ++=0A U+000A ++=0B U+000B ++=0C U+000C ++=0D U+000D ++=0E U+000E ++=0F U+000F ++=10 U+0010 ++=11 U+0011 ++=12 U+0012 ++=13 U+0013 ++=14 U+0014 ++=15 U+0015 ++=16 U+0016 ++=17 U+0017 ++=18 U+0018 ++=19 U+0019 ++=1A U+001A ++=1B U+001B ++=1C U+001C ++=1D U+001D ++=1E U+001E ++=1F U+001F ++!20 U+0020 space ++!21 U+0021 exclam ++!22 U+0022 quotedbl ++!23 U+0023 numbersign ++!24 U+0024 dollar ++!25 U+0025 percent ++!26 U+0026 ampersand ++!27 U+0027 quotesingle ++!28 U+0028 parenleft ++!29 U+0029 parenright ++!2A U+002A asterisk ++!2B U+002B plus ++!2C U+002C comma ++!2D U+002D hyphen ++!2E U+002E period ++!2F U+002F slash ++!30 U+0030 zero ++!31 U+0031 one ++!32 U+0032 two ++!33 U+0033 three ++!34 U+0034 four ++!35 U+0035 five ++!36 U+0036 six ++!37 U+0037 seven ++!38 U+0038 eight ++!39 U+0039 nine ++!3A U+003A colon ++!3B U+003B semicolon ++!3C U+003C less ++!3D U+003D equal ++!3E U+003E greater ++!3F U+003F question ++!40 U+0040 at ++!41 U+0041 A ++!42 U+0042 B ++!43 U+0043 C ++!44 U+0044 D ++!45 U+0045 E ++!46 U+0046 F ++!47 U+0047 G ++!48 U+0048 H ++!49 U+0049 I ++!4A U+004A J ++!4B U+004B K ++!4C U+004C L ++!4D U+004D M ++!4E U+004E N ++!4F U+004F O ++!50 U+0050 P ++!51 U+0051 Q ++!52 U+0052 R ++!53 U+0053 S ++!54 U+0054 T ++!55 U+0055 U ++!56 U+0056 V ++!57 U+0057 W ++!58 U+0058 X ++!59 U+0059 Y ++!5A U+005A Z ++!5B U+005B bracketleft ++!5C U+005C backslash ++!5D U+005D bracketright ++!5E U+005E asciicircum ++!5F U+005F underscore ++!60 U+0060 grave ++!61 U+0061 a ++!62 U+0062 b ++!63 U+0063 c ++!64 U+0064 d ++!65 U+0065 e ++!66 U+0066 f ++!67 U+0067 g ++!68 U+0068 h ++!69 U+0069 i ++!6A U+006A j ++!6B U+006B k ++!6C U+006C l ++!6D U+006D m ++!6E U+006E n ++!6F U+006F o ++!70 U+0070 p ++!71 U+0071 q ++!72 U+0072 r ++!73 U+0073 s ++!74 U+0074 t ++!75 U+0075 u ++!76 U+0076 v ++!77 U+0077 w ++!78 U+0078 x ++!79 U+0079 y ++!7A U+007A z ++!7B U+007B braceleft ++!7C U+007C bar ++!7D U+007D braceright ++!7E U+007E asciitilde ++=A0 U+00A0 ++!A1 U+00A1 exclamdown ++!A2 U+00A2 cent ++!A3 U+00A3 sterling ++!A4 U+00A4 currency ++!A5 U+00A5 yen ++!A6 U+00A6 brokenbar ++!A7 U+00A7 section ++!A8 U+00A8 dieresis ++!A9 U+00A9 copyright ++!AA U+00AA ordfeminine ++!AB U+00AB guillemotleft ++!AC U+00AC logicalnot ++=AD U+00AD ++!AE U+00AE registered ++!AF U+00AF macron ++!B0 U+00B0 degree ++!B1 U+00B1 plusminus ++=B2 U+00B2 ++=B3 U+00B3 ++!B4 U+00B4 acute ++=B5 U+00B5 ++!B6 U+00B6 paragraph ++!B7 U+00B7 periodcentered ++!B8 U+00B8 cedilla ++=B9 U+00B9 ++!BA U+00BA ordmasculine ++!BB U+00BB guillemotright ++!BC U+00BC onequarter ++!BD U+00BD onehalf ++!BE U+00BE threequarters ++!BF U+00BF questiondown ++!C0 U+00C0 Agrave ++!C1 U+00C1 Aacute ++!C2 U+00C2 Acircumflex ++!C3 U+00C3 Atilde ++!C4 U+00C4 Adieresis ++!C5 U+00C5 Aring ++!C6 U+00C6 AE ++!C7 U+00C7 Ccedilla ++!C8 U+00C8 Egrave ++!C9 U+00C9 Eacute ++!CA U+00CA Ecircumflex ++!CB U+00CB Edieresis ++!CC U+00CC Igrave ++!CD U+00CD Iacute ++!CE U+00CE Icircumflex ++!CF U+00CF Idieresis ++!D0 U+00D0 Eth ++!D1 U+00D1 Ntilde ++!D2 U+00D2 Ograve ++!D3 U+00D3 Oacute ++!D4 U+00D4 Ocircumflex ++!D5 U+00D5 Otilde ++!D6 U+00D6 Odieresis ++!D7 U+00D7 multiply ++!D8 U+00D8 Oslash ++!D9 U+00D9 Ugrave ++!DA U+00DA Uacute ++!DB U+00DB Ucircumflex ++!DC U+00DC Udieresis ++!DD U+00DD Yacute ++!DE U+00DE Thorn ++!DF U+00DF germandbls ++!E0 U+00E0 agrave ++!E1 U+00E1 aacute ++!E2 U+00E2 acircumflex ++!E3 U+00E3 atilde ++!E4 U+00E4 adieresis ++!E5 U+00E5 aring ++!E6 U+00E6 ae ++!E7 U+00E7 ccedilla ++!E8 U+00E8 egrave ++!E9 U+00E9 eacute ++!EA U+00EA ecircumflex ++!EB U+00EB edieresis ++!EC U+00EC igrave ++!ED U+00ED iacute ++!EE U+00EE icircumflex ++!EF U+00EF idieresis ++!F0 U+00F0 eth ++!F1 U+00F1 ntilde ++!F2 U+00F2 ograve ++!F3 U+00F3 oacute ++!F4 U+00F4 ocircumflex ++!F5 U+00F5 otilde ++!F6 U+00F6 odieresis ++!F7 U+00F7 divide ++!F8 U+00F8 oslash ++!F9 U+00F9 ugrave ++!FA U+00FA uacute ++!FB U+00FB ucircumflex ++!FC U+00FC udieresis ++!FD U+00FD yacute ++!FE U+00FE thorn ++!FF U+00FF ydieresis ++!19e U+0391 uni0391 ++!19f U+0392 uni0392 ++!1a0 U+0393 uni0393 ++!1a1 U+0394 uni0394 ++!1a2 U+0395 uni0395 ++!1a3 U+0396 uni0396 ++!1a4 U+0397 uni0397 ++!1a5 U+0398 uni0398 ++!1a6 U+0399 uni0399 ++!1a7 U+039A uni039A ++!1a8 U+039B uni039B ++!1a9 U+039C uni039C ++!1aa U+039D uni039D ++!1ab U+039E uni039E ++!1ac U+039F uni039F ++!1ad U+03A0 uni03A0 ++!1ae U+03A1 uni03A1 ++!1af U+03A3 uni03A3 ++!1b0 U+03A4 uni03A4 ++!1b1 U+03A5 uni03A5 ++!1b2 U+03A6 uni03A6 ++!1b3 U+03A7 uni03A7 ++!1b4 U+03A8 uni03A8 ++!1b5 U+03A9 uni03A9 ++!1b6 U+03B1 uni03B1 ++!1b7 U+03B2 uni03B2 ++!1b8 U+03B3 uni03B3 ++!1b9 U+03B4 uni03B4 ++!1ba U+03B5 uni03B5 ++!1bb U+03B6 uni03B6 ++!1bc U+03B7 uni03B7 ++!1bd U+03B8 uni03B8 ++!1be U+03B9 uni03B9 ++!1bf U+03BA uni03BA ++!1c0 U+03BB uni03BB ++!1c1 U+03BC uni03BC ++!1c2 U+03BD uni03BD ++!1c3 U+03BE uni03BE ++!1c4 U+03BF uni03BF ++!1c5 U+03C0 uni03C0 ++!1c6 U+03C1 uni03C1 ++!1c7 U+03C2 uni03C2 ++!1c8 U+03C3 uni03C3 ++!1c9 U+03C4 uni03C4 ++!1ca U+03C5 uni03C5 ++!1cb U+03C6 uni03C6 ++!1cc U+03C7 uni03C7 ++!1cd U+03C8 uni03C8 ++!1ce U+03C9 uni03C9 ++!1cf U+03D0 uni03D0 ++!1d0 U+03D1 uni03D1 ++!1d1 U+03D5 uni03D5 ++!1d2 U+03D6 uni03D6 ++!25b U+2016 uni2016 ++!26d U+2032 uni2032 ++!26e U+2033 uni2033 ++!26f U+2034 uni2034 ++!270 U+2035 uni2035 ++!271 U+2036 uni2036 ++!272 U+2037 uni2037 ++!273 U+2039 uni2039 ++!274 U+203A uni203A ++!275 U+203C uni203C ++!276 U+2044 uni2044 ++!277 U+20AC uni20AC ++!278 U+2107 uni2107 ++!279 U+210B uni210B ++!27a U+210E uni210E ++!27b U+210F uni210F ++!27e U+2113 uni2113 ++!284 U+211B uni211B ++!289 U+2126 uni2126 ++!28a U+2127 uni2127 ++!28d U+212B uni212B ++!295 U+2135 uni2135 ++!296 U+2136 uni2136 ++!297 U+2137 uni2137 ++!298 U+2138 uni2138 ++!299 U+2190 uni2190 ++!29a U+2191 uni2191 ++!29b U+2192 uni2192 ++!29c U+2193 uni2193 ++!29d U+2194 uni2194 ++!29e U+2195 uni2195 ++!2a1 U+21D0 uni21D0 ++!2a2 U+21D1 uni21D1 ++!2a3 U+21D2 uni21D2 ++!2a4 U+21D3 uni21D3 ++!2a5 U+21D4 uni21D4 ++!2a6 U+2200 uni2200 ++!2a7 U+2202 uni2202 ++!2a8 U+2203 uni2203 ++!2aa U+2205 uni2205 ++!2ab U+2206 uni2206 ++!2ac U+2207 uni2207 ++!2ad U+2208 uni2208 ++!2ae U+2209 uni2209 ++!2af U+220A uni220A ++!2b0 U+220B uni220B ++!2b1 U+220C uni220C ++!2b2 U+220D uni220D ++!2b4 U+220F uni220F ++!2b6 U+2211 uni2211 ++!2b7 U+2212 uni2212 ++!2b8 U+2213 uni2213 ++!2ba U+2215 uni2215 ++!2bb U+2216 uni2216 ++!2bc U+2217 uni2217 ++!2bd U+2218 uni2218 ++!2be U+2219 uni2219 ++!2bf U+221A uni221A ++!2c0 U+221B uni221B ++!2c1 U+221C uni221C ++!2c2 U+221D uni221D ++!2c3 U+221E uni221E ++!2c4 U+221F uni221F ++!2c8 U+2223 uni2223 ++!2ca U+2225 uni2225 ++!2cc U+2227 uni2227 ++!2cd U+2228 uni2228 ++!2ce U+2229 uni2229 ++!2cf U+222A uni222A ++!2d0 U+222B uni222B ++!2d1 U+222C uni222C ++!2d2 U+222D uni222D ++!2d3 U+222E uni222E ++!2d9 U+2234 uni2234 ++!2da U+2235 uni2235 ++!2db U+2236 uni2236 ++!2dc U+2237 uni2237 ++!2e1 U+223C uni223C ++!2e2 U+223D uni223D ++!2e3 U+223E uni223E ++!2e4 U+223F uni223F ++!2e6 U+2241 uni2241 ++!2e7 U+2242 uni2242 ++!2e8 U+2243 uni2243 ++!2e9 U+2244 uni2244 ++!2ea U+2245 uni2245 ++!2eb U+2246 uni2246 ++!2ec U+2247 uni2247 ++!2ed U+2248 uni2248 ++!2ee U+2249 uni2249 ++!2f4 U+224F uni224F ++!2f5 U+225F uni225F ++!2f6 U+2260 uni2260 ++!2f7 U+2261 uni2261 ++!2fa U+2264 uni2264 ++!2fb U+2265 uni2265 ++!2fc U+2266 uni2266 ++!2fd U+2267 uni2267 ++!300 U+226A uni226A ++!301 U+226B uni226B ++!302 U+226C uni226C ++!303 U+226D uni226D ++!304 U+226E uni226E ++!305 U+226F uni226F ++!306 U+2270 uni2270 ++!307 U+2271 uni2271 ++!308 U+2272 uni2272 ++!309 U+2273 uni2273 ++!30a U+2274 uni2274 ++!30b U+2275 uni2275 ++!310 U+227A uni227A ++!311 U+227B uni227B ++!312 U+227C uni227C ++!313 U+227D uni227D ++!314 U+227E uni227E ++!315 U+227F uni227F ++!316 U+2280 uni2280 ++!317 U+2281 uni2281 ++!318 U+2282 uni2282 ++!319 U+2283 uni2283 ++!31a U+2284 uni2284 ++!31b U+2285 uni2285 ++!31c U+2286 uni2286 ++!31d U+2287 uni2287 ++!31e U+2288 uni2288 ++!31f U+2289 uni2289 ++!389 U+2297 uni2297 ++!38b U+2299 uni2299 ++!320 U+22C0 uni22C0 ++!321 U+22C1 uni22C1 ++!322 U+22C2 uni22C2 ++!323 U+22C3 uni22C3 ++!327 U+2310 uni2310 ++!328 U+2320 uni2320 ++!329 U+2321 uni2321 ++!32a U+2322 uni2322 ++!32b U+2323 uni2323 ++!32c U+2329 uni2329 ++!32d U+232A uni232A ++!32e U+239B uni239B ++!32f U+239C uni239C ++!330 U+239D uni239D ++!331 U+239E uni239E ++!332 U+239F uni239F ++!333 U+23A0 uni23A0 ++!334 U+23A1 uni23A1 ++!335 U+23A2 uni2392 ++!336 U+23A3 uni23A3 ++!337 U+23A4 uni23A4 ++!338 U+23A5 uni23A5 ++!339 U+23A6 uni23A6 ++!33a U+23A7 uni23A7 ++!33b U+23A8 uni23A8 ++!33c U+23A9 uni23A9 ++!33d U+23AA uni23AA ++!33e U+23AB uni23AB ++!33f U+23AC uni23AC ++!340 U+23AD uni23AD ++!341 U+23AE uni23AE ++!342 U+23AF uni23AF ++!343 U+23B0 uni23B0 ++!344 U+23B1 uni23B1 ++!345 U+23B2 uni23B2 ++!346 U+23B3 uni23B3 ++!347 U+23B4 uni23B4 ++!348 U+23B5 uni23B5 ++!349 U+23B6 uni23B6 ++!34a U+23B7 uni23B7 ++!34b U+23B8 uni23B8 ++!34c U+23B9 uni23B9 ++!356 U+25A0 uni25A0 ++!357 U+25A1 uni25A1 ++!358 U+25AA uni25AA ++!359 U+25AB uni25AB ++!35b U+25B2 uni25B2 ++!35c U+25B3 uni25B3 ++!35d U+25BC uni25BC ++!35e U+25BD uni25BD ++!35a U+25C6 uni25C6 ++!35f U+25CA uni25CA ++!360 U+25CB uni25CB ++!361 U+25CF uni25CF ++!364 U+25E6 uni25E6 ++!362 U+25FB uni25FB ++!363 U+25FC uni25FC ++!365 U+2609 uni2609 +diff -U 3 -H -d -r -N -- term/PostScript/utf-8.ps term/PostScript/utf-8.ps +--- term/PostScript/utf-8.ps 1970-01-01 01:00:00.000000000 +0100 ++++ term/PostScript/utf-8.ps 2009-05-09 13:53:00.000000000 +0200 +@@ -0,0 +1,58 @@ ++% ++% Base ISO8859-1 character encoding plus support macros for UTF-8 encoding ++% via the glyphshow operator ++% ++/reencodeISO { ++dup dup findfont dup length dict begin ++{ 1 index /FID ne { def }{ pop pop } ifelse } forall ++currentdict /CharStrings known { ++ CharStrings /Idieresis known { ++ /Encoding ISOLatin1Encoding def } if ++} if ++currentdict end definefont ++} def ++/ISOLatin1Encoding [ ++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef ++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef ++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef ++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef ++/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright ++/parenleft/parenright/asterisk/plus/comma/minus/period/slash ++/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon ++/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N ++/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright ++/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m ++/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde ++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef ++/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef ++/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve ++/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut ++/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar ++/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot ++/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior ++/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine ++/guillemotright/onequarter/onehalf/threequarters/questiondown ++/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla ++/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex ++/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis ++/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute ++/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis ++/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave ++/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex ++/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis ++/yacute/thorn/ydieresis ++] def + - } TERMENTRY; ++/Gshow { dup type /stringtype eq { show } { glyphshow } ifelse } def ++ ++/Gsall { {Gshow} forall } def ++/Gwidth { ++ dup currentpoint pop exch ++ gsave 6 array currentmatrix nulldevice setmatrix Gsall currentpoint pop grestore sub ++ } def ++/GLshow {currentpoint stroke M 0 vshift R ++ Blacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def ++/GRshow {currentpoint stroke M dup Gwidth vshift R ++ Blacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def ++/GCshow {currentpoint stroke M dup Gwidth 2 div vshift R ++ Blacktext {gsave 0 setgray Gsall grestore} {Gsall} ifelse} def +diff -U 3 -H -d -r -N -- term/gd.trm term/gd.trm +--- term/gd.trm 2009-03-03 03:43:52.000000000 +0100 ++++ term/gd.trm 2009-05-09 13:53:00.000000000 +0200 +@@ -1861,7 +1861,7 @@ + #ifdef gdFTEX_Adobe_Custom + /* libgd defaults to UTF-8 encodings. We have limited options for */ + /* over-riding this, but we can try */ +- if (ENHgd_font && !strcmp(ENHgd_font,"Symbol")) { ++ if (encoding != S_ENC_UTF8 && ENHgd_font && !strcmp(ENHgd_font,"Symbol")) { + PNG_FONT_INFO.flags |= gdFTEX_CHARMAP; + PNG_FONT_INFO.charmap = gdFTEX_Adobe_Custom; + } else { +diff -U 3 -H -d -r -N -- term/post.trm term/post.trm +--- term/post.trm 2009-03-03 03:44:07.000000000 +0100 ++++ term/post.trm 2009-05-09 13:53:00.000000000 +0200 +@@ -1,5 +1,5 @@ + /* Hello, Emacs: this is -*-C-*- ! +- * $Id: post.trm,v 1.203.2.17 2009/03/02 17:40:06 mikulik Exp $ ++ * $Id: post.trm,v 1.230 2008/03/13 18:01:27 sfeam Exp $ + */ - #ifdef WIN16 -@@ -263,9 +272,10 @@ + /* GNUPLOT - post.trm */ +@@ -61,14 +61,18 @@ + * + * Dan Sebald, 7 March 2003: terminal entry for image functionality + * +- * Harald Harders (h.harders@tu-bs.de), 2004-12-02: +- * Moved all terminal settings into a single structure. ++ * Harald Harders (h.harders@tu-bs.de), 2004-12-02: ++ * Moved all terminal settings into a single structure. + * +- * Harald Harders (h.harders@tu-bs.de), 2005-02-08: +- * Merged functionality of postscript, pslatex, pstex, and epslatex terminals. ++ * Harald Harders (h.harders@tu-bs.de), 2005-02-08: ++ * Merged functionality of postscript, pslatex, pstex, and epslatex terminals. + * +- * Ethan Merritt Mar 2006: Break out prolog and character encodings into +- * separate files loaded at runtime ++ * Ethan Merritt Mar 2006: Break out prolog and character encodings into ++ * separate files loaded at runtime ++ * ++ * Thomas Henlich Sep 2007: Add support for UTF-8 encoding via the glyphshow ++ * operator. It supports PostScript Type1 fonts that use glyph names according ++ * to the Adobe Glyph List For New Fonts. + */ + + #include "driver.h" +@@ -106,7 +110,7 @@ + TERM_PUBLIC void PS_set_color (t_colorspec *); + TERM_PUBLIC void PS_filled_polygon (int, gpiPoint *); + #ifdef WITH_IMAGE +-TERM_PUBLIC void PS_image __PROTO((unsigned, unsigned, coordval *, gpiPoint *, t_imagecolor)); ++TERM_PUBLIC void PS_image __PROTO((unsigned int, unsigned int, coordval *, gpiPoint *, t_imagecolor)); #endif - enum set_encoding_id { -- S_ENC_DEFAULT, S_ENC_ISO8859_1, S_ENC_ISO8859_2, S_ENC_ISO8859_15, -- S_ENC_CP437, S_ENC_CP850, S_ENC_CP852, S_ENC_CP1250, -- S_ENC_KOI8_R, S_ENC_KOI8_U, -+ S_ENC_DEFAULT, S_ENC_ISO8859_1, S_ENC_ISO8859_2, S_ENC_ISO8859_9, S_ENC_ISO8859_15, -+ S_ENC_CP437, S_ENC_CP850, S_ENC_CP852, S_ENC_CP1250, S_ENC_CP1254, -+ S_ENC_KOI8_R, S_ENC_KOI8_U, -+ S_ENC_UTF8, - S_ENC_INVALID + /* To support "set term post enhanced" */ +@@ -123,6 +127,9 @@ + + TERM_PUBLIC void PS_path __PROTO((int p)); + static TBOOLEAN PS_newpath = FALSE; ++static TBOOLEAN ENHps_opened_string = FALSE; /* try to cut out empty ()'s */ ++ ++TERM_PUBLIC void PS_layer __PROTO((t_termlayer syncpoint)); + + #endif /* TERM_PROTO */ + +@@ -140,11 +147,12 @@ + } \ + } while (0) + +-/* Datastructure implementing inclusion of font files */ ++/* Data structure implementing inclusion of font files */ + struct ps_fontfile_def { + struct ps_fontfile_def *next;/* pointer to next fontfile in linked list */ + char *fontfile_name; + char *fontfile_fullname; ++ char *fontname; }; ---- src/util.c -+++ src/util.c 2008-03-30 01:37:25.000000000 +0100 -@@ -1200,3 +1215,85 @@ + /* Terminal type of postscript dialect */ +@@ -181,13 +189,14 @@ + double palfunc_deviation; /* terminal option */ + TBOOLEAN oldstyle; + TBOOLEAN epslatex_standalone; ++ TBOOLEAN adobeglyphnames; /* Choice of output names for UTF8 */ + } ps_params_t; - return fullname; + #define POST_PARAMS_DEFAULT { \ + PSTERM_POSTSCRIPT, 50, 50, \ + PSTERM_LANDSCAPE, FALSE, FALSE, FALSE, FALSE, 1.0, 1.0, FALSE, \ + FALSE, FALSE, NULL, "Helvetica", 14, FALSE, FALSE, 2000, 0.003, \ +- FALSE, FALSE \ ++ FALSE, TRUE \ } -+ -+TBOOLEAN contains8bit(const char *s) -+{ -+ while (*s) { -+ if ((*s++ & 0x80)) -+ return TRUE; -+ } -+ return FALSE; -+} -+ -+#define INVALID_UTF8 0xfffful -+ -+/* Read from second byte to end of UTF-8 sequence. -+ used by utftoulong() */ -+TBOOLEAN -+utf8_getmore (unsigned long * wch, const char **str, int nbytes) -+{ -+ int i; -+ unsigned char c; -+ unsigned long minvalue[] = {0x80, 0x800, 0x10000, 0x200000, 0x4000000}; -+ -+ for (i = 0; i < nbytes; i++) { -+ c = (unsigned char) **str; -+ -+ if ((c & 0xc0) != 0x80) { -+ *wch = INVALID_UTF8; -+ return FALSE; -+ } -+ *wch = (*wch << 6) | (c & 0x3f); -+ (*str)++; -+ } -+ -+ /* check for overlong UTF-8 sequences */ -+ if (*wch < minvalue[nbytes-1]) { -+ *wch = INVALID_UTF8; -+ return FALSE; -+ } -+ return TRUE; -+} -+ -+/* Convert UTF-8 multibyte sequence from string to unsigned long character. -+ Returns TRUE on success. -+*/ -+TBOOLEAN -+utf8toulong (unsigned long * wch, const char ** str) -+{ -+ unsigned char c; -+ -+ c = (unsigned char) *(*str)++; -+ if ((c & 0x80) == 0) { -+ *wch = (unsigned long) c; -+ return TRUE; -+ } -+ -+ if ((c & 0xe0) == 0xc0) { -+ *wch = c & 0x1f; -+ return utf8_getmore(wch, str, 1); -+ } -+ -+ if ((c & 0xf0) == 0xe0) { -+ *wch = c & 0x0f; -+ return utf8_getmore(wch, str, 2); -+ } -+ -+ if ((c & 0xf8) == 0xf0) { -+ *wch = c & 0x07; -+ return utf8_getmore(wch, str, 3); -+ } -+ -+ if ((c & 0xfc) == 0xf8) { -+ *wch = c & 0x03; -+ return utf8_getmore(wch, str, 4); -+ } -+ -+ if ((c & 0xfe) == 0xfc) { -+ *wch = c & 0x01; -+ return utf8_getmore(wch, str, 5); -+ } -+ -+ *wch = INVALID_UTF8; -+ return FALSE; -+} ---- src/set.c -+++ src/set.c 2008-03-30 04:08:58.000000000 +0200 -@@ -1211,7 +1211,7 @@ - temp = lookup_table(&set_encoding_tbl[0],c_token); - if (temp == S_ENC_INVALID) -- int_error(c_token, "expecting one of 'default', 'iso_8859_1', 'iso_8859_2', 'iso_8859_15', 'cp437', 'cp850', 'cp852', 'koi8r' or 'koi8u'"); -+ int_error(c_token, "expecting one of 'default', 'utf8', 'iso_8859_1', 'iso_8859_2', 'iso_8859_9', 'iso_8859_15', 'cp437', 'cp850', 'cp852', 'koi8r', or 'koi8u'"); - c_token++; + static ps_params_t post_params = POST_PARAMS_DEFAULT; +@@ -261,7 +270,9 @@ + static char *pslatex_auxname = NULL; + + /* Routine to copy pre-existing prolog files into output stream */ ++static FILE *PS_open_prologue_file __PROTO((char *)); + static void PS_dump_prologue_file __PROTO((char *)); ++static void PS_load_glyphlist __PROTO((void)); + + static const char GPFAR * GPFAR OldEPSL_linetypes[] = { + /* Line Types */ +@@ -280,20 +291,21 @@ + /* For MFshow and MFwidth the tos is an array with the string and font info: */ + /* [ ] */ + /* EAM Mar 2004 - Add in a special case overprint 3 = save, overprint 4 = restore */ ++/* EAM Nov 2007 - Accommodate UTF-8 support (Gshow) */ + + "/MFshow {\n", + " { dup 5 get 3 ge\n", /* EAM test for overprint 3 or 4 */ + " { 5 get 3 eq {gsave} {grestore} ifelse }\n", /* EAM */ + " {dup dup 0 get findfont exch 1 get scalefont setfont\n", + " [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6\n", +-" get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq\n", ++" get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq\n", + " {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5\n", + " get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div\n", + " dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get\n", + " show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop\n", + " pop aload pop M} ifelse }ifelse }ifelse }\n", + " ifelse }\n", /* EAM */ +-" forall} bind def\n", ++" forall} def\n", + + /* get the width of the text */ + /* HH 2005-07-24 - Add in a special case overprint 3 = save, 4 = restore +@@ -301,9 +313,12 @@ + * additional value on the stack. between XYsave and XYrestore, + * this number is increased by the strings. By pop'ing this number, all + * strings between XYsave and XYrestore are ignored. */ ++/* EAM Nov 2007 - GSwidth is to allow the operator to work either with a string ++ * or with a glyph. Needed for UTF-8 support. Gwidth may do it better. */ ++"/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def\n", + "/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse }\n", + " {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont\n", +-" 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def\n", ++" 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def\n", + + /* flush left show */ + "/MLshow { currentpoint stroke M\n", +@@ -366,8 +381,11 @@ + if (strcmp(fnp->name, myfname) == 0) + return NULL; + +- /* we did not find the name */ ++ /* Ignore it if illegal characters will corrupt the PostScript syntax */ ++ if (strpbrk(myfname, "{}[]() ")) ++ return NULL; + ++ /* we have not seen this font before; store name and apply encoding */ + fnp = (struct PS_FontName *)gp_alloc(sizeof(struct PS_FontName), + "PostScript Font record"); + fnp->name = gp_strdup(myfname); +@@ -376,12 +394,17 @@ + + switch(encoding) { + case S_ENC_ISO8859_1: ++ case S_ENC_UTF8: + recode = "reencodeISO def\n"; + break; + case S_ENC_ISO8859_2: + recode = "reencodeISO2 def\n"; + break; +- case S_ENC_ISO8859_15: ++ case S_ENC_ISO8859_9: /* ISO8859-9 is Latin5 */ ++ case S_ENC_CP1254: ++ recode = "reencodeISO9 def\n"; ++ break; ++ case S_ENC_ISO8859_15: /* ISO8859-15 is Latin9 */ + recode = "reencodeISO15 def\n"; + break; + case S_ENC_CP437: +@@ -407,11 +430,13 @@ + break; } - encoding = temp; ---- docs/gnuplot.doc -+++ docs/gnuplot.doc 2008-03-30 12:31:59.000000000 +0200 -@@ -5791,6 +5791,7 @@ - ?show encoding - ?encoding - ?encodings -+=UTF-8 - The `set encoding` command selects a character encoding. - Syntax: - set encoding {} -@@ -5801,6 +5802,7 @@ - iso_8859_1 - the most common Western European font used by many - Unix workstations and by MS-Windows. This encoding is - known in the PostScript world as 'ISO-Latin1'. -+ iso_8859_15 - a variant of iso_8859_1 that includes the Euro symbol - iso_8859_2 - used in Central and Eastern Europe - iso_8859_15 - a variant of iso_8859_1 that includes the Euro symbol - koi8r - popular Unix cyrillic encoding -@@ -5809,6 +5811,9 @@ - cp850 - codepage for OS/2, Western Europe - cp852 - codepage for OS/2, Central and Eastern Europe - cp1250 - codepage for MS Windows, Central and Eastern Europe -+ cp1254 - codepage for MS Windows, Turkish (superset of Latin5) -+ utf8 - variable-length (multibyte) representation of Unicode -+ entry point for each character - Generally you must set the encoding before setting the terminal type. - Note that encoding is not supported by all terminal drivers and that +- if (can_reencode && recode) { +- fprintf(gppsfile,"/%s %s", myfname, recode); +- return NULL; +- } else +- return recode; ++ if (recode) { ++ if (ENHps_opened_string) ++ ENHPS_FLUSH(); ++ fprintf(gppsfile,"/%s %s", fnp->name, recode); ++ } ++ ++ return NULL; + } + + char * +@@ -454,6 +479,7 @@ + PSLATEX_ROTATE, PSLATEX_NOROTATE, PSLATEX_AUXFILE, PSLATEX_NOAUXFILE, + PSLATEX_OLDSTYLE, PSLATEX_NEWSTYLE, EPSLATEX_HEADER, EPSLATEX_NOHEADER, + PS_SIZE, ++ PS_ADOBEGLYPHNAMES, PS_NOADOBEGLYPHNAMES, + PS_OTHER + }; + +@@ -499,6 +525,8 @@ + { "noa$uxfile", PSLATEX_NOAUXFILE }, + { "old$style", PSLATEX_OLDSTYLE }, + { "new$style", PSLATEX_NEWSTYLE }, ++ { "adobe$glyphnames", PS_ADOBEGLYPHNAMES }, ++ { "noadobe$glyphnames", PS_NOADOBEGLYPHNAMES }, + { NULL, PS_OTHER } + }; + +@@ -848,35 +876,36 @@ + break; + case PS_FONTFILE: { + TBOOLEAN deleteentry = FALSE; ++ char *fontfilename = NULL; + c_token++; + if (ps_params->terminal != PSTERM_POSTSCRIPT) + int_error(c_token, + "extraneous argument in set terminal %s",term->name); + +- if (!isstring(c_token)) { +- if (equals(c_token, "add")) +- c_token++; +- else if (almost_equals(c_token, "del$ete")) { +- deleteentry = TRUE; +- c_token++; +- } else +- int_error(c_token, "Font filename expected"); +- } +- if (isstring(c_token)) { +- TBOOLEAN filename_doubled = FALSE; +- struct ps_fontfile_def *curr_ps_fontfile = ++ if (equals(c_token, "add")) ++ c_token++; ++ else if (almost_equals(c_token, "del$ete")) { ++ deleteentry = TRUE; ++ c_token++; ++ } ++ ++ if (!(fontfilename = try_to_get_string())) { ++ int_error(c_token, "Font filename expected"); ++ } else { ++ TBOOLEAN filename_doubled = FALSE; ++ struct ps_fontfile_def *curr_ps_fontfile = + ps_params->first_fontfile; +- struct ps_fontfile_def *prev_ps_fontfile = NULL; +- struct ps_fontfile_def *new_ps_fontfile = +- gp_alloc(sizeof(struct ps_fontfile_def), +- "new_ps_fontfile"); ++ struct ps_fontfile_def *prev_ps_fontfile = NULL; ++ struct ps_fontfile_def *new_ps_fontfile = ++ gp_alloc(sizeof(struct ps_fontfile_def), ++ "new_ps_fontfile"); + +- new_ps_fontfile->fontfile_name = +- gp_alloc (token_len(c_token), +- "new_ps_fontfile->fontfile_name"); +- quote_str(new_ps_fontfile->fontfile_name, +- c_token, token_len(c_token)); +- gp_expand_tilde(&(new_ps_fontfile->fontfile_name)); ++ new_ps_fontfile->fontfile_name = ++ gp_alloc (token_len(c_token), ++ "new_ps_fontfile->fontfile_name"); ++ gp_expand_tilde(&fontfilename); ++ new_ps_fontfile->fontfile_name = fontfilename; ++ new_ps_fontfile->fontname = NULL; + if (!deleteentry) { + #if defined(PIPES) + if (*(new_ps_fontfile->fontfile_name) != '<') { +@@ -884,7 +913,7 @@ + new_ps_fontfile->fontfile_fullname = + fontpath_fullname(new_ps_fontfile->fontfile_name); + if (!new_ps_fontfile->fontfile_fullname) +- int_error(c_token, "Font file '%s' not found", ++ int_error(c_token-1, "Font file '%s' not found", + new_ps_fontfile->fontfile_name); + #if defined(PIPES) + } else +@@ -901,45 +930,43 @@ + lf=lf->prev; + } + if ((lf && lf->interactive) || interactive) +- /* if (interactive) { */ + PS_load_fontfile(new_ps_fontfile,FALSE); + } + +- if (ps_params->first_fontfile) { +- while (curr_ps_fontfile) { +- if (strcmp(curr_ps_fontfile->fontfile_name, +- new_ps_fontfile->fontfile_name) == 0) { +- filename_doubled = TRUE; +- if (deleteentry) { ++ if (ps_params->first_fontfile) { ++ while (curr_ps_fontfile) { ++ if (strcmp(curr_ps_fontfile->fontfile_name, ++ new_ps_fontfile->fontfile_name) == 0) { ++ filename_doubled = TRUE; ++ if (deleteentry) { + delete_ps_fontfile(prev_ps_fontfile, + curr_ps_fontfile); +- curr_ps_fontfile = NULL; +- break; +- } +- } +- prev_ps_fontfile = curr_ps_fontfile; +- curr_ps_fontfile = curr_ps_fontfile->next; +- } +- if (!filename_doubled) { +- if (!deleteentry) +- prev_ps_fontfile->next = new_ps_fontfile; +- else +- int_warn(c_token,"Can't delete Font filename '%s'", +- new_ps_fontfile->fontfile_name); +- } +- } else { +- if (!deleteentry) +- ps_params->first_fontfile = new_ps_fontfile; +- else +- int_warn(c_token, "Can't delete Font filename '%s'", +- new_ps_fontfile->fontfile_name); +- } +- c_token++; +- } else +- int_error(c_token, "Font filename expected"); +- break; +- } +- case PS_NOFONTFILES: ++ curr_ps_fontfile = NULL; ++ break; ++ } ++ } ++ prev_ps_fontfile = curr_ps_fontfile; ++ curr_ps_fontfile = curr_ps_fontfile->next; ++ } ++ if (!filename_doubled) { ++ if (!deleteentry) ++ prev_ps_fontfile->next = new_ps_fontfile; ++ else ++ int_warn(c_token,"Can't delete Font filename '%s'", ++ new_ps_fontfile->fontfile_name); ++ } ++ } else { ++ if (!deleteentry) ++ ps_params->first_fontfile = new_ps_fontfile; ++ else ++ int_warn(c_token, "Can't delete Font filename '%s'", ++ new_ps_fontfile->fontfile_name); ++ } ++ c_token++; ++ } ++ break; ++ } ++ case PS_NOFONTFILES: + if (ps_params->terminal != PSTERM_POSTSCRIPT) + int_error(c_token, + "extraneous argument in set terminal %s",term->name); +@@ -948,6 +975,14 @@ + ps_params->first_fontfile); + ++c_token; + break; ++ case PS_ADOBEGLYPHNAMES: ++ ps_params->adobeglyphnames = TRUE; ++ ++c_token; ++ break; ++ case PS_NOADOBEGLYPHNAMES: ++ ps_params->adobeglyphnames = FALSE; ++ ++c_token; ++ break; + case PS_PALFUNCPARAM: + if (set_palfunc) + int_error(c_token, +@@ -999,8 +1034,16 @@ + set_fontsize = TRUE; + *comma = '\0'; + } +- if (*s) ++ if (*s) { ++ /* Filter out characters that would confuse PostScript */ ++ if (strpbrk(s, "()[]{}| ")) { ++ int_warn(c_token-1,"Illegal characters in PostScript font name."); ++ int_warn(NO_CARET,"I will try to fix it but this may not work."); ++ while (strpbrk(s, "()[]{}| ")) ++ *(strpbrk(s, "()[]{}| ")) = '-'; ++ } + strncpy(ps_params->font, s, sizeof(ps_params->font)); ++ } + free(s); + } else + int_error(c_token-1, +@@ -1118,6 +1161,12 @@ + } + #endif + ++ if ((encoding == S_ENC_UTF8) && (ps_params->terminal == PSTERM_POSTSCRIPT)) { ++ sprintf(tmp_term_options," %sadobeglyphnames \\\n ", ++ ps_params->adobeglyphnames ? "" : "no"); ++ strcat(term_options,tmp_term_options); ++ } ++ + if (ps_explicit_size) { + if (ps_explicit_units == CM) + sprintf(tmp_term_options,"size %.2fcm, %.2fcm ", +@@ -1152,6 +1201,29 @@ + static TBOOLEAN ps_common_uses_fonts; + static unsigned int ps_common_xoff, ps_common_yoff; + ++/* The default UTF8 code will use glyph identifiers uniXXXX for all glyphs above 0x0100. ++ * If you define ADOBE_ENCODING_NAMES, then it will instead use the glyph names from the ++ * file aglfn.txt. Names in the range 0x0100 - 0x01FF correspond to those used by the ++ * Latin1 encoding scheme. This unicode code page deliberately uses the same character ++ * mapping as Latin1. Adobe also recommends names for many characters outside this ++ * range, but not all fonts adhere to this. You can substitute a different aglfn.txt ++ * file at run time if you want to use a different scheme. ++ */ ++#define ADOBE_ENCODING_NAMES 1 ++ ++#if (ADOBE_ENCODING_NAMES) ++ ++typedef struct ps_glyph { ++ unsigned long unicode; ++ char * glyphname; ++} ps_glyph; ++ ++static ps_glyph *aglist = NULL; ++static int aglist_alloc = 0; ++static int aglist_size = 0; ++static int psglyphs = 0; ++ ++#endif + + TERM_PUBLIC void + PS_load_fontfile(struct ps_fontfile_def *current_ps_fontfile, TBOOLEAN doload) +@@ -1206,7 +1278,7 @@ + current_ps_fontfile->fontfile_name + 1); + #endif + } +- else if (strcmp(ext,"ttf") == 0) { ++ else if (!strcmp(ext,"ttf") || !strcmp(ext,"otf")) { + /* TrueType */ + #if defined(PIPES) + ispipe = TRUE; +@@ -1285,6 +1357,7 @@ + strcpy(fontname,strstr(line+1,"/")+1); + fnende = strstr(fontname," "); + *fnende = '\0'; ++ current_ps_fontfile->fontname = gp_strdup(fontname); + /* Print font name */ + if (!doload) { + if (current_ps_fontfile->fontfile_fullname) +@@ -1365,6 +1438,8 @@ + + while (current_ps_fontfile) { + PS_load_fontfile(current_ps_fontfile,doload); ++ if (current_ps_fontfile->fontname) ++ PS_RememberFont(current_ps_fontfile->fontname, 1); + current_ps_fontfile = current_ps_fontfile->next; + } + } +@@ -1518,11 +1593,16 @@ + free(outstr2); + } + ++ /* Dump the body of the prologue */ ++ PS_dump_prologue_file("prologue.ps"); ++ + /* insert font encoding vector */ + if (uses_fonts) { + switch (encoding) { + case S_ENC_ISO8859_1: PS_dump_prologue_file("8859-1.ps"); break; + case S_ENC_ISO8859_2: PS_dump_prologue_file("8859-2.ps"); break; ++ case S_ENC_CP1254: ++ case S_ENC_ISO8859_9: PS_dump_prologue_file("8859-9.ps"); break; + case S_ENC_ISO8859_15: PS_dump_prologue_file("8859-15.ps"); break; + case S_ENC_CP437: PS_dump_prologue_file("cp437.ps"); break; + case S_ENC_CP850: PS_dump_prologue_file("cp850.ps"); break; +@@ -1530,14 +1610,14 @@ + case S_ENC_CP1250: PS_dump_prologue_file("cp1250.ps"); break; + case S_ENC_KOI8_R: PS_dump_prologue_file("koi8r.ps"); break; + case S_ENC_KOI8_U: PS_dump_prologue_file("koi8u.ps"); break; ++ case S_ENC_UTF8: PS_dump_prologue_file("utf-8.ps"); ++ if (!aglist) PS_load_glyphlist(); ++ break; + case S_ENC_DEFAULT: + default: break; + } + } + +- /* Dump the body of the prologue */ +- PS_dump_prologue_file("prologue.ps"); +- + /* Redefine old epslatex linetypes if requested */ + if ((ps_params->terminal == PSTERM_EPSLATEX) && ps_params->oldstyle) { + for (i = 0; OldEPSL_linetypes[i] != NULL; i++) +@@ -1582,6 +1662,7 @@ + xmax_t = term->xmax * (xsize + xoffset) / (2*PS_SC); + ymin_t = term->ymax * yoffset / (2*PS_SC); + ymax_t = term->ymax * (ysize + yoffset) / (2*PS_SC); ++ term->tscale = PS_SC * 2; + break; + case PSTERM_PORTRAIT: + if (!ps_explicit_size) { +@@ -1592,6 +1673,7 @@ + xmax_t = term->xmax * (xsize + xoffset) / PS_SC; + ymin_t = term->ymax * yoffset / PS_SC; + ymax_t = term->ymax * (ysize + yoffset) / PS_SC; ++ term->tscale = PS_SC; + break; + case PSTERM_LANDSCAPE: + if (!ps_explicit_size) { +@@ -1602,6 +1684,7 @@ + ymax_t = term->xmax * (xsize+xoffset) / PS_SC; + xmin_t = term->ymax * (1-ysize-yoffset) / PS_SC; + xmax_t = term->ymax * (1-yoffset) / PS_SC; ++ term->tscale = PS_SC; + break; + default: + int_error(NO_CARET, "invalid postscript format used"); +@@ -1694,11 +1777,6 @@ + { + fputs("%%Trailer\n", gppsfile); + +- /* I think the following commands should be executed +- `if (ps_common_uses_fonts)`. So I changed the next line. +- Please see "PS_RememberFont", too. */ /* JFi */ +- +- /* if (!ps_common_uses_fonts) { */ /* JFi */ + if (ps_common_uses_fonts) { + fputs("%%DocumentFonts: ", gppsfile); + while (PS_DocFonts) { +@@ -1884,38 +1962,97 @@ + TERM_PUBLIC void + PS_put_text(unsigned int x, unsigned int y, const char *str) + { +- char ch; ++#define PS_NONE 0 ++#define PS_TEXT 1 ++#define PS_GLYPH 2 ++ unsigned long ch; + + if (!str && !strlen(str)) + return; + PS_move(x,y); + if (ps_ang != 0) +- fprintf(gppsfile,"currentpoint gsave translate %d rotate 0 0 M\n", +- ps_ang); +- putc('(',gppsfile); +- ch = *str++; +- while(ch!='\0') { +- if ((ch=='(') || (ch==')') || (ch=='\\')) +- putc('\\', gppsfile); +- putc(ch, gppsfile); +- ch = *str++; +- } ++ fprintf(gppsfile,"currentpoint gsave translate %d rotate 0 0 M\n", ps_ang); + +- switch(ps_justify) { +- case LEFT : +- fputs(") Lshow\n", gppsfile); +- break; +- case CENTRE : +- fputs(") Cshow\n", gppsfile); +- break; +- case RIGHT : +- fputs(") Rshow\n", gppsfile); +- break; ++ if (encoding == S_ENC_UTF8 && contains8bit(str)) { ++ /* UTF-8 encoding with multibyte characters present */ ++ int mode = PS_NONE; ++ ++ putc('[', gppsfile); ++ ++ for (utf8toulong(&ch, &str); ch != '\0'; utf8toulong(&ch, &str)) { ++ if (ch < 0x100) { ++ if (mode != PS_TEXT) ++ putc('(', gppsfile); ++ if (ch == '(' || ch == ')' || ch == '\\') ++ putc('\\', gppsfile); ++ putc((char)ch, gppsfile); ++ mode = PS_TEXT; ++ } else { ++ int i; ++ if (mode == PS_TEXT) ++ putc(')', gppsfile); ++ putc('/', gppsfile); ++#if (ADOBE_ENCODING_NAMES) ++ for (i = 0; i < psglyphs; i++) { ++ if (aglist[i].unicode == ch) { ++ fputs(aglist[i].glyphname, gppsfile); ++ break; ++ } ++ } ++ if (i >= psglyphs) /* Must not have found a glyph name */ ++#endif ++ fprintf(gppsfile, (ch > 0xffff) ? "u%lX" : "uni%04lX", ch); ++ mode = PS_GLYPH; ++ } ++ } ++ ++ if (mode == PS_TEXT) ++ putc(')', gppsfile); ++ ++ switch(ps_justify) { ++ case LEFT : ++ fputs("] GLshow\n", gppsfile); ++ break; ++ case CENTRE : ++ fputs("] GCshow\n", gppsfile); ++ break; ++ case RIGHT : ++ fputs("] GRshow\n", gppsfile); ++ break; ++ } ++ ++ } else { ++ /* plain old 8-bit mode (not UTF-8), or UTF-8 string with only 7-bit characters */ ++ putc('(',gppsfile); ++ ch = (char) *str++; ++ while(ch!='\0') { ++ if ((ch=='(') || (ch==')') || (ch=='\\')) ++ putc('\\', gppsfile); ++ putc((char) ch, gppsfile); ++ ch = (char) *str++; ++ } ++ ++ switch(ps_justify) { ++ case LEFT : ++ fputs(") Lshow\n", gppsfile); ++ break; ++ case CENTRE : ++ fputs(") Cshow\n", gppsfile); ++ break; ++ case RIGHT : ++ fputs(") Rshow\n", gppsfile); ++ break; ++ } + } ++ + if (ps_ang != 0) + fputs("grestore\n", gppsfile); + ps_path_count = 0; + PS_relative_ok = FALSE; ++ ++#undef PS_NONE ++#undef PS_TEXT ++#undef PS_GLYPH + } + + +@@ -2034,6 +2171,7 @@ + switch(style & 0xf) { + + case FS_SOLID: ++ case FS_TRANSPARENT_SOLID: + /* style == 1 --> fill with intensity according to filldensity */ + filldens = (style >> 4) / 100.0; + if(filldens < 0.0) +@@ -2045,6 +2183,7 @@ + break; + + case FS_PATTERN: ++ case FS_TRANSPARENT_PATTERN: + /* style == 2 --> fill with pattern according to fillpattern */ + /* the upper 3 nibbles of 'style' contain pattern number */ + pattern = (style >> 4) % 8; +@@ -2097,8 +2236,6 @@ + + /* ENHPOST */ + +-static TBOOLEAN ENHps_opened_string; /* try to cut out empty ()'s */ +- + /* + * close a postscript string if it has been opened + */ +@@ -2111,6 +2248,8 @@ + } + } + ++static char *ENHps_opensequence = NULL; ++ + /* + * open a postscript string + */ +@@ -2134,22 +2273,92 @@ + } + + if (!ENHps_opened_string) { +- fprintf(gppsfile, "[(%s) %.1f %.1f %s %s %d (", ++ int safelen = strlen(fontname) + 40; ++ free(ENHps_opensequence); ++ ENHps_opensequence = gp_alloc(safelen,"ENHPS_opensequence"); ++ /* EAM November 2007 - moved here from enhanced_recursion() */ ++ PS_RememberFont(fontname,1); ++#ifdef HAVE_SNPRINTF ++ snprintf(ENHps_opensequence, safelen, "[(%s) %.1f %.1f %s %s %d ", ++ fontname, fontsize, base, ++ widthflag ? "true" : "false", ++ showflag ? "true" : "false", ++ overprint); ++#else ++ sprintf(ENHps_opensequence, "[(%s) %.1f %.1f %s %s %d ", + fontname, fontsize, base, + widthflag ? "true" : "false", + showflag ? "true" : "false", + overprint); ++#endif ++ fprintf(gppsfile, "%s(", ENHps_opensequence); + ENHps_opened_string = TRUE; + } + } + + /* +- * write one or more characters from inside enhanced text processing ++ * Write one character from inside enhanced text processing. ++ * This is trivial except in the case of multi-byte encoding. + */ + TERM_PUBLIC void + ENHPS_WRITEC(int c) + { +- fputc(c, gppsfile); ++ static int in_utf8 = 0; /* nonzero means we are inside a multibyte sequence */ ++ static char utf8[6]; /* holds the multibyte sequence being accumulated */ ++ static int nbytes = 0; /* number of bytes expected in the sequence */ ++ ++ /* UTF-8 Encoding */ ++ if (encoding == S_ENC_UTF8 && (c & 0x80) != 0) { ++ if (in_utf8 == 0) { ++ nbytes = (c & 0xE0) == 0xC0 ? 2 ++ : (c & 0xF0) == 0xE0 ? 3 ++ : (c & 0xF8) == 0xF0 ? 4 ++ : 0; ++ if (!nbytes) /* Illegal UTF8 char; hope it's printable */ ++ fputc(c, gppsfile); ++ else ++ utf8[in_utf8++] = c; ++ } else { ++ utf8[in_utf8++] = c; ++ if (in_utf8 >= nbytes) { ++ unsigned long wch = '\0'; ++ const char *str = &utf8[0]; ++ int i; ++ ++ utf8[nbytes] = '\0'; ++ in_utf8 = 0; ++ utf8toulong(&wch, &str); ++ ++ if (wch < 0x100) { /* Single byte ISO8859-1 character */ ++ fputc(wch, gppsfile); ++ return; ++ } ++ ++ /* Finish off previous partial string, if any */ ++ ENHPS_FLUSH(); ++ ++ /* Write a new partial string for this glyph */ ++ fprintf(gppsfile, "%s/", ENHps_opensequence); ++#if (ADOBE_ENCODING_NAMES) ++ for (i = 0; i < psglyphs; i++) { ++ if (aglist[i].unicode == wch) { ++ fputs(aglist[i].glyphname, gppsfile); ++ break; ++ } ++ } ++ if (i >= psglyphs) /* Must not have found a glyph name */ ++#endif ++ fprintf(gppsfile, (wch > 0xffff) ? "u%lX" : "uni%04lX", wch); ++ fprintf(gppsfile, "]\n"); ++ ++ /* Mark string closed */ ++ ENHps_opened_string = FALSE; ++ } ++ } ++ } else ++ ++ /* Single byte character */ ++ fputc(c, gppsfile); + } + + /* a set-font routine for enhanced post : simply copies +@@ -2198,7 +2407,7 @@ + + PS_FLUSH_PATH; + +- /* if there are no magic characters, we should just be able ++ /* FIXME: if there are no magic characters, we should just be able + * punt the string to PS_put_text(), which will give shorter + * ps output [eg tics and stuff rarely need extra processing], + * but we need to make sure that the current font is the +@@ -2574,7 +2783,7 @@ + TERM_PUBLIC int PS_make_palette (t_sm_palette *palette) + { + if (palette == NULL) { +- return 0; /* postscript can do continuous colors */ ++ return 0; /* postscript can do continuous colors */ + } + + PS_make_header(palette); +@@ -2647,6 +2856,9 @@ + /* General case for solid or pattern-filled polygons + * gsave N ... density PolyFill + */ ++ int fillpar = style >> 4; ++ style = style &0xf; ++ + fprintf(gppsfile, "gsave "); + fprintf(gppsfile, "%i %i N", corners[0].x, corners[0].y); + for (i = 1; i < points; i++) { +@@ -2662,6 +2874,8 @@ + + case FS_SOLID: + filldens = (style >> 4) / 100.0; ++ case FS_TRANSPARENT_SOLID: ++ filldens = (fillpar) / 100.0; + if(filldens < 0.0) + filldens = 0.0; + if(filldens >= 1.0) +@@ -2670,8 +2884,10 @@ + fprintf(gppsfile, " %.2f PolyFill\n", filldens); + break; + ++ case FS_TRANSPARENT_PATTERN: ++ fprintf(gppsfile," /TransparentPatterns true def\n"); + case FS_PATTERN: +- pattern = (style >> 4) % 8; ++ pattern = (fillpar) % 8; + if (pattern == 0) { + filldens = 0.5; + fprintf(gppsfile, " %.1f PolyFill\n", filldens); +@@ -2730,10 +2946,11 @@ + if (prev != NULL) /* there is a previous ps_fontfile */ + prev->next = this->next; + else /* this = ps_params->first_fontfile */ +- /* so change ps_params->first_fontfile */ ++ /* so change ps_params->first_fontfile */ + ps_params->first_fontfile = this->next; + free(this->fontfile_name); + free(this->fontfile_fullname); ++ free(this->fontname); + free(this); + this = NULL; + } +@@ -2770,15 +2987,15 @@ + * routine. + */ + static char * +-PS_encode_image(unsigned M, unsigned N, coordval *image, t_imagecolor color_mode, ++PS_encode_image(unsigned int M, unsigned int N, coordval *image, t_imagecolor color_mode, + int bits_per_component, int max_colors, double cscale, + enum PS_ENCODING encoding, int *return_num_bytes) + { +- unsigned coord_remaining; ++ unsigned int coord_remaining; + coordval *coord_ptr; + unsigned short i_line; +- unsigned i_element; +- unsigned end_of_line; ++ unsigned int i_element; ++ unsigned int end_of_line; + unsigned short bits_remaining, bits_start; + + unsigned long tuple4; +@@ -2954,7 +3171,7 @@ + + + static void +-print_five_operand_image(unsigned M, unsigned N, gpiPoint *corner, t_imagecolor color_mode, unsigned short bits_per_component) ++print_five_operand_image(unsigned int M, unsigned int N, gpiPoint *corner, t_imagecolor color_mode, unsigned short bits_per_component) + { + char *space = ps_params->level1 ? "" : " "; + +@@ -2980,7 +3197,7 @@ + + + TERM_PUBLIC void +-PS_image (unsigned M, unsigned N, coordval *image, gpiPoint *corner, t_imagecolor color_mode) ++PS_image (unsigned int M, unsigned int N, coordval *image, gpiPoint *corner, t_imagecolor color_mode) + { + char *encoded_image; + int num_encoded_bytes; +@@ -3163,13 +3380,12 @@ + * If unsuccessful, look for hardcoded absolute path on UNIX, + * or hardcoded relative path on Windows and OS2, + * or files included at compile time. */ +-static void +-PS_dump_prologue_file(char *name) ++static FILE * ++PS_open_prologue_file(char *name) + { + char *fullname; + char *ps_prologue_dir; + FILE *prologue_fd; +- char buf[256]; + + if ((ps_prologue_dir = getenv("GNUPLOT_PS_DIR")) == NULL) { + #ifdef GNUPLOT_PS_DIR +@@ -3221,6 +3437,8 @@ + dump = prologue_8859_1_ps; + else if (!strcmp(name,"8859-2.ps")) + dump = prologue_8859_2_ps; ++ else if (!strcmp(name,"8859-9.ps")) ++ dump = prologue_8859_9_ps; + else if (!strcmp(name,"cp1250.ps")) + dump = prologue_cp1250_ps; + else if (!strcmp(name,"cp437.ps")) +@@ -3233,16 +3451,18 @@ + dump = prologue_koi8r_ps; + else if (!strcmp(name,"koi8u.ps")) + dump = prologue_koi8u_ps; ++ else if (!strcmp(name,"utf-8.ps")) ++ dump = prologue_utf_8_ps; + else if (!strcmp(name,"prologue.ps")) + dump = prologue_prologue_ps; + else +- int_error(NO_CARET,"Requested Postscript prologue is not included"); ++ int_warn(NO_CARET,"Requested Postscript prologue %s not found",name); + + if (dump) { + for (i = 0; dump[i] != NULL; ++i) + fprintf(gppsfile, "%s", dump[i]); + } +- return; ++ return NULL; + #endif /* GNUPLOT_PS_DIR */ + } + +@@ -3273,8 +3493,62 @@ + int_error(NO_CARET,"Plot failed!"); + } + free(fullname); +- while (fgets(buf, sizeof(buf), prologue_fd)) +- fputs(buf, gppsfile); ++ return prologue_fd; ++} ++ ++static void ++PS_dump_prologue_file(char *name) ++{ ++ char buf[256]; ++ FILE *prologue_fd = PS_open_prologue_file(name); ++ ++ if (prologue_fd) { ++ while (fgets(buf, sizeof(buf), prologue_fd)) ++ fputs(buf, gppsfile); ++ fclose(prologue_fd); ++ } ++} ++ ++static void ++PS_load_glyphlist() ++{ ++ char buf[256]; ++ char *next = NULL; ++ unsigned int code; ++ int len; ++ char glyph_name[32]; ++ FILE *prologue_fd = PS_open_prologue_file("aglfn.txt"); ++ ++ if (!prologue_fd) ++ return; ++ ++ while (fgets(buf, sizeof(buf), prologue_fd)) { ++ if (*buf == '#' || *buf == '\n') ++ continue; ++ code = strtol(buf,&next,16); ++ ++ /* User control over whether Adobe glyph names are used for unicode */ ++ /* entries above 0x0100. I.e. when we see a UTF-8 alpha, do we write */ ++ /* /alpha rather than /uni03B1? Some fonts want one or the other. */ ++ /* This is controlled by 'set term post adobeglyphnames'. */ ++ if (code >= 0x0100 && !ps_params->adobeglyphnames) ++ continue; ++ ++ next++; ++ len = strchr(next,';') - next; ++ strncpy(glyph_name, next, len); ++ glyph_name[len] = '\0'; ++ FPRINTF((stderr, "%04X %s\n", code, glyph_name)); ++ if (aglist_size + sizeof(ps_glyph) > aglist_alloc) { ++ aglist_alloc += 2048; ++ aglist = gp_realloc(aglist, aglist_alloc, "aglist"); ++ } ++ aglist[psglyphs].unicode = code; ++ aglist[psglyphs].glyphname = gp_strdup(glyph_name); ++ aglist_size += sizeof(ps_glyph); ++ psglyphs++; ++ } ++ + fclose(prologue_fd); + } + +@@ -3295,6 +3569,32 @@ + + } + ++TERM_PUBLIC void ++PS_layer(t_termlayer syncpoint) ++{ ++ static int plotno = 0; ++ ++ /* We must ignore all syncpoints that we don't recognize */ ++ switch (syncpoint) { ++ ++ default: ++ break; ++ ++ case TERM_LAYER_BEFORE_PLOT: ++ fprintf(gppsfile, "%% Begin plot #%d\n", ++plotno); ++ break; ++ ++ case TERM_LAYER_AFTER_PLOT: ++ fprintf(gppsfile, "%% End plot #%d\n", plotno); ++ break; ++ ++ case TERM_LAYER_RESET: ++ plotno = 0; ++ break; ++ ++ } ++} ++ + #endif /* TERM_BODY */ + + #ifdef TERM_TABLE +@@ -3307,7 +3607,7 @@ + PS_text, null_scale, PS_graphics, PS_move, PS_vector, + PS_linetype, PS_put_text, PS_text_angle, + PS_justify_text, PS_point, PS_arrow, PS_set_font, PS_pointsize, +- TERM_BINARY|TERM_IS_POSTSCRIPT|TERM_CAN_CLIP /*flags*/, ++ TERM_BINARY|TERM_IS_POSTSCRIPT|TERM_CAN_CLIP|TERM_CAN_DASH /*flags*/, + 0 /*suspend*/, 0 /*resume*/, PS_fillbox, PS_linewidth + #ifdef USE_MOUSE + , 0, 0, 0, 0, 0 /* no mouse support for postscript */ +@@ -3320,8 +3620,9 @@ + , PS_image + #endif + , ENHPS_OPEN, ENHPS_FLUSH, ENHPS_WRITEC +- , 0 /* layer control */ ++ , PS_layer /* used only to insert comments */ + , PS_path ++ , PS_SC /* terminal to pixel coord scale factor */ + TERM_TABLE_END(post_driver) + + #undef LAST_TERM +@@ -3432,7 +3733,7 @@ + " but transfers the texts to LaTeX instead of including in the PostScript", + " code. Thus, many options are the same as in the `postscript terminal`.", + "", +-" From version 4.0 to 4.2, some changes have been invoked into the default ", ++" From version 4.0 to 4.1, some changes have been invoked into the default ", + " appearance of the epslatex terminal to reach better consistency with the", + " postscript terminal: The plot size has been changed from 5 x 3 inches to", + " 5 x 3.5 inches; the character width is now estimated to be 60% of the font", +@@ -3625,7 +3926,7 @@ + " \\special{psfile=...} command. Remember to close the `output file` before", + " next plot unless in `multiplot` mode.", + "", +-" Gnuplot versions prior version 4.2 have generated plots of the size", ++" Gnuplot versions prior version 4.1 have generated plots of the size", + " 5 x 3 inches using the ps(la)tex terminal while the current version generates", + " 5 x 3.5 inches to be consistent with the postscript eps terminal. In", + " addition, the character width is now estimated to be 60% of the font size", +@@ -3678,7 +3979,7 @@ + " {enhanced | noenhanced}", + " {defaultplex | simplex | duplex}", + " {fontfile [add | delete] \"\"", +-" | nofontfiles}", ++" | nofontfiles} {{no}adobeglyphnames}", + PS_COMMON_OPTS1 + PS_COMMON_OPTS2 + PS_COMMON_PROLOG_INFO +@@ -3748,112 +4049,6 @@ + " A PostScript file is editable, so once `gnuplot` has created one, you are", + " free to modify it to your heart's desire. See the `editing postscript`", + " section for some hints.", +-"2 enhanced postscript", +-"?commands set terminal postscript enhanced", +-"?set terminal postscript enhanced", +-"?set term postscript enhanced", +-"?terminal postscript enhanced", +-"?term postscript enhanced", +-"?enhanced_postscript", +-"?enhanced postscript", +-"?Enhanced postscript", +-"?enhanced text", +-"?Enhanced text", +-"?enhanced", +-" Several terminal types support an enhanced text mode in which ", +-" additional formatting information is embedded in the text string.", +-"", +-"@start table - first is interactive cleartext form", +-" Control Examples Explanation", +-" ^ a^x superscript", +-" _ a_x subscript", +-" @ @x or a@^b_c phantom box (occupies no width)", +-" & &{space} inserts space of specified length", +-" ~ ~a{.8-} overprints '-' on 'a', raised by .8", +-" times the current fontsize", +-"#\\begin{tabular}{|ccl|} \\hline", +-"#\\multicolumn{3}{|c|}{Enhanced Text Control Codes} \\\\ \\hline", +-"#Control & Examples & Explanation \\\\ \\hline", +-"#\\verb~^~ & \\verb~a^x~ & superscript\\\\", +-"#\\verb~_~ & \\verb~a_x~ & subscript\\\\", +-"#\\verb~@~ & \\verb~@x or a@^b_c~ & phantom box (occupies no width)\\\\", +-"#\\verb~&~ & \\verb~&{space}~ & inserts space of specified length\\\\", +-"#\\verb|~| & \\verb|~a{.8-}| & overprints '-' on 'a', raised by .8\\\\", +-"#\\verb~ ~ & \\verb~ ~ & times the current fontsize\\\\", +-"%c c l .", +-"%.TE", /* ugly - doc2ms uses @ for column separator, but here we */ +-"%.TS", /* need @ in table, so end and restart the table ! */ +-"%center box tab ($) ;", +-"%c c l .", +-"%Control$Examples$Explanation", +-"%_", +-"%^$a^x$superscript", +-"%\\&_$a\\&_x$subscript", +-"% @ $ @x or a\\&@^b\\&_c$phantom box (occupies no width)", +-"% & $ &{space}$inserts space of specified length", +-"% ~ $ ~a{.8-}$overprints '-' on 'a', raised by .8", +-"% $ $times the current fontsize", +-"@end table", +-"", +-" Braces can be used to place multiple-character text where a single character", +-" is expected (e.g., 2^{10}). To change the font and/or size, use the full", +-" form: {/[fontname][=fontsize | *fontscale] text}. Thus {/Symbol=20 G} is a", +-" 20-point GAMMA and {/*0.75 K} is a K at three-quarters of whatever fontsize", +-" is currently in effect. (The '/' character MUST be the first character after", +-" the '{'.)", +-"", +-" If the encoding vector has been changed by `set encoding`, the default", +-" encoding vector can be used instead by following the slash with a dash. This", +-" is unnecessary if you use the Symbol font, however---since /Symbol uses its", +-" own encoding vector, `gnuplot` will not apply any other encoding vector to", +-" it.", +-"", +-" The phantom box is useful for a@^b_c to align superscripts and subscripts", +-" but does not work well for overwriting an accent on a letter. (To do the", +-" latter, it is much better to use 'set encoding iso_8859_1' to change to the", +-" ISO Latin-1 encoding vector, which contains a large variety of letters with", +-" accents or other diacritical marks.) Since the box is non-spacing, it is", +-" sensible to put the shorter of the subscript or superscript in the box (that", +-" is, after the @).", +-"", +-" Space equal in length to a string can be inserted using the '&' character.", +-" Thus", +-" 'abc&{def}ghi'", +-" would produce", +-" 'abc ghi'.", +-"", +-" The '~' character causes the next character or bracketed text to be", +-" overprinted by the following character or bracketed text. The second text", +-" will be horizontally centered on the first. Thus '~a/' will result in an 'a'", +-" with a slash through it. You can also shift the second text vertically by", +-" preceding the second text with a number, which will define the fraction of the", +-" current fontsize by which the text will be raised or lowered. In this case", +-" the number and text must be enclosed in brackets because more than one", +-" character is necessary. If the overprinted text begins with a number, put a", +-" space between the vertical offset and the text ('~{abc}{.5 000}'); otherwise", +-" no space is needed ('~{abc}{.5---}'). You can change the font for one or", +-" both strings ('~a{.5 /*.2 o}'---an 'a' with a one-fifth-size 'o' on top---and", +-" the space between the number and the slash is necessary), but you can't", +-" change it after the beginning of the string. Neither can you use any other", +-" special syntax within either string. You can, of course, use control", +-" characters by escaping them (see below), such as '~a{\\^}'", +-"", +-" You can access special symbols numerically by specifying \\character-code (in", +-" octal), e.g., {/Symbol \\245} is the symbol for infinity.", +-"", +-" You can escape control characters using \\, e.g., \\\\, \\{, and so on.", +-"", +-" But be aware that strings in double-quotes are parsed differently than those", +-" enclosed in single-quotes. The major difference is that backslashes may need", +-" to be doubled when in double-quoted strings.", +-"", +-" Examples (these are hard to describe in words---try them!):", +-" set xlabel 'Time (10^6 {/Symbol m}s)'", +-" set title '{/Symbol=18 \\362@_{/=9.6 0}^{/=12 x}} \\", +-" {/Helvetica e^{-{/Symbol m}^2/2} d}{/Symbol m}'", +-"", +-" The file \"ps_guide.ps\" in the /docs/psdoc subdirectory of the `gnuplot` source", +-" distribution contains more examples of the enhanced syntax.", + "2 editing postscript", + "?commands set terminal postscript editing", + "?set terminal postscript editing", +@@ -4009,6 +4204,26 @@ + " controlled at the time gnuplot is built. However, you can control this", + " either by defining an environment variable GNUPLOT_PS_DIR or by using the", + " gnuplot command `set loadpath`. See `set loadpath`.", ++"2 postscript adobeglyphnames", ++"?commands set terminal postscript adobeglyphnames", ++"?set terminal postscript adobeglyphnames", ++"?terminal postscript adobeglyphnames", ++"?postscript adobeglyphnames", ++"?adobeglyphnames", ++"=UTF-8", ++" This setting is only relevant to PostScript output with UTF-8 encoding.", ++" It controls the names used to describe characters with Unicode entry points", ++" higher than 0x00FF. That is, all characters outside of the Latin1 set.", ++" In general unicode characters do not have a unique name; they have only a", ++" unicode identification code. However, Adobe have a recommended scheme for", ++" assigning names to certain ranges of characters (extended Latin, Greek, etc).", ++" Some fonts use this scheme, others do not. By default, gnuplot will use", ++" the Adobe glyph names. E.g. the lower case Greek letter alpha will be called", ++" /alpha. If you specific `noadobeglyphnames` then instead gnuplot will use", ++" /uni03B1 to describe this character. If you get this setting wrong, the", ++" character may not be found even if it is present in the font.", ++" It is probably always correct to use the default for Adobe fonts, but for", ++" other fonts you may have to try both settings. See also `fontfile`.", + "", + "" + END_HELP(post) +diff -U 3 -H -d -r -N -- term/pslatex.trm term/pslatex.trm +--- term/pslatex.trm 2008-02-23 10:10:23.000000000 +0100 ++++ term/pslatex.trm 2009-05-09 13:53:00.000000000 +0200 +@@ -1,5 +1,5 @@ + /* Hello, Emacs, this is -*-C-*- +- * $Id: pslatex.trm,v 1.69.2.1 2008/02/22 20:34:41 sfeam Exp $ ++ * $Id: pslatex.trm,v 1.72 2008/02/22 20:02:26 sfeam Exp $ + */ + + /* GNUPLOT - pslatex.trm */ +@@ -441,7 +441,10 @@ + case S_ENC_ISO8859_2: + inputenc = "latin2"; + break; +- case S_ENC_ISO8859_15: ++ case S_ENC_ISO8859_9: /* ISO8859-9 is Latin5 */ ++ inputenc = "latin5"; ++ break; ++ case S_ENC_ISO8859_15: /* ISO8859-15 is Latin9 */ + inputenc = "latin9"; + break; + case S_ENC_CP437: diff --git a/gnuplot-4.2.3.dif b/gnuplot-4.2.5.dif similarity index 79% rename from gnuplot-4.2.3.dif rename to gnuplot-4.2.5.dif index 2bbad75..5041e64 100644 --- a/gnuplot-4.2.3.dif +++ b/gnuplot-4.2.5.dif @@ -1,10 +1,10 @@ ---- .pkgextract -+++ .pkgextract 2004-04-27 18:48:07.000000000 +0200 +--- .pkgextract 1970-01-01 01:00:00.000000000 +0100 ++++ .pkgextract 2009-05-09 13:32:24.000000000 +0200 @@ -0,0 +1 @@ +bzcat ../gnuplot-fr.doc.bz2 > docs/gnuplot-fr.doc ---- configure.in -+++ configure.in 2004-04-27 18:48:07.000000000 +0200 -@@ -230,7 +230,7 @@ if test "$with_linux_vga" = yes; then +--- configure.in 2009-03-15 04:39:15.000000000 +0100 ++++ configure.in 2009-05-09 13:32:24.000000000 +0200 +@@ -230,7 +230,7 @@ [AC_DEFINE(LINUXVGA,1, [ Define if this is a Linux system with SuperVGA library. ]) LINUXSUID='chown root $(bindir)/gnuplot; chmod u+s $(bindir)/gnuplot' @@ -13,9 +13,9 @@ with_linux_vga=no) fi ---- demo/poldat.dem -+++ demo/poldat.dem 2004-04-27 18:48:07.000000000 +0200 -@@ -11,7 +11,7 @@ unset grid +--- demo/poldat.dem 2003-10-28 06:35:54.000000000 +0100 ++++ demo/poldat.dem 2009-05-09 13:32:24.000000000 +0200 +@@ -11,7 +11,7 @@ unset polar set title "Primitive Smith Chart" unset key @@ -24,8 +24,8 @@ set para set rrange [-0 : 10] set trange [-pi : pi] ---- demo/simple.dem -+++ demo/simple.dem 2004-04-27 18:48:07.000000000 +0200 +--- demo/simple.dem 2006-06-30 04:17:22.000000000 +0200 ++++ demo/simple.dem 2009-05-09 13:32:24.000000000 +0200 @@ -7,12 +7,11 @@ # gnuplot> load 'simple.dem' # @@ -40,9 +40,9 @@ plot [-pi/2:pi] cos(x),-(sin(x) > sin(x+1) ? sin(x) : sin(x+1)) pause -1 "Hit return to continue" ---- demo/vector.dem -+++ demo/vector.dem 2007-04-05 17:36:08.325186000 +0200 -@@ -62,19 +62,19 @@ splot vtot(x,y) w l +--- demo/vector.dem 2006-07-12 19:21:14.000000000 +0200 ++++ demo/vector.dem 2009-05-09 13:32:24.000000000 +0200 +@@ -62,19 +62,19 @@ print "Now create a file with equipotential lines" pause -1 "Hit return to continue" @@ -65,7 +65,7 @@ splot vtot(x,y) w l unset table pause 0 -@@ -84,8 +84,8 @@ set xr [xmin:xmax] +@@ -84,8 +84,8 @@ set yr [ymin:ymax] set isosam 31,31 set key under Left reverse @@ -76,8 +76,8 @@ pause -1 "Hit return to continue" reset ---- docs/Makefile.in -+++ docs/Makefile.in 2007-05-30 15:40:43.577475000 +0200 +--- docs/Makefile.in 2006-08-09 23:09:48.000000000 +0200 ++++ docs/Makefile.in 2009-05-09 13:32:24.000000000 +0200 @@ -37,7 +37,7 @@ # @@ -87,7 +87,7 @@ # this tells GNU make not to export variables into the environment # But other makes dont understand its significance, so it must -@@ -239,6 +239,8 @@ html: htmldocs/gnuplot.html +@@ -239,6 +239,8 @@ # emacs around to do lisp pre-processing htmldocs/gnuplot.html: $(srcdir)/gnuplot.tex mkdir -p htmldocs @@ -96,7 +96,7 @@ latex2html -dir htmldocs -local_icons gnuplot ### PDF documentation -@@ -321,12 +323,16 @@ doc2hlp: doc2hlp.o termdoc.o +@@ -321,12 +323,16 @@ $(LINK) doc2hlp.o termdoc.o $(LIBS) ### gnuplot interactive help format @@ -114,7 +114,7 @@ doc2gih: doc2gih.o termdoc.o $(LINK) doc2gih.o termdoc.o $(LIBS) -@@ -415,6 +421,7 @@ install: install-gih install-info +@@ -415,6 +421,7 @@ install-gih: gnuplot.gih $(top_srcdir)/mkinstalldirs $(DESTDIR)$(GIHDIR) $(INSTALL_DATA) gnuplot.gih $(DESTDIR)$(GIHDIR)/gnuplot.gih @@ -122,7 +122,7 @@ install-info: gnuplot.info $(top_srcdir)/mkinstalldirs $(DESTDIR)$(infodir) -@@ -434,6 +441,7 @@ uninstall: uninstall-gih uninstall-info +@@ -434,6 +441,7 @@ uninstall-gih: rm -f $(DESTDIR)$(GIHDIR)/gnuplot.gih @@ -130,9 +130,9 @@ uninstall-info: $(PRE_UNINSTALL) ---- docs/gnuplot-fr.doc -+++ docs/gnuplot-fr.doc 2004-04-27 18:48:41.000000000 +0200 -@@ -436,8 +436,8 @@ C +--- docs/gnuplot-fr.doc 2009-05-09 11:53:20.000000000 +0200 ++++ docs/gnuplot-fr.doc 2009-05-09 13:32:24.000000000 +0200 +@@ -436,8 +436,8 @@ #Home & same as \verb~^A~. \\ #Ctrl Home & same as \verb~^E~. \\ #Esc & same as \verb~^U~. \\ @@ -143,9 +143,9 @@ %c l . %Touche fléchée@Fonction %_ ---- src/command.c -+++ src/command.c 2004-04-27 18:48:07.000000000 +0200 -@@ -1145,14 +1145,24 @@ pause_command() +--- src/command.c 2008-12-15 05:18:36.000000000 +0100 ++++ src/command.c 2009-05-09 13:32:24.000000000 +0200 +@@ -1177,14 +1177,24 @@ (void) fgets(buf, strlen(buf), stdin); } } else if (strcmp(term->name, "atari") == 0) { @@ -172,7 +172,7 @@ if (line) free(line); } else -@@ -2660,6 +2670,13 @@ read_line(const char *prompt) +@@ -2696,6 +2706,13 @@ # endif /* no READLINE */ do { @@ -184,11 +184,11 @@ +# endif +# endif /* grab some input */ - # if defined(READLINE) || defined(HAVE_LIBREADLINE) + # if defined(READLINE) || defined(HAVE_LIBREADLINE) || defined(HAVE_LIBEDITLINE) if (((interactive) ---- src/gplt_x11.c -+++ src/gplt_x11.c 2008-03-26 12:52:10.843886602 +0100 -@@ -2273,8 +2273,11 @@ exec_cmd(plot_struct *plot, char *comman +--- src/gplt_x11.c 2009-01-14 19:42:02.000000000 +0100 ++++ src/gplt_x11.c 2009-05-09 13:32:24.000000000 +0200 +@@ -2240,8 +2240,11 @@ } } /* X11_justify_text(mode) - set text justification mode */ @@ -202,7 +202,7 @@ else if (*buffer == 'A') sscanf(buffer + 1, "%lf", &plot->angle); -@@ -4787,7 +4790,9 @@ process_event(XEvent *event) +@@ -4710,7 +4713,9 @@ */ #define On(v) ( !strncasecmp(v, "on", 2) || !strncasecmp(v, "true", 4) ) @@ -212,9 +212,9 @@ #ifndef MAXHOSTNAMELEN #define MAXHOSTNAMELEN 64 #endif ---- src/plot.c -+++ src/plot.c 2004-04-27 18:51:49.000000000 +0200 -@@ -228,6 +228,7 @@ static int asked_privi = 0; +--- src/plot.c 2008-12-15 05:18:36.000000000 +0100 ++++ src/plot.c 2009-05-09 13:32:24.000000000 +0200 +@@ -234,6 +234,7 @@ void drop_privilege() { @@ -222,7 +222,7 @@ if (!asked_privi) { euid = geteuid(); egid = getegid(); -@@ -241,11 +242,13 @@ drop_privilege() +@@ -247,11 +248,13 @@ if (seteuid(ruid) == -1) (void) fprintf(stderr, "seteuid(%d): %s\n", (int) ruid, strerror(errno)); @@ -236,7 +236,7 @@ if (!asked_privi) { euid = geteuid(); egid = getegid(); -@@ -259,6 +262,7 @@ take_privilege() +@@ -265,6 +268,7 @@ if (seteuid(euid) == -1) (void) fprintf(stderr, "seteuid(%d): %s\n", (int) euid, strerror(errno)); @@ -244,7 +244,7 @@ } #endif /* LINUXVGA */ -@@ -284,8 +288,8 @@ main(int argc, char **argv) +@@ -290,8 +294,8 @@ int i; #ifdef LINUXVGA @@ -254,10 +254,11 @@ #endif /* make sure that we really have revoked root access, this might happen if gnuplot is compiled without vga support but is installed suid by mistake */ -@@ -348,6 +352,22 @@ main(int argc, char **argv) - unsigned int status[2] = { 1, 0 }; +@@ -357,6 +361,23 @@ + #if defined(HAVE_LIBEDITLINE) + rl_getc_function = getc_wrapper; #endif - ++ +#ifdef __linux__ + if (!getenv("GNUHELP")) { + const char* msg = setlocale(LC_MESSAGES, NULL); @@ -274,11 +275,11 @@ + } +#endif + - #ifdef HAVE_LIBREADLINE + #if defined(HAVE_LIBREADLINE) || defined(HAVE_LIBEDITLINE) using_history(); /* T.Walter 1999-06-24: 'rl_readline_name' must be this fix name. ---- src/term.h -+++ src/term.h 2004-04-27 18:48:07.000000000 +0200 +--- src/term.h 2006-04-29 07:30:07.000000000 +0200 ++++ src/term.h 2009-05-09 13:32:24.000000000 +0200 @@ -321,9 +321,9 @@ #include "emf.trm" @@ -309,9 +310,9 @@ /* wire printers */ /* Epson LX-800, Star NL-10, NX-1000 and lots of others */ ---- src/time.c -+++ src/time.c 2004-04-27 18:48:07.000000000 +0200 -@@ -291,11 +291,12 @@ gstrptime(char *s, char *fmt, struct tm +--- src/time.c 2008-09-02 23:12:59.000000000 +0200 ++++ src/time.c 2009-05-09 13:32:24.000000000 +0200 +@@ -291,11 +291,12 @@ case 's': #if 0 /* HBB 20040213: comment this out, but keep it around for now */ { @@ -328,9 +329,9 @@ tmwhen->tm_year += 1900; *tm = *tmwhen; break; ---- term/linux.trm -+++ term/linux.trm 2007-04-05 17:38:15.433841000 +0200 -@@ -80,7 +80,7 @@ TERM_PUBLIC void LINUX_linetype __PROTO( +--- term/linux.trm 2006-07-21 04:35:47.000000000 +0200 ++++ term/linux.trm 2009-05-09 13:32:24.000000000 +0200 +@@ -80,7 +80,7 @@ TERM_PUBLIC void LINUX_move __PROTO((unsigned int x, unsigned int y)); TERM_PUBLIC void LINUX_vector __PROTO((unsigned int x, unsigned int y)); TERM_PUBLIC int LINUX_text_angle __PROTO((int ang)); @@ -339,7 +340,7 @@ TERM_PUBLIC void LINUX_suspend __PROTO((void)); TERM_PUBLIC void LINUX_resume __PROTO((void)); -@@ -293,7 +293,7 @@ LINUX_putc( +@@ -293,7 +293,7 @@ } TERM_PUBLIC void diff --git a/gnuplot-4.2.5.tar.bz2 b/gnuplot-4.2.5.tar.bz2 new file mode 100644 index 0000000..cf48805 --- /dev/null +++ b/gnuplot-4.2.5.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36fbbf48f6561a087c664272b991268bb299ac926b5fc72e5cd2bf67347b6a15 +size 2347067 diff --git a/gnuplot.changes b/gnuplot.changes index 71c1209..427357d 100644 --- a/gnuplot.changes +++ b/gnuplot.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Tue May 26 11:19:52 CEST 2009 - werner@suse.de + +- Update changes file + +------------------------------------------------------------------- +Sat May 9 12:00:00 CEST 2009 - nico.laus.2001@gmx.de + +- update to gnuplot 4.2.5 +- put docs into gnuplot-doc sub-package + ------------------------------------------------------------------- Thu Jan 15 13:38:04 CET 2009 - sbrabec@suse.cz diff --git a/gnuplot.spec b/gnuplot.spec index aaf1928..3698adb 100644 --- a/gnuplot.spec +++ b/gnuplot.spec @@ -1,5 +1,5 @@ # -# spec file for package gnuplot (Version 4.2.3) +# spec file for package gnuplot (Version 4.2.5) # # Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -19,24 +19,30 @@ Name: gnuplot -BuildRequires: cairo-devel freetype2-devel gcc-c++ gd-devel gtk2-devel latex2html libjpeg-devel libpng-devel pango-devel plotutils-devel readline-devel texlive-latex wxGTK-devel xorg-x11-devel +BuildRequires: cairo-devel freetype2-devel gcc-c++ gd-devel gtk2-devel latex2html libjpeg-devel libpng-devel pango-devel readline-devel texlive-latex wxGTK-devel xorg-x11-devel +%if 0%{?suse_version} > 1110 +BuildRequires: plotutils-devel +%else +BuildRequires: plotutils +%endif Url: http://www.gnuplot.info/ License: BSD 3-Clause Group: Productivity/Graphics/Visualization/Graph AutoReqProv: on PreReq: %install_info_prereq -Version: 4.2.3 -Release: 78 -Summary: Function Plotting Utility -Source0: gnuplot-4.2.3.tar.bz2 +Version: 4.2.5 +Release: 1 +Summary: GNUplot a Function Plotting Utility +Source0: gnuplot-%{version}.tar.bz2 Source2: gnuplot-fr.doc.bz2 Source3: README.whynot -Patch0: gnuplot-4.2.3.dif +Patch0: gnuplot-4.2.5.dif Patch1: gnuplot-4.2.0-x11ovf.dif Patch2: gnuplot-4.2.2-fonts.dif Patch3: gnuplot-4.2.0-wxt.dif -Patch4: gnuplot-4.2.0-demo.dif -Patch5: gnuplot-4.2.3-utf8.dif +Patch4: gnuplot-4.2.5-demo.dif +Patch5: gnuplot-4.2.5-utf8.dif +Patch6: gnuplot-4.2.5-fix-format-errors.dif BuildRoot: %{_tmppath}/%{name}-%{version}-build %{expand: %%global _exec_prefix %(type -p pkg-config &>/dev/null && pkg-config --variable prefix x11 || echo /usr/X11R6)} %if "%_exec_prefix" == "/usr/X11R6" @@ -68,6 +74,31 @@ Authors: Mailingliste Mailingliste +%package doc +License: BSD 3-Clause +Summary: Documentation of GNUplot +Group: Productivity/Graphics/Visualization/Graph +Requires: %{name} +PreReq: %install_info_prereq + +%description doc +GNUplot documentation files including the man and info pages. GNUplot +is a command line driven interactive function plotting utility. +GNUplot supports many different types of terminals, plotters, and +printers (including many color devices and pseudodevices like LaTeX) +and can easily be extended to include new devices. + + + +Authors: +-------- + Mailingliste + Mailingliste + Mailingliste + Mailingliste + +%{name} documentation files including the man and info pages + %prep %setup -q -n gnuplot-%{version} bunzip2 -dc %{_sourcedir}/gnuplot-fr.doc.bz2 > docs/gnuplot-fr.doc @@ -78,6 +109,7 @@ test $? -eq 0 || exit 1 %patch -P 2 -p 0 %patch -P 4 -p 0 %patch -P 5 -p 0 +%patch -P 6 -p 0 %build SECSVGA="-DSVGA_IS_SECURE=1" @@ -117,15 +149,15 @@ test $? -eq 0 || exit 1 --without-row-help \ --with-kpsexpand \ --with-plot=%{_libdir} - make -f Makefile + make %{?jobs:-j%jobs} pushd docs/ - make -f Makefile srcdir=. clean all html pdf gpcard.ps + make srcdir=. clean all html pdf gpcard.ps pushd psdoc/ - make -f Makefile srcdir=. clean pdf + make srcdir=. clean pdf popd popd pushd tutorial/ - make -f Makefile srcdir=. clean pdf + make srcdir=. clean pdf popd %install @@ -167,24 +199,32 @@ test $? -eq 0 || exit 1 %clean rm -rf %{buildroot} -%post +%post doc %install_info --info-dir=.%{_infodir} .%{_infodir}/%{name}.info.gz -%postun +%postun doc %install_info_delete --info-dir=.%{_infodir} .%{_infodir}/%{name}.info.gz %files %defattr(-,root,root) -%doc %{_docdir}/gnuplot/ %{_bindir}/gnuplot %{_libdir}/gnuplot -%doc %{_infodir}/%{name}.info.gz -%doc %{_mandir}/man1/gnuplot.1.gz %{_datadir}/gnuplot %{_datadir}/texmf/tex/latex/gnuplot/ %{_appdef}/Gnuplot +%files doc +%defattr(-,root,root,-) +%doc %{_docdir}/gnuplot/ +%doc %{_infodir}/%{name}.info.gz +%doc %{_mandir}/man1/gnuplot.1.gz + %changelog +* Tue May 26 2009 werner@suse.de +- Update changes file +* Sat May 09 2009 nico.laus.2001@gmx.de +- update to gnuplot 4.2.5 +- put docs into gnuplot-doc sub-package * Thu Jan 15 2009 sbrabec@suse.cz - Changed BuildRequires: plotutils -> plotutils-devel. * Mon Mar 31 2008 werner@suse.de @@ -430,7 +470,7 @@ test $? -eq 0 || exit 1 * Some bug fixes * Thu Oct 23 1997 werner@suse.de - New version: 3.5beta6.336 -* Mon Feb 03 1997 werner@suse.de +* Tue Feb 04 1997 werner@suse.de - Update auf Version 3.5-beta-3.6pl319 - Diese Version hat splines und bezier zum Fit für von Messdaten.