henesyinit from p9fd787fda5 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 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. % $Id: pcharstr.ps,v 1.1 2000/03/09 08:40:40 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