summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlgs/Resource/Init
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlgs/Resource/Init')
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/FCOfontmap-PCLPS22
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_agl.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_btokn.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_cff.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_cidcm.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_ciddc.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_cidfm.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_cidfn.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_cidtt.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_cmap.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_cspace.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_dbt_e.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_diskn.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_dps1.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_dps2.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_dscp.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_epsf.ps76
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_fapi.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_fntem.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_fonts.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_frsd.ps24
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_icc.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_il1_e.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_img.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_init.ps15
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_lev2.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_ll3.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_mex_e.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_mgl_e.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_mro_e.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_pdf_e.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_pdfwr.ps15
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_res.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_resmp.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_setpd.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_statd.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_std_e.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_sym_e.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_trap.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_ttf.ps22
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_typ32.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_typ42.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_type1.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/gs_wan_e.ps2
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/pdf_base.ps60
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/pdf_draw.ps120
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/pdf_font.ps23
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/pdf_main.ps520
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/pdf_ops.ps101
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/pdf_rbld.ps31
-rw-r--r--Master/tlpkg/tlgs/Resource/Init/pdf_sec.ps34
51 files changed, 309 insertions, 810 deletions
diff --git a/Master/tlpkg/tlgs/Resource/Init/FCOfontmap-PCLPS2 b/Master/tlpkg/tlgs/Resource/Init/FCOfontmap-PCLPS2
index e51db629fcc..91bd8f7fa26 100644
--- a/Master/tlpkg/tlgs/Resource/Init/FCOfontmap-PCLPS2
+++ b/Master/tlpkg/tlgs/Resource/Init/FCOfontmap-PCLPS2
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_agl.ps b/Master/tlpkg/tlgs/Resource/Init/gs_agl.ps
index ce5ea1ce06a..9c1c52d2afb 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_agl.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_agl.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_btokn.ps b/Master/tlpkg/tlgs/Resource/Init/gs_btokn.ps
index 1f63fb5c4e0..410b8419154 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_btokn.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_btokn.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_cff.ps b/Master/tlpkg/tlgs/Resource/Init/gs_cff.ps
index 43cf7d0193f..6cfa1ec1323 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_cff.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_cff.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_cidcm.ps b/Master/tlpkg/tlgs/Resource/Init/gs_cidcm.ps
index 1ec03b3632a..503ec867fbf 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_cidcm.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_cidcm.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_ciddc.ps b/Master/tlpkg/tlgs/Resource/Init/gs_ciddc.ps
index 9e2ea1ead74..6cdba039084 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_ciddc.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_ciddc.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_cidfm.ps b/Master/tlpkg/tlgs/Resource/Init/gs_cidfm.ps
index 1a456ab1dfc..f22e45d6d63 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_cidfm.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_cidfm.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_cidfn.ps b/Master/tlpkg/tlgs/Resource/Init/gs_cidfn.ps
index 870a2e11c65..20af1c875df 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_cidfn.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_cidfn.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_cidtt.ps b/Master/tlpkg/tlgs/Resource/Init/gs_cidtt.ps
index b856ba65b26..e045cfddc61 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_cidtt.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_cidtt.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_cmap.ps b/Master/tlpkg/tlgs/Resource/Init/gs_cmap.ps
index 0c2e1421565..3252089ad07 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_cmap.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_cmap.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_cspace.ps b/Master/tlpkg/tlgs/Resource/Init/gs_cspace.ps
index c005cef4282..8aaf6b74b13 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_cspace.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_cspace.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_dbt_e.ps b/Master/tlpkg/tlgs/Resource/Init/gs_dbt_e.ps
index 89e24131bad..2aca0c68a39 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_dbt_e.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_dbt_e.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_diskn.ps b/Master/tlpkg/tlgs/Resource/Init/gs_diskn.ps
index 825ff8d959c..85ff07e3748 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_diskn.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_diskn.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_dps1.ps b/Master/tlpkg/tlgs/Resource/Init/gs_dps1.ps
index ba5b9b54e36..14cc5d6d849 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_dps1.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_dps1.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_dps2.ps b/Master/tlpkg/tlgs/Resource/Init/gs_dps2.ps
index 0320644667e..2dfaaa49865 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_dps2.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_dps2.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_dscp.ps b/Master/tlpkg/tlgs/Resource/Init/gs_dscp.ps
index 4ea3d4540f1..15764b1772a 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_dscp.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_dscp.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_epsf.ps b/Master/tlpkg/tlgs/Resource/Init/gs_epsf.ps
index 47b68bba9be..cf020751a08 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_epsf.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_epsf.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
@@ -29,7 +29,6 @@
% After %%HiResBoundingBox processed, state is 3 if OK or 4 if cropped.
% After %%EndComments processed, state is 5.
/EPSBoundingBoxState 5 def
-/EPSBoundingBoxString () def % set if either BoundingBox is seen (even if invalid)
/EPSBoundingBoxSetState {
//systemdict /EPSBoundingBoxState 3 -1 roll .forceput
} .bind executeonly odef % .forceput must be bound and hidden
@@ -61,10 +60,7 @@
/EPSBoundingBoxFitPage { % llx lly urx ury --
EPSDEBUG { (gs_epsf.ps: Rescaling EPS to fit page\n) print flush } if
clippath pathbbox newpath % ellx elly eurx eury pllx plly purx pury
- EPSDEBUG {
- (Page Coordinates: LLX: ) print 3 index =print (, LLY: ) print
- 2 index =print (, URX: ) print 1 index =print (, URY: ) print dup = flush
- } if
+
% Convert box corners to coordinates of the center and box sizes
2 { % loop doing the page coordinates, the the EPS bbox coordinates
3 -1 roll exch % ... llx urx lly ury
@@ -86,19 +82,7 @@
% Find orientation of the best fit. Square pages or files don't rotate.
2 copy sub % edx ecx edy ecy pdx pdy pdx-pdy
- EPSDEBUG {
- (pdx: ) print 2 index =print (, pdy: ) print 1 index =print
- (, pdx-pdy: ) print dup = flush
- } if
- 6 index 5 index sub
- EPSDEBUG {
- (edx: ) print 7 index =print (, edy: ) print 5 index =print
- (, edx-edy: ) print dup = flush
- } if
- mul % edx ecx edy ecy pdx pdy (pdx-pdy)*(edx-edy)
- EPSDEBUG {
- (product: ) print dup = flush
- } if
+ 6 index 5 index sub mul % edx ecx edy ecy pdx pdy (pdx-pdy)*(edx-edy)
0 lt {
90 rotate
exch
@@ -116,17 +100,15 @@
} bind executeonly odef
/EPSBoundingBoxProcess { % (llx lly urx ury) state --
- % The following 'lt' check prioritzies HiResBoundingBox over BoundingBox
- % even if HiResBoundingBox occurs first in the EPS file.
//systemdict /EPSBoundingBoxState get 1 index lt {
- % save the BBoxString for possible FitPage when EndComments is seen
- exch dup //systemdict /EPSBoundingBoxString 3 -1 roll .forceput
- EPSBoundingBoxParse
+ exch EPSBoundingBoxParse
{
//systemdict /EPSCrop known {
EPSBoundingBoxCrop
} {
- //systemdict /EPSFitPage known not {
+ //systemdict /EPSFitPage known {
+ EPSBoundingBoxFitPage
+ } {
% Warn if some of the EPS file will be clipped
clippath pathbbox newpath
{ % context for exit
@@ -142,17 +124,10 @@
flush
1 add
} if
- } {
- pop pop pop pop
} ifelse
} ifelse
EPSBoundingBoxSetState
} {
- % improperly formed BoundingBox string.
- QUIET not {
- (\n **** Warning: BoundingBox values are invalid and will be ignored: ') print
- EPSBoundBoxString print (') = flush
- } if
pop % state
} ifelse
} {
@@ -160,25 +135,6 @@
} ifelse
} bind executeonly odef
-% Perform anchorsearch on the strings in the array until a match is found.
-/anchorsearchforany { % haystack [needle1 ...] --> post needle true
- % --> haystack false
- false 3 1 roll % false haystack [...]
- { % false haystack needle
- dup 3 1 roll % false needle haystack needle
- anchorsearch {
- % false needle post needle
- pop % false needle post
- 3 1 roll % post false needle
- exch not exch % post true needle
- exit
- } {
- % false needle haystack
- exch pop % false haystack
- } ifelse
- } forall
- exch % haystack false | post needle true
-} bind def
/ProcessEPSComment { % file comment -- file comment
/EPSBoundingBoxState .systemvar 3 lt {
@@ -232,23 +188,12 @@
} ifelse
} ifelse
} {
- {(%%EndComments) (%%BeginProlog) (%%BeginSetup)} anchorsearchforany {
- EPSDEBUG { (EPSComment processing finished, encountered: ) print dup = } if
- pop pop % discard the strings from the anchorsearch
- % We may have seen BoundingBox or HiResBounfingBox. If so and if EPSFitPage
- % is set, then we do the transformation here to scale and center the page,
- % rotating if needed (and AllowFitPageRotation is true -- the default.)
- //systemdict /EPSFitPage known
- //systemdict /EPSBoundingBoxState get 0 gt
- and {
- EPSBoundingBoxString EPSBoundingBoxParse {
- EPSBoundingBoxFitPage
- } if
- } if
+ (%%EndComments) anchorsearch {
+ pop pop
% Ignore any following comments
5 EPSBoundingBoxSetState
} {
- pop % Not %%EndComments -- ignore it
+ pop
} ifelse
} ifelse
} if
@@ -365,7 +310,6 @@ end
/.runnoepsf
/.runEPS
/EPSBoundingBoxSetState
- /EPSBoundingBoxString
/EPSBoundingBoxCrop
/EPSBoundingBoxFitPage
/EPSBoundingBoxParse
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_fapi.ps b/Master/tlpkg/tlgs/Resource/Init/gs_fapi.ps
index b0f748209d6..0b493c6a516 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_fapi.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_fapi.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_fntem.ps b/Master/tlpkg/tlgs/Resource/Init/gs_fntem.ps
index 8904352deb2..d5ac0bfa72f 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_fntem.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_fntem.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_fonts.ps b/Master/tlpkg/tlgs/Resource/Init/gs_fonts.ps
index f1e26b09393..3f4f4af8066 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_fonts.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_fonts.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_frsd.ps b/Master/tlpkg/tlgs/Resource/Init/gs_frsd.ps
index 80d399101b7..74c1dd27788 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_frsd.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_frsd.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
@@ -61,29 +61,13 @@ level2dict begin
.currentglobal 1 index gcheck .setglobal exch
currentpacking //false setpacking exch
- 2 dict begin /filelen 0 def % scratch dict for filelen and pos (below).
% Stack: dict filters parms CloseSource oldglobal oldpacking file
- [ exch {
- dup 40000 string readstring
- /filelen 2 index length filelen add def % accumulate filelen
- not { exit } if exch
- } loop
+ [ exch { dup 40000 string readstring not { exit } if exch } loop
exch pop
]
- { filelen string } stopped { % try allocating a single string
- pop % couldn't make a string - discard filelen value
- } {
- % transfer the array-of-strings to the single string.
- % stack: ... [() ...] string
- /pos 0 def exch {
- 1 index exch pos exch putinterval /pos pos 40000 add def
- } forall
- } ifelse
- % top of stack is either array of strings or one string == stream_data
- end % done with scratch dict
- % Stack: dict filters parms CloseSource oldglobal oldpacking stream_data
+ % Stack: dict filters parms CloseSource oldglobal oldpacking [()...]
3 1 roll setpacking setglobal
- % Stack: dict filters parms CloseSource stream_data
+ % Stack: dict filters parms CloseSource [()...]
1 index .reusablestream
} if
% We created the stream successfully: clean up.
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_icc.ps b/Master/tlpkg/tlgs/Resource/Init/gs_icc.ps
index 0bf8313fdc4..fac0cb25fab 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_icc.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_icc.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_il1_e.ps b/Master/tlpkg/tlgs/Resource/Init/gs_il1_e.ps
index 35250233701..f8cfff04ca4 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_il1_e.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_il1_e.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_img.ps b/Master/tlpkg/tlgs/Resource/Init/gs_img.ps
index 3750ad30285..00d79df34ac 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_img.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_img.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2002-2021 Artifex, Inc. All rights reserved.
+% Copyright (C) 2002-2018 Artifex, Inc. All rights reserved.
%
% This software is provided AS-IS with no warranty, either express or
% implied.
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_init.ps b/Master/tlpkg/tlgs/Resource/Init/gs_init.ps
index 088c8583e3e..931f91aaadd 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_init.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_init.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
@@ -34,7 +34,7 @@
% Interpreter library version number
% NOTE: the interpreter code requires that the first non-comment token
% in this file be an integer, and that it match the compiled-in version!
-9540
+9533
% Check the interpreter revision.
dup revision ne
@@ -144,8 +144,7 @@ currentdict /PDFNOCIDFALLBACK known /PDFNOCIDFALLBACK exch def
currentdict /BATCH known /BATCH exch def
currentdict /DELAYBIND known /DELAYBIND exch def
-currentdict /DOINTERPOLATE .knownget { { -1 } { 1 } ifelse /InterpolateControl exch def } if
-currentdict /NOINTERPOLATE .knownget { { 0 } { 1 } ifelse /InterpolateControl exch def } if
+currentdict /DOINTERPOLATE .knownget { { -1 } { 0 } ifelse /InterpolateControl exch def } if
currentdict /ESTACKPRINT known /ESTACKPRINT exch def
currentdict /FAKEFONTS known /FAKEFONTS exch def
currentdict /FIXEDMEDIA known /FIXEDMEDIA exch def
@@ -160,6 +159,7 @@ currentdict /NODISPLAY known not /DISPLAYING exch def
currentdict /NOFONTMAP known /NOFONTMAP exch def
currentdict /NOFONTPATH known /NOFONTPATH exch def
currentdict /NOGC known /NOGC exch def
+currentdict /NOINTERPOLATE .knownget { /InterpolateControl 0 def } if
currentdict /NOMEDIAATTRS known /NOMEDIAATTRS exch def
currentdict /NOOUTERSAVE known /NOOUTERSAVE exch def
currentdict /NOPAGEPROMPT known /NOPAGEPROMPT exch def
@@ -215,13 +215,6 @@ currentdict /EPSFitPage known { /PSFitPage //true def } if
% This is a "convenience" option that sets a combination of EPSFitPage, PDFFitPage and PSFitPage
currentdict /FitPage known { /EPSFitPage //true def /PDFFitPage //true def /PSFitPage //true def } if
-currentdict /SimulateOverprint known {
- (\n**** -dSimulateOverprint={true|false} is no longer supported. ****\n) print
- (**** It has been replaced by -dOverprint={enable|disable|simulate} ****\n\n) print
- % Set the new variable appropriately.
- /Overprint SimulateOverprint { /enable } { /disable } ifelse def
-} if
-
% Acquire environment variables.
currentdict /DEVICE known not
{ (GS_DEVICE) getenv { /DEVICE exch def } if } if
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_lev2.ps b/Master/tlpkg/tlgs/Resource/Init/gs_lev2.ps
index 54849370d5c..fefa732b198 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_lev2.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_lev2.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_ll3.ps b/Master/tlpkg/tlgs/Resource/Init/gs_ll3.ps
index 98e2a65fb5f..f6d98482164 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_ll3.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_ll3.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_mex_e.ps b/Master/tlpkg/tlgs/Resource/Init/gs_mex_e.ps
index cced43b3d11..dda0675cd85 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_mex_e.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_mex_e.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_mgl_e.ps b/Master/tlpkg/tlgs/Resource/Init/gs_mgl_e.ps
index b437285b7d9..e02729b1c9a 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_mgl_e.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_mgl_e.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_mro_e.ps b/Master/tlpkg/tlgs/Resource/Init/gs_mro_e.ps
index e476322ba39..7d0e3b7c284 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_mro_e.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_mro_e.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_pdf_e.ps b/Master/tlpkg/tlgs/Resource/Init/gs_pdf_e.ps
index 2d3ec9ffc05..172cd72c559 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_pdf_e.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_pdf_e.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_pdfwr.ps b/Master/tlpkg/tlgs/Resource/Init/gs_pdfwr.ps
index 9386339b0ac..a53b8c3f88e 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_pdfwr.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_pdfwr.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
@@ -278,6 +278,19 @@ languagelevel 2 .setlanguagelevel
% ---------------- End of predefined configurations ---------------- %
+% Set optimizations for converting PostScript to PDF.
+% The ps2pdf* scripts invoke this.
+/.setpdfwrite { % - .setpdfwrite -
+ % Set a large VM threshold to reduce garbage collection.
+ (\n**** WARNING: The .setpdfwrite operator has been deprecated and will be removed entirely\n) print
+ ( in the next release of Ghostscript. The functionality of this operator has\n) print
+ ( been reduced to increasing the size of the VM threshold. If you believe you\n) print
+ ( have a real need for this then you should replace your call to .setpdfwrite\n) print
+ ( with:\n\n) print
+ ( 3000000 setvmthreshold\n\n) print
+ currentuserparams /VMThreshold get 3000000 .max setvmthreshold
+} bind def
+
% ---------------- pdfmark and DSC processing ---------------- %
/.write_small_positive_real % <file> <real> .write_small_positive_real -
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_res.ps b/Master/tlpkg/tlgs/Resource/Init/gs_res.ps
index 41214bf358b..18f63a30064 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_res.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_res.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_resmp.ps b/Master/tlpkg/tlgs/Resource/Init/gs_resmp.ps
index a7eb70fcafe..5ba4f43e760 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_resmp.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_resmp.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_setpd.ps b/Master/tlpkg/tlgs/Resource/Init/gs_setpd.ps
index 2a333bf7642..51b26899979 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_setpd.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_setpd.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_statd.ps b/Master/tlpkg/tlgs/Resource/Init/gs_statd.ps
index 8f01c78c4c1..7b85ef0f558 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_statd.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_statd.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_std_e.ps b/Master/tlpkg/tlgs/Resource/Init/gs_std_e.ps
index c696b714fc7..4bfa6c5bfcb 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_std_e.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_std_e.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_sym_e.ps b/Master/tlpkg/tlgs/Resource/Init/gs_sym_e.ps
index e6c58f6fa5c..fb92a2997dd 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_sym_e.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_sym_e.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_trap.ps b/Master/tlpkg/tlgs/Resource/Init/gs_trap.ps
index 9a089eef737..e4d6cafe094 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_trap.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_trap.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_ttf.ps b/Master/tlpkg/tlgs/Resource/Init/gs_ttf.ps
index 95d50c6be60..394cba28e26 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_ttf.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_ttf.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
@@ -414,16 +414,7 @@
pop
/firstcode startc 0 getu16a 16#ff00 and dup 16#f000 ne { pop 0 } if def
/putglyph {
- glyphs code known
- {
- glyphs /.cmap_warning_issued known not {
- (**** Warning: Invalid TTF cmap mapping (overlapping/repeated map)\n) print flush
- glyphs /.cmap_warning_issued //true put
- } if
- pop
- }
- {glyphs code 3 -1 roll put}ifelse
- /code code 1 add def
+ glyphs code 3 -1 roll put /code code 1 add def
} bind def
/glyphs 0 dict def
@@ -447,10 +438,6 @@
% Two choices are: drop later repeated/overlapping segments entirely,
% or only use codes from later, overlapping segments not already set
% by the earlier segment. (Inspired by Bug 700968).
- % Revision: bug 703589 has an (invalid) cmap table with overlapping
- % (actually repeating) ranges, and requires the *first* range definition
- % to be used in order to render correctly. So /putglyph now refuses to
- % overwrite existing keys in the "glyphs" dictionary
0 2 nseg2 dup 4 lt {pop 4}if 3 sub {
/i2 exch def
/scode startc i2 getu16a def
@@ -477,10 +464,7 @@
} for
} ifelse
} if
- } for
- % If we've encoutered an invalid table, remove the key before returning
- glyphs /.cmap_warning_issued undef
- glyphs /glyphs //null def % for GC
+ } for glyphs /glyphs //null def % for GC
} .bind
6 { % Single interval lookup.
dup 6 getu16a /firstcode exch def
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_typ32.ps b/Master/tlpkg/tlgs/Resource/Init/gs_typ32.ps
index 4c2035c70ad..2d5fc81499a 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_typ32.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_typ32.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_typ42.ps b/Master/tlpkg/tlgs/Resource/Init/gs_typ42.ps
index a3bb97952c7..654a268c0e0 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_typ42.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_typ42.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_type1.ps b/Master/tlpkg/tlgs/Resource/Init/gs_type1.ps
index fa3cdd8826e..18488ebe1cd 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_type1.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_type1.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/gs_wan_e.ps b/Master/tlpkg/tlgs/Resource/Init/gs_wan_e.ps
index fe821352936..5d3673cc67a 100644
--- a/Master/tlpkg/tlgs/Resource/Init/gs_wan_e.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/gs_wan_e.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
diff --git a/Master/tlpkg/tlgs/Resource/Init/pdf_base.ps b/Master/tlpkg/tlgs/Resource/Init/pdf_base.ps
index 2453b6bc1d3..1e7bd701bbc 100644
--- a/Master/tlpkg/tlgs/Resource/Init/pdf_base.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/pdf_base.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
@@ -779,19 +779,17 @@ currentdict /token_nofail_dict .undef
% Read the data for all objects. We check to see if we get
% the number of objects that we expect.
% Stack: strm# objstreamdict N objectstream [obj#] PDFDEBUG
- /ResolveObjectStreamMark 3 -1 roll
+ mark 3 -1 roll % Get objectstream
count 4 index add % Determine stack depth with objects
3 1 roll
resolveobjstreamopdict .pdfrun % Get PDF objects
- count /ResolveObjectStreamMark CountToKey not {0} if
- 1 add index
- ne
+ count counttomark 1 add index ne
{
- count /ResolveObjectStreamMark CountToKey not {0} if
- 1 add index gt {
+ count counttomark 1 add index gt {
( **** Error: Incorrect object count in object stream (too many objects).\n) pdfformaterror
( Output may be incorrect.\n) pdfformaterror
} if
+
% Its possible for us to end up here with a valid file. The way we work is to read the
% stream and tokenise all the objects, but that assumes there will be delimiters or
% whitespace between each object in the stream. We can easily think of cases where
@@ -823,13 +821,13 @@ currentdict /token_nofail_dict .undef
% the stack, in the right order, preceded by a mark, a count, and an array containing
% all the object numbers.
- % First, discard everything we read up to now; we can reuse the 'mark' which was placed
- % by the preceding code to do this, as long as we remember to replace that 'mark'.
+ % First, discard everything we read up to now; we can reuse the mark which was placed
+ % by the preceding code to do this, as long as we remember to replace that mark.
% Handily this will leave the count and the array which contains the object numbers in place.
- /ResolveObjectStreamMark ClearToKey
+ cleartomark
- % Replace the 'mark' consumed by conttomark above, so that we match what the code following this error handling expects.
- /ResolveObjectStreamMark
+ % Replace the mark consumed by conttomark above, so that we match what the code following this error handling expects.
+ mark
% copy the ObjStm dictionary and then copy the count of objects expected
4 index 4 index
@@ -896,15 +894,14 @@ currentdict /token_nofail_dict .undef
% but leave count of objects. Check that aginst the number of objects
% retrieved. If we got too few then issue a warning.
- pop pop exch pop /ResolveObjectStreamMark CountToKey not {1} if
- 1 sub lt {
+ pop pop exch pop counttomark 1 sub lt {
( **** Error: Incorrect object count in object stream (too few objects).\n) pdfformaterror
( Output may be incorrect.\n) pdfformaterror
} if
} if
% We have the object data
- /ResolveObjectStreamMark CountToKey not {0} if array astore
+ counttomark array astore % Put objects into an array
exch pop exch pop % Remove mark and count
currentdict //no_debug_dict eq { end } if % Restore debug context
% Save the objects into Objects
@@ -1093,30 +1090,15 @@ currentdict /no_debug_dict undef
% Some (bad) PDf files have invalid stream lengths. This causes problems
% if we reposition beyond the end of the file. So we compare the given
% length to number of bytes left in the file.
- dup mark exch /Length {knownoget} stopped {
- % Bug 703372 is a PDF file where the XRef stream dictionary has a Length which is an
- % indirect object. Clearly we cannot look that up in an xref which we haevn't yet
- % read! We catch the error from knownoget and do not reposition the steam. After
- % that the normal recovery code kicks in and we will eventually manage to read
- % the compressed xref.
- cleartomark
- }
- {
- {
- dup type /realtype eq {
- ( **** Warning: stream length is a real number; converting to integer.\n) pdfformatwarning
- cvi 2 copy /Length exch put
- } if
- dup PDFfile bytesavailable lt { % compare to to bytes left in file
- PDFfile fileposition % reposition to the end of stream
- add PDFfile exch setfileposition
- } {
- pop % bad stream length - do not reposition.
- % This will force a length warning below
- } ifelse
- } if
- pop % the mark from the Length dereference guard above.
- } ifelse
+ dup /Length knownoget {
+ dup PDFfile bytesavailable lt { % compare to to bytes left in file
+ PDFfile fileposition % reposition to the end of stream
+ add PDFfile exch setfileposition
+ } {
+ pop % bad stream length - do not reposition.
+ % This will force a length warning below
+ } ifelse
+ } if
} {
pop
% We're already reading from a stream, which we can't reposition.
diff --git a/Master/tlpkg/tlgs/Resource/Init/pdf_draw.ps b/Master/tlpkg/tlgs/Resource/Init/pdf_draw.ps
index 8527312c10c..a93a526ca85 100644
--- a/Master/tlpkg/tlgs/Resource/Init/pdf_draw.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/pdf_draw.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
@@ -762,24 +762,6 @@ def
.pdfruncontext
end grestore
-
- % check for extra garbage on the operand stack and clean it up
- count pdfemptycount sub dup 0 ne {
- ( **** Error: Transparency Group, Form XObject execution corrupted the stack.\n) pdfformaterror
- ( Output may be incorrect.\n) pdfformaterror
- PDFSTOPONERROR {
- /.execgroup cvx /rangecheck signalerror
- } {
- dup 0 gt {
- { pop } repeat
- }{
- pop
- } ifelse
- } ifelse
- } {
- pop
- } ifelse
-
/pdfemptycount exch store
} bind executeonly def
@@ -814,22 +796,12 @@ def
%% as arguments to .execgroup
mark currentcolor counttomark array astore exch pop
currentcolorspace 5 2 roll
- dup /Group oget dup type /dicttype eq {
- exch /BBox oget dup type /arraytype eq {
+
+ dup /Group oget exch /BBox oget
% Stack: resdict stream groupdict bbox
- .beginformgroup
- .execgroup
- .endtransparencygroup
- }{
- ( **** Error: Form XObject has a BBox entry with an invalid type.\n) pdfformaterror
- ( Ignoring transparency Group, output may be incorrect.\n) pdfformaterror
- pop pop pop pop pop pop
- } ifelse
- } {
- ( **** Error: Form XObject has a Group entry with an invalid type.\n) pdfformaterror
- ( Ignoring transparency Group, output may be incorrect.\n) pdfformaterror
- pop pop pop pop pop pop
- } ifelse
+ .beginformgroup
+ .execgroup
+ .endtransparencygroup
} bind executeonly def
% Make an ImageType 103 (soft-masked) image.
@@ -2197,15 +2169,7 @@ currentdict /last-ditch-bpc-csp undef
( Output may be incorrect.\n) pdfformaterror
} ifelse
} if
- 1 index /Mask knownoget {
- dup type dup /dicttype eq exch /arraytype eq or { % Bug #703681
- 1 index exch /Mask exch put
- } {
- pop
- ( **** Error: Ignoring Mask attribute that is not an array or a dictionary.\n)
- pdfformaterror
- } ifelse
- } if
+ 1 index /Mask knownoget { 1 index exch /Mask exch put } if
makeimagedict doimagesmask
} bind executeonly def
/makemaskimage { % <datasource> <imagemask> <Mask> makemaskimage
@@ -2323,14 +2287,6 @@ currentdict /last-ditch-bpc-csp undef
currentdict /SMask knownoget {
% We are doing transparency and SMask is present in the image
% stack: <imagemask> <SMask>
- % Normalize /Matte attribute for .begintransparencymaskimage
- dup /Matte .knownget {
- oforce dup //null eq {
- pop dup /Matte undef
- } {
- 1 index /Matte [ 4 -1 roll { oforce } forall ] put
- } ifelse
- } if
.begintransparencymaskimage
PDFfile fileposition exch
gsave //nodict begin
@@ -2352,12 +2308,6 @@ currentdict /last-ditch-bpc-csp undef
% code only picks up the current colour space, not the space from the dictionary.
currentdict /SMask get /Matte known {/CS currentdict /ColorSpace get dup pdfopdict /cs get exec } if
>> 0 0 1 1
- gsave 1 1 moveto 0 0 lineto
- % If we get an error, just emit an empty box
- { pathbbox } stopped { 0 0 0 0 } if
- 4 array astore grestore
- /image
- setup_trans
.begintransparencygroup
.currentstrokeconstantalpha .currentfillconstantalpha 3 -1 roll
1 .setfillconstantalpha 1 .setstrokeconstantalpha
@@ -2459,6 +2409,12 @@ currentdict /last-ditch-bpc-csp undef
makemaskimage
} if
% Stack: datasource imagemask
+ gsave 1 1 moveto 0 0 lineto
+ % If we get an error, just emit an empty box
+ { pathbbox } stopped { 0 0 0 0 } if
+ 4 array astore grestore
+ /image
+ setup_trans
{ currentdict end setsmaskstate //true ValidateDecode { imagemask } }
{ ColorSpace setgcolorspace currentdict end setsmaskstate //false ValidateDecode { image } }
ifelse
@@ -3052,12 +3008,6 @@ drawopdict begin
/File PDFsource def
currentdict makeimagekeys
OFFlevels length 0 eq {
- gsave 1 1 moveto 0 0 lineto
- % If we get an error, just emit an empty box
- { pathbbox } stopped { 0 0 0 0 } if
- 4 array astore grestore
- /image
- setup_trans
doimage
} {
pop Width
@@ -4302,7 +4252,7 @@ currentdict /set_bc_color undef
dup annotsetcolor {
dup drawborder dup calc_annot_scale
2 copy mul 0 ne
- {3 -1 roll drawwidget}
+ {3 -1 roll drawwidget //false}
{
pop pop
( **** Error: ignoring annotation with scale factor of 0\n) pdfformaterror
@@ -4310,7 +4260,6 @@ currentdict /set_bc_color undef
}ifelse
} if
//endannottransparency exec
- //false
} bind executeonly def
/Ink { % <annot> -> <annot> <true>
@@ -5410,9 +5359,14 @@ currentdict /drawannottypes undef
/Ink {mark exch loadannot /ANN pdfmark //false} bind executeonly def
-/PolyLine {mark exch loadannot /ANN pdfmark //false} bind executeonly def
-
-/Line {mark exch loadannot /ANN pdfmark //false} bind executeonly def
+/Line {
+ mark exch dup /L .knownget {
+ aload 5 1 roll transform 4 -2 roll transform 4 2 roll
+ 5 -1 roll astore
+ 1 index /L 3 -1 roll put
+ } if
+ loadannot /ANN pdfmark //false
+} bind executeonly def
/Link {
/NO_PDFMARK_DESTS where {pop NO_PDFMARK_DESTS not}{//true}ifelse
@@ -5502,8 +5456,7 @@ currentdict /drawannottypes undef
//false
} bind executeonly def
-%% We don't handle movies correctly, so don't try to preserve them
-%/Movie {mark exch loadannot /ANN pdfmark //false} bind executeonly def
+/Movie {mark exch loadannot /ANN pdfmark //false} bind executeonly def
/Popup {mark exch loadannot /ANN pdfmark //false} bind executeonly def
/Sound {mark exch loadannot /ANN pdfmark //false} bind executeonly def
/Square {mark exch loadannot /ANN pdfmark //false} bind executeonly def
@@ -5764,25 +5717,22 @@ currentdict end def
% The recursive enumeration of the form fields doesn't descend into widget annotations.
/draw_form_field { % <field> draw_form_field -
- dup type /dicttyype eq { % File for Bug692447 has 'null' Fields entries
- % This matches what pdf_main process_trailer_attrs
- dup /Kids knownoget { % field []
- dup length 0 gt {
- dup 0 oget /Parent knownoget { % field [] kid
- pop % mon-terminal field % field []
- exch pop % []
- { oforce draw_form_field } forall
- } {
- pop draw_terminal_field % separate annots % -
- } ifelse
+ dup /Kids knownoget { % field []
+ dup length 0 gt {
+ dup 0 oget /Parent knownoget { % field [] kid
+ pop % mon-terminal field % field []
+ exch pop % []
+ { oforce draw_form_field } forall
} {
- ( **** Error: Ignoring empty /Kids array in Form field.\n) pdfformaterror
- ( Output may be incorrect.\n) pdfformaterror
+ pop draw_terminal_field % separate annots % -
} ifelse
} {
- draw_terminal_field % merged annotation % -
+ ( **** Error: Ignoring empty /Kids array in Form field.\n) pdfformaterror
+ ( Output may be incorrect.\n) pdfformaterror
} ifelse
- } if
+ } {
+ draw_terminal_field % merged annotation % -
+ } ifelse
} bind executeonly def
/draw_acro_form { % <form> draw_acro_form -
diff --git a/Master/tlpkg/tlgs/Resource/Init/pdf_font.ps b/Master/tlpkg/tlgs/Resource/Init/pdf_font.ps
index 699c14fe307..98a9e3d4fea 100644
--- a/Master/tlpkg/tlgs/Resource/Init/pdf_font.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/pdf_font.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
@@ -1234,23 +1234,6 @@ setglobal
{ /undef_proc_warning /missing-type1-procs /readonly-op-dict }
{ currentdict exch undef } forall
- % Bug703454.pdf contains a number of fonts with multiple definitions
- % of a given glyph name in the CharStrings dict - i.e. two entries
- % for /a - the first of which is "correct" the second is "wrong".
- % Normal Postscript behaviour replaces the first value with the second
- % for the given key/value pair.
- % To handle this, *only* for Type 1 fonts embedded in PDFs, we
- % have a special definition of "def" which won't overwrite existing
- % values in the CharStrings dict.
- /def
- {
- 3 index /CharStrings eq
- currentdict 3 index known and
- { pstack flush pop pop }
- { systemdict /def get exec }
- ifelse
- } bind executeonly def
-
end readonly def
currentdict /eexec_pdf_param_dict .undef
@@ -1498,9 +1481,7 @@ currentdict /eexec_pdf_param_dict .undef
} {
% filepos fontres stream
1 index /FontDescriptor oget
- /Flags oget dup % only believe the symbolic flag if the non-symbolic flag is not also set!
- 4 and 0 ne
- exch 32 and 0 eq and {
+ /Flags oget 4 and 0 ne {
//true % symbolic
} {
1 index /Encoding oknown not % no encoding => symbolic
diff --git a/Master/tlpkg/tlgs/Resource/Init/pdf_main.ps b/Master/tlpkg/tlgs/Resource/Init/pdf_main.ps
index ded2782a13e..d7933700f73 100644
--- a/Master/tlpkg/tlgs/Resource/Init/pdf_main.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/pdf_main.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
@@ -26,12 +26,10 @@ userdict /GS_PDF_ProcSet undef
/#? //false def
% Test whether the current output device handles pdfmark.
+/.writepdfmarkdict 1 dict dup /pdfmark //null put readonly def
/.writepdfmarks { % - .writepdfmarks <bool>
- /PdfmarkCapable /GetDeviceParam .special_op {
- exch pop
- }{
- //false
- }ifelse
+ currentdevice //.writepdfmarkdict .getdeviceparams
+ mark eq { //false } { pop pop //true } ifelse
systemdict /DOPDFMARKS known or
} bind executeonly def
@@ -284,22 +282,12 @@ currentdict /runpdfstring .undef
{
systemdict /FirstPage known
systemdict /LastPage known or
- systemdict /PageList known or
+ systemdict /Pagelist known or
{
<</DisablePageHandler //true>> setpagedevice
} if
} bind def
-/EnablePageHandlerDevice
-{
- systemdict /FirstPage known
- systemdict /LastPage known or
- systemdict /PageList known or
- {
- <</DisablePageHandler //false>> setpagedevice
- } if
-} bind def
-
/runpdfbegin { % <file> runpdfbegin -
userdict begin
% It turns out that the PDF interpreter uses memory more
@@ -307,22 +295,20 @@ currentdict /runpdfstring .undef
% This is counter-intuitive, and we don't understand why it happens,
% but the improvement is significant.
/PDFTopSave save def
- <<
- /ProcessDSCComment //null
- /ProcessComment //null
- %% Bug #696487, allow dict stack to grow without limit, as these PDF
- %% files have stupidly deep gsave nesting and we need a dictionary per gsave
- %% at the moment.
- %% Remove ths if bug #696511 is ever completed (move ExtGstate parameters into gstate)
- /MaxDictStack -1
- %% Bug #696567, same customer as above. Ths time they have a file with a page whch has
- %% 447000 ExtGState references (all of which contain no gstate!) Because we allocate
- %% these on the stack, allow the stack to grow indefinitely in order to accomodate
- %% such stupid files. Also move these lines from the end of the routine, so that
- %% the increases are in place before we call odfopen, which will build the
- %% resources and needs this definition in place.
- /MaxOpStack -1
- >> setuserparams
+ <</ProcessDSCComment //null>> setuserparams
+ <</ProcessComment //null>> setuserparams
+ %% Bug #696487, allow dict stack to grow without limit, as these PDF
+ %% files have stupidly deep gsave nesting and we need a dictionary per gsave
+ %% at the moment.
+ %% Remove ths if bug #696511 is ever completed (move ExtGstate parameters into gstate)
+ <</MaxDictStack -1>> setuserparams
+ %% Bug #696567, same customer as above. Ths time they have a file with a page whch has
+ %% 447000 ExtGState references (all of hwch contain no gstate!) Because we allocate
+ %% these on the stack, allow the stack to grow indefinitely in order to accomodate
+ %% such stupid files. Also move these lines from the end of the routine, so that
+ %% the increases are in place before we call odfopen, which will build the
+ %% resources and needs this definition in place.
+ <</MaxOpStack -1>> setuserparams
//DisablePageHandlerDevice exec
@@ -337,6 +323,7 @@ currentdict /runpdfstring .undef
/CumulativePageCount currentpagedevice /PageCount get def
} bind executeonly def
+currentdict /DisablePageHandlerDevice undef
/runpdfpagerange { % - runpdfpagerange <firstpage#> <lastpage#>
/PortfolioPage where {
@@ -388,8 +375,9 @@ currentdict /runpdfstring .undef
2 2 pdfpagecount {
PDFPageList exch 1 put
} for
+ 1 pdfpagecount
QUIET not {
- (Processing even-numbered pages\n) print (1 through ) print pdfpagecount =only
+ (Processing even-numbered pages\n) print
(.) = flush
} if
} {
@@ -401,8 +389,9 @@ currentdict /runpdfstring .undef
1 2 pdfpagecount {
PDFPageList exch 1 put
} for
+ 1 pdfpagecount
QUIET not {
- (Processing odd-numbered pages\n) print (1 through ) print pdfpagecount =only
+ (Processing odd-numbered pages\n) print 1 index =only ( through ) print dup =only
(.) = flush
} if
} {
@@ -536,16 +525,10 @@ currentdict /runpdfstring .undef
dup /Page# exch store
QUIET not { (Page ) print dup //== exec flush } if
pdfgetpage
- dup //null ne {
- pdfshowpage
- } {
- PDFSTOPONERROR {
- /dopdfpages cvx /syntaxerror signalerror
- } {
- pop
- ( **** Error: Page #) pdfformaterror Page# 10 string cvs pdfformaterror
- ( not found.\n) pdfformaterror
- } ifelse
+ dup //null ne { pdfshowpage } {
+ ( **** Error: Page #) pdfformaterror Page# 10 string cvs pdfformaterror
+ ( not found.\n) pdfformaterror
+ /dopdfpages cvx /syntaxerror signalerror
} ifelse
}{
pop
@@ -571,12 +554,9 @@ currentdict /runpdfstring .undef
PDFTopSave restore
end % userdict
2 vmreclaim % couldn't hurt
- //EnablePageHandlerDevice exec
+ <</DisablePageHandler //false>> setpagedevice
} bind executeonly def
-currentdict /DisablePageHandlerDevice undef
-currentdict /EnablePageHandlerDevice undef
-
% Copy stream to an external temporary file and
% return the file name as PS name.
/copy_embedded_file {
@@ -910,25 +890,7 @@ pdfdict begin
{ % xref line tag was not /n
/f ne % verify that the tag was /f
{ /setxrefentry cvx /syntaxerror signalerror
- } {
- % Bug #703214 has a invalid initial xref table. The table entries are correct
- % but the subsection begins 1 7 instead of 0 7, which means the initial entry is
- % declared as object 1 instead of object 0. The file is incrementally updated
- % many times and every object *except* object 1 is redefined. Object 1 is
- % therefore defined as free and having an offset of 0. Acrobat can open this
- % without complaint! Because the PDF header is a comment line it is skipped
- % so Acrobat must simply be ignoring the free flag. We can't easily detect
- % this, but we can check for the generation number being the canonical
- % head of the free list. If it is, and the object number we have is not
- % zero, then pretend its not free.......
- dup 65535 eq {
- 2 index 0 ne {
- 0 3 1 roll
- //false setxrefentry
- 3 -1 roll pop
- } if
- }if
- }ifelse
+ } if
} ifelse
pop pop % pop <obj location> and <gen num>
% stack: <err count> <obj num>
@@ -1292,26 +1254,26 @@ currentdict /xref-char-dict undef
% to the parent field.
Trailer /Root knownoget {
/AcroForm knownoget {
- %% If we don't have a NeedAppearances entry, treat as if true.
- %% We know Acrobat always regenerates all annotations.
- dup /NeedAppearances knownoget not { //true } if {
- /NeedAppearances //true def
- dup
- /Fields knownoget {
- { oforce
- %% Make sure the entry from the Fields array is a dictionary
- %% Bug #692447.pdf has an array of nulls.
- dup type /dicttype eq {
- link_widget_annots
- }if
- pop
- } forall
- } if
- pop
- } {
- pop
- } ifelse
- } if
+ %% If we don't have a NeedAppearances entry, treat as if true.
+ %% We know Acrobat always regenerates all annotait
+ dup /NeedAppearances knownoget not { //true } if {
+ /NeedAppearances //true def
+ dup
+ /Fields knownoget {
+ { oforce
+ %% Make sure the entry from the Fields array is a dictionary
+ %% Bug #692447.pdf has an array of nulls.
+ dup type /dicttype eq {
+ link_widget_annots
+ }if
+ pop
+ } forall
+ } if
+ pop
+ } {
+ pop
+ } ifelse
+ } if
} if
% Use OutputIntent ICC profile
@@ -1465,15 +1427,14 @@ currentdict /xref-char-dict undef
% Guess whether the output device is a printer.
/Printed currentpagedevice /OutputFile known def
} ifelse
- % If the file name has an odd number of '%', it is either a request for
- % separate pages, or is invalid. In either case some marks can be omitted.
- currentpagedevice /OutputFile .knownget {
- //false exch {
- 37 eq xor
- } forall {
+ currentpagedevice /OutputFile known {
+ currentpagedevice /OutputFile get (%d) search {
+ pop pop pop
/NO_PDFMARK_OUTLINES //true def
/NO_PDFMARK_DESTS //true def
- } if
+ } {
+ pop
+ }ifelse
} if
/PSLevel1 where { pop } { /PSLevel1 //false def } ifelse
% NB: PDFfile is used outside of the PDF code to determine that a
@@ -1618,9 +1579,10 @@ currentdict /xref-char-dict undef
% Check for recursion in the page tree. Bug 689954, MOAB-06-01-2007
% Make sure that the operand stack is cleaned up in case there's
% an error and we ignore it (bug #700953)
- /StackMarkVerifyPageTree
+ mark
verify_page_tree
- /StackMarkVerifyPageTree ClearToKey
+ cleartomark
+
currentdict end
} bind executeonly def
@@ -1961,6 +1923,7 @@ currentdict /xref-char-dict undef
}ifelse
}{
% No Page Resources, recursively try ParentResources as a last resort
+ pop % page Resources
LocalResources parent_obj_get
} ifelse
} {
@@ -2008,8 +1971,7 @@ currentdict /xref-char-dict undef
% Get the total number of pages in the document.
/pdfpagecount % - pdfpagecount <int>
- {
- Trailer /Root knownoget {
+ { Trailer /Root knownoget {
/Pages knownoget {
dup /Count knownoget {
dup type /integertype eq { dup 0 le } { //true } ifelse {
@@ -2116,20 +2078,10 @@ currentdict /xref-char-dict undef
exch pop //null
0 1 3 index length 1 sub {
2 index exch get
- dup oforce
- dup //null eq {
- PDFSTOPONERROR {
- /pdffindpage? cvx /syntaxerror signalerror
- } {
- ( **** Error: Ignoring a null node in the Page tree.\n) pdfformaterror
- pop pop
- } ifelse
- } {
- dup /Kids known { /Count oget } { pop 1 } ifelse
+ dup oforce dup /Kids known { /Count oget } { pop 1 } ifelse
% Stack: index kids null noderef count
- dup 5 index ge { pop exch pop exit } if
- 5 -1 roll exch sub 4 1 roll pop
- } ifelse
+ dup 5 index ge { pop exch pop exit } if
+ 5 -1 roll exch sub 4 1 roll pop
} for exch pop
% Stack: index null|noderef
dup //null eq { pop pop 1 //null exit } if
@@ -2559,7 +2511,7 @@ end readonly def
2 index sub exch 3 index sub exch 4 2 roll pop pop
% stack: savedCTM <pdfpagedict> [Box] XImageable YImageable
2 index aload pop 2 index sub exch 3 index sub exch 4 2 roll pop pop
- 5 index /Rotate pget not { 0 } if cvi 90 idiv 1 and 0 ne { exch } if
+ 5 index /Rotate pget not { 0 } if 90 cvi idiv 1 and 0 ne { exch } if
% stack: savedCTM <pdfpagedict> [Box] XImageable YImageable XBox YBox
4 copy
3 -1 roll exch div 3 1 roll div .min
@@ -2695,11 +2647,7 @@ currentdict /PDF2PS_matrix_key undef
% Determine the number of spot colors used on the page. Note: This searches
% the pages resources. It may be high if a spot color is in a resource but
% is not actually used on the page.
- currentpagedevice /PageSpotColors known {
- /PageSpotColors 2 index countspotcolors
- userdict /PageSpotColors 2 index put
- def
- } if
+ currentpagedevice /PageSpotColors known { /PageSpotColors 2 index countspotcolors def } if
% If the user told us to use a named OutputIntent
systemdict /UseOutputIntent .knownget {
@@ -2753,30 +2701,6 @@ currentdict /PDF2PS_matrix_key undef
% Stack: pagedict currentpagedict installproc
/Install exch def
% Stack: pagedict currentpagedict
- % If the Overprint device flag is not /disable, check usage of OP/op
- /PageUsesOverprint //false def % assume we don't need OP simulation
- dup /Overprint get /disable ne
- % If the device suppports SpotColors (DeviceN device) we don't need simulation
- 1 index /PageSpotColors known
- not and
- /HighLevelDevice /GetDeviceParam .special_op {
- exch pop
- }{
- //false
- }ifelse
- not and % Only if not HighLevelDevice
- {
- % Overprint is /enable, so the device might need the overprint compositor
- % if it does not support spot colors, thus check if overprint is used so
- % overprint simulation can be done with the pdf14 compositor
- 1 index countspotcolors userdict exch /PageSpotColors exch put % save it in a known place
- 1 index pageusesoverprint
- 1 index /ProcessColorModel get /DeviceCMYK eq {
- PageSpotColors 0 gt % count of colorants NOT including CMYK
- and
- } if
- /PageUsesOverprint exch def % the page needs OP simulation so set device param.
- } if
pop currentdict end setpagedevice
} bind executeonly def
@@ -2845,46 +2769,18 @@ currentdict /PDF2PS_matrix_key undef
% and the result was set in the pagedevice dictionary. Use it rather than
% scanning again IF it is present. If the pdfshowpage_setup was not called
% (eg GSView 5) then it will not be present, so we must rescan.
- currentdict /PageUsesTransparency .knownget not {dup pageusestransparency} if
+ currentpagedevice /PageUsesTransparency .knownget not {dup pageusestransparency} if
dup /PDFusingtransparency exch def {
- % If the current device isn't CMYK, or if it is a device that supports transparency
+ % If the current device isn't CMYK, or if it is a device that (currently) supports transparency
% we don't need the special handling of Overprint transparency, so disable the checking.
-
- 4 dict begin % working directory to simplify
- currentpagedevice dup /Colors get
- /devColors exch def % put into our convenience dict
- dup /HaveTransparency .knownget not { //false } if
- /devSupportsTrans exch def % put into our convenience dict
- dup /Overprint get
- /SimOP exch def % put into our convenience dict
- SimOP /simulate eq
- exch /PageUsesOverprint .knownget not { //false } if
- and % both Overprint==/simulate and PageUsesOverprint
- {
- % Determine if the device needs the special pdf14 compositor push
- devColors 4 eq PageSpotColors 0 gt and % CMYK device, but device has spot colors
- devColors 4 lt % RGB or Gray device
- or
- } {
- //false % Overprint is not /simulate or PageUseOverprint is false
- } ifelse
- % Determine if the device needs SMask for Overprint
- SimOP /simulate eq {
- //true % we will need setupOPrtans for Compatible BM
- } {
- SimOP /enable eq
- devColors 4 ge % CMYK device
- and
- } ifelse
- devSupportsTrans not and % If device supports transparency (e.g. pdfwrite) then no setupOPtrans
- end % pop the convenience dict
+ currentpagedevice dup /Colors get 4 lt 1 index /SimulateOverprint get not or
+ exch /HaveTransparency .knownget not { //false } if or
+ % device needs special Oveprint handling
/setup_trans exch
- { /setupOPtrans } { /setupSMtrans } ifelse
+ { /setupSMtrans } { /setupOPtrans } ifelse
load def
-
% Show the page within a PDF 1.4 device filter.
- { -1 } { 0 } ifelse
- .pushpdf14devicefilter {
+ 0 .pushpdf14devicefilter {
/DefaultQstate qstate store % device has changed -- reset DefaultQstate
% If the page has a Group, enclose contents in transparency group.
% (Adobe Tech Note 5407, sec 9.2)
@@ -2912,31 +2808,7 @@ currentdict /PDF2PS_matrix_key undef
} {
/setup_trans { pop pop } def % no-op this if the page doesn't use transparency
% NB: original will be restored from PDFsave
- % The page doesn't use transparency, but if Overprint is /simulate, we may need to
- % push a pdf14devicefilter to handle the overprint simulation using the pdf14 device.
- currentpagedevice
- dup /Overprint get /simulate eq
- 1 index /PageSpotColors known
- not and
- exch /PageUsesOverprint .knownget not { //false } if
- and
- {
- % Show the page within a PDF 1.4 device filter for overprint_simulation.
- -1 .pushpdf14devicefilter {
- /DefaultQstate qstate store % device has changed -- reset DefaultQstate
- showpagecontents
- } stopped {
- % abort the transparency device
- .abortpdf14devicefilter
- /DefaultQstate qstate store % device has changed -- reset DefaultQstate
- stop
- } if
- { } settransfer % identity transfer during popdevice (put_image)
- .poppdf14devicefilter % NB: reset to DefaultQstate will also restore transfer function
- /DefaultQstate qstate store % device has changed -- reset DefaultQstate
- } {
- showpagecontents
- } ifelse
+ showpagecontents
} ifelse
.free_page_resources
% todo: mixing drawing ops outside the device filter could cause
@@ -3095,8 +2967,7 @@ currentdict /PDF2PS_matrix_key undef
} ifelse
} if
} if
- % default AcroForm to true to match Acrobat.
- //systemdict /ShowAcroForm .knownget { //true eq } { //true } ifelse {
+ //systemdict /ShowAcroForm .knownget { //true eq } { //false } ifelse {
Trailer /Root oget /AcroForm knownoget { draw_acro_form } if
} if
} bind executeonly def
@@ -3109,112 +2980,6 @@ currentdict /PDF2PS_matrix_key undef
dup { setcolorspace } //.internalstopped exec { pop /DeviceRGB } if
} bind executeonly def
-% returns true if OP or op is true in an ExtGState
-/pageusesoverprint { % <pagedict> pageusesoverprint <bool>
- dup //false exch {
- 4 dict 1 index resourceusesoverprint { pop not exit } if
- %% Check the current dictionary and its Parent (if any) to see
- %% if they both have stored object numbers. If they do then
- %% check the numbers, don't allow self-references.
- dup /Parent knownoget not { pop exit }
- {
- exch /.gs.pdfobj# .knownget
- {
- 1 index /.gs.pdfobj# .knownget {
- eq {
- pop exit
- }if
- }{
- pop
- }ifelse
- }if
- } ifelse
- } loop
- % Also check for transparency in the annotation (if not in resources).
- { pop //true } { annotsuseoverprint } ifelse
-} bind def
-
-% Check if Overprint (OP/op) is specified in an ExtGState dict
-/extgstateusesoverprint { % <gstate dict> extgstateusesoverprint <bool>
- //false exch % Assume no overprint
- dup //null eq {
- pop % bug 692050
- } {
- { % establish loop context
- dup /OP knownoget { { pop not exit } if } if
- dup /op knownoget { { pop not exit } if } if
- pop exit
- } loop
- } ifelse
-} bind def
-
-% Check if overprint is used in a Pattern
-/patternusesoverprint { % <Pattern dict> patternusesoverprint <bool>
- //false exch % Assume no overprint
- {
- 4 dict 1 index resourceusesoverprint { pop not exit } if
- dup /ExtGState knownoget { extgstateusesoverprint { pop not exit } if } if
- pop exit
- } loop
-} bind def
-
-% Check the Resources of a page or Form. Check for loops in the resource chain.
-/resourceusesoverprint { % <dict> <dict> resourceusesoverprint <bool>
- { % Use loop to provide an exitable context.
- /Resources knownoget not { 0 dict } if
- 2 copy .knownget {
- { % Some circular references may be missed because scanning stops
- % when the 1st overprint is found.
- ( **** File has circular references in resource dictionaries.\n)
- pdfformaterror
- } if
- pop //false exit
- } if
- 2 copy //true put % In the current chain.
- dup /ExtGState knownoget {
- //false exch
- { exch pop oforce extgstateusesoverprint { pop //true exit } if
- } forall
- { pop //true exit } if
- } if
- dup /Pattern knownoget {
- //false exch
- { exch pop oforce patternusesoverprint { pop //true exit } if
- } forall
- { pop //true exit } if
- } if
- 2 copy //false put % Visited but not in the current chain.
- pop //false exit
- } loop
- exch pop
-} bind def
-
-% Check if the annotations on a page use overprint
-/annotsuseoverprint { % <page dict> annotsuseoverprint <bool>
- //false exch % Assume no overprint
- /Annots knownoget { % Get Annots array
- dup type /arraytype eq {
- {
- oforce
- dup //null ne {
- /AP knownoget { % Get appearance dict for the annoation
- /N knownogetdict { % Get the /N (i.e. normal) appearance stream
- 4 dict exch resourceusesoverprint { pop pop //true exit } if
- } if
- } if % If AP dict known
- } {
- pop
- } ifelse
- } forall % For all annots on the page
- } {
- ( **** Error: Annotation array is not an array, ignoring it.\n) pdfformaterror
- ( Output may be incorrect.\n) pdfformaterror
- pop
- }
- ifelse
- } if
-} bind def
-
% ------ Transparency support ------ %
% Determine whether a page might invoke any transparency features:
@@ -3397,37 +3162,31 @@ currentdict /PDF2PS_matrix_key undef
}
{
exch pop % remove the 'on error' marker
- dup type /dicttype eq {
- dup //null ne {
- dup /Subtype knownoget {
- /Highlight eq { % Highlight annotation is always implemented
- pop pop //true exit % as transparency.
- } if
+ dup //null ne {
+ dup /Subtype knownoget {
+ /Highlight eq { % Highlight annotation is always implemented
+ pop pop //true exit % as transparency.
} if
- dup /AP knownoget { % Get appearance dict for the annoation
- /N knownogetdict { % Get the /N (i.e. normal) appearance stream
- 4 dict exch resourceusestransparency { pop pop //true exit } if
- } if
- } if % If AP dict known
- dup /BM knownoget {
- pop pop pop //true exit
+ } if
+ dup /AP knownoget { % Get appearance dict for the annoation
+ /N knownogetdict { % Get the /N (i.e. normal) appearance stream
+ 4 dict exch resourceusestransparency { pop pop //true exit } if
} if
- dup /CA knownoget {
- 1 le {
- pop pop //true exit
- } if
+ } if % If AP dict known
+ dup /BM knownoget {
+ pop pop pop //true exit
+ } if
+ dup /CA knownoget {
+ 1 le {
+ pop pop //true exit
} if
- /ca knownoget {
- 1 le {
- pop //true exit
- } if
+ } if
+ /ca knownoget {
+ 1 le {
+ pop //true exit
} if
- } {
- pop
- } ifelse
+ } if
} {
- ( **** Error: Annotation entry is not a dictionary, ignoring it.\n) pdfformaterror
- ( Output may be incorrect.\n) pdfformaterror
pop
} ifelse
} ifelse
@@ -3454,32 +3213,21 @@ currentdict /PDF2PS_matrix_key undef
% Thus it may include Cyan, Magenta, Yellow, and Black.
% <colorspace> <spotcolordict> colorspacespotcolors -
/colorspacespotcolors {
- % Make sure we have an array, and that it is has enough info
- exch dup type /arraytype eq
- {
+ exch dup type /arraytype eq {
% If we have an Indexed color space then get the base space.
dup 0 oget % <<>> [csp] /Type
dup /Indexed eq {
pop 1 oget % <<>> [base]
2 copy exch colorspacespotcolors
} {
- dup /Pattern eq {
- 1 index length 1 gt { % only uncolored patterns have colorspace
- pop 1 oget % <<>> [base]
- 2 copy exch colorspacespotcolors
+ % Stack: <spotcolordict> <colorspace> <colorspacetype>
+ dup /Separation eq exch /DeviceN eq or {
+ dup 1 oget dup type /arraytype eq {
+ { oforce 2 index putspotcolor } forall
} {
- pop
+ 2 index putspotcolor
} ifelse
- } {
- % Stack: <spotcolordict> <colorspace> <colorspacetype>
- dup /Separation eq exch /DeviceN eq or {
- dup 1 oget dup type /arraytype eq {
- { oforce 2 index putspotcolor } forall
- } {
- 2 index putspotcolor
- } ifelse
- } if
- } ifelse
+ } if
} ifelse
} if
pop pop
@@ -3899,70 +3647,6 @@ currentdict /PDF2PS_matrix_key undef
} if
} bind executeonly def
-% These functions can be used in error handling. It is not always possible to
-% use the PostScript sequence 'mark ..... cleartomark' to clean up behind a
-% sequence of operations, because processing the PDF might leave a mark
-% object on the stack. There are a number of ways to address that problem; one
-% is to count the objects on the stack at the time and store that value in a
-% convenient dictionary, presented here is an alternative. Instead of using a
-% mark object, we can use a specific name object as if it were a mark object
-% and use the two routines below to count the number of objects on the stack
-% up to a specific key, and to clear the stack back to a named key.
-
-%
-% /key CountToKey false | int true
-%
-% Counts the operand stack backwards until it encounters
-% a specific name key on the stack. Returns true and the count
-% of objects on the stack after that key, or false if the key
-% was not found on the stack. Consumes the key passed
-% to CountToKey. Throws a typecheck if the operand is not
-% a name type.
-%
-/CountToKey
-{
- dup type /nametype eq {
- //false
- 0 1 count 5 sub
- {
- dup 3 add index
- 3 index eq
- {
- 3 1 roll pop pop //true exit
- }
- {pop} ifelse
- } for
-
- {
- //true
- }
- {
- pop //false
- } ifelse
- }
- {
- /CountToKey cvx /typecheck signalerror
- }ifelse
-}bind readonly def
-
-%
-% /key ClearToKey -
-%
-% Clears the operand stack backwards until it encounters
-% the name object passed as an operand. If the name object
-% is not present on the stack then it will clear the entire
-% stack. Like cleartomark this removes the 'key' from the stack.
-%
-/ClearToKey
-{
- 0 1 count 4 sub
- {
- pop
- dup 3 1 roll eq {exit} if
- } for
- pop
-}bind readonly def
-
end % pdfdict
diff --git a/Master/tlpkg/tlgs/Resource/Init/pdf_ops.ps b/Master/tlpkg/tlgs/Resource/Init/pdf_ops.ps
index fe61b12dcdb..47ff512d927 100644
--- a/Master/tlpkg/tlgs/Resource/Init/pdf_ops.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/pdf_ops.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
@@ -695,11 +695,10 @@ end
{ % Check OP and BM in case we need to push a group
//OPsaveDstack begin
//Dpush exec % push the current OPsaveDstack values into 'previous'
- /SupportsDevn .special_op
okOPcs currentcolorspace 0 get dup /Indexed eq {
pop currentcolorspace 1 get % use the base space
} if
- known or {
+ known {
1 index /stroke ne { .currentfilloverprint } { .currentstrokeoverprint } ifelse
% Change BM to CompatibleOverprint if this has overprint true
dup /ChangeBM exch def
@@ -1479,8 +1478,19 @@ currentdict /clip_if_required .undef
% width under pdfwrite. Pdfwrite uses (in text mode) an identity
% CTM, so we need to calculate the stroke width which would result
% if the CTM had been unity.
- calc_text_linewidth
- setlinewidth
+ currentlinewidth dup
+ currentdict /qTextSaveMatrix known {
+ matrix defaultmatrix idtransform qTextSaveMatrix dtransform
+ }{
+ matrix defaultmatrix idtransform TextSaveMatrix dtransform
+ } ifelse
+ abs 2 copy exch abs eq {
+ pop
+ }{
+ % non-square scaling reduces to Text matrix in pdfwrite , so
+ % we can ignore it. (wrong answer, but consistent)
+ pop pop currentlinewidth
+ }ifelse setlinewidth
show setlinewidth} bind executeonly
% Tr 2 - Fill then Stroke
{ currentlinewidth exch setsmaskstate
@@ -1488,8 +1498,19 @@ currentdict /clip_if_required .undef
% width under pdfwrite. Pdfwrite uses (in text mode) an identity
% CTM, so we need to calculate the stroke width which would result
% if the CTM had been unity.
- calc_text_linewidth
- setlinewidth
+ currentlinewidth dup
+ currentdict /qTextSaveMatrix known {
+ matrix defaultmatrix idtransform qTextSaveMatrix dtransform
+ }{
+ matrix defaultmatrix idtransform TextSaveMatrix dtransform
+ } ifelse
+ abs 2 copy exch abs eq {
+ pop
+ }{
+ % non-square scaling reduces to Text matrix in pdfwrite , so
+ % we can ignore it. (wrong answer, but consistent)
+ pop pop currentlinewidth
+ }ifelse setlinewidth
setsmaskstate show setlinewidth} bind executeonly
% Tr 3 - Neither fill nor stroke
{ setsmaskstate show } bind executeonly
@@ -1504,50 +1525,38 @@ currentdict /clip_if_required .undef
setsmaskstate dup show grestore //true charpath } bind executeonly
% Tr 5 - Stroke, add to clip
{ gsave 1 .settextrenderingmode
- calc_text_linewidth
- setlinewidth
+ currentlinewidth dup
+ matrix defaultmatrix idtransform TextSaveMatrix dtransform
+ abs 2 copy exch abs eq {
+ pop
+ }{
+ % non-square scaling reduces to Text matrix in pdfwrite , so
+ % we can ignore it. (wrong answer, but consistent)
+ pop pop currentlinewidth
+ }ifelse setlinewidth
setsmaskstate dup show grestore
//true charpath} bind executeonly
% Tr 6 - Fill, stroke, add to clip
{ gsave 2 .settextrenderingmode
- calc_text_linewidth
- setlinewidth
+ currentlinewidth dup
+ currentdict /qTextSaveMatrix known {
+ matrix defaultmatrix idtransform qTextSaveMatrix dtransform
+ }{
+ matrix defaultmatrix idtransform TextSaveMatrix dtransform
+ } ifelse
+ abs 2 copy exch abs eq {
+ pop
+ }{
+ % non-square scaling reduces to Text matrix in pdfwrite , so
+ % we can ignore it. (wrong answer, but consistent)
+ pop pop currentlinewidth
+ }ifelse setlinewidth
setsmaskstate dup show grestore
//true charpath} bind executeonly
% Tr 7 - Add to clip
{ //true charpath} bind executeonly
] readonly def
-% - calc_text_linewidth calculated_width
-% This calculates the required linewidth for stroke for *pdfwrite*, it must not be
-% used for rendering. Because pdfwrite writes text scaled into a 72 dpi resolution
-% we cannot use the current linewidth for it, it will be too large. Instead we must
-% re-calculate the original linewidth (removing the default CTM) and then apply the
-% TextSaveMatrix to find the appropriate new linewidth.
-% We check to see if the x and y scaling are approximately the same, if they are not
-% then we calculate a linewidth based on a right triangle with the x and y values
-% of the current linewidth in each direction and then calculate the hypotenuse, which
-% we then use as an approximation to the required width.
-% The 'approximation' of 0.01 is just a guess.
-/calc_text_linewidth
-{
- currentlinewidth dup
- currentdict /qTextSaveMatrix known {
- matrix defaultmatrix idtransform qTextSaveMatrix dtransform
- }{
- matrix defaultmatrix idtransform TextSaveMatrix dtransform
- } ifelse
- abs 2 copy exch abs sub abs 0.01 le {
- pop
- }{
- % We used to leave the linewidth alone for non-square resolutions,
- % claiming it reduced to the text matrix in pdfwrite. This is not
- % true. So handle it the same way we usually do, the hypotenuse of
- % the unit square transformed through the TextSaveMatrix.
- dup mul exch dup mul add sqrt 2 div
- }ifelse
-} bind executeonly def
-
/setstrokeforTrpreservation {
% Check to see if the current device supports Tr
/PreserveTrMode /GetDeviceParam .special_op {
@@ -1564,7 +1573,15 @@ currentdict /clip_if_required .undef
% CTM, so we need to calculate the stroke width which would result
% if the CTM had been unity. NOTE! Only interested in magnitudes,
% not signs.
- calc_text_linewidth
+ currentlinewidth dup
+ matrix defaultmatrix idtransform TextSaveMatrix dtransform
+ abs 2 copy exch abs eq {
+ pop
+ }{
+ % non-square scaling reduces to Text matrix in pdfwrite , so
+ % we can ignore it. (wrong answer, but consistent)
+ pop pop currentlinewidth
+ }ifelse
setlinewidth
} if
} if
diff --git a/Master/tlpkg/tlgs/Resource/Init/pdf_rbld.ps b/Master/tlpkg/tlgs/Resource/Init/pdf_rbld.ps
index 6eeb6085e99..037f10b723b 100644
--- a/Master/tlpkg/tlgs/Resource/Init/pdf_rbld.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/pdf_rbld.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
@@ -142,28 +142,13 @@
PDFfile token pop % get starting entry - or 'trailer'
(trailer) ne { % if we do not already have 'trailer'
PDFfile token pop % get number of entries
- % The following check could be more efficient
- % but broken file.....
- dup
- PDFfile fileposition
- PDFfile 0 setfileposition
- PDFfile bytesavailable
- exch PDFfile exch setfileposition
- % On the basis it requires at least 15 bytes to define an object
- % in PDF, if the claimed number of objects is more than the number
- % of bytes in the file, then it is clearly bogus, and we just give up
- 15 idiv
- lt {
- PDFfile token pop pop % this moves us into the middle of the first entry
- 25 string exch % define working string for readline
- { PDFfile 1 index readline pop pop
- } repeat % skip entries
- pop % pop working string
- PDFfile token pop pop % get 'trailer'
- PDFfile fileposition % get file position
- }
- { pop 0}
- ifelse
+ PDFfile token pop pop % this moves us into the middle of the first entry
+ 25 string exch % define working string for readline
+ { PDFfile 1 index readline pop pop
+ } repeat % skip entries
+ pop % pop working string
+ PDFfile token pop pop % get 'trailer'
+ PDFfile fileposition % get file position
} if
} {
pop 0 % no xref, should not happen, report it upstrem
diff --git a/Master/tlpkg/tlgs/Resource/Init/pdf_sec.ps b/Master/tlpkg/tlgs/Resource/Init/pdf_sec.ps
index 9e6c1c0f074..b6f2bfce556 100644
--- a/Master/tlpkg/tlgs/Resource/Init/pdf_sec.ps
+++ b/Master/tlpkg/tlgs/Resource/Init/pdf_sec.ps
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2021 Artifex Software, Inc.
+% Copyright (C) 2001-2020 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
@@ -481,33 +481,15 @@ systemdict /check_r6_password .forceundef
% Even if StmF and StrF are Identity, if the StdCF is missing AuthEvent
% or it is DocOpen, we require the password. Check for that.
1 index /CF .knownget {
- oforce dup type /dicttype eq {
- /StdCF .knownget {
- oforce dup type /dicttype eq {
- /AuthEvent .knownget {
- oforce dup type /nametype eq {
- /DocOpen eq
- or
- }{
- ( **** Error: AuthEvent has wrong type.\n) pdfformaterror
- ( Cannot decrypt PDF file.\n) pdfformaterror
- /pdf_process_Encrypt cvx /invalidfileaccess signalerror
- } ifelse
- } {
- pop true % no AuthEvent, default is DocOpen, require password
- } ifelse
- }{
- ( **** Error: StdCF has wrong type.\n) pdfformaterror
- ( Cannot decrypt PDF file.\n) pdfformaterror
- /pdf_process_Encrypt cvx /invalidfileaccess signalerror
- } ifelse
+ /StdCF .knownget {
+ /AuthEvent .knownget {
+ /DocOpen eq
+ or
} {
- pop true % no StdCF, require password
+ pop true % no AuthEvent, default is DocOpen, require password
} ifelse
- }{
- ( **** Error: CF has wrong type.\n) pdfformaterror
- ( Cannot decrypt PDF file.\n) pdfformaterror
- /pdf_process_Encrypt cvx /invalidfileaccess signalerror
+ } {
+ pop true % no StdCF, require password
} ifelse
} {
pop true % no CF, require password