henesyinit from p9f0ed2a895 years agoHistory
128 lines · 3.7 KB · Text
RawDownload
%    Copyright (C) 1990, 1992, 1997, 1999 Aladdin Enterprises.  All rights reserved.% % This file is part of AFPL Ghostscript.% % AFPL 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 Free Public License (the% "License") for full details.% % Every copy of AFPL 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 AFPL 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. % $Id: pcharstr.ps,v 1.2 2000/09/19 18:29:11 lpd Exp $% 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