ref: 985b2457cda207c2c65edeb647aedbb6e92dac46
dir: /sys/src/cmd/gs/lib/markhint.ps/
% Copyright (C) 1994, 1995, 1996 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: markhint.ps,v 1.4 2002/02/21 21:49:28 giles Exp $ % markhint.ps % Draw the hints for a Type 1 font. (type1ops.ps) runlibfile /mhsetup % <matrix> <print> mhsetup - { /mhprint exch def /mhmx exch def /mhdash 0 9 gsave initmatrix dtransform grestore idtransform add abs def gsave clippath pathbbox 2 index sub /bbh exch def 2 index sub /bbw exch def /bby exch def /bbx exch def grestore } def /markfonthints % <matrix> <print> markfonthints - { mhsetup } def /hmark % <y> hmark - { bbx exch moveto bbw 0 rlineto stroke } def /hsmark % <y0> <dy> hsmark - { 1 index add exch gsave [mhdash] 0 setdash 0 exch mhmx transform exch pop hmark [mhdash 2 div dup 2 mul] 0 setdash 0 exch mhmx transform exch pop hmark grestore } def /vmark % <x> vmark - { bby moveto 0 bbh rlineto stroke } def /vsmark % <x0> <dx> vsmark - { 1 index add exch gsave [mhdash] mhdash setdash 0 mhmx transform pop vmark [mhdash 2 div dup 2 mul] 0 setdash 0 mhmx transform pop vmark grestore } def /pmark % <x> <y> pmark - { newpath 0 4.5 gsave initmatrix dtransform grestore idtransform add abs 0 360 arc stroke } def /mchdict mark /hsbw { pop 0 mhmx transform translate 0 0 pmark } /sbw { pop pop mhmx transform translate 0 0 pmark } /hstem { mhprint { (hstem ) print 2 copy 2 packedarray == } if hsmark } /vstem { mhprint { (vstem ) print 2 copy 2 packedarray == } if vsmark } /hstem3 { mhprint { (hstem3 ) print 6 copy 6 packedarray == } if 3 { hsmark } repeat } /vstem3 { mhprint { (vstem3 ) print 6 copy 6 packedarray == } if 3 { vsmark } repeat } /div { div } /callothersubr { 3 eq { pop mhprint { (replace) = } if % We're replacing hints; lighten the color. currentrgbcolor 3 { 2 mul 3 div 3 1 roll } repeat setrgbcolor } { { pop } repeat } ifelse } /callsubr { Private /Subrs get exch get mchinterp } /pop { } /return { } .dicttomark def /mchinterp % <charstring> mchinterp - { 4330 exch dup length string .type1decrypt exch pop dup length lenIV sub lenIV exch getinterval 0 () /SubFileDecode filter mark exch charstack_read ] { dup type /nametype eq { mchdict exch .knownget { exec } { cleartomark mark } ifelse } if } forall } def /markcharhints % <charname> <matrix> <print> markcharhints - { mhsetup gsave mark /Private currentfont /Private get def Private rcheck % make sure we won't get an access error { /lenIV Private /lenIV .knownget not { 4 } if def currentfont /CharStrings get 3 -1 roll get mchinterp } { (Sorry, this font is protected; I can't show the hints.\n) print flush exch } ifelse cleartomark grestore } def