This file is indexed.

/usr/share/ghostscript/9.05/lib/pcharstr.ps is in libgs9-common 9.05~dfsg-0ubuntu4.5.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
%    Copyright (C) 1990, 1992, 1997, 1999 Aladdin Enterprises.  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.
%
% For more information about licensing, please refer to
% http://www.ghostscript.com/licensing/. For information on
% commercial licensing, go to http://www.artifex.com/licensing/ or
% contact Artifex Software, Inc., 101 Lucas Valley Road #110,
% San Rafael, CA  94903, U.S.A., +1(415)492-9861.

% $Id$
% pcharstr.ps
% Print the CharStrings and Subrs (if present) from a Type 1 font,
% in either a PostScript-like or a C-compatible form,
% depending on whether CSFormat is defined as /PS or /C.

% Load the Type 1 utilities.
(type1ops.ps) runlibfile

% Define the printing procedures for PostScript-like output.
/pcs_ps_dict mark
  /, {( ) print}
  /charname {==only}
  /csbegin {}
  /beginchars {(%---------------- CharStrings\n) print}
  /charbegin {==only}
  /char1 {( ) print ==only}
  /endchars {}
  /beginsubrs {(%---------------- Subrs\n) print}
  /subrbegin {=only}
  /endsubrs {}
  /beginboxes {(%---------------- Encoding & metrics\n) print}
  /notdefbox {}
  /boxbegin {=only ( ) print}
  /boxend {(\n) print}
  /endboxes {(%----------------\n) print}
.dicttomark readonly def

% Define the printing procedures for C-like output.
/pcs_c_dict mark
  /, {(, ) print}
  /charname {(") print =only (") print}
  /csbegin {counttomark =only ,}
  /beginchars {(\nconstdata int CSCharData[] = {\n) print}
  /charbegin {pop}
  /char1 {=only ,}
  /endchars {
    (-1\n};\nconstdata char *CSCharNames[] = {\n) print
    CharStrings {pop charname ,} forall (0\n};\n) print
  }
  /beginsubrs {(\nconstdata int CSSubrs[] = {\n) print}
  /subrbegin {pop}
  /endsubrs {(-1\n};\n) print}
  /beginboxes {(\nconstdata type1_box CSboxes[] = {\n) print}
  /notdefbox {(  {""},\n) print}
  /boxbegin {pop (  {) print}
  /boxend {(},) =}
  /endboxes {(  {0}\n};\n) print}
.dicttomark readonly def

/printcs
 { dup type /stringtype eq
    { printcs1 (\n) print }
    { ( ) print == }
   ifelse
 } bind def
/printcs1
 { save exch
   lenIV 0 ge {
     4330 exch dup length string .type1decrypt exch pop
     dup length lenIV sub lenIV exch getinterval
   } if
   0 () /SubFileDecode filter
   mark exch charstack_read csbegin
   counttomark 1 sub -1 0 { index char1 } for
   cleartomark restore
 } bind def

/printfont
 { pcs_ps_dict
   /CSFormat where { pop CSFormat /C eq { pop pcs_c_dict } if } if
   begin
   currentfont begin Private begin 10 dict begin

        % Print the CharStrings and Subrs

   beginchars
   CharStrings { exch charbegin printcs } forall
   endchars
   /Subrs where
    { pop	% the dictionary
      beginsubrs
      0 1 Subrs length 1 sub
       { dup subrbegin
         Subrs exch get printcs
       } for
      endsubrs
    } if

        % Print the bounding boxes

   gsave nulldevice FontMatrix matrix invertmatrix concat
   beginboxes
   0 1 Encoding length 1 sub
    { dup Encoding exch get dup /.notdef eq
       { pop pop notdefbox
       }
       { 1 index boxbegin charname ,
         ( ) dup 0 4 -1 roll put
         newpath 0 0 moveto false charpath
         pathbbox ({) print 4 -1 roll =only ,
         3 -1 roll =only , exch =only , =only (}) print
         boxend
       }
      ifelse
    } for
   endboxes
   grestore

   end end end end
 } bind def