summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlgs/lib/uninfo.ps
diff options
context:
space:
mode:
authorReinhard Kotucha <reinhard.kotucha@web.de>2010-05-12 19:25:45 +0000
committerReinhard Kotucha <reinhard.kotucha@web.de>2010-05-12 19:25:45 +0000
commitdc55d4f5cde421a3704c183bc6ceb3fcdb6b0653 (patch)
treedb0890c2f5f2714d527a42ad3fb7955ac5b1f545 /Master/tlpkg/tlgs/lib/uninfo.ps
parent053ead4487e776b05721ec15b941fe0bc1b7d513 (diff)
tlgs: 8.70 => 8.71
git-svn-id: svn://tug.org/texlive/trunk@18215 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/tlgs/lib/uninfo.ps')
-rw-r--r--[-rwxr-xr-x]Master/tlpkg/tlgs/lib/uninfo.ps440
1 files changed, 220 insertions, 220 deletions
diff --git a/Master/tlpkg/tlgs/lib/uninfo.ps b/Master/tlpkg/tlgs/lib/uninfo.ps
index 49de744c08c..92a0e9e97e5 100755..100644
--- a/Master/tlpkg/tlgs/lib/uninfo.ps
+++ b/Master/tlpkg/tlgs/lib/uninfo.ps
@@ -1,220 +1,220 @@
-%!
-% Copyright (C) 1997 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: uninfo.ps 6300 2005-12-28 19:56:24Z giles $
-% uninfo.ps: Utilities for "printing" PostScript items, especially dictionaries
-% Usage:
-% (prefix-string) dict unprint
-
-% Maximum Print-Width
-/HSpwidth 80 def
-
-% any HScvs string
-/HScvs {
-% Number-Syntax
- dup type % stack: any /anytype
- dup /integertype eq 1 index /realtype eq or { pop
- 16 string cvs
- }{
-% Logical-Type
- dup /booleantype eq { pop
- 5 string cvs
- }{
-% Identifiers
- dup /nametype eq { pop
- dup length 1 add string
- dup 0 (/) putinterval
- exch 1 index 1 1 index length 1 sub getinterval cvs pop
- }{
-% Strings
- dup /stringtype eq { pop
-% ------- Compute Length
- 2 1 index { % stack: str len item
- dup 32 lt 1 index 126 gt or { % need 4
- pop 4 add
- }{
- dup 40 eq 1 index 41 eq or 1 index 92 eq or {
- pop 2 add
- }{
- pop 1 add
- } ifelse
- } ifelse
- } forall
-% ------- Allocate & Fill String
- string dup 0 (\() putinterval 1
- 3 -1 roll { % outstr pos item
- dup 32 lt 1 index 126 gt or {
- dup 7 le {
- 2 index 2 index (\\00) putinterval
- 8 3 index 3 index 3 add 1 getinterval cvrs
- }{
- dup 63 le {
- 2 index 2 index (\\0) putinterval
- 8 3 index 3 index 2 add 2 getinterval cvrs
- }{
- 2 index 2 index (\\) putinterval
- 8 3 index 3 index 1 add 3 getinterval cvrs
- } ifelse
- } ifelse
- pop 4 add
- }{
- dup 40 eq 1 index 41 eq or 1 index 92 eq or {
- 2 index 2 index (\\) putinterval
- exch 1 add exch
- } if
- 2 index exch 2 index exch put
- 1 add
- } ifelse
- } forall
- 1 index exch (\)) putinterval
- }{ exch pop
- dup length 1 add string
- dup 0 (-) putinterval
- exch 1 index 1 1 index length 1 sub getinterval cvs pop
- dup dup length 4 sub (-) putinterval
- 0 1 index length 3 sub getinterval
- } ifelse
- } ifelse
- } ifelse
- } ifelse
-} bind def
-
-% int HSpindent - indent-spaces
-/HSpindent {
- dup 0 gt {
- 1 1 3 -1 roll { pop ( ) print } for
- }{
- pop
- } ifelse
-} bind def
-
-% indent array HSaprint -> Print an Array
-/HSaprint {
- dup type /arraytype eq {
- ( [) print
- exch 1 add dup 1 add
- 3 -1 roll { % rind pos item
- HScvs dup length % rind pos str len
- dup 3 index add HSpwidth ge {
- (\n) print
- 3 index HSpindent
- 3 -1 roll pop
- 2 index add
- exch
- }{
- ( ) print
- 2 index add 1 add
- 3 -1 roll pop
- exch
- } ifelse
- print
- } forall
- ( ]) print
- pop pop
- }{
- ( ) print
- HScvs print pop
- } ifelse
- (\n) print
-} bind def
-
-% dict HSdnames dict names (creates sorted name-strings)
-/HSdnames {
-% Build namelist, stack: dic
- dup length 0 eq {
- []
- }{
- [ 1 index {
- pop dup type /nametype eq {
- dup length string cvs
- }{
- pop
- } ifelse
- } forall
- ]
-% Sort the namelist, stack: dic nam
- 0 1 2 index length 2 sub { % stack: dic nam I
- 2 copy get % stack: pre dic nam I nam[I]
- 1 index 1 add 1 4 index length 1 sub { % stack: dic nam I nam[I] J
- 3 index 1 index get % dic nam I S[I] J S[J]
- 2 index 1 index gt { % swap them
- 4 index 2 index 4 index put
- 4 index 4 index 2 index put
- 3 1 roll
- } if
- pop pop
- } for
- pop pop
- } for
- } ifelse
-} bind def
-
-% string:prefix dict:which unprint
-/unprint {
- HSdnames % pre dic nam
-% compute the maximum length
- 0 1 index { % pre dic nam maxlen nam[I]
- length 2 copy lt { exch } if pop
- } forall
-% Print out all the items, stack: pre dic nam maxlen
- (\n) print
- exch { % pre dic maxlen nam[I]
-% no prefix yet, -> flush right
- 3 index length 0 eq {
- dup length 2 index exch sub HSpindent
- }{
- 3 index print (/) print
- } ifelse
-% print the name
- dup print
-% prefix: fill up with blanks
- 3 index length 0 ne {
- dup length 2 index exch sub HSpindent
- } if
-% now print the item itself, stack: pre dic maxlen nam[I]
- 2 index 1 index cvn get dup type % stack: pre dic maxlen nam[i] item typ
-% Dict-Syntax
- dup /dicttype eq { pop % stack: pre dic maxlen nam[i] item
- ( ) print dup HScvs print
- 4 index length 0 eq { % brand new prefix
- 2 index string 0 1 5 index 1 sub { 1 index exch 32 put } for
- dup 4 index 4 index length sub 5 -1 roll putinterval
- }{
- 4 index length 1 add 2 index length add string
- dup 0 7 index putinterval
- dup 6 index length (/) putinterval
- dup 6 index length 1 add 5 -1 roll putinterval
- } ifelse
- exch unprint
- }{
- 3 -1 roll pop % tack: pre dic maxlen item typ
-% Array-Syntax
- dup /arraytype eq { pop % stack: pre dic maxlen item
- 3 index length dup 0 ne { 1 add } if 2 index add
- exch HSaprint
- }{ pop
- ( ) print
- HScvs print
- (\n) print
- } ifelse
- } ifelse
- } forall
- pop pop length -1 eq { (\n) print } if
-} bind def
-
-/currentpagedevice where { % check for currentpagedevice
- /currentpagedevice get exec () exch unprint
-} if
+%!
+% Copyright (C) 1997 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: uninfo.ps 6300 2005-12-28 19:56:24Z giles $
+% uninfo.ps: Utilities for "printing" PostScript items, especially dictionaries
+% Usage:
+% (prefix-string) dict unprint
+
+% Maximum Print-Width
+/HSpwidth 80 def
+
+% any HScvs string
+/HScvs {
+% Number-Syntax
+ dup type % stack: any /anytype
+ dup /integertype eq 1 index /realtype eq or { pop
+ 16 string cvs
+ }{
+% Logical-Type
+ dup /booleantype eq { pop
+ 5 string cvs
+ }{
+% Identifiers
+ dup /nametype eq { pop
+ dup length 1 add string
+ dup 0 (/) putinterval
+ exch 1 index 1 1 index length 1 sub getinterval cvs pop
+ }{
+% Strings
+ dup /stringtype eq { pop
+% ------- Compute Length
+ 2 1 index { % stack: str len item
+ dup 32 lt 1 index 126 gt or { % need 4
+ pop 4 add
+ }{
+ dup 40 eq 1 index 41 eq or 1 index 92 eq or {
+ pop 2 add
+ }{
+ pop 1 add
+ } ifelse
+ } ifelse
+ } forall
+% ------- Allocate & Fill String
+ string dup 0 (\() putinterval 1
+ 3 -1 roll { % outstr pos item
+ dup 32 lt 1 index 126 gt or {
+ dup 7 le {
+ 2 index 2 index (\\00) putinterval
+ 8 3 index 3 index 3 add 1 getinterval cvrs
+ }{
+ dup 63 le {
+ 2 index 2 index (\\0) putinterval
+ 8 3 index 3 index 2 add 2 getinterval cvrs
+ }{
+ 2 index 2 index (\\) putinterval
+ 8 3 index 3 index 1 add 3 getinterval cvrs
+ } ifelse
+ } ifelse
+ pop 4 add
+ }{
+ dup 40 eq 1 index 41 eq or 1 index 92 eq or {
+ 2 index 2 index (\\) putinterval
+ exch 1 add exch
+ } if
+ 2 index exch 2 index exch put
+ 1 add
+ } ifelse
+ } forall
+ 1 index exch (\)) putinterval
+ }{ exch pop
+ dup length 1 add string
+ dup 0 (-) putinterval
+ exch 1 index 1 1 index length 1 sub getinterval cvs pop
+ dup dup length 4 sub (-) putinterval
+ 0 1 index length 3 sub getinterval
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+} bind def
+
+% int HSpindent - indent-spaces
+/HSpindent {
+ dup 0 gt {
+ 1 1 3 -1 roll { pop ( ) print } for
+ }{
+ pop
+ } ifelse
+} bind def
+
+% indent array HSaprint -> Print an Array
+/HSaprint {
+ dup type /arraytype eq {
+ ( [) print
+ exch 1 add dup 1 add
+ 3 -1 roll { % rind pos item
+ HScvs dup length % rind pos str len
+ dup 3 index add HSpwidth ge {
+ (\n) print
+ 3 index HSpindent
+ 3 -1 roll pop
+ 2 index add
+ exch
+ }{
+ ( ) print
+ 2 index add 1 add
+ 3 -1 roll pop
+ exch
+ } ifelse
+ print
+ } forall
+ ( ]) print
+ pop pop
+ }{
+ ( ) print
+ HScvs print pop
+ } ifelse
+ (\n) print
+} bind def
+
+% dict HSdnames dict names (creates sorted name-strings)
+/HSdnames {
+% Build namelist, stack: dic
+ dup length 0 eq {
+ []
+ }{
+ [ 1 index {
+ pop dup type /nametype eq {
+ dup length string cvs
+ }{
+ pop
+ } ifelse
+ } forall
+ ]
+% Sort the namelist, stack: dic nam
+ 0 1 2 index length 2 sub { % stack: dic nam I
+ 2 copy get % stack: pre dic nam I nam[I]
+ 1 index 1 add 1 4 index length 1 sub { % stack: dic nam I nam[I] J
+ 3 index 1 index get % dic nam I S[I] J S[J]
+ 2 index 1 index gt { % swap them
+ 4 index 2 index 4 index put
+ 4 index 4 index 2 index put
+ 3 1 roll
+ } if
+ pop pop
+ } for
+ pop pop
+ } for
+ } ifelse
+} bind def
+
+% string:prefix dict:which unprint
+/unprint {
+ HSdnames % pre dic nam
+% compute the maximum length
+ 0 1 index { % pre dic nam maxlen nam[I]
+ length 2 copy lt { exch } if pop
+ } forall
+% Print out all the items, stack: pre dic nam maxlen
+ (\n) print
+ exch { % pre dic maxlen nam[I]
+% no prefix yet, -> flush right
+ 3 index length 0 eq {
+ dup length 2 index exch sub HSpindent
+ }{
+ 3 index print (/) print
+ } ifelse
+% print the name
+ dup print
+% prefix: fill up with blanks
+ 3 index length 0 ne {
+ dup length 2 index exch sub HSpindent
+ } if
+% now print the item itself, stack: pre dic maxlen nam[I]
+ 2 index 1 index cvn get dup type % stack: pre dic maxlen nam[i] item typ
+% Dict-Syntax
+ dup /dicttype eq { pop % stack: pre dic maxlen nam[i] item
+ ( ) print dup HScvs print
+ 4 index length 0 eq { % brand new prefix
+ 2 index string 0 1 5 index 1 sub { 1 index exch 32 put } for
+ dup 4 index 4 index length sub 5 -1 roll putinterval
+ }{
+ 4 index length 1 add 2 index length add string
+ dup 0 7 index putinterval
+ dup 6 index length (/) putinterval
+ dup 6 index length 1 add 5 -1 roll putinterval
+ } ifelse
+ exch unprint
+ }{
+ 3 -1 roll pop % tack: pre dic maxlen item typ
+% Array-Syntax
+ dup /arraytype eq { pop % stack: pre dic maxlen item
+ 3 index length dup 0 ne { 1 add } if 2 index add
+ exch HSaprint
+ }{ pop
+ ( ) print
+ HScvs print
+ (\n) print
+ } ifelse
+ } ifelse
+ } forall
+ pop pop length -1 eq { (\n) print } if
+} bind def
+
+/currentpagedevice where { % check for currentpagedevice
+ /currentpagedevice get exec () exch unprint
+} if