/usr/share/ghostscript/Resource/Init
NameSizeModeActions
cidfmap21560644editdlrm
FAPIcidfmap14830644editdlrm
FAPIconfig8150644editdlrm
FAPIfontmap14680644editdlrm
FCOfontmap-PCLPS228570644editdlrm
Fontmap1090644editdlrm
Fontmap.GS129290644editdlrm
gs_agl.ps2180210644editdlrm
gs_btokn.ps127650644editdlrm
gs_cet.ps49640644editdlrm
gs_cff.ps69690644editdlrm
gs_cidcm.ps168270644editdlrm
gs_ciddc.ps85050644editdlrm
gs_cidfm.ps80690644editdlrm
gs_cidfn.ps145470644editdlrm
gs_cidtt.ps58470644editdlrm
gs_cmap.ps184440644editdlrm
gs_cspace.ps40590644editdlrm
gs_dbt_e.ps21340644editdlrm
gs_diskn.ps68670644editdlrm
gs_dps1.ps47560644editdlrm
gs_dps2.ps87710644editdlrm
gs_dscp.ps39380644editdlrm
gs_epsf.ps121610644editdlrm
gs_fapi.ps156110644editdlrm
gs_fntem.ps113890644editdlrm
gs_fonts.ps485310644editdlrm
gs_frsd.ps37800644editdlrm
gs_icc.ps31040644editdlrm
gs_il1_e.ps27220644editdlrm
gs_img.ps239980644editdlrm
gs_init.ps945720644editdlrm
gs_lev2.ps438500644editdlrm
gs_ll3.ps195720644editdlrm
gs_mex_e.ps38430644editdlrm
gs_mgl_e.ps21810644editdlrm
gs_mro_e.ps25060644editdlrm
gs_pdfwr.ps321790644editdlrm
gs_pdf_e.ps15560644editdlrm
gs_res.ps424500644editdlrm
gs_resmp.ps224820644editdlrm
gs_setpd.ps384870644editdlrm
gs_statd.ps178510644editdlrm
gs_std_e.ps31430644editdlrm
gs_sym_e.ps31040644editdlrm
gs_trap.ps29460644editdlrm
gs_ttf.ps661730644editdlrm
gs_typ32.ps45600644editdlrm
gs_typ42.ps20960644editdlrm
gs_type1.ps125430644editdlrm
gs_wan_e.ps15630644editdlrm
pdf_base.ps608150644editdlrm
pdf_draw.ps1887230644editdlrm
pdf_font.ps983780644editdlrm
pdf_main.ps1439070644editdlrm
pdf_ops.ps758780644editdlrm
pdf_rbld.ps204800644editdlrm
pdf_sec.ps278650644editdlrm
xlatmap17670644editdlrm
Edit: /usr/share/ghostscript/Resource/Init/gs_cidfm.ps (8069B)
% 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. % % 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 /stringtype eq exch dup type /nametype eq 3 -1 roll or } bind def /RecordVirtualMethods 3 dict begin /MakeInstance % MakeInstance { % We know that currentdict is the category. /Substitute get dup type /stringtype eq { (r) file dup cvx exec closefile dup } if 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 dup type /stringtype eq not { exch ResourceFileName } if } bind def /GetSize % GetSize { % We know that currentdict is the category. dup /Substitute get dup type /stringtype eq { % The simplest solution is to instantiate the resource pop //MakeInstance exec 3 1 roll pop pop } { exch pop ResourceStatus { exch pop exch pop } { /undefinedresource signalerror } ifelse }ifelse } bind def /GetCSI % GetCSI null % GetCSI dict { % We know that currentdict is the category. RESMPDEBUG { (cidfm GetCSI beg ) = } if dup /Substitute get dup type /stringtype eq { pop dup /Name get exch //MakeInstance exec pop exch pop /CIDSystemInfo get } { exch pop % /Name GetCIDSystemInfoFromMap } ifelse RESMPDEBUG { (cidfm GetCSI end ) print dup = } if } bind def /IsActive % IsActive { pop //true } bind def currentdict end def % This is the default definition of our fallback CIDFont /DefaultCIDFallBack << /Path systemdict /CIDFSubstPath .knownget { (/) concatstrings } { (CIDFSUBSTPATH) getenv { (/) concatstrings } { currentsystemparams /GenericResourceDir get (CIDFSubst/) concatstrings } ifelse } ifelse systemdict /CIDFSubstFont .knownget not { (CIDFSUBSTFONT) getenv not { (DroidSansFallback.ttf) } if } if % If CIDFSubstFont looks like a path/file (rather than just file) % use it without the CIDFSubstPath string dup .file_name_directory_separator rsearch {pop pop pop exch pop} {pop concatstrings} ifelse % The CSI data just has to be valid, the substition machinery will % generally overwrite it with appropriate values for the missing font. /CSI [(Identity) 0] /RecordVirtualMethods //RecordVirtualMethods /FileType /TrueType (CIDFSUBSTFONTID) getenv { /SubfontID exch cvi } if >> def % .basename /.splitdirname { (/) rsearch { //true } { (\\) rsearch } ifelse {exch concatstrings exch pop //true}{//false} ifelse } bind def % .addcidfmappath - /.addcidfmpermitpath { .filename { //.splitdirname exec {dup def} if } if } bind def /VerifyMap % VerifyMap - { % This is where we insert the default fallback into the map % checking first to see if there is a user specified alternative dup /CIDFallBack known not{ //DefaultCIDFallBack dup /Path get status { pop pop pop pop /CIDFallBack exch 2 index 3 1 roll put } { pop }ifelse } if % Remove any mappings for which we cannot find the font file dup length dict begin dup { % if we have a name1->name2 mapping, follow the "trail", % so if the name2 mapping is known in the .map dict, retrieve % that map value and loop round until we either reach a map % which references a TTF (i.e. a dictionary record) or we have % a name not known in the .map, in which case we have to resort % to the normal Postscript "resourcestatus". { dup type /nametype eq { dup 3 index exch .knownget { exch pop } { /CIDFont resourcestatus { pop pop pop } { 2 index exch .undef } ifelse exit } ifelse } { dup type /dicttype eq { /Path .knownget { .libfile { dup //.addcidfmpermitpath exec closefile pop} { {(r) file} //.internalstopped exec {pop pop 2 index exch .undef} {dup //.addcidfmpermitpath exec closefile pop} ifelse } ifelse } {2 index exch .undef} ifelse exit } if } ifelse } loop } forall currentdict end {exch pop /PermitFileReading exch .addcontrolpath} forall % 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 currentdict /.splitdirname undef currentdict /.addcidfmpermitpath undef /PreprocessRecord % PreprocessRecord { //IsMyRecord exec { 1 dict begin /Substitute exch def dup /Name exch def /RecordVirtualMethods //RecordVirtualMethods def currentdict end //true } { //false } ifelse } bind def currentdict end /MappedCategoryRedefiner /ProcSet findresource /Redefine get exec .setlanguagelevel