texlive[58805] Master: Upgrade gs-9.53.3 -> gs-9.54.0

commits+reinhardk at tug.org commits+reinhardk at tug.org
Fri Apr 9 23:01:59 CEST 2021


Revision: 58805
          http://tug.org/svn/texlive?view=revision&revision=58805
Author:   reinhardk
Date:     2021-04-09 23:01:58 +0200 (Fri, 09 Apr 2021)
Log Message:
-----------
Upgrade gs-9.53.3 -> gs-9.54.0

Modified Paths:
--------------
    trunk/Master/tlpkg/tlgs/README.TEXLIVE
    trunk/Master/tlpkg/tlgs/Resource/CIDFont/ArtifexBullet
    trunk/Master/tlpkg/tlgs/Resource/CMap/Identity-UTF16-H
    trunk/Master/tlpkg/tlgs/Resource/ColorSpace/DefaultCMYK
    trunk/Master/tlpkg/tlgs/Resource/ColorSpace/DefaultGray
    trunk/Master/tlpkg/tlgs/Resource/ColorSpace/DefaultRGB
    trunk/Master/tlpkg/tlgs/Resource/ColorSpace/TrivialCMYK
    trunk/Master/tlpkg/tlgs/Resource/ColorSpace/sGray
    trunk/Master/tlpkg/tlgs/Resource/ColorSpace/sRGB
    trunk/Master/tlpkg/tlgs/Resource/Decoding/FCO_Dingbats
    trunk/Master/tlpkg/tlgs/Resource/Decoding/FCO_Symbol
    trunk/Master/tlpkg/tlgs/Resource/Decoding/FCO_Unicode
    trunk/Master/tlpkg/tlgs/Resource/Decoding/FCO_Wingdings
    trunk/Master/tlpkg/tlgs/Resource/Decoding/Latin1
    trunk/Master/tlpkg/tlgs/Resource/Decoding/StandardEncoding
    trunk/Master/tlpkg/tlgs/Resource/Decoding/Unicode
    trunk/Master/tlpkg/tlgs/Resource/Encoding/CEEncoding
    trunk/Master/tlpkg/tlgs/Resource/Encoding/ExpertEncoding
    trunk/Master/tlpkg/tlgs/Resource/Encoding/ExpertSubsetEncoding
    trunk/Master/tlpkg/tlgs/Resource/Encoding/NotDefEncoding
    trunk/Master/tlpkg/tlgs/Resource/Encoding/Wingdings
    trunk/Master/tlpkg/tlgs/Resource/Init/FCOfontmap-PCLPS2
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_agl.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_btokn.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_cff.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_cidcm.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_ciddc.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_cidfm.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_cidfn.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_cidtt.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_cmap.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_cspace.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_dbt_e.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_diskn.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_dps1.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_dps2.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_dscp.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_epsf.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_fapi.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_fntem.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_fonts.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_frsd.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_icc.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_il1_e.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_img.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_init.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_lev2.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_ll3.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_mex_e.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_mgl_e.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_mro_e.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_pdf_e.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_pdfwr.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_res.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_resmp.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_setpd.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_statd.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_std_e.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_sym_e.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_trap.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_ttf.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_typ32.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_typ42.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_type1.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/gs_wan_e.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/pdf_base.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/pdf_draw.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/pdf_font.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/pdf_main.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/pdf_ops.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/pdf_rbld.ps
    trunk/Master/tlpkg/tlgs/Resource/Init/pdf_sec.ps
    trunk/Master/tlpkg/tlgs/Resource/SubstCID/CNS1-WMode
    trunk/Master/tlpkg/tlgs/Resource/SubstCID/GB1-WMode
    trunk/Master/tlpkg/tlgs/Resource/SubstCID/Japan1-WMode
    trunk/Master/tlpkg/tlgs/Resource/SubstCID/Korea1-WMode
    trunk/Master/tlpkg/tlgs/bin/gsdll32.dll
    trunk/Master/tlpkg/tlgs/bin/gsdll32.lib
    trunk/Master/tlpkg/tlgs/bin/gswin32.exe
    trunk/Master/tlpkg/tlgs/bin/gswin32c.exe
    trunk/Master/tlpkg/tlgs/lib/align.ps
    trunk/Master/tlpkg/tlgs/lib/caption.ps
    trunk/Master/tlpkg/tlgs/lib/cid2code.ps
    trunk/Master/tlpkg/tlgs/lib/docie.ps
    trunk/Master/tlpkg/tlgs/lib/gs_ce_e.ps
    trunk/Master/tlpkg/tlgs/lib/gs_il2_e.ps
    trunk/Master/tlpkg/tlgs/lib/gs_kanji.ps
    trunk/Master/tlpkg/tlgs/lib/gs_ksb_e.ps
    trunk/Master/tlpkg/tlgs/lib/gs_lgo_e.ps
    trunk/Master/tlpkg/tlgs/lib/gs_lgx_e.ps
    trunk/Master/tlpkg/tlgs/lib/gs_wl1_e.ps
    trunk/Master/tlpkg/tlgs/lib/gs_wl2_e.ps
    trunk/Master/tlpkg/tlgs/lib/gs_wl5_e.ps
    trunk/Master/tlpkg/tlgs/lib/gslp.ps
    trunk/Master/tlpkg/tlgs/lib/gsnup.ps
    trunk/Master/tlpkg/tlgs/lib/image-qa.ps
    trunk/Master/tlpkg/tlgs/lib/jispaper.ps
    trunk/Master/tlpkg/tlgs/lib/lines.ps
    trunk/Master/tlpkg/tlgs/lib/mkcidfm.ps
    trunk/Master/tlpkg/tlgs/lib/pdf2dsc.ps
    trunk/Master/tlpkg/tlgs/lib/pdf_info.ps
    trunk/Master/tlpkg/tlgs/lib/pfbtopfa.ps
    trunk/Master/tlpkg/tlgs/lib/ppath.ps
    trunk/Master/tlpkg/tlgs/lib/pphs.ps
    trunk/Master/tlpkg/tlgs/lib/prfont.ps
    trunk/Master/tlpkg/tlgs/lib/ps2ai.ps
    trunk/Master/tlpkg/tlgs/lib/ps2epsi.ps
    trunk/Master/tlpkg/tlgs/lib/rollconv.ps
    trunk/Master/tlpkg/tlgs/lib/stocht.ps
    trunk/Master/tlpkg/tlgs/lib/traceimg.ps
    trunk/Master/tlpkg/tlgs/lib/traceop.ps
    trunk/Master/tlpkg/tlgs/lib/uninfo.ps
    trunk/Master/tlpkg/tlgs/lib/viewcmyk.ps
    trunk/Master/tlpkg/tlgs/lib/viewgif.ps
    trunk/Master/tlpkg/tlgs/lib/viewmiff.ps
    trunk/Master/tlpkg/tlgs/lib/viewpbm.ps
    trunk/Master/tlpkg/tlgs/lib/viewpcx.ps
    trunk/Master/tlpkg/tlgs/lib/viewps2a.ps
    trunk/Master/tlpkg/tlgs/lib/viewpwg.ps
    trunk/Master/tlpkg/tlgs/lib/viewraw.ps
    trunk/Master/tlpkg/tlgs/lib/viewrgb.ps
    trunk/Master/tlpkg/tlgs/lib/winmaps.ps
    trunk/Master/tlpkg/tlgs/lib/zeroline.ps

Added Paths:
-----------
    trunk/Master/source/ghostscript-9.54.0.tar.xz
    trunk/Master/tlpkg/tlgs/Resource/IdiomSet/PPI_CUtils
    trunk/Master/tlpkg/tlgs/lib/gs_css_e.ps
    trunk/Master/tlpkg/tlgs/lib/zugferd.ps

Removed Paths:
-------------
    trunk/Master/source/ghostscript-9.53.3.tar.xz

Deleted: trunk/Master/source/ghostscript-9.53.3.tar.xz
===================================================================
(Binary files differ)

Added: trunk/Master/source/ghostscript-9.54.0.tar.xz
===================================================================
(Binary files differ)

Index: trunk/Master/source/ghostscript-9.54.0.tar.xz
===================================================================
--- trunk/Master/source/ghostscript-9.54.0.tar.xz	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/source/ghostscript-9.54.0.tar.xz	2021-04-09 21:01:58 UTC (rev 58805)

Property changes on: trunk/Master/source/ghostscript-9.54.0.tar.xz
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-xz
\ No newline at end of property
Modified: trunk/Master/tlpkg/tlgs/README.TEXLIVE
===================================================================
--- trunk/Master/tlpkg/tlgs/README.TEXLIVE	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/README.TEXLIVE	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,5 +1,5 @@
 
-This directory contains a subset of the Ghostscript 9.53.3 distribution
+This directory contains a subset of the Ghostscript 9.54.0 distribution
 for Windows.  The only purpose of this package is to support programs
 shipped with TeX Live.  It's not intended for general use. 
 
@@ -6,7 +6,7 @@
 Changes:
 
  * The directories "doc", "examples", "libpng", "trio", "zlib",
-   "openjpeg", and "lcms2{art,mt}" were removed.
+   "openjpeg", lcms2{art,mt}", and "tesseract" were removed.
 
  * All executable files except Ghostscript itself were removed.
 

Modified: trunk/Master/tlpkg/tlgs/Resource/CIDFont/ArtifexBullet
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tlgs/Resource/CMap/Identity-UTF16-H
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/CMap/Identity-UTF16-H	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/CMap/Identity-UTF16-H	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2003-2018 Artifex Software.  All rights reserved.
+% Copyright (C) 2003-2021 Artifex Software.  All rights reserved.
 %
 % This software is provided AS-IS with no warranty, either express or
 % implied.

Modified: trunk/Master/tlpkg/tlgs/Resource/ColorSpace/DefaultCMYK
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/ColorSpace/DefaultCMYK	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/ColorSpace/DefaultCMYK	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/ColorSpace/DefaultGray
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/ColorSpace/DefaultGray	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/ColorSpace/DefaultGray	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/ColorSpace/DefaultRGB
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/ColorSpace/DefaultRGB	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/ColorSpace/DefaultRGB	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/ColorSpace/TrivialCMYK
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/ColorSpace/TrivialCMYK	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/ColorSpace/TrivialCMYK	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/ColorSpace/sGray
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/ColorSpace/sGray	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/ColorSpace/sGray	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/ColorSpace/sRGB
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/ColorSpace/sRGB	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/ColorSpace/sRGB	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Decoding/FCO_Dingbats
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Decoding/FCO_Dingbats	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Decoding/FCO_Dingbats	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Decoding/FCO_Symbol
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Decoding/FCO_Symbol	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Decoding/FCO_Symbol	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Decoding/FCO_Unicode
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Decoding/FCO_Unicode	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Decoding/FCO_Unicode	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Decoding/FCO_Wingdings
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Decoding/FCO_Wingdings	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Decoding/FCO_Wingdings	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Decoding/Latin1
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Decoding/Latin1	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Decoding/Latin1	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Decoding/StandardEncoding
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Decoding/StandardEncoding	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Decoding/StandardEncoding	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Decoding/Unicode
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Decoding/Unicode	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Decoding/Unicode	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Encoding/CEEncoding
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Encoding/CEEncoding	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Encoding/CEEncoding	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Encoding/ExpertEncoding
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Encoding/ExpertEncoding	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Encoding/ExpertEncoding	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Encoding/ExpertSubsetEncoding
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Encoding/ExpertSubsetEncoding	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Encoding/ExpertSubsetEncoding	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Encoding/NotDefEncoding
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Encoding/NotDefEncoding	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Encoding/NotDefEncoding	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Encoding/Wingdings
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Encoding/Wingdings	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Encoding/Wingdings	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Added: trunk/Master/tlpkg/tlgs/Resource/IdiomSet/PPI_CUtils
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/IdiomSet/PPI_CUtils	                        (rev 0)
+++ trunk/Master/tlpkg/tlgs/Resource/IdiomSet/PPI_CUtils	2021-04-09 21:01:58 UTC (rev 58805)
@@ -0,0 +1,24 @@
+%%
+%% Idioms for the PPI Media GmbH PPI_ColorUtils ProcSet
+%% This appears to be a kind of desktop colour separation utility. If it is
+%% used with the pdfwrite PassThroughJPEGImages feature then instead of
+%% converting images from colour to gray, we embed the colour image data
+%% but with a DeviceGray colour space, which leads to incorrect output.
+%% To fix that, turn off the feature if cuForceGray is set to true. This
+%% is the first time we've seen this, and more work may be required.
+%%
+
+currentuserparams /IdiomRecognition get
+<</IdiomRecognition false>> setuserparams
+
+/PPI_CUtils
+<<
+/cuForceGray [
+{/_cuForceGray exch cuPut} bind
+{dup //true eq {currentdevice //null //false mark /PassThroughJPEGImages //false .putdeviceparamsonly}if /_cuForceGray exch cuPut} bind
+]
+>>
+
+/IdiomSet defineresource pop
+
+<</IdiomRecognition 3 -1 roll>> setuserparams

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/FCOfontmap-PCLPS2
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/FCOfontmap-PCLPS2	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/FCOfontmap-PCLPS2	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_agl.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_agl.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_agl.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_btokn.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_btokn.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_btokn.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_cff.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_cff.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_cff.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_cidcm.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_cidcm.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_cidcm.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_ciddc.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_ciddc.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_ciddc.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_cidfm.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_cidfm.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_cidfm.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_cidfn.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_cidfn.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_cidfn.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_cidtt.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_cidtt.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_cidtt.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_cmap.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_cmap.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_cmap.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_cspace.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_cspace.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_cspace.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_dbt_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_dbt_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_dbt_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_diskn.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_diskn.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_diskn.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_dps1.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_dps1.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_dps1.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_dps2.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_dps2.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_dps2.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_dscp.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_dscp.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_dscp.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_epsf.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_epsf.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_epsf.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or
@@ -29,6 +29,7 @@
 % 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
@@ -60,7 +61,10 @@
 /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
@@ -82,7 +86,19 @@
 
   % Find orientation of the best fit. Square pages or files don't rotate.
   2 copy sub              % edx ecx edy ecy pdx pdy pdx-pdy
-  6 index 5 index sub mul % edx ecx edy ecy pdx pdy (pdx-pdy)*(edx-edy)
+  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
   0 lt {
     90 rotate
     exch
@@ -100,15 +116,17 @@
 } 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 {
-    exch EPSBoundingBoxParse
+    % save the BBoxString for possible FitPage when EndComments is seen
+    exch dup //systemdict /EPSBoundingBoxString 3 -1 roll .forceput
+    EPSBoundingBoxParse
     {
       //systemdict /EPSCrop known {
         EPSBoundingBoxCrop
       } {
-        //systemdict /EPSFitPage known {
-          EPSBoundingBoxFitPage
-        } {
+        //systemdict /EPSFitPage known not {
           % Warn if some of the EPS file will be clipped
           clippath pathbbox newpath
           { % context for exit
@@ -124,10 +142,17 @@
             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
   } {
@@ -135,6 +160,25 @@
   } 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 {
@@ -188,12 +232,23 @@
           } ifelse
         } ifelse
     } {
-      (%%EndComments) anchorsearch {
-        pop pop
+      {(%%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
         % Ignore any following comments
         5 EPSBoundingBoxSetState
       } {
-        pop
+        pop	% Not %%EndComments -- ignore it
       } ifelse
     } ifelse
   } if
@@ -310,6 +365,7 @@
     /.runnoepsf
     /.runEPS
     /EPSBoundingBoxSetState
+    /EPSBoundingBoxString
     /EPSBoundingBoxCrop
     /EPSBoundingBoxFitPage
     /EPSBoundingBoxParse

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_fapi.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_fapi.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_fapi.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_fntem.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_fntem.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_fntem.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_fonts.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_fonts.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_fonts.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_frsd.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_frsd.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_frsd.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or
@@ -61,13 +61,29 @@
 
     .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 not { exit } if exch } loop
+    [ exch {
+        dup 40000 string readstring
+        /filelen 2 index length filelen add def	% accumulate filelen
+        not { exit } if exch
+      } loop
       exch pop
     ]
-                        % Stack: dict filters parms CloseSource oldglobal oldpacking [()...]
+    { 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
     3 1 roll setpacking setglobal
-                        % Stack: dict filters parms CloseSource [()...]
+                        % Stack: dict filters parms CloseSource stream_data
     1 index .reusablestream
   } if
                 % We created the stream successfully: clean up.

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_icc.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_icc.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_icc.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_il1_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_il1_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_il1_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_img.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_img.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_img.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2002-2018 Artifex, Inc.  All rights reserved.
+% Copyright (C) 2002-2021 Artifex, Inc.  All rights reserved.
 %
 % This software is provided AS-IS with no warranty, either express or
 % implied.

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_init.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_init.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_init.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 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!
-9533
+9540
 
 % Check the interpreter revision.
 dup revision ne
@@ -144,7 +144,8 @@
 
 currentdict /BATCH known   /BATCH exch def
 currentdict /DELAYBIND known   /DELAYBIND exch def
-currentdict /DOINTERPOLATE .knownget { { -1 } { 0 } ifelse /InterpolateControl exch def } if
+currentdict /DOINTERPOLATE .knownget { { -1 } { 1 } ifelse /InterpolateControl exch def } if
+currentdict /NOINTERPOLATE .knownget { { 0 } { 1 } ifelse /InterpolateControl exch def } if
 currentdict /ESTACKPRINT known   /ESTACKPRINT exch def
 currentdict /FAKEFONTS known   /FAKEFONTS exch def
 currentdict /FIXEDMEDIA known   /FIXEDMEDIA exch def
@@ -159,7 +160,6 @@
 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,6 +215,13 @@
 % 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

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_lev2.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_lev2.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_lev2.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_ll3.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_ll3.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_ll3.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_mex_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_mex_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_mex_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_mgl_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_mgl_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_mgl_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_mro_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_mro_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_mro_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_pdf_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_pdf_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_pdf_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_pdfwr.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_pdfwr.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_pdfwr.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or
@@ -278,19 +278,6 @@
 
 % ---------------- 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 -

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_res.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_res.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_res.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_resmp.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_resmp.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_resmp.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_setpd.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_setpd.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_setpd.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_statd.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_statd.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_statd.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_std_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_std_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_std_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_sym_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_sym_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_sym_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_trap.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_trap.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_trap.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_ttf.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_ttf.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_ttf.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or
@@ -414,7 +414,16 @@
     pop
     /firstcode startc 0 getu16a 16#ff00 and dup 16#f000 ne { pop 0 } if def
     /putglyph {
-      glyphs code 3 -1 roll put /code code 1 add def
+      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
     } bind def
     /glyphs 0 dict def
 
@@ -438,6 +447,10 @@
     % 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
@@ -464,7 +477,10 @@
           } for
         } ifelse
       } if
-    } for glyphs /glyphs //null def	% for GC
+    } for
+    % If we've encoutered an invalid table, remove the key before returning
+    glyphs /.cmap_warning_issued undef
+    glyphs /glyphs //null def	% for GC
   } .bind
   6 {		% Single interval lookup.
     dup 6 getu16a /firstcode exch def

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_typ32.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_typ32.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_typ32.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_typ42.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_typ42.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_typ42.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_type1.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_type1.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_type1.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/gs_wan_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/gs_wan_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/gs_wan_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/pdf_base.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/pdf_base.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/pdf_base.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or
@@ -779,17 +779,19 @@
                 % 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
-  mark 3 -1 roll 		% Get objectstream
+  /ResolveObjectStreamMark 3 -1 roll
   count 4 index add		% Determine stack depth with objects
   3 1 roll
   resolveobjstreamopdict .pdfrun % Get PDF objects
-  count counttomark 1 add index ne
+  count /ResolveObjectStreamMark CountToKey not {0} if
+  1 add index
+  ne
   {
-    count counttomark 1 add index gt {
+    count /ResolveObjectStreamMark CountToKey not {0} if
+    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
@@ -821,13 +823,13 @@
     % 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.
-    cleartomark
+    /ResolveObjectStreamMark ClearToKey
 
-    % Replace the mark consumed by conttomark above, so that we match what the code following this error handling expects.
-    mark
+    % Replace the 'mark' consumed by conttomark above, so that we match what the code following this error handling expects.
+    /ResolveObjectStreamMark
 
     % copy the ObjStm dictionary and then copy the count of objects expected
     4 index 4 index
@@ -894,7 +896,8 @@
     % 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 counttomark 1 sub lt {
+    pop pop exch pop /ResolveObjectStreamMark CountToKey not {1} if
+    1 sub lt {
       (   **** Error: Incorrect object count in object stream (too few objects).\n) pdfformaterror
       (               Output may be incorrect.\n) pdfformaterror
     } if
@@ -901,7 +904,7 @@
   } if
 
                 % We have the object data
-  counttomark array astore	% Put objects into an array
+  /ResolveObjectStreamMark CountToKey not {0} if array astore
   exch pop exch pop		% Remove mark and count
   currentdict //no_debug_dict eq { end } if % Restore debug context
                 % Save the objects into Objects
@@ -1090,15 +1093,30 @@
     % 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 /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
+    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
   } {
     pop
         % We're already reading from a stream, which we can't reposition.

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/pdf_draw.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/pdf_draw.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/pdf_draw.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or
@@ -762,6 +762,24 @@
 
   .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
 
@@ -796,12 +814,22 @@
   %% as arguments to .execgroup
   mark currentcolor counttomark array astore exch pop
   currentcolorspace 5 2 roll
-
-  dup /Group oget exch /BBox oget
+  dup /Group oget dup type /dicttype eq {
+    exch /BBox oget dup type /arraytype eq {
                 % Stack: resdict stream groupdict bbox
-  .beginformgroup
-  .execgroup
-  .endtransparencygroup
+      .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
 } bind executeonly def
 
 % Make an ImageType 103 (soft-masked) image.
@@ -2169,7 +2197,15 @@
       (               Output may be incorrect.\n) pdfformaterror
     } ifelse
   } if
-  1 index /Mask knownoget { 1 index exch /Mask exch put } 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
   makeimagedict doimagesmask
 } bind executeonly def
 /makemaskimage {	% <datasource> <imagemask> <Mask> makemaskimage
@@ -2287,6 +2323,14 @@
     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
@@ -2308,6 +2352,12 @@
          % 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
@@ -2409,12 +2459,6 @@
       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
@@ -3008,6 +3052,12 @@
     /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
@@ -4252,7 +4302,7 @@
     dup annotsetcolor {
       dup drawborder dup calc_annot_scale
       2 copy mul 0 ne
-      {3 -1 roll drawwidget //false}
+      {3 -1 roll drawwidget}
       {
         pop pop
         (   **** Error: ignoring annotation with scale factor of 0\n) pdfformaterror
@@ -4260,6 +4310,7 @@
       }ifelse
     } if
     //endannottransparency exec
+    //false
   } bind executeonly def
 
   /Ink { % <annot> -> <annot> <true>
@@ -5359,15 +5410,10 @@
 
 /Ink {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
+/PolyLine {mark exch loadannot /ANN pdfmark  //false} bind executeonly def
 
+/Line {mark exch loadannot /ANN pdfmark //false} bind executeonly def
+
 /Link {
     /NO_PDFMARK_DESTS where {pop NO_PDFMARK_DESTS not}{//true}ifelse
     {
@@ -5456,7 +5502,8 @@
     //false
 } bind executeonly def
 
-/Movie {mark exch loadannot /ANN pdfmark  //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
 /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
@@ -5717,22 +5764,25 @@
 % The recursive enumeration of the form fields doesn't descend into widget annotations.
 
 /draw_form_field { % <field> draw_form_field -
-  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
+  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
       } {
-        pop draw_terminal_field % separate annots % -
+          (  **** Error: Ignoring empty /Kids array in Form field.\n) pdfformaterror
+          (              Output may be incorrect.\n) pdfformaterror
       } ifelse
     } {
-        (  **** Error: Ignoring empty /Kids array in Form field.\n) pdfformaterror
-        (              Output may be incorrect.\n) pdfformaterror
+      draw_terminal_field % merged annotation   % -
     } ifelse
-  } {
-    draw_terminal_field % merged annotation   % -
-  } ifelse
+  } if
 } bind executeonly def
 
 /draw_acro_form {		% <form> draw_acro_form -

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/pdf_font.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/pdf_font.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/pdf_font.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or
@@ -1234,6 +1234,23 @@
   { /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
@@ -1481,7 +1498,9 @@
   } {
                                           % filepos fontres stream
     1 index /FontDescriptor oget
-    /Flags oget 4 and 0 ne {
+    /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 {
        //true  %  symbolic
     } {
        1 index /Encoding oknown not  % no encoding => symbolic

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/pdf_main.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/pdf_main.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/pdf_main.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or
@@ -26,10 +26,12 @@
 /#? //false def
 
 % Test whether the current output device handles pdfmark.
-/.writepdfmarkdict 1 dict dup /pdfmark //null put readonly def
 /.writepdfmarks {	% - .writepdfmarks <bool>
-  currentdevice //.writepdfmarkdict .getdeviceparams
-  mark eq { //false } { pop pop //true } ifelse
+  /PdfmarkCapable /GetDeviceParam .special_op {
+    exch pop
+  }{
+    //false
+  }ifelse
   systemdict /DOPDFMARKS known or
 } bind executeonly def
 
@@ -282,12 +284,22 @@
 {
   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
@@ -295,20 +307,22 @@
         % This is counter-intuitive, and we don't understand why it happens,
         % but the improvement is significant.
    /PDFTopSave save def
-   <</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
+   <<
+     /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
 
    //DisablePageHandlerDevice exec
 
@@ -323,7 +337,6 @@
    /CumulativePageCount currentpagedevice /PageCount get def
 } bind executeonly def
 
-currentdict /DisablePageHandlerDevice undef
 
 /runpdfpagerange {	% - runpdfpagerange <firstpage#> <lastpage#>
    /PortfolioPage where {
@@ -375,9 +388,8 @@
            2 2 pdfpagecount {
              PDFPageList exch 1 put
            } for
-           1 pdfpagecount
            QUIET not {
-             (Processing even-numbered pages\n) print
+             (Processing even-numbered pages\n) print (1 through ) print pdfpagecount =only
              (.) = flush
            } if
        } {
@@ -389,9 +401,8 @@
            1 2 pdfpagecount {
              PDFPageList exch 1 put
            } for
-           1 pdfpagecount
            QUIET not {
-             (Processing odd-numbered pages\n) print 1 index =only ( through ) print dup =only
+             (Processing odd-numbered pages\n) print (1 through ) print pdfpagecount =only
              (.) = flush
            } if
          } {
@@ -525,10 +536,16 @@
         dup /Page# exch store
         QUIET not { (Page ) print dup //== exec flush } if
         pdfgetpage
-        dup //null ne { pdfshowpage } {
-          (   **** Error: Page #) pdfformaterror Page# 10 string cvs pdfformaterror
-          ( not found.\n) pdfformaterror
-          /dopdfpages cvx /syntaxerror signalerror
+        dup //null ne {
+          pdfshowpage
+        } {
+          PDFSTOPONERROR {
+            /dopdfpages cvx /syntaxerror signalerror
+          } {
+            pop
+            (   **** Error: Page #) pdfformaterror Page# 10 string cvs pdfformaterror
+            ( not found.\n) pdfformaterror
+          } ifelse
         } ifelse
       }{
         pop
@@ -554,9 +571,12 @@
    PDFTopSave restore
    end			% userdict
    2 vmreclaim		% couldn't hurt
-   <</DisablePageHandler //false>> setpagedevice
+   //EnablePageHandlerDevice exec
 } 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 {
@@ -890,7 +910,25 @@
        {			% xref line tag was not /n
          /f ne			% verify that the tag was /f
          { /setxrefentry cvx /syntaxerror signalerror
-         } if
+         } {
+           % 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
        } ifelse
        pop pop			% pop <obj location> and <gen num>
        % stack: <err count> <obj num>
@@ -1254,27 +1292,27 @@
   % 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 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 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
-  } if
 
   % Use OutputIntent ICC profile
   systemdict /UsePDFX3Profile .knownget {
@@ -1427,14 +1465,15 @@
                 % Guess whether the output device is a printer.
      /Printed currentpagedevice /OutputFile known def
    } ifelse
-   currentpagedevice /OutputFile known {
-     currentpagedevice /OutputFile get (%d) search {
-       pop pop pop
+   % 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 {
        /NO_PDFMARK_OUTLINES //true def
        /NO_PDFMARK_DESTS //true def
-     } {
-       pop
-     }ifelse
+     } if
    } if
    /PSLevel1 where { pop } { /PSLevel1 //false def } ifelse
    % NB: PDFfile is used outside of the PDF code to determine that a
@@ -1579,10 +1618,9 @@
    % 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)
-   mark
+   /StackMarkVerifyPageTree
    verify_page_tree
-   cleartomark
-
+   /StackMarkVerifyPageTree ClearToKey
    currentdict end
  } bind executeonly def
 
@@ -1923,7 +1961,6 @@
         }ifelse
       }{
         % No Page Resources, recursively try ParentResources as a last resort
-          pop	% page Resources
           LocalResources parent_obj_get
       } ifelse
     } {
@@ -1971,7 +2008,8 @@
 
 % 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 {
@@ -2078,10 +2116,20 @@
       exch pop //null
       0 1 3 index length 1 sub {
          2 index exch get
-         dup oforce dup /Kids known { /Count oget } { pop 1 } ifelse
+         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
                 % Stack: index kids null noderef count
-         dup 5 index ge { pop exch pop exit } if
-         5 -1 roll exch sub 4 1 roll pop
+           dup 5 index ge { pop exch pop exit } if
+           5 -1 roll exch sub 4 1 roll pop
+         } ifelse
       } for exch pop
                 % Stack: index null|noderef
       dup //null eq { pop pop 1 //null exit } if
@@ -2511,7 +2559,7 @@
     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 90 cvi idiv 1 and 0 ne { exch } if
+    5 index /Rotate pget not { 0 } if cvi 90 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
@@ -2647,7 +2695,11 @@
   % 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 def } if
+  currentpagedevice /PageSpotColors known {
+    /PageSpotColors 2 index countspotcolors
+    userdict /PageSpotColors 2 index put
+    def
+  } if
 
   % If the user told us to use a named OutputIntent
   systemdict /UseOutputIntent .knownget {
@@ -2701,6 +2753,30 @@
         % 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
 
@@ -2769,18 +2845,46 @@
         % 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.
-  currentpagedevice /PageUsesTransparency .knownget not {dup pageusestransparency} if
+  currentdict /PageUsesTransparency .knownget not {dup pageusestransparency} if
   dup /PDFusingtransparency exch def {
-    % If the current device isn't CMYK, or if it is a device that (currently) supports transparency
+    % If the current device isn't CMYK, or if it is a device that supports transparency
     % we don't need the special handling of Overprint transparency, so disable the checking.
-    currentpagedevice dup /Colors get 4 lt 1 index /SimulateOverprint get not or
-    exch /HaveTransparency .knownget not { //false } if or
-    % device needs special Oveprint handling
+
+    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
     /setup_trans exch
-    { /setupSMtrans } { /setupOPtrans } ifelse
+    { /setupOPtrans } { /setupSMtrans } ifelse
     load def
+
     % Show the page within a PDF 1.4 device filter.
-    0 .pushpdf14devicefilter {
+    { -1 } { 0 } ifelse
+    .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)
@@ -2808,7 +2912,31 @@
   } {
     /setup_trans { pop pop } def    % no-op this if the page doesn't use transparency
                                 % NB: original will be restored from PDFsave
-    showpagecontents
+    % 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
   } ifelse
   .free_page_resources
   % todo: mixing drawing ops outside the device filter could cause
@@ -2967,7 +3095,8 @@
       } ifelse
     } if
   } if
-  //systemdict /ShowAcroForm .knownget { //true eq } { //false } ifelse {
+  % default AcroForm to true to match Acrobat.
+  //systemdict /ShowAcroForm .knownget { //true eq } { //true } ifelse {
     Trailer /Root oget /AcroForm knownoget { draw_acro_form } if
   } if
 } bind executeonly def
@@ -2980,6 +3109,112 @@
   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:
@@ -3162,31 +3397,37 @@
            }
            {
              exch pop                               % remove the 'on error' marker
-             dup //null ne {
-               dup /Subtype knownoget {
-                 /Highlight eq {      % Highlight annotation is always implemented
-                   pop pop //true exit  % as transparency.
+             dup type /dicttype eq {
+               dup //null ne {
+                 dup /Subtype knownoget {
+                   /Highlight eq {      % Highlight annotation is always implemented
+                     pop pop //true exit  % as transparency.
+                   } if
                  } if
-               } 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
+                 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
-               } if  			% If AP dict known
-               dup /BM knownoget {
-                 pop pop pop //true exit
-               } if
-               dup /CA knownoget {
-                 1 le {
-                   pop pop //true exit
+                 dup /CA knownoget {
+                   1 le {
+                     pop pop //true exit
+                   } if
                  } if
-               } if
-               /ca knownoget {
-                 1 le {
-                   pop //true exit
+                 /ca knownoget {
+                   1 le {
+                     pop //true exit
+                   } if
                  } if
-               } if
+               } {
+                 pop
+               } ifelse
              } {
+               (   **** Error: Annotation entry is not a dictionary, ignoring it.\n) pdfformaterror
+               (               Output may be incorrect.\n) pdfformaterror
                pop
              } ifelse
            } ifelse
@@ -3213,7 +3454,9 @@
 % Thus it may include Cyan, Magenta, Yellow, and Black.
 %	<colorspace> <spotcolordict> colorspacespotcolors -
 /colorspacespotcolors {
-  exch dup type /arraytype eq {
+  % Make sure we have an array, and that it is has enough info
+  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 {
@@ -3220,14 +3463,23 @@
       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
+      dup /Pattern eq {
+        1 index length 1 gt {	% only uncolored patterns have colorspace
+          pop 1 oget                  % <<>> [base]
+          2 copy exch colorspacespotcolors
         } {
-          2 index putspotcolor
+          pop
         } ifelse
-      } if
+      } {
+        % 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
     } ifelse
   } if
   pop pop
@@ -3647,6 +3899,70 @@
   } 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
 
 

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/pdf_ops.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/pdf_ops.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/pdf_ops.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or
@@ -695,10 +695,11 @@
 {  % 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 {
+  known or {
     1 index /stroke ne { .currentfilloverprint } { .currentstrokeoverprint } ifelse
     % Change BM to CompatibleOverprint if this has overprint true
     dup /ChangeBM exch def
@@ -1478,19 +1479,8 @@
         % 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.
-          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
+          calc_text_linewidth
+          setlinewidth
           show setlinewidth} bind executeonly
         % Tr 2 - Fill then Stroke
         { currentlinewidth exch setsmaskstate
@@ -1498,19 +1488,8 @@
         % 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.
-          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
+          calc_text_linewidth
+          setlinewidth
           setsmaskstate show setlinewidth} bind executeonly
         % Tr 3 - Neither fill nor stroke
         { setsmaskstate show } bind executeonly
@@ -1525,32 +1504,14 @@
           setsmaskstate dup show grestore //true charpath } bind executeonly
         % Tr 5 - Stroke, add to clip
         { gsave 1 .settextrenderingmode
-          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
+          calc_text_linewidth
+          setlinewidth
           setsmaskstate dup show grestore
           //true charpath} bind executeonly
         % Tr 6 - Fill, stroke, add to clip
         { gsave 2 .settextrenderingmode
-          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
+          calc_text_linewidth
+          setlinewidth
           setsmaskstate dup show grestore
           //true charpath} bind executeonly
         % Tr 7 - Add to clip
@@ -1557,6 +1518,36 @@
         { //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 {
@@ -1573,15 +1564,7 @@
           % 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.
-          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
+          calc_text_linewidth
           setlinewidth
       } if
     } if

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/pdf_rbld.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/pdf_rbld.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/pdf_rbld.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or
@@ -142,13 +142,28 @@
     PDFfile token pop		% get starting entry - or 'trailer'
     (trailer) ne {		% if we do not already have 'trailer'
       PDFfile token pop		% get number of entries
-      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
+      % 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
     } if
   } {
     pop 0                 	% no xref, should not happen, report it upstrem

Modified: trunk/Master/tlpkg/tlgs/Resource/Init/pdf_sec.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/Init/pdf_sec.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/Init/pdf_sec.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or
@@ -481,15 +481,33 @@
     % 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 {
-      /StdCF .knownget {
-        /AuthEvent .knownget {
-          /DocOpen eq
-          or
+      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
         } {
-          pop true	% no AuthEvent, default is DocOpen, require password
+          pop true	% no StdCF, require password
         } ifelse
-      } {
-        pop true	% no StdCF, require password
+      }{
+        (   **** Error: CF has wrong type.\n) pdfformaterror
+        (               Cannot decrypt PDF file.\n) pdfformaterror
+        /pdf_process_Encrypt cvx /invalidfileaccess signalerror
       } ifelse
     } {
       pop true		% no CF, require password

Modified: trunk/Master/tlpkg/tlgs/Resource/SubstCID/CNS1-WMode
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/SubstCID/CNS1-WMode	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/SubstCID/CNS1-WMode	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/SubstCID/GB1-WMode
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/SubstCID/GB1-WMode	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/SubstCID/GB1-WMode	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/SubstCID/Japan1-WMode
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/SubstCID/Japan1-WMode	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/SubstCID/Japan1-WMode	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/Resource/SubstCID/Korea1-WMode
===================================================================
--- trunk/Master/tlpkg/tlgs/Resource/SubstCID/Korea1-WMode	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/Resource/SubstCID/Korea1-WMode	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/bin/gsdll32.dll
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tlgs/bin/gsdll32.lib
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tlgs/bin/gswin32.exe
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tlgs/bin/gswin32c.exe
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tlgs/lib/align.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/align.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/align.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/caption.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/caption.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/caption.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,5 +1,5 @@
 %!
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/cid2code.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/cid2code.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/cid2code.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/docie.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/docie.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/docie.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/gs_ce_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/gs_ce_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/gs_ce_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Added: trunk/Master/tlpkg/tlgs/lib/gs_css_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/gs_css_e.ps	                        (rev 0)
+++ trunk/Master/tlpkg/tlgs/lib/gs_css_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -0,0 +1,117 @@
+% Copyright (C) 2001-2021 Artifex Software, Inc.
+% All Rights Reserved.
+%
+% This software is provided AS-IS with no warranty, either express or
+% implied.
+%
+% This software is distributed under license and may not be copied,
+% modified or distributed except as expressly authorized under the terms
+% of the license contained in the file LICENSE in this distribution.
+%
+% Refer to licensing information at http://www.artifex.com or contact
+% Artifex Software, Inc.,  7 Mt. Lassen Drive - Suite A-134, San Rafael,
+% CA  94903, U.S.A., +1(415)492-9861, for further information.
+%
+
+% Define the CFF StandardStrings that represent characters.
+% This is a pseudo-encoding.
+/currentglobal where
+ { pop currentglobal { setglobal } //true setglobal }
+ { { } }
+ifelse
+/CFFStandardStrings mark
+
+% 0
+  /.notdef /space /exclam /quotedbl /numbersign
+  /dollar /percent /ampersand /quoteright /parenleft
+  /parenright /asterisk /plus /comma /hyphen
+  /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
+% 50
+  /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 /exclamdown /cent /sterling /fraction
+% 100
+  /yen /florin /section /currency /quotesingle
+  /quotedblleft /guillemotleft /guilsinglleft /guilsinglright /fi
+  /fl /endash /dagger /daggerdbl /periodcentered
+  /paragraph /bullet /quotesinglbase /quotedblbase /quotedblright
+  /guillemotright /ellipsis /perthousand /questiondown /grave
+  /acute /circumflex /tilde /macron /breve
+  /dotaccent /dieresis /ring /cedilla /hungarumlaut
+  /ogonek /caron /emdash /AE /ordfeminine
+  /Lslash /Oslash /OE /ordmasculine /ae
+  /dotlessi /lslash /oslash /oe /germandbls
+% 150
+  /onesuperior /logicalnot /mu /trademark /Eth
+  /onehalf /plusminus /Thorn /onequarter /divide
+  /brokenbar /degree /thorn /threequarters /twosuperior
+  /registered /minus /eth /multiply /threesuperior
+  /copyright /Aacute /Acircumflex /Adieresis /Agrave
+  /Aring /Atilde /Ccedilla /Eacute /Ecircumflex
+  /Edieresis /Egrave /Iacute /Icircumflex /Idieresis
+  /Igrave /Ntilde /Oacute /Ocircumflex /Odieresis
+  /Ograve /Otilde /Scaron /Uacute /Ucircumflex
+  /Udieresis /Ugrave /Yacute /Ydieresis /Zcaron
+% 200
+  /aacute /acircumflex /adieresis /agrave /aring
+  /atilde /ccedilla /eacute /ecircumflex /edieresis
+  /egrave /iacute /icircumflex /idieresis /igrave
+  /ntilde /oacute /ocircumflex /odieresis /ograve
+  /otilde /scaron /uacute /ucircumflex /udieresis
+  /ugrave /yacute /ydieresis /zcaron /exclamsmall
+  /Hungarumlautsmall /dollaroldstyle /dollarsuperior /ampersandsmall /Acutesmall
+  /parenleftsuperior /parenrightsuperior /twodotenleader /onedotenleader /zerooldstyle
+  /oneoldstyle /twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle
+  /sixoldstyle /sevenoldstyle /eightoldstyle /nineoldstyle /commasuperior
+% 250
+  /threequartersemdash /periodsuperior /questionsmall /asuperior /bsuperior
+  /centsuperior /dsuperior /esuperior /isuperior /lsuperior
+  /msuperior /nsuperior /osuperior /rsuperior /ssuperior
+  /tsuperior /ff /ffi /ffl /parenleftinferior
+  /parenrightinferior /Circumflexsmall /hyphensuperior /Gravesmall /Asmall
+  /Bsmall /Csmall /Dsmall /Esmall /Fsmall
+  /Gsmall /Hsmall /Ismall /Jsmall /Ksmall
+  /Lsmall /Msmall /Nsmall /Osmall /Psmall
+  /Qsmall /Rsmall /Ssmall /Tsmall /Usmall
+  /Vsmall /Wsmall /Xsmall /Ysmall /Zsmall
+% 300
+  /colonmonetary /onefitted /rupiah /Tildesmall /exclamdownsmall
+  /centoldstyle /Lslashsmall /Scaronsmall /Zcaronsmall /Dieresissmall
+  /Brevesmall /Caronsmall /Dotaccentsmall /Macronsmall /figuredash
+  /hypheninferior /Ogoneksmall /Ringsmall /Cedillasmall /questiondownsmall
+  /oneeighth /threeeighths /fiveeighths /seveneighths /onethird
+  /twothirds /zerosuperior /foursuperior /fivesuperior /sixsuperior
+  /sevensuperior /eightsuperior /ninesuperior /zeroinferior /oneinferior
+  /twoinferior /threeinferior /fourinferior /fiveinferior /sixinferior
+  /seveninferior /eightinferior /nineinferior /centinferior /dollarinferior
+  /periodinferior /commainferior /Agravesmall /Aacutesmall /Acircumflexsmall
+% 350
+  /Atildesmall /Adieresissmall /Aringsmall /AEsmall /Ccedillasmall
+  /Egravesmall /Eacutesmall /Ecircumflexsmall /Edieresissmall /Igravesmall
+  /Iacutesmall /Icircumflexsmall /Idieresissmall /Ethsmall /Ntildesmall
+  /Ogravesmall /Oacutesmall /Ocircumflexsmall /Otildesmall /Odieresissmall
+  /OEsmall /Oslashsmall /Ugravesmall /Uacutesmall /Ucircumflexsmall
+  /Udieresissmall /Yacutesmall /Thornsmall /Ydieresissmall
+% 379
+  /001.000 /001.001 /001.002 /001.003
+  /Black /Bold /Book /Light /Medium
+  /Regular /Roman /Semibold
+%391 = end
+
+counttomark packedarray exch pop
+10 1 index .registerencoding
+.defineencoding
+exec

Modified: trunk/Master/tlpkg/tlgs/lib/gs_il2_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/gs_il2_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/gs_il2_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/gs_kanji.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/gs_kanji.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/gs_kanji.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/gs_ksb_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/gs_ksb_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/gs_ksb_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/gs_lgo_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/gs_lgo_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/gs_lgo_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/gs_lgx_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/gs_lgx_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/gs_lgx_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/gs_wl1_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/gs_wl1_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/gs_wl1_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/gs_wl2_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/gs_wl2_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/gs_wl2_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/gs_wl5_e.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/gs_wl5_e.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/gs_wl5_e.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/gslp.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/gslp.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/gslp.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/gsnup.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/gsnup.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/gsnup.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,5 +1,5 @@
 %!
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/image-qa.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/image-qa.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/image-qa.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,5 +1,5 @@
 %!PS
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/jispaper.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/jispaper.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/jispaper.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/lines.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/lines.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/lines.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,5 +1,5 @@
 %!
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/mkcidfm.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/mkcidfm.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/mkcidfm.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/pdf2dsc.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/pdf2dsc.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/pdf2dsc.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/pdf_info.ps
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tlgs/lib/pfbtopfa.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/pfbtopfa.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/pfbtopfa.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/ppath.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/ppath.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/ppath.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/pphs.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/pphs.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/pphs.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/prfont.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/prfont.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/prfont.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,7 +1,7 @@
 %!
 %%Creator: Eric Gisin <egisin at waterloo.csnet>
 %%Title: Print font catalog
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/ps2ai.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/ps2ai.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/ps2ai.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,5 +1,5 @@
 %!
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/ps2epsi.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/ps2epsi.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/ps2epsi.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/rollconv.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/rollconv.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/rollconv.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,5 +1,5 @@
 %!
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/stocht.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/stocht.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/stocht.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/traceimg.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/traceimg.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/traceimg.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/traceop.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/traceop.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/traceop.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/uninfo.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/uninfo.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/uninfo.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,5 +1,5 @@
 %!
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/viewcmyk.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/viewcmyk.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/viewcmyk.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/viewgif.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/viewgif.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/viewgif.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/viewmiff.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/viewmiff.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/viewmiff.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/viewpbm.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/viewpbm.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/viewpbm.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/viewpcx.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/viewpcx.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/viewpcx.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/viewps2a.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/viewps2a.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/viewps2a.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/viewpwg.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/viewpwg.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/viewpwg.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2017-2018 Artifex Software, Inc.
+% Copyright (C) 2017-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/viewraw.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/viewraw.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/viewraw.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/viewrgb.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/viewrgb.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/viewrgb.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/winmaps.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/winmaps.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/winmaps.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,4 +1,4 @@
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Modified: trunk/Master/tlpkg/tlgs/lib/zeroline.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/zeroline.ps	2021-04-09 20:05:28 UTC (rev 58804)
+++ trunk/Master/tlpkg/tlgs/lib/zeroline.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -1,5 +1,5 @@
 %!
-% Copyright (C) 2001-2020 Artifex Software, Inc.
+% Copyright (C) 2001-2021 Artifex Software, Inc.
 % All Rights Reserved.
 %
 % This software is provided AS-IS with no warranty, either express or

Added: trunk/Master/tlpkg/tlgs/lib/zugferd.ps
===================================================================
--- trunk/Master/tlpkg/tlgs/lib/zugferd.ps	                        (rev 0)
+++ trunk/Master/tlpkg/tlgs/lib/zugferd.ps	2021-04-09 21:01:58 UTC (rev 58805)
@@ -0,0 +1,316 @@
+% Copyright (C) 2001-2021 Artifex Software, Inc.
+% All Rights Reserved.
+%
+% This software is provided AS-IS with no warranty, either express or
+% implied.
+%
+% This software is distributed under license and may not be copied,
+% modified or distributed except as expressly authorized under the terms
+% of the license contained in the file LICENSE in this distribution.
+%
+% Refer to licensing information at http://www.artifex.com or contact
+% Artifex Software, Inc.,  1305 Grant Avenue - Suite 200, Novato,
+% CA 94945, U.S.A., +1(415)492-9861, for further information.
+%
+% zugferd.ps
+% This program will create an (unsigned) ZUGFeRD compliant PDF file. In
+% order to do so the user must provide certain information, or edit this program.
+%
+% Required information is the path to the XML file containing the invoice data,
+% and the path to an ICC profile appropriate for the chosen ColorConversionStrategy.
+% -sZUGFeRDXMLFile defines a path to the XML invoice file and -sZUGFeRDProfile
+% defines the path to the ICC profile.
+%
+% The user must additionally set -dPDFA=3 and -sColorConversionStrategy on the
+% Ghostscript command line, and set the permissions for Ghostscript to read
+% both these files. It is simplest to put the files in a directory and then
+% permit reading of the entire directory.
+%
+% Example command line :
+%
+% gs --permit-file-read=/usr/home/me/zugferd/ -sDEVICE=pdfwrite -dPDFA=3 -sColorConversionStrategy=RGB \
+%    -sZUGFeRDXMLFile=/usr/home/me/zugferd/invoice.xml  -sZUGFeRDProfile=/usr/home/me/rgb.icc \
+%    -o /usr/home/me/zugferd/zugferd.pdf /usr/home/me/zugferd/zugferd.ps /usr/home/me/zugferd/original.pdf
+%
+% Much of this program results from a Ghostscript bug report, the thread can be found at
+% https://bugs.ghostscript.com/show_bug.cgi?id=696472 Portions of the code below were
+% supplied by Reinhard Nissl and I'm indebted to him for his efforts in helping me create
+% a solution for this problem as well as for the code he supplied, particularly for the
+% SimpleUTF16BE routine.
+%
+% It should not be necessary to modify this program, the comments in the code are there purely for information,
+% but there are two areas which might reasonably be altered. The section with the --8<-- lines could be replaced
+% with a simpler /N 3 or /N 4 if you always intend to produce the same kind of files; RGB or CMYK.
+% In step 7, the large XML string will need to be replaced if you want to produce a ZUGFeRD 2.1
+% file, and in future may require similar modification for later versions.
+%
+
+% istring SimpleUTF16BE ostring
+/SimpleUTF16BE
+{
+    dup length
+    1 add
+    2 mul
+    string
+
+    % istring ostring
+    dup 0 16#FE put
+    dup 1 16#FF put
+    2
+    3 -1 roll
+
+    % ostring index istring
+    {
+        % ostring index ichar
+        3 1 roll
+        % ichar ostring index
+        2 copy 16#00 put
+        1 add
+        2 copy
+        5 -1 roll
+        % ostring index ostring index ichar
+        put
+        1 add
+        % ostring index
+    }
+    forall
+
+    % ostring index
+    pop
+}
+bind def
+
+% First check that the user has defined the XML invoice file on the command line
+%
+/ZUGFeRDXMLFile where {
+  pop % Discard the dictionary
+  %
+  % Now check that the ICC Profile is defined
+  %
+  /ZUGFeRDProfile where {
+    pop % Discard the dictionary
+
+    % Step 1, add the required PDF/A boilerplate. This is mostly copied from lib/pdfa_de.ps
+    % Create a PDF stream object to hold the ICC profile.
+    [ /_objdef {icc_PDFA} /type /stream /OBJ pdfmark
+
+    % Add the required entries to the stream dictionary (/N only)
+    [ {icc_PDFA}
+    <<
+    %% This code attempts to set the /N (number of components) key for the ICC colour space.
+    %% To do this it checks the ColorConversionStrategy or the device ProcessColorModel if
+    %% ColorConversionStrategy is not set.
+    %% This is not 100% reliable. A better solution is for the user to edit this and replace
+    %% the code between the ---8<--- lines with a simple declaration like:
+    %%   /N 3
+    %% where the value of N is the number of components from the profile defined in ZUGFeRDProfile.
+    %%
+    %% ----------8<--------------8<-------------8<--------------8<----------
+      systemdict /ColorConversionStrategy known {
+        systemdict /ColorConversionStrategy get cvn dup /Gray eq {
+          pop /N 1 false
+        }{
+          dup /RGB eq {
+            pop /N 3 false
+          }{
+            /CMYK eq {
+              /N 4 false
+            }{
+              (ColorConversionStrategy not a device space, falling back to ProcessColorModel, output may not be valid PDF/A.)=
+              true
+            } ifelse
+          } ifelse
+        } ifelse
+      } {
+        (ColorConversionStrategy not set, falling back to ProcessColorModel, output may not be valid PDF/A.)=
+        true
+      } ifelse
+
+      {
+        currentpagedevice /ProcessColorModel get
+        dup /DeviceGray eq {
+          pop /N 1
+        }{
+          dup /DeviceRGB eq {
+            pop /N 3
+          }{
+            dup /DeviceCMYK eq {
+              pop /N 4
+            } {
+              (ProcessColorModel not a device space.)=
+              /ProcessColorModel cvx /rangecheck signalerror
+            } ifelse
+          } ifelse
+        } ifelse
+      } if
+    %% ----------8<--------------8<-------------8<--------------8<----------
+    >> /PUT pdfmark
+
+    % Now read the ICC profile from the file into the stream
+    [ {icc_PDFA} ZUGFeRDProfile (r) file /PUT pdfmark
+
+    % Define the output intent dictionary :
+    [/_objdef {OutputIntent_PDFA} /type /dict /OBJ pdfmark
+
+    % Add the required keys to the dictionary
+    [{OutputIntent_PDFA} <<
+        /Type /OutputIntent
+        /S /GTS_PDFA1                       % Required for PDF/A.
+        /DestOutputProfile {icc_PDFA}       % The actual profile.
+        /OutputConditionIdentifier (Custom) % A better solution is a string from the ICC Registry, but Custom is always valid.
+      >> /PUT pdfmark
+
+    % And now add the OutputIntent to the Catalog dictionary
+    [ {Catalog} << /OutputIntents [ {OutputIntent_PDFA} ]>> /PUT pdfmark
+
+
+    % Step 2, define the XML file and read it into the PDF
+    % First we define the PDF stream to contain the XML invoice
+    [ /_objdef {InvoiceStream} /type /stream /OBJ pdfmark
+
+    % Fill in the dictionary elements we need. We believe the
+    % ModDate is not useful so it's just set to a valid value.
+    [ {InvoiceStream} <<
+        /Type        /EmbeddedFile
+        /Subtype    (text/xml) cvn
+        /Params <<
+          /ModDate    (D:20130121081433+01\x9200\x92)
+        >>
+      >> /PUT pdfmark
+
+    % Now read the data from the file and store it in the stream
+    [ {InvoiceStream} ZUGFeRDXMLFile (r) file /PUT pdfmark
+
+    % and close the stream
+    [ {InvoiceStream} /CLOSE pdfmark
+
+
+    % Step 3 create the File Specification dictionary for the embedded file
+    % Create the dictionary
+    [ /_objdef {FSDict} /type /dict /OBJ pdfmark
+
+    % Fill in the required dictionary elements
+    [ {FSDict}    <<
+      /Type /FileSpec
+      /F ZUGFeRDXMLFile
+      /UF ZUGFeRDXMLFile SimpleUTF16BE
+      /Desc (ZUGFeRD electronic invoice)
+      /AFRelationship    /Alternative
+      /EF <<
+          /F {InvoiceStream}
+          /UF {InvoiceStream}
+        >>
+      >>
+    /PUT pdfmark
+
+
+    % Step 4 Create the Associated Files dictionary to hold the FS dict
+    % Create the dictionary
+    [ /_objdef {AFArray} /type /array /OBJ pdfmark
+
+    % Put (append) the FS dictionary into the Associated Files array
+    [ {AFArray} {FSDict} /APPEND pdfmark
+
+
+    % Step 5 Add an entry in the Catalog dictionary containing the AF array
+    [ {Catalog} << /AF {AFArray} >> /PUT pdfmark
+
+
+    % Step 6 use the EMBED pdfmark to add the XML file and FS dictionary to the PDF name tree
+    [ /Name ZUGFeRDXMLFile /FS {FSDict} /EMBED pdfmark
+
+
+    % Step 7 Add the extra ZUGFeRD XML data to the Metadata
+    [ /XML
+(
+    <!-- XMP extension schema container for the zugferd schema -->
+    <rdf:Description rdf:about=""
+    xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"
+    xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#"
+    xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#">
+
+    <!-- Container for all embedded extension schema descriptions -->
+    <pdfaExtension:schemas>
+        <rdf:Bag>
+        <rdf:li rdf:parseType="Resource">
+            <!-- Optional description of schema -->
+            <pdfaSchema:schema>ZUGFeRD PDFA Extension Schema</pdfaSchema:schema>
+            <!-- Schema namespace URI -->
+            <pdfaSchema:namespaceURI>urn:ferd:pdfa:invoice:rc#</pdfaSchema:namespaceURI>
+            <!-- Preferred schema namespace prefix -->
+            <pdfaSchema:prefix>zf</pdfaSchema:prefix>
+
+            <!-- Description of schema properties -->
+            <pdfaSchema:property>
+            <rdf:Seq>!
+                <rdf:li rdf:parseType="Resource">
+                <!-- DocumentFileName: Name of the embedded file;
+                    must be equal with the value of the /F tag in the /EF
+                    structure -->
+                <pdfaProperty:name>DocumentFileName</pdfaProperty:name>
+                <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                <pdfaProperty:category>external</pdfaProperty:category>
+                <pdfaProperty:description>name of the embedded xml invoice file</pdfaProperty:description>
+                </rdf:li>
+                <rdf:li rdf:parseType="Resource">
+                <!-- DocumentType: INVOICE -->
+                <pdfaProperty:name>DocumentType</pdfaProperty:name>
+                <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                <pdfaProperty:category>external</pdfaProperty:category>
+                <pdfaProperty:description>INVOICE</pdfaProperty:description>
+                </rdf:li>
+                <rdf:li rdf:parseType="Resource">
+                <!-- Version: The actual version of the
+                    ZUGFeRD standard -->
+                <pdfaProperty:name>Version</pdfaProperty:name>
+                <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                <pdfaProperty:category>external</pdfaProperty:category>
+                <pdfaProperty:description>The actual version of the ZUGFeRD data</pdfaProperty:description>
+                </rdf:li>
+                <rdf:li rdf:parseType="Resource">
+                <!-- ConformanceLevel: The actual conformance
+                    level of the ZUGFeRD standard,
+                    e.g. BASIC, COMFORT, EXTENDED -->
+                <pdfaProperty:name>ConformanceLevel</pdfaProperty:name>
+                <pdfaProperty:valueType>Text</pdfaProperty:valueType>
+                <pdfaProperty:category>external</pdfaProperty:category>
+                <pdfaProperty:description>The conformance level of the ZUGFeRD data</pdfaProperty:description>
+                </rdf:li>
+            </rdf:Seq>
+            </pdfaSchema:property>
+        </rdf:li>
+        </rdf:Bag>
+    </pdfaExtension:schemas>
+    </rdf:Description>
+
+    <rdf:Description rdf:about="" xmlns:zf="urn:ferd:pdfa:invoice:rc#">
+    <zf:DocumentType>INVOICE</zf:DocumentType>
+    <zf:DocumentFileName>ZUGFeRD-invoice.xml</zf:DocumentFileName>
+    <zf:Version>RC</zf:Version>
+    <zf:ConformanceLevel>BASIC</zf:ConformanceLevel>
+    </rdf:Description>
+) /Ext_Metadata pdfmark
+  }
+  {
+    % No ICC Profile definition on the command line; chide the user and give them an example
+    %
+    (\nERROR - ZUGFeRDProfile has not been supplied, you must supply an ICC profile\n) print
+    (        Producing a potentially invalid PDF/A file!!\n) print
+    (example usage -  gs --permit-file-read=/usr/home/me/zugferd/ -sDEVICE=pdfwrite -dPDFA=3\\\n) print
+    (         -sColorConversionStrategy=RGB -sZUGFeRDXMLFile=/usr/home/me/zugferd/invoice.xml\\\n) print
+    (         -sZUGFeRDProfile=/usr/home/me/rgb.icc -o /usr/home/me/zugferd/zugferd.pdf\\\n) print
+    (         /usr/home/me/zugferd/zugferd.ps /usr/home/me/zugferd/original.pdf\n\n) print flush
+  } ifelse
+}
+{
+  % No XML invoice definition on the command line; chide the user and give them an example
+  %
+  (\nERROR - ZUGFeRDXMLFile has not been supplied, you must supply an XML invoice file\n) print
+  (        Producing a PDF/A file not a ZUGFeRD file.\n) print
+  (example usage -  gs --permit-file-read=/usr/home/me/zugferd/ -sDEVICE=pdfwrite -dPDFA=3\\\n) print
+  (         -sColorConversionStrategy=RGB -sZUGFeRDXMLFile=/usr/home/me/zugferd/invoice.xml\\\n) print
+  (         -sZUGFeRDProfile=/usr/home/me/rgb.icc -o /usr/home/me/zugferd/zugferd.pdf\\\n) print
+  (         /usr/home/me/zugferd/zugferd.ps /usr/home/me/zugferd/original.pdf\n\n) print flush
+} ifelse
+
+% That's all the ZUGFeRD and PDF/A-3 setup completed, all that remains now is to run the input file



More information about the tex-live-commits mailing list.