diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 16:53:33 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 16:53:33 +0300 |
commit | e463eb40363ff4c68b1d903f4e0cdd0ac1c5977f (patch) | |
tree | d5e9f57c28f026cb21de3bd77cc10cd7f64aaa85 /sys/lib/ghostscript/pcharstr.ps | |
parent | b41b9034225ab3e49980d9de55c141011b6383b0 (diff) |
Import sources from 2011-03-30 iso image - sys/lib
Diffstat (limited to 'sys/lib/ghostscript/pcharstr.ps')
-rwxr-xr-x | sys/lib/ghostscript/pcharstr.ps | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/sys/lib/ghostscript/pcharstr.ps b/sys/lib/ghostscript/pcharstr.ps new file mode 100755 index 000000000..d0f812b9a --- /dev/null +++ b/sys/lib/ghostscript/pcharstr.ps @@ -0,0 +1,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,v 1.4 2002/02/21 21:49:28 giles 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 |