From f90099230db6de68f2285dca3d08174bda872f7a Mon Sep 17 00:00:00 2001 From: Reinhard Kotucha Date: Thu, 21 Feb 2008 22:07:42 +0000 Subject: tlpkg/tlgs: Subset of Ghostscript added. git-svn-id: svn://tug.org/texlive/trunk@6709 c570f23f-e606-0410-a88d-b1316a301751 --- Master/tlpkg/tlgs/lib/gs_cidfm.ps | 129 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 Master/tlpkg/tlgs/lib/gs_cidfm.ps (limited to 'Master/tlpkg/tlgs/lib/gs_cidfm.ps') diff --git a/Master/tlpkg/tlgs/lib/gs_cidfm.ps b/Master/tlpkg/tlgs/lib/gs_cidfm.ps new file mode 100644 index 00000000000..48f1b2d888d --- /dev/null +++ b/Master/tlpkg/tlgs/lib/gs_cidfm.ps @@ -0,0 +1,129 @@ +% Copyright (C) 2000 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. +% +% For more information about licensing, please refer to +% http://www.ghostscript.com/licensing/. For information on +% commercial licensing, go to http://www.artifex.com/licensing/ or +% contact Artifex Software, Inc., 101 Lucas Valley Road #110, +% San Rafael, CA 94903, U.S.A., +1(415)492-9861. + +% $Id: gs_cidfm.ps 8022 2007-06-05 22:23:38Z giles $ +% Redefine CIDFont category with cidfmap . + +languagelevel 2 .setlanguagelevel + +4 dict begin +/CategoryName /CIDFont def + +/MapFileName (cidfmap) def + +/IsMyRecord % -> bool +{ % Only for client's needs. + dup type /nametype eq +} bind def + +/RecordVirtualMethods 3 dict begin + + /MakeInstance % MakeInstance + { % We know that currentdict is the category. + /Substitute get FindResource % /Name <> + dup length dict copy % /Name <> + 1 index ResourceStatus pop exch pop % /Name <> size + } bind def + + /GetFilePath % GetFilePath + { % We know that currentdict is the category. + exch pop + /Substitute get exch ResourceFileName + } bind def + + /GetSize % GetSize + { % We know that currentdict is the category. + /Substitute get ResourceStatus { + exch pop exch pop + } { + /undefinedresource signalerror + } ifelse + } bind def + + /GetCSI % GetCSI null + % GetCSI dict + { % We know that currentdict is the category. + RESMPDEBUG { (cidfm GetCSI beg ) = } if + /Substitute get % /Name + GetCIDSystemInfoFromMap + RESMPDEBUG { (cidfm GetCSI end ) print dup = } if + } bind def + + /IsActive % IsActive + { pop true + } bind def + +currentdict end def + +/VerifyMap % VerifyMap - +{ % Checks for vicious substitution cycles. + dup length dict copy % <> + dup length dict % <> <> + { % Choose a random record : + true 2 index { % <> <> true /Name /Subs + 3 2 roll pop false exit % <> <> /Name /Subs false + } forall + { exit % <> <> + } if % <> <> /Name /Subs + % Move the substitution chain to <>, checking for a cycle : + 3 index 2 index undef % <> <> /Name /Subs + exch 2 index exch 0 put % <> <> /Subs + { //IsMyRecord exec not { + % Not a substitution, the chain terminates. + pop exit % <> <> + } if % <> <> /Subs + 1 index 1 index known { + (Vicious substitution cycle in map file with the entry ) print =string cvs print ( .) = + /VerifyMap cvx /undefinedresource signalerror + } if % <> <> /Subs + 1 index 1 index 0 put + dup 3 index exch .knownget not { % <> <> /Subs + % No more substitutions, the chain terminates. + pop exit % <> <> + } if % <> <> /Subs /Subs1 + exch % <> <> /Subs1 /Subs + 3 index exch undef % <> <> /Subs1 + } loop + % Not cycled, now purge the <> : + { % Choose a random record : + true 1 index { % <> <> true /Name /Subs + 3 2 roll pop false exit % <> <> /Name /Subs false + } forall + { exit % <> <> + } if % <> <> /Name /Subs + % Remove it : + pop 1 index exch undef % <> <> + } loop + } loop + pop pop % +} bind def + +/PreprocessRecord % PreprocessRecord +{ //IsMyRecord exec { + 1 dict begin + /Substitute exch def + /RecordVirtualMethods //RecordVirtualMethods def + currentdict end + true + } { + false + } ifelse +} bind def + +currentdict end + +/MappedCategoryRedefiner /ProcSet findresource /Redefine get exec + +.setlanguagelevel -- cgit v1.2.3