JFIF$        dd7 

Viewing File: /usr/share/ghostscript/Resource/Init/gs_cidtt.ps

% 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 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
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg