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
|
cmchar "The letter yogh";
beginchar("g",9u#,x_height#,desc_depth#);
italcorr x_height#*slant-.5serif_fit#-.3u#;
adjust_fit(0,0);
numeric arm_thickness,arm_thickness#,z_stem;
arm_thickness# = .7[hair#,stem#] ;
define_whole_vertical_blacker_pixels(arm_thickness) ;
z_stem = .1[vair,stem] ;
pickup tiny.nib; rt x1r=rt x2r=hround(w-1.2u);
top y1=h; y2=min(y1,h-2/3arm_thickness);
lft x3l = hround .45w ; y3 = .7bar_height ;
numeric alpha; alpha=diag_ratio(1,z_stem-tiny,y2-y3,x2r-x3l-slant*(y2-y3));
penpos1(alpha*(z_stem-tiny),0); penpos2(alpha*(z_stem-tiny),0);
penpos3(alpha*(z_stem-tiny),0);
pair delta; delta=penoffset z3-z1 of currentpen;
fill top lft z1l--z1l+delta---z3l+delta..lft z3l
..bot z3r--z3r-delta---rt z1r..top z1r
---cycle; % diagonal
z99 = rt z1r ; z98 = z99 + (u,0) ; % for cutting away
z97 = z99 + 2u*(z3-z1) ; z96 = z97 + (u,0) ;
pickup crisp.nib; pos5(arm_thickness,90); pos6(hair,180);
top y5r=h; x5=x1; lft x6r=hround .75u; y6=good.y(y5l-beak/1.6)-eps;
arm(5,6,a,beak_darkness,-.4beak_jut); % upper arm and beak
% now cut away the excess arm
erase fill z99 --- z98 --- z96 --- z97 --- cycle ;
pickup fine.nib ;
pos10'(vair,90) ; pos11(curve,0) ;
pos12(.1[vair,curve],-90) ;
z10' - z3 = whatever*dir 30 ;
x10' = x3 + u ; x10 = x10' ; y10r = good.y y10'r ; pos10(vair,90) ;
bot y12r = -d-oo ; x12 = .5w ;
y11 = .5[y10,y12] ; rt x11r = hround(w-.9u) ;
z3' = z3 ; z3'l = z3r ; z3'r = z3l ;
filldraw stroke z3'e .. z10e{right} ;
filldraw stroke pulled_arc.e(10,11) & pulled_arc.e(11,12) ;
if serifs: pos13(hair,-180) ; y13=-.1d ; lft x13r = hround .8u ;
pos14(flare,-180) ; bulb(12,13,14) ;
else: pos13(5/7[vair,flare],angle(-3u,-h)) ;
lft x13r = hround .9u ; y13 = -.1d ;
x13l := good.x x13l ; y13l := good.y y13l ;
filldraw stroke term.e(12,13,left,1,4) ; fi
penlabels(1,2,3,4,5,6,7,8,10,11,12,13,14); endchar;
cmchar "Italic letter edh";
beginchar("d",9u#,asc_height#,0);
italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi;
adjust_fit(0,0); pickup fine.nib;
pos1(vair,90); pos2(curve,180); pos3(vair,270); pos4(curve,360);
x1=x3=.5w; lft x2r=hround(1.5u-.5curve); x4=w-x2;
top y1r=vround(x_height)+oo; y2=y4=.5[y1,y3]; bot y3r=-oo;
y4' = y4 ; x4'l = x4l ; pos4'(hair,360) ;
filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
& pulled_arc.e(3,4) -- pulled_arc.e(4',1); % bowl
pickup crisp.nib ;
pos5(.5[hair,vair],40) ; z4'' = z4 ; pos4''(curve,360) ;
x5 = 3u ; top y5r = h ;
filldraw stroke z5e .. tension 1.1 and 0.9 .. z4''e{down} ;
path p ;
p = z5 .. tension 1.1 and 0.9 .. z4{down} ;
z6 = ((0,.6[x_height,asc_height]) -- (w,.5[x_height,asc_height]))
intersectionpoint p ;
pos6'(.5[vair,hair],-60) ; pos 6''(.5[vair,hair],-60) ;
top y6''l = vround .95h ; z6'' = z6 + whatever*dir30;
z6 = .5[z6',z6''] ; filldraw stroke z6'e -- z6''e ;
math_fit(-.3x_height#*slant+.5curve#-u#,ic#); penlabels(1,2,3,4); endchar;
cmchar "Italic letter thorn";
beginchar("t",8u#,asc_height#,desc_depth#);
italcorr .7x_height#*slant+.5curve# if math_fitting:-.5u# fi;
adjust_fit(0,0); pickup fine.nib;
x0=0; x2-.5stem=hround(1.5u-.5stem); y2 = 3/4x_height; pos2(stem,0) ;
pos4(hair,-180); pos5(vair,-90); pos6(curve,0); pos7(vair,90);
x4=x2; rt x6r=hround(w-1.5u+.5curve); x5=x7=.5[x4,x6];
bot y5r=-oo; top y7r=vround(x_height)+oo; y4=y6=.5[y5,y7];
filldraw stroke super_arc.e(4,5) & pulled_arc.e(5,6)
& pulled_arc.e(6,7) & super_arc.e(7,4); % bowl
pickup tiny.nib; pos2'(stem,0); pos3(stem,0);
z2=z2'; x3=x2; bot y3=-d; filldraw stroke z2'e--z3e; % stem
dish_serif(3,2',a,1/3,.75jut,b,1/3,jut); % serif
x10 = x2 ; pos10(stem,0) ; top y10 =h ; % and top of stem
filldraw stroke z10e -- z2e ; sloped_serif.l(10,2,c,1/3,jut,serif_drop) ;
math_fit(-min(2/3x_height#*slant-.5hair#-.5u#,
2u#-.5stem#-desc_depth#*slant),ic#);
penlabels(0,1,2,3,4,5,6,7); endchar;
|