summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog35
-rw-r--r--font/devpdf/Foundry.in2
-rw-r--r--font/devpdf/util/BuildFoundries.pl1
-rw-r--r--src/devices/gropdf/gropdf.man31
-rw-r--r--src/devices/gropdf/gropdf.pl29
-rw-r--r--tmac/pdf.tmac32
6 files changed, 120 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 691c2164..dfc574a3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,36 @@
+2013-01-14 Deri James <deri@chuzzlewit.myzen.co.uk>
+
+ * src/devices/gropdf/gropdf.pl (do_x, do_p, do_s, Set_LWidth): The
+ grops driver defaults to round linecaps and linejoins, gropdf
+ incorrectly used butt caps and miter joins.
+
+ (Since the MOM package expects to use butt caps and miter joins
+ (emitting the necessary postscript code to change the caps and
+ joins), gropdf now parses the same postscript commands.)
+
+ * src/devices/gropdf/gropdf.man: Document the handling of linecaps
+ and linejoins.
+
+ * tmac/pdf.tmac (pdfbookmark): Fix bug where the current
+ PDFOUTLINE.FOLDLEVEL may not be honoured if warnings of the type
+
+ macro warning: adjusted level n bookmark; should be <= n
+
+ Added copyright and mention debt owed to Keith Marshall for original
+ `pdfmark.tmac', upon which `pdf.tmac' is largely based.
+
+ * font/devpdf/Foundry.in, font/devpdf/util/BuildFoundries.pl
+ (LocateFile): The font for EURO had the wrong entry in the
+ `download' file (it pointed to The font in the build directory,
+ which is wrong). It has always been permissable to include a path
+ along with the font name in the Foundry file, but until now the font
+ had to exist to be valid. It is now permitted to start the path
+ with an asterisk which tells BuildFoundry to use the path/filename
+ in the download file without checking if the font exists. This
+ allows the font to be found in `../devps' even though it is not
+ there during the build (if source and build are different), but will
+ be there after the install.
+
2013-01-13 Werner LEMBERG <wl@gnu.org>
[eqn] Fix display of matrices in nroff output.
@@ -939,7 +972,7 @@ Version 1.22 released
* doc/webpage.ms: Fix rendering of title image.
-Copyright 2011-2012
+Copyright 2011-2013
Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
diff --git a/font/devpdf/Foundry.in b/font/devpdf/Foundry.in
index 86d6432c..a6e968f7 100644
--- a/font/devpdf/Foundry.in
+++ b/font/devpdf/Foundry.in
@@ -37,7 +37,7 @@ CB|Y||||NimbusMonL-Bold!n022004l.pfb
CBI|Y||||NimbusMonL-BoldObli!n022024l.pfb
CI|Y||||NimbusMonL-ReguObli!n022023l.pfb
CR|Y||||NimbusMonL-Regu!n022003l.pfb
-EURO|N||||freeeuro.pfa
+EURO|N||||*../devps/freeeuro.pfa
HB|Y||||NimbusSanL-Bold!n019004l.pfb
HBI|Y||||NimbusSanL-BoldItal!n019024l.pfb
HI|Y||||NimbusSanL-ReguItal!n019023l.pfb
diff --git a/font/devpdf/util/BuildFoundries.pl b/font/devpdf/util/BuildFoundries.pl
index 003fdb9b..39f2f0d2 100644
--- a/font/devpdf/util/BuildFoundries.pl
+++ b/font/devpdf/util/BuildFoundries.pl
@@ -219,6 +219,7 @@ sub LocateFile
my $path=shift;
my $files=shift;
my $tryafm=shift;
+ return(substr($files,1)) if substr($files,0,1) eq '*';
foreach my $file (split('!',$files))
{
diff --git a/src/devices/gropdf/gropdf.man b/src/devices/gropdf/gropdf.man
index d7953e09..8f86ac48 100644
--- a/src/devices/gropdf/gropdf.man
+++ b/src/devices/gropdf/gropdf.man
@@ -1,5 +1,5 @@
.ig
-Copyright (C) 2011-2012
+Copyright (C) 2011-2013
Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
@@ -620,7 +620,7 @@ understands some of the X\~commands produced using the
.B \[rs]X
escape sequences supported by
.B grops.
-Specifically it supports:-
+Specifically, the following is supported.
.
.TP
.B "\[rs]X'ps: invis'"
@@ -647,7 +647,32 @@ Again used by
to restore after rotation.
.
.TP
-.BI "\[rs]X'ps: ... pdfmark'"
+.BI "\[rs]X'ps: exec " "n " "setlinejoin'"
+where
+.I n
+can be one of the following values.
+.IP
+0 = Miter join
+.br
+1 = Round join
+.br
+2 = Bevel join
+.
+.TP
+.BI "\[rs]X'ps: exec " "n " "setlinecap'"
+where
+.I n
+can be one of the following values.
+.IP
+0 = Butt cap
+.br
+1 = Round cap, and
+.br
+2 = Projecting square cap
+.
+.LP
+.TP
+.B "\[rs]X'ps: ... pdfmark'"
All the
.I pdfmark
macros installed by using
diff --git a/src/devices/gropdf/gropdf.pl b/src/devices/gropdf/gropdf.pl
index d338f200..9a8288c0 100644
--- a/src/devices/gropdf/gropdf.pl
+++ b/src/devices/gropdf/gropdf.pl
@@ -4,7 +4,7 @@
# Deri James : 4th May 2009
#
-# Copyright (C) 2011, 2012 Free Software Foundation, Inc.
+# Copyright (C) 2011-2013 Free Software Foundation, Inc.
# Written by Deri James <deri@chuzzlewit.demon.co.uk>
#
# This file is part of groff.
@@ -56,6 +56,8 @@ my $stream=''; # Current Text/Graphics stream
my $cftsz=10; # Current font sz
my $cft; # Current Font
my $lwidth=1; # current linewidth
+my $linecap=1;
+my $linejoin=1;
my $textcol=''; # Current groff text
my $fillcol=''; # Current groff fill
my $curfill=''; # Current PDF fill
@@ -693,6 +695,18 @@ sub do_x
$stream.="Q\n";
$InPicRotate=0;
}
+ elsif ($par=~m/exec (\d) setlinejoin/)
+ {
+ IsGraphic();
+ $linejoin=$1;
+ $stream.="$linejoin j\n";
+ }
+ elsif ($par=~m/exec (\d) setlinecap/)
+ {
+ IsGraphic();
+ $linecap=$1;
+ $stream.="$linecap J\n";
+ }
elsif ($par=~m/\[(.+) pdfmark/)
{
my $pdfmark=$1;
@@ -2311,7 +2325,7 @@ sub do_p
$objct+=1;
$cpage=$obj[$cpageno]->{DATA};
$pages->{'Count'}++;
- $stream="q 1 0 0 1 0 0 cm\n";
+ $stream="q 1 0 0 1 0 0 cm\n$linejoin J\n$linecap j\n";
$mode='g';
$curfill='';
# @mediabox=@defaultmb;
@@ -2420,6 +2434,7 @@ sub do_s
{
PutLine();
$cftsz=$par;
+ Set_LWidth() if $lwidth < 1;
# $stream.="/F$cft $cftsz Tf\n";
$fontchg=1;
$widtbl=CacheWid($cft);
@@ -2427,9 +2442,17 @@ sub do_s
else
{
$cftsz=$par;
+ Set_LWidth() if $lwidth < 1;
}
}
+sub Set_LWidth
+{
+ IsGraphic();
+ $stream.=((($desc{res}/(72*$desc{sizescale}))*$linewidth*$cftsz)/1000)." w\n";
+ return;
+}
+
sub do_m
{
# Groff uses /m[] for text & graphic stroke, and /M[] (DF?) for graphic fill.
@@ -2583,7 +2606,7 @@ sub do_D
}
elsif ($Dcmd eq 'p' or $Dcmd eq 'P')
{
- # B-Spline
+ # Polygon
my (@p)=split(' ',$par);
my ($nxpos,$nypos);
diff --git a/tmac/pdf.tmac b/tmac/pdf.tmac
index 68fa9e5a..04d1c52b 100644
--- a/tmac/pdf.tmac
+++ b/tmac/pdf.tmac
@@ -1,5 +1,32 @@
-.\" pdf.tmac
-.\"
+.ig
+
+pdf.tmac
+
+ Copyright (C) 2011-2013 Free Software Foundation, Inc.
+ Written by Deri James <deri@chuzzlewit.myzen.co.uk>
+
+This file is part of groff.
+
+groff is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+groff is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Author's Note
+=============
+
+Much of the code in this macro has come from the excellent original work by
+Keith Marshall (see attribution in the pdfmark.tmac file). I, however,
+am solely responsible for any bugs I may have introduced into this file.
+..
.mso ps.tmac
.
.de pdf:SS
@@ -196,6 +223,7 @@
. ie \\n[pdf:bm.abslev]>\\n[pdf:bm.nl] \{\
. pdf:warn adjusted level \\n[pdf:bm.abslev] bookmark; should be <= \\n[pdf:bm.nl]
. nr pdf:bm.abslev 0+\\n[pdf:bm.nl]
+. if \\n[pdf:bm.abslev]-1==\\n[PDFOUTLINE.FOLDLEVEL] .nr pdf:bm.lev \\n[pdf:bm.abslev]*-1
. \}
. el .nr pdf:bm.nl \\n[pdf:bm.abslev]
. if \\n[pdf:bm.lev]<0 .nr pdf:bm.abslev \\n[pdf:bm.abslev]*-1