131 lines
3.4 KiB
PostScript
131 lines
3.4 KiB
PostScript
% 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
|