1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
%=== xslhd.mf ============================================================
% ick 96-08-24 modified to be "dashed" (each modification marked with WpH or ick ).
% mods a la mods in xslhu.mf by WpH
% ick 98-05-22 changed constants for gap, dash, pointendl, bluntendl
%
thick#:=1pt#;
stepwidth#:=designsize/8;
define_pixels(stepwidth);
define_blacker_pixels(thick);
picture save_pic;
numheights:=16;
numlengths:=8;%(12-96pt)
gap:=thick; %was 1.5; WpH length of space between dashes. ick
dash:=1.6thick; % 2.5; WpH length of each middle dash. ick
pointendl:=-0.00dash; % -1.0; WpH length of first dash near point end.
bluntendl:=-0.00thick; % -0.5; WpH length of last dash near blunt end.
if unknown makedotted: makedotted:=0; fi % WpH
path outerpath, innerpath;
code=-1;
for j=1 upto numlengths:
slength#:=j*12pt#;
define_pixels(slength);
for i=1 upto numheights:
beginchar(incr code, slength#, 0, 0);
x1=y1=0;x2=slength;y2= i*stepwidth;
end_angle:=min(2angle(z2-z1),90);
penpos1(thick,90);
penpos2(max(1,.15thick),min(2angle(z2-z1)+90,180));
outerpath:=z1r{dir(1)}..{dir(end_angle-1)}z2r; %ick
innerpath:=z2l{dir(end_angle-180)}..z1l{left}; %ick
fill outerpath--innerpath--cycle; %WpH created names for
% outer and inner paths.
%
% WpH start of added block to make gaps.
if makedotted<>1:
% variable makedotted has not been given a value.
% Dotted lines will not be made.
else:
cullit;
mw:=abs(x2,y2); %approximate length of curve.
tcount:=(mw-pointendl-bluntendl)/(gap+dash); % number of gaps.
tcount:=floor(tcount + .5); %round to nearest int number.
tinc:=((mw-pointendl-bluntendl)/tcount)/mw;
pickup pencircle scaled gap;
for k=0 upto tcount-1:
t:= (pointendl + .5gap)/mw + k*tinc;
undraw (point t of outerpath)..
(point (1-t) of innerpath); % for "90 degree" dash edges.
% undraw ((point t of outerpath)+(0,1.5pt))..
% ((point t of outerpath)-(0,1.5pt)); % for vertical edges.
endfor;
cullit;
fi
% WpH end of added block to make gaps.
%
save_pic:=currentpicture;
endchar;
beginchar(128+code, slength#, 0, 0);
currentpicture:=save_pic reflectedabout((.5slength,0),(.5slength, 1));
endchar;
endfor
endfor
end
|