% Copyright (C) 1990, 1992 Aladdin Enterprises. All rights reserved. % % This file is part of Aladdin Ghostscript. % % Aladdin Ghostscript is distributed with NO WARRANTY OF ANY KIND. No author % or distributor accepts any responsibility for the consequences of using it, % or for whether it serves any particular purpose or works at all, unless he % or she says so in writing. Refer to the Aladdin Ghostscript Free Public % License (the "License") for full details. % % Every copy of Aladdin Ghostscript must include a copy of the License, % normally in a plain ASCII text file named PUBLIC. The License grants you % the right to copy, modify and redistribute Aladdin Ghostscript, but only % under certain conditions described in the License. Among other things, the % License requires that the copyright notice and this notice be preserved on % all copies. % pcharstr.ps % Print the CharStrings and Subrs (if present) from a Type 1 font, % in symbolic form. % Load the Type 1 utilities. (type1ops.ps) run /printcs { dup type /stringtype eq { printcs1 (\n) print } { ( ) print == } ifelse } bind def /printcs1 { save exch 4330 exch dup length string .type1decrypt exch pop dup length lenIV sub lenIV exch getinterval 0 () /SubFileDecode filter mark exch charstack_read counttomark 1 sub -1 0 { index ( ) print ==only } for cleartomark restore } bind def /pfbbox 4 array def /printfont { currentfont begin Private begin 10 dict begin % Print the CharStrings and Subrs CharStrings { exch ==only printcs } forall /Subrs where { pop % the dictionary 0 1 Subrs length 1 sub { dup =only Subrs exch get printcs } for } if % Print the bounding boxes gsave nulldevice FontMatrix matrix invertmatrix concat 0 1 Encoding length 1 sub { dup Encoding exch get dup /.notdef eq { pop pop } { 1 index =only ( ) print ==only ( ) print ( ) dup 0 4 -1 roll put newpath 0 0 moveto false charpath pathbbox pfbbox astore == } ifelse } for grestore end end end } bind def