% Copyright (C) 2001-2018 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. % % Define SubstCID, Decoding and CIDDecoding resource categories and related procsets. languagelevel 2 .setlanguagelevel currentglobal //true setglobal %----------------ParseDecoding procset---------------------------- /ParseDecoding << /Parse % <resource_name> <num_tokens> Parse - { dict begin % /ResName 0 % /ResName nCode { currentfile token not { exit } if % /ResName nCode token dup type /integertype eq { % /ResName nCode exch pop } { 1 index def % /ResName nCode } ifelse } loop % /ResName nCode pop % /ResName currentdict end /Decoding % /ResName <<inst>> /Decoding defineresource pop } bind >> /ProcSet defineresource pop %----------------Decoding category---------------------------- /Generic /Category findresource dup length dict copy dup /InstanceType /dicttype put /Decoding exch /Category defineresource pop %----------------ParseCMap_Inverse procset---------------------------- /ParseCMap_Inverse << /findresource { pop } bind /defineresource { pop pop } bind /dict {} /def { pop pop } bind /dup //null /begin { pop } bind /end {} /currentdict //null /CMapName //null /usecmap { pop } bind /begincmap {} /endcmap {} /begincodespacerange { pop mark } bind /endcodespacerange { cleartomark } bind /beginnotdefrange { pop mark } bind /endnotdefrange { cleartomark } bind /beginbfchar { pop mark } bind /endbfchar { pop mark } bind /beginbfrange { begincidrange } /endbfrange { endcidrange } /begincidchar { beginbfchar } /endcidchar { endbfchar } /begincidrange { pop mark } bind /endcidrange { cleartomark } bind >> % Just keep it on stack for a while. % Now we define another dict for local binding, than merge it with the previous one : dup length 5 add dict begin /.Ranges 40 dict def % Key = CID/256, value = array of 256 integer codes. //.Ranges /CIDCount 0 put /.StringToInt % <string> .StringToInt <integer> { 0 exch { exch 8 bitshift add } forall } bind def /.SetCouple % <I> <b> .SetCouple - { exch % b I dup 256 idiv % b I I0 dup //.Ranges exch known not { dup //.Ranges exch 256 array put } if % b I I0 //.Ranges exch get % b I [Range] exch 256 mod % b [Range] I1 2 copy get % b [Range] I1 e dup //null ne { % We've got char code duplicates for same CID. dup type /integertype eq { 4 3 roll % [Range] I1 e b 2 array astore put % } { dup length 1 add dup dup array dup % b [Range] I1 D l l D' D' 3 2 roll 0 exch getinterval % b [Range] I1 D l D' D'' 4 3 roll exch copy pop % b [Range] I1 l D' dup 3 2 roll 1 sub % b [Range] I1 D' D' l-1 6 5 roll % [Range] I1 D' D' l-1 b put put % } ifelse } { pop 3 2 roll put % } ifelse } bind def /endcidrange { % Writes the inversed CMap to .Ranges counttomark 3 idiv { % (b) (e) I exch .StringToInt % (b) I e 3 2 roll .StringToInt % I e b % Note : this code does't handle multidimentional CID ranges. % fixme : optimize below. dup 3 2 roll exch sub 1 add % I b d { 2 copy //.SetCouple exec % I b 1 add exch 1 add exch } repeat % I b pop % I dup //.Ranges /CIDCount get gt { % I dup //.Ranges exch /CIDCount exch put } if % I pop } repeat pop % mark } bind def /.GetCIDDecoding % - .GetCIDDEcoding <dict> { //.Ranges dup length dict copy //.Ranges //.PurgeDict exec //.Ranges /CIDCount 0 put } bind def currentdict end exch copy % Merge the dicts - see above. /ProcSet defineresource pop %----------------CIDDecoding category---------------------------- % Note that we put all instances in global memory - see FindResource. /Generic /Category findresource dup length dict copy begin /Category /CIDDecoding def /InstanceType /dicttype def /.CMapChooser << % This lists CMaps to inverse and unite for creating a CIDDecoding. % Choose by FAPIcidfmap.Registry concatenated with TrueType encoding ID. % Font renderer must provide the glyph substitution internally. /CNS1.Big5 [ /ETen-B5-H /ETen-B5-V ] /CNS1.Unicode [ /UniCNS-UCS2-H /UniCNS-UCS2-V] /CNS1.UCS-4 [ /UniCNS-UCS2-H /UniCNS-UCS2-V] /GB1.GB2312 [ /GBK-EUC-H /GBK-EUC-V ] /GB1.Unicode [ /UniGB-UCS2-H /UniGB-UCS2-V ] /GB1.UCS-4 [ /UniGB-UCS2-H /UniGB-UCS2-V ] /Japan1.ShiftJIS [ /90ms-RKSJ-H /90ms-RKSJ-V ] /Japan1.Unicode [ /UniJIS-UCS2-H /UniJIS-UCS2-V] /Japan1.UCS-4 [ /UniJIS-UCS2-H /UniJIS-UCS2-V] /Japan2.ShiftJIS [ /90ms-RKSJ-H /90ms-RKSJ-V ] /Japan2.Unicode [ /UniHojo-UCS2-H ] /Japan2.UCS-4 [ /UniHojo-UCS2-H ] /Korea1.Johab [ /KSC-Johab-V /KSC-Johab-H ] /Korea1.Wansung [ /KSCms-UHC-V /KSCms-UHC-H ] /Korea1.Unicode [ /UniKS-UCS2-H /UniKS-UCS2-V ] /Identity.Symbol [ /Identity-H /Identity-V ] /Unicode.Unicode [ /Identity-UTF16-H ] /Identity.Unicode [ /Identity-UTF16-H ] /Identity.UCS-4 [ /Identity-H /Identity-V ] >> def /.MakeInstance % <name> .MakeInstance <inst> { dup % /Name /Name //.CMapChooser exch .knownget not { (Can't build /) print =string cvs print ( /CIDDecoding resource. See gs_ciddc.ps . ) = flush /findresource cvx /undefinedresource signalerror } if % /Name [CMaps] exch pop % [CMaps] /CMap /Category findresource % [CMaps] <CMapCategory> /ParseCMap_Inverse /ProcSet findresource % [CMaps] <CMapCategory> <PCI> 3 2 roll { % <CMapCategory> <PCI> /CMapName 3 2 roll begin % <PCI> /CMapName dup .ResourceFile not { (Can't find CMap ) print =string cvs print ( building a CIDDecoding resource. ) = flush /findresource cvx /undefinedresource signalerror } if currentdict end exch % <PCI> /CMapName <CMapCategory> file 3 index begin cvx exec % <PCI> /CMapName <CMapCategory> end exch pop exch % <CMapCategory> <PCI> } forall exch pop begin % .GetCIDDecoding end } bind executeonly def /FindResource % <name> FindResource <dict> { currentglobal exch % bGlobal /InstName //true setglobal dup //.MakeInstance exec % bGlobal /InstName <Inst> DefineResource % bGlobal <Inst> exch setglobal % <Inst> } bind executeonly def currentdict end /CIDDecoding exch /Category defineresource pop %----------------SubstCID category---------------------------- /Generic /Category findresource dup length dict copy begin /Category /SubstCID def /InstanceType /dicttype def currentdict end /SubstCID exch /Category defineresource pop setglobal .setlanguagelevel
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
FAPIcidfmap | File | 1.45 KB | 0644 |
|
FAPIconfig | File | 815 B | 0644 |
|
FAPIfontmap | File | 1.43 KB | 0644 |
|
FCOfontmap-PCLPS2 | File | 2.79 KB | 0644 |
|
Fontmap | File | 109 B | 0644 |
|
Fontmap.GS | File | 11.79 KB | 0644 |
|
cidfmap | File | 2.11 KB | 0644 |
|
gs_agl.ps | File | 212.91 KB | 0644 |
|
gs_btokn.ps | File | 11.9 KB | 0644 |
|
gs_cet.ps | File | 3.4 KB | 0644 |
|
gs_cff.ps | File | 6.71 KB | 0644 |
|
gs_cidcm.ps | File | 16.43 KB | 0644 |
|
gs_ciddc.ps | File | 8.31 KB | 0644 |
|
gs_cidfm.ps | File | 7.14 KB | 0644 |
|
gs_cidfn.ps | File | 13.22 KB | 0644 |
|
gs_cidtt.ps | File | 5.7 KB | 0644 |
|
gs_cmap.ps | File | 17.94 KB | 0644 |
|
gs_cspace.ps | File | 5.84 KB | 0644 |
|
gs_dbt_e.ps | File | 2.08 KB | 0644 |
|
gs_diskn.ps | File | 6.68 KB | 0644 |
|
gs_dpnxt.ps | File | 4.74 KB | 0644 |
|
gs_dps.ps | File | 8.15 KB | 0644 |
|
gs_dps1.ps | File | 4.57 KB | 0644 |
|
gs_dps2.ps | File | 8.28 KB | 0644 |
|
gs_dscp.ps | File | 3.85 KB | 0644 |
|
gs_epsf.ps | File | 8.62 KB | 0644 |
|
gs_fapi.ps | File | 15.13 KB | 0644 |
|
gs_fntem.ps | File | 11.04 KB | 0644 |
|
gs_fonts.ps | File | 44.83 KB | 0644 |
|
gs_frsd.ps | File | 3.07 KB | 0644 |
|
gs_icc.ps | File | 2.99 KB | 0644 |
|
gs_il1_e.ps | File | 2.66 KB | 0644 |
|
gs_img.ps | File | 24.28 KB | 0644 |
|
gs_init.ps | File | 89.73 KB | 0644 |
|
gs_l2img.ps | File | 5.74 KB | 0644 |
|
gs_lev2.ps | File | 43.65 KB | 0644 |
|
gs_ll3.ps | File | 18.51 KB | 0644 |
|
gs_mex_e.ps | File | 3.75 KB | 0644 |
|
gs_mgl_e.ps | File | 2.13 KB | 0644 |
|
gs_mro_e.ps | File | 2.45 KB | 0644 |
|
gs_pdf_e.ps | File | 1.52 KB | 0644 |
|
gs_pdfwr.ps | File | 31.68 KB | 0644 |
|
gs_res.ps | File | 40.08 KB | 0644 |
|
gs_resmp.ps | File | 21.94 KB | 0644 |
|
gs_setpd.ps | File | 38.25 KB | 0644 |
|
gs_statd.ps | File | 13.6 KB | 0644 |
|
gs_std_e.ps | File | 3.07 KB | 0644 |
|
gs_sym_e.ps | File | 3.03 KB | 0644 |
|
gs_trap.ps | File | 2.85 KB | 0644 |
|
gs_ttf.ps | File | 61.82 KB | 0644 |
|
gs_typ32.ps | File | 4.45 KB | 0644 |
|
gs_typ42.ps | File | 1.98 KB | 0644 |
|
gs_type1.ps | File | 12.12 KB | 0644 |
|
gs_wan_e.ps | File | 1.53 KB | 0644 |
|
pdf_base.ps | File | 50.68 KB | 0644 |
|
pdf_draw.ps | File | 166.95 KB | 0644 |
|
pdf_font.ps | File | 88.77 KB | 0644 |
|
pdf_main.ps | File | 120.23 KB | 0644 |
|
pdf_ops.ps | File | 71.77 KB | 0644 |
|
pdf_rbld.ps | File | 18.96 KB | 0644 |
|
pdf_sec.ps | File | 24.15 KB | 0644 |
|
xlatmap | File | 1.73 KB | 0644 |
|