% Copyright (C) 2001-2019 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 an emulation with True Type fonts. languagelevel 2 .setlanguagelevel 15 dict begin % a temporary dictionary for local binding. %------------------Copy the FontEmulationProcs here : ------------------- /FontEmulationProcs /ProcSet findresource { def } forall currentdict /super.complete_instance currentdict /complete_instance get put %-------Auxiliary procedures for building CIDFontType 2 from TT file ----------- /GenerateCIDMap % <font> GenerateCIDMap <font> { begin % Obtain the maximal CID : % This implementation doesn't check whether glyphs really present. Decoding /CIDCount get /CIDCount exch def % Prepare the CIDMap structure : /CIDMap [ CIDCount 22000 le { CIDCount 2 mul string } { 44000 string CIDCount 44000 gt { % need three strings 44000 string % 22000 2 mul string CIDCount 44000 sub 2 mul string } { CIDCount 22000 sub 2 mul string } ifelse } ifelse ] def % Now fill it : Decoding TT_cmap SubstNWP GDBytes CIDMap .fillCIDMap currentdict end } bind def /GenerateIdentityCIDMap % <font> GenerateCIDMap <font> { begin /CIDMap [ 44000 string 44000 string 44000 string] def CIDMap .fillIdentityCIDMap currentdict end } bind def /load_sfnts % <FontDict> load_sfnts <FontDict> { % Read the True Type file from the path /Path, and buld /sfnts, % skipping glyf and loca. dup /Path get % <font> (path) QUIET not { (Loading a TT font from ) print dup print ( to emulate a CID font ) print 1 index /CIDFontName get =only ( ... ) print } if (r) file dup % <font> file file 3 1 roll % file <font> file 1 index /SubfontID .knownget not { 0 } if % file <font> file SubfontID 2 index /FileType .knownget {/WOFF eq} {//false} ifelse % It's not (currently) viable to load WOFF fonts "stripped", so we don't try {.load_woff_for_cid exch copy exch pop} { .load_tt_font_stripped exch copy % file <font> QUIET not { (Done.) = } if dup 3 1 roll % <font> file <font> exch /File exch put % <font> } ifelse dup dup /CIDSystemInfo get /Ordering get (.) % <font> () () 2 index /Decoding get =string cvs % <font> () () () concatstrings concatstrings cvn /Decoding exch put % <font> dup dup /CIDSystemInfo get /Ordering get (-WMode) % <font> <font> () () concatstrings cvn /SubstCID 2 copy resourcestatus { pop pop findresource /subst_CID_on_WMode exch put % <font> } { pop pop pop } ifelse dup /Decoding get /Identity.Unicode eq { //ChooseDecoding exec % <font> //GenerateIdentityCIDMap exec % <font> } { //ChooseDecoding exec % <font> //GenerateCIDMap exec % <font> } ifelse } bind def %-----------TrueType-specific methods for category redefinition : ----------- /RefinePath % <FontDict> RefinePath <FontDict> { dup begin Path .libfile { dup .filename { currentdict exch /Path exch put } if closefile } { (r) { file } //.internalstopped exec { (Can't find the font file ) print = /findfont cvx /undefinedfilename signalerror } { dup .filename { currentdict exch /Path exch put } if closefile } ifelse } ifelse end } bind def /complete_instance % <font_name> <FontDict> <Options> complete_FAPI_Font <font_name> <FontDict> { 1 index /CIDFontType 2 put % Other types are not emulated yet. //super.complete_instance exec //RefinePath exec //load_sfnts exec } bind def /ValidFileTypes << /TrueType 0 /WOFF 0 >> def /IsMyRecord % <raw_record> -> <raw_record> bool { dup type /dicttype eq { dup /FileType .knownget { //ValidFileTypes exch known } { //false } ifelse } { //false } ifelse } bind def currentdict /ValidFileTypes undef /IsActive % <record> IsActive <bool> { pop //true } bind def /CIDFontRecordVirtualMethods //RecordVirtualMethodsStub dup length 3 add dict copy begin /GetCSI //TranslateCSI def /IsActive //IsActive def /MakeInstance % <Name> <record> MakeInstance <Name> <Instance> <size> { currentglobal 3 1 roll //true setglobal //CIDFontOptions //complete_instance exec 2 copy //GetSize exec 4 3 roll setglobal } bind def currentdict end def % Redefine the /CIDFont category : 4 dict begin /CategoryName /CIDFont def /IsMapFileOptional //true def /VerifyMap { pop } bind def /PreprocessRecord % <map> <Name> <raw_record> PreprocessRecord <map> <Name> <record> <bool> { //IsMyRecord exec dup { pop dup /RecordVirtualMethods //CIDFontRecordVirtualMethods put //true } if } bind def currentdict end /MappedCategoryRedefiner /ProcSet findresource /Redefine get exec end % the temporary dictionary for local binding. .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 | 12.63 KB | 0644 |
|
cidfmap | File | 2.11 KB | 0644 |
|
gs_agl.ps | File | 212.91 KB | 0644 |
|
gs_btokn.ps | File | 12.17 KB | 0644 |
|
gs_cet.ps | File | 4.85 KB | 0644 |
|
gs_cff.ps | File | 6.8 KB | 0644 |
|
gs_cidcm.ps | File | 16.43 KB | 0644 |
|
gs_ciddc.ps | File | 8.31 KB | 0644 |
|
gs_cidfm.ps | File | 7.15 KB | 0644 |
|
gs_cidfn.ps | File | 14.21 KB | 0644 |
|
gs_cidtt.ps | File | 5.71 KB | 0644 |
|
gs_cmap.ps | File | 18.01 KB | 0644 |
|
gs_cspace.ps | File | 3.96 KB | 0644 |
|
gs_dbt_e.ps | File | 2.08 KB | 0644 |
|
gs_diskn.ps | File | 6.71 KB | 0644 |
|
gs_dps1.ps | File | 4.64 KB | 0644 |
|
gs_dps2.ps | File | 8.56 KB | 0644 |
|
gs_dscp.ps | File | 3.85 KB | 0644 |
|
gs_epsf.ps | File | 9.2 KB | 0644 |
|
gs_fapi.ps | File | 15.26 KB | 0644 |
|
gs_fntem.ps | File | 11.04 KB | 0644 |
|
gs_fonts.ps | File | 45.73 KB | 0644 |
|
gs_frsd.ps | File | 3.08 KB | 0644 |
|
gs_icc.ps | File | 3.03 KB | 0644 |
|
gs_il1_e.ps | File | 2.66 KB | 0644 |
|
gs_img.ps | File | 23.44 KB | 0644 |
|
gs_init.ps | File | 89.44 KB | 0644 |
|
gs_lev2.ps | File | 42.79 KB | 0644 |
|
gs_ll3.ps | File | 19.13 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.69 KB | 0644 |
|
gs_res.ps | File | 41.42 KB | 0644 |
|
gs_resmp.ps | File | 21.95 KB | 0644 |
|
gs_setpd.ps | File | 37.54 KB | 0644 |
|
gs_statd.ps | File | 17.43 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.88 KB | 0644 |
|
gs_ttf.ps | File | 63.24 KB | 0644 |
|
gs_typ32.ps | File | 4.45 KB | 0644 |
|
gs_typ42.ps | File | 2.05 KB | 0644 |
|
gs_type1.ps | File | 12.25 KB | 0644 |
|
gs_wan_e.ps | File | 1.53 KB | 0644 |
|
pdf_base.ps | File | 51.31 KB | 0644 |
|
pdf_draw.ps | File | 169.33 KB | 0644 |
|
pdf_font.ps | File | 89.57 KB | 0644 |
|
pdf_main.ps | File | 124.35 KB | 0644 |
|
pdf_ops.ps | File | 72 KB | 0644 |
|
pdf_rbld.ps | File | 18.97 KB | 0644 |
|
pdf_sec.ps | File | 24.22 KB | 0644 |
|
xlatmap | File | 1.73 KB | 0644 |
|