summaryrefslogtreecommitdiff
path: root/fonts/genealogy/drgen.mf
blob: 10c0f42454c4271660d258d3f7d6f3c5330c8f52 (plain)
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
% drgen.mf
% D. Roegel, 20 april 1996
% Adapted from rsym.mf and gen.mf

cmchar "female";
beginchar(hex"19",x_height#+2u#,1.7x_height#-desc_depth#,desc_depth#);
italcorr 1/2x_height#*slant;
adjust_fit(if monospace: u#,u# else: 0,0 fi);
pickup rule.nib; autorounded;
lft x6=hround u; x8=good.x (.5x_height + u);
y6 = good.y (h-.5x_height); y8-y4=x2-x6;
circle_points;
x9 := x8;
numeric a; a = round .5(h+d-x_height) + eps;
x10=x8-a;
x11=x8+a;
y10 = y11; y11 = -d+a;
y9 = -desc_depth;
draw_circle;
draw z10--z11; draw z4--z9;
math_fit(0,ic#);
labels(1,2,3,4,5,6,7,8,9,10,11); endchar;

cmchar "male";
numeric this_size#;
this_size# = x_height#*(1+0.9/sqrt2);
beginchar(hex"1A",this_size#+1.7u#,this_size#,0);
italcorr this_size#*slant;
adjust_fit(if monospace: u#,u# else: 0,0 fi);
pickup rule.nib; autorounded;
lft x6=hround u; x2=x_height+2u-x6; y2=.5x_height; bot y4=0;
circle_points;
z9 = 1.9[z5,z1];
draw_circle;
x9 := good.x x9;
y9 := good.y y9;
x10 = x9;    y11 = y9;
y10 = y9-3.5u; x11 = x9-3.5u;
draw z1--z9;
draw z10--z9--z11;
labels(1,2,3,4,5,6,7,8,9); endchar;

cmchar "Cross (death symbol)";
beginchar("d",9u#,.65[x_height#,asc_height#],.1(asc_height#-x_height#));
adjust_fit(0,0); pickup tiny.nib; light_stem=Vround .5[vair,stem];
pos1(stem,0); pos2(.4[hair,stem],0); pos3(stem,0);
%pos4(stem,90); pos5(.5[vair,stem],90); pos6(stem,90);
pos4(light_stem,90); pos5(.5[vair,light_stem],90); pos6(light_stem,90);
x1=x2=x3=.5w; top y1=h; bot y3=-d; y2=y4r;
y4=y5=y6; y4l=good.y .6[-d,h]; x4=good.x u; x6=r-x4; x5=x2;
filldraw z1l...z2l{down}...z3l--z3r...z2r{up}...z1r--cycle; % vertical stroke
filldraw z4l...z5l...z6l--z6r...z5r...z4r--cycle; % horizontal stroke
penlabels(1,2,3,4,5,6); endchar;

cmchar "Rings (marriage symbol)";
beginchar("m",9u#,v_center(x_height#));
adjust_fit(0,0); pickup tiny.nib;
numeric light_stem; light_stem=Vround .5[vair,stem];
pos1(light_stem,90); pos3(light_stem,-90);
pos2(light_stem,180); pos4(.3[hair,light_stem],0);
x1=x3=.5[x2,x4]; lft x2r=hround(-u-.5light_stem); rt x4r=hround(.6w+.5stem);
%top y1r=vround(h+.5light_stem); y2=y4=.5[y1,y3];
%bot y3r=vround(-d-.5light_stem);
top y1r=h; y2=y4=.5[y1,y3];
bot y3r=-d;
pos5(light_stem,90); pos7(light_stem,-90);
pos6(.3[hair,light_stem],180); pos8(light_stem,0);
x5-x1=x6-x2=x7-x3=x8-x4; rt x8r=hround(w+u+.5light_stem);
y5-y1=y6-y2=y7-y3=y8-y4=0;
filldraw stroke pulled_arc.e(1,2)&pulled_arc.e(2,3)&pulled_arc.e(3,4)
 &pulled_arc.e(4,1); % left ring
filldraw stroke pulled_arc.e(5,6)&pulled_arc.e(6,7)&pulled_arc.e(7,8)
 &pulled_arc.e(8,5); % right ring
penlabels(1,2,3,4,5,6,7,8); endchar;

cmchar "Five-pointed star (birth symbol)";
beginchar("b",9u#,v_center(x_height#));
adjust_fit(0,0); pickup tiny.nib;
numeric theta; theta=360/5; % degrees between points
pos0(curve,0); pos1(rule_thickness,90); x0=x1=good.x .5w;
top y1r=vround(math_axis+.5x_height+.5rule_thickness);
ypart(.5[z1,z0+(z1-z2) rotated 2theta])=math_axis;
pos2(curve,theta); pos3(rule_thickness,90+theta);
z2=z0; z3-z0=(z1-z0) rotated theta;
z4=whatever[z0l,z1r]=whatever[z2r,z3r];
filldraw for n=0 upto 4:
 z0+(z1r-z0)rotated(n*theta)--z0+(z4-z0)rotated(n*theta)--endfor
 cycle;  % star
penlabels(0,1,2,3,4); endchar;

cmchar "Divided rings (divorce symbol)";
beginchar("1",9u#,v_center(x_height#));
adjust_fit(0,0); pickup tiny.nib;
numeric light_stem; light_stem=Vround .5[vair,stem];
pos11(stem,0); pos12(.4[hair,stem],0); pos13(stem,0);
x11=x12=x13=.5w; top y11=round 1.3h; bot y13=round(-d-.3h); y12=.6[y13,y11];
filldraw z11l...z12l{down}...z13l
  --z13r...z12r{up}...z11r--cycle; % vertical stroke
pos1(light_stem,90); pos3(light_stem,-90);
pos2(light_stem,180); pos4(.3[hair,light_stem],0);
x1=x3=.5[x2,x4]; lft x2r=hround(-3u-.5light_stem); rt x4r=hround(.25w+.5stem);
top y1r=h; y2=y4=.5[y1,y3];
bot y3r=-d;
pos5(light_stem,90); pos7(light_stem,-90);
pos6(.3[hair,light_stem],180); pos8(light_stem,0);
x5-x1=x6-x2=x7-x3=x8-x4; rt x8r=hround(w+3u+.5light_stem);
y5-y1=y6-y2=y7-y3=y8-y4=0;
filldraw stroke pulled_arc.e(1,2)&pulled_arc.e(2,3)&pulled_arc.e(3,4)
 &pulled_arc.e(4,1); % left ring
filldraw stroke pulled_arc.e(5,6)&pulled_arc.e(6,7)&pulled_arc.e(7,8)
 &pulled_arc.e(8,5); % right ring
penlabels(1,2,3,4,5,6,7,8,11,12,13); endchar;

cmchar "Leaf";
beginchar("l",18u#,asc_height#,0);
adjust_fit(0,0); pickup pencircle scaled .6rule_thickness;
z1=(0,0); z2=(w,h);
z3=.5[z1,z2]+.25((z2-z1)rotated 90);
z4=.5[z1,z2]+.25((z2-z1)rotated-90);
path p[]; p3=z1...z3{z2-z1}...z2; p4=z1...z4{z2-z1}...z2;
draw p3; % upper edge
draw p4; % lower edge
draw z1 -- z2; % stem
z5=1/4[z1,z2]; z6=.55[z1,z2];
z35=p3 intersectionpoint (z5--(x5,2h));
z36=p3 intersectionpoint (z6--(x6,2h));
z45=p4 intersectionpoint (z5--(2w,y5));
z46=p4 intersectionpoint (z6--(2w,y6));
draw z35--z5--z45; % vein
draw z36--z6--z46; % vein
labels(1,2,3,4,5,6,35,36,45,46); endchar;