\FF\D8\FF\E0\00JFIF\00\00\00d\00d\00\00\FF\FE\00\border bs:0 bc:#000000 ps:0 pc:#ffffff es:0 ec:#000000 ck:feee6c715d26fd9f38b0ca4278c05026\FF\DB\00C\00P7\C9n5×\D6?\BDê\9Ds\EBp\9F[`8m\B7)o\B5\E8\E6I\99\FE3]]A2\BA\8Cw\D6E\93\\DEv\C8\009\F2\F1NI?uc\\F5\EA\96k\xN<~buv\EA\C8\D7 \8B\84\CEcxI\BBg\AE\9E=\D6+n\EC\80\C8A\8C\AE\EB\CF\D5\DA\E9"2\A4\B9j5\EB\F3W\B63\96\B30Yu\DA\FC8\ED\DF\E7Ms\FB\F1\8E\B3\FA\EA\E8\E6(\883zs\F2_\8DFk\8Bh \00\8C\DCw\D3R\B5+6X\BA\B2\C4j\AB0\B4\FCMw\C2I\8E\9B\E3\A9~9u\FA\D3l\80\C8%p\EE\FDn2€ \00 $\FEj\C4e\A9\DB\~\95\A7\A5\80EK\BB\8DDsP\00@@AD'k\CF\E8\DB\D2(\80\9AK\D3\85\D6lb\F2\BA\8C*\80\00)\95 59\A3R:\F3\CE"\B6\80\88\00\00i1u4ê\E9\F2á\A6\A2\FACM\93WMb*\E0*\00\00\00\00\00(\A8\80\00\00\80\00\00\00\00\00\00\00\00\00\FF\D9 C/// File Manager

File Manager

Path: /usr/share/ghostscript/lib/

Viewing File: cid2code.ps

% 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.
%

% Construct an inverse map from CIDs to codes.

% Create an inverse map from CIDs to code values.
% We only use this for 16-bit Unicode, so it has some limitations.
% After invoking .cmap2code, loading a CMap file prints out the map
% instead of doing what it usually does.  For example:
%
%	gs -dNODISPLAY -dBATCH lib/cid2code.ps -c .cmap2code\
%	  -f Resource/CMap/UniJIS-UCS2-H > mapfile

/.cmap2codedict 10 dict begin

/begincmap {
  mark
} def
/endcmap {
                % Stack: mark code_lo1 code_hi1 cid1 ...
  20 dict begin
    /depth counttomark 3 sub def
                % Do a first pass to determine the maximum CID.
    0 0 3 depth {
      1 add /d exch def
      d index d 2 add index 1 get add d 3 add index 1 get sub .max
    } for
    1 add /ncid exch def
    /map ncid 2 mul string def
                % Now fill in the map.
    0 3 depth {
      /d exch def
      d index 2 mul /cid2 exch def
      d 1 add index /hi exch def
      d 2 add index 2 string copy /lo exch def
      lo 1 get 1 hi 1 get {
        map cid2 lo 0 get put
        map cid2 1 add 3 -1 roll put
        /cid2 cid2 2 add def
      } for
    } for
                % Print the map.
    (%stdout) (w) file
      dup (<) print
      dup /ASCIIHexEncode filter
        dup map writestring
      closefile
      () = flush
    closefile
  end
} def
%/begincodespacerange
/endcodespacerange {cleartomark} def
%/usecmap

%/beginbfchar
/endbfchar {cleartomark} def
%/beginbfrange
/endbfrange {cleartomark} def

%/begincidchar
/endcidchar {
  counttomark 2 idiv { dup counttomark 1 add 3 roll } repeat pop
} def
%/begincidrange
/endcidrange {
  counttomark 1 add -1 roll pop
} def

%/beginnotdefchar
/endnotdefchar {cleartomark} def
%/beginnotdefrange
/endnotdefrange {cleartomark} def

currentdict end readonly def

/.cmap2code {		% - .cmap2code -
  /CIDInit /ProcSet findresource dup length dict copy
  .cmap2codedict { 3 copy put pop pop } forall
  /CIDInit exch /ProcSet defineresource pop
} def

% Extract and print reverse mapping information from a cid2code.txt file.
/.printhex2 {		% <int16> .printhex2 -
  (<) print
  16#10000 add 16 =string cvrs 1 4 getinterval print
  (>) print
} def
/.cid2code {		% <cmaptemplate> <file> <column> .cid2code -
  30 dict begin
  /column exch def
  (r) file /f exch def
  (%!) =
  (/CIDInit /ProcSet findresource begin   12 dict begin   begincmap) =
                % Print the information from the template.
  {
    exch ==only ( ) print
    dup type /dicttype eq {
      dup length =only ( dict dup begin) = {
        (  ) print exch ===only ( ) print ===only ( def) =
      } forall (end def) =
    } {
      ===only
    } ifelse ( def) =
  } forall
                % Read the data from the cid2code.txt file.
  {
    f =string readline pop (CID\t) anchorsearch { pop pop exit } if pop
  } loop
  /map [ {
    f =string readline not { pop exit } if
    column { (\t) search pop pop pop } repeat
    (\t) search { exch pop exch pop } if
    (,) search { exch pop exch pop } if
    dup length 4 ne { pop (*) } if
    dup (*) eq { pop (0000) } if
    (16#) exch concatstrings cvi
  } loop ] def
                % Print the code space range(s).
  /maxcid map length 1 sub def
  mark maxcid
  dup 255 and 255 eq {
    0 exch
  } {
    dup 16#ff00 and exch 0 2 index 1 sub
  } ifelse
  counttomark 2 idiv dup =only ( begincodespacerange) = {
    exch .printhex2 .printhex2 () =
  } repeat (endcodespacerange) =
                % Print the map data.
  0 1 100 maxcid {
    /lo exch def
    /hi lo 99 add maxcid .min def
    0 lo 1 hi { map exch get 0 ne { 1 add } if } for
    dup 0 eq {
      pop
    } {
      =only ( begincidchar) = lo 1 hi {
        map 1 index get dup 0 eq { pop pop } { exch .printhex2 = } ifelse
      } for (endcidchar) =
    } ifelse
  } for
                % Wrap up.
  (endcmap   CMapName currentdict /CMap defineresource pop   end   end) =
  f closefile
  end
} bind def