beginchar("l",0.8em#,ex#,desc#) ; "The tengwa lambe" ;
 pickup main_nib ;
 x1 = straight_sidebar ; x2 = w - x1 ;
 top y1 = top y2 = round ex ;
 z1' = z1 - ( 0.04em * dir penangle) ;
 z2' = z2 + ( 0.04em * dir penangle) ;
 draw z1'{dir penangle} .. {dir penangle}z2' ;
 y3 = y1 ; x3 = 0.6[x1,x2] ; % top of bowl
 lft x4 = 2curve_sidebar ; y4 = 0.2ex ; % side of bowl
 bot y5 = -0.5 desc ; x5 = .4w ; % bottom of bowl
 x6 = w - x4 ; y6 = 0.2ex; % right side of bowl
 z7 = z6 + (0.05em *(left rotated -10)) ;
 draw z3{dir (penangle+180)} ..
      {down}z4 ..  z5{right}
      .. z6 .. {dir -penangle} z7 ;
 labels(1,2,3,4,5,6) ;
endchar ;

beginchar("I",0.8tinco_width#,ex#,0) ; "The tengwa yanta" ;
 pickup main_nib ;
 y1 = 0 ; x1 = straight_sidebar ; % bottom of left arm ;
 y2 = 0 ; x2 = w - x1 ; % bottom of right arm
 x3 = 0.5[x1,x2] ; y3 = 0.8ex ; % junction point
 top y4 = round(ex) ; z4 - z2 = whatever*(z3 - z2) ; % top of arm
 draw z4 .. z2 ;
 draw z3 .. z1 ;
 z4' = z4 + 0.05em * dir(penangle+180) ;
 z2' = z2 + 0.05em * dir(penangle) ;
 z1' = z1 + 0.05em * dir(penangle+90) ;
 draw z4'{dir penangle} .. {z2-z4}z4 ;
 draw z2'{dir (penangle+180)} .. {z4-z2}z2 ;
 draw z1'{dir(penangle-90)} .. {z3-z1}z1 ;
endchar ;

beginchar("U",0.9tinco_width#,ex#,0) ; "The tengwa ure" ;
 pickup main_nib ;
 top y1 = round(ex+o) ; x1 = 0.5w ;
 bot y3 = round(-o) ; x3 = x1 ;
 rt x2 = w - curve_sidebar = w - lft x4 ;
 y2 = y4 = 0.5h ;
 draw z1 .. z2 .. z3 .. z4 .. cycle ;
endchar ;


beginchar("s",0.9*tinco_width#,asc#,0) ; "The tengwa silme" ;
 pickup main_nib ;
 lft x4 = curve_sidebar ; y4 = 0.7ex ; % left side of bow
 bot y3 = round(-o) ; x3 = good.x 0.5w ; % bottom
 x2 = w - x4 ; y2 = 0.5ex ; % right side of bow
 x1 = good.x 0.7w ; y1 = 0.8ex ; % end of bow
 z1' = z1 + 0.03em*dir(170) ; % serif
 x5 = 0.55w ; y5 = 0.95asc ; % top end of letter
 z6 = z5 + 0.05em*(dir(penangle+80)) ; % for serif
 draw z1'{dir penangle} .. z1 .. z2 .. z3 .. z4{up} .. tension 0.9 and 1.2 .. z5  .. z6 ;
 labels(1,1',2,3,4,5,6) ;
endchar ;

beginchar("S",0.9*tinco_width#,ex#,desc#); "The tengwa silme nuquerna";
 pickup main_nib ;
 lft x2 = curve_sidebar ; y2 = 0.6 ex ; % left
 top y3 = round(ex+o) ; x3 = 0.55w ; % top
 rt x4 = w - curve_sidebar ; y4 = 0.4 ex ;
 x1 = x2 + 0.2w ; y1 = 0.25 ex ; % curly end
 x5 = x2 ; y5 = -0.9desc ;
 draw z1{dir(penangle+180)} .. z2{up} .. z3{right} ..
        z4{down} .. tension 1.2 .. z5 ;
 labels(1,2,3,4,5) ;
endchar ;

beginchar("r", romen_width#, ex#, desc#); "The tengwa romen";
 pickup main_nib ;
 x1 = straight_sidebar ; top y1 = round(0.95ex) ; % top of left arm
 bot y2 = 0.0ex ; % join at bottom
 rt x3 = w - curve_sidebar ;  y3 = 0.75ex ;% 'top' of right stem ;
 % want vectors z3-z2 and z1-z2 to be mirror images in direction
 numeric temp ;
 y3 - y2 = temp*(y1 - y2) ;
 x3 - x2 = 1.1temp*(x2 - x1) ; % not quite mirror !
 draw z1 -- z2 ;  % left arm (without serif)
 z1' = z1 + 0.05em*dir(penangle+135) ;
 draw z1'{dir penangle} .. {z2-z1}z1 ; % serif
 top y4 = round(ex - 0.2penwidth*sind penangle) ; x4 = 1/3[x2,x3] ; % end of right arm
 bot y5 = round(-0.9desc) ; x5 = 0[x2,x3] ; % bottom of tail
 y6 = -0.2desc ; x6 = 1/2[x5,x3] ; % end of tail
 path p ;
 p = z4{dir penangle} .. z3 .. tension 1 .. z2 % {dir (penangle+180)}
      .. tension 3/4 .. z5{right} .. {dir (penangle+180)}z6 ;
 draw p ;
 draw z1'{dir penangle} .. {z2-z1}z1 .. z2 ;
 labels(1,2,3,4,5,6);
 endchar ;

beginchar("&", romen_width#, ex#, desc#); "The tengwa arda";
 pickup main_nib ;
 x1 = straight_sidebar ; top y1 = round(0.95ex) ; % top of left arm
 bot y2 = 0.0ex ; % join at bottom
 rt x3 = w - curve_sidebar ;  y3 = 0.75ex ;% 'top' of right stem ;
 % want vectors z3-z2 and z1-z2 to be mirror images in direction
 numeric temp ;
 y3 - y2 = temp*(y1 - y2) ;
 x3 - x2 = 1.1temp*(x2 - x1) ; % not quite mirror !
 draw z1 -- z2 ;  % left arm (without serif)
 z1' = z1 + 0.05em*dir(penangle+135) ;
 draw z1'{dir penangle} .. {z2-z1}z1 ; % serif
 top y4 = round(ex - 0.2penwidth*sind penangle) ; x4 = 1/3[x2,x3] ; % end of right arm
 bot y5 = round(-0.9desc) ; x5 = 0[x2,x3] ; % bottom of tail
 y6 = -0.2desc ; x6 = 1/2[x5,x3] ; % end of tail
 path p ;
 p = z4{dir penangle} .. z3 .. tension 1 .. z2 % {dir (penangle+180)}
      .. tension 3/4 .. z5{right} .. {dir (penangle+180)}z6 ;
 draw p ;
 draw z1'{dir penangle} .. {z2-z1}z1 .. z2 ;
 z10 = 0.25[z2,z1] ;
 z11 = z10 + 0.2em*dir(penangle+180) ;
 z12 = z11 + 0.08em*dir(penangle-90) ;
 draw z10 .. tension 1.5 .. z11  .. tension 1.5 .. z12 ;
 labels(1,2,3,4,5,6,10,11,12);
 endchar ;

beginchar("z",0.85tinco_width#,asc#,desc#) ; "The tengwa esse" ;
 pickup main_nib ;
 % top bow first - make a path for later use
 x1 = 0.55w ; y1 = 0.95asc ; % top
 z1' = z1 + 0.05em*dir(penangle+80) ; % serif
 lft x2 = curve_sidebar ; y2 = 0.5h ; % left side of top bow ;
 x3 = 0.5w ; y3 = good.y 0.2h ; % bottom of top bow
 x4 = 0.7w ; y4 = 0.5h ; % end of bow
 z4' = z4 + 0.03em*dir(170) ; % serif
 path p ;
 p = z4'{dir penangle} .. z4 .. z3{left} .. z2{up} ..
       tension 0.9 and 1.2 .. z1 .. z1' ;
 draw p ;
 x5' = x1 ; y5'-y7 = y1-y3 ; % top of bottom bow
 x6 = x2 ; y6 - y7 = y2 - y3 ; % side
 x7 = x3 ; bot y7 = round(-0.9desc) ; % bottom
 z8 - z7 = z4 - z3 ; % end
 z8' - z8 = z4' - z4 ;
 path pa ;
 pa = z8'{dir penangle} .. z8 .. z7{left} .. z6{up} ..
        tension 0.9 and 1.2 .. z5' ;
 (t1,t2) = p intersectiontimes pa ;
 draw subpath(0,t2) of pa ;
 labels(1,2,3,4,5,6,7,8) ;
endchar ;

beginchar("Z",0.8tinco_width#,ex#,desc#) ; "The tengwa esse nuquerna" ;
 pickup main_nib ;
 y1 = 0.5h ; x1 = 0.3w ; % end of top bow
 z1' = z1 + 0.03em*dir(-10) ; % and serif
 % ignore z2 (left side) for the moment
 top y3 = round(ex+o) ; x3 = 0.5w ; % top
 rt x4 = 0.9w - curve_sidebar ; y4 = 0.65h ; % right
 y5 = -0.1desc ; lft x5 = curve_sidebar  ; %end
 path p ;
 p = z1'{dir(penangle+180)} .. z3{right} .. z4{down} ..
       tension 0.9 and 1.2 .. z5 ;
 draw p ;
 z6 = ( (0.5w,-desc) .. (0.5w,0.5ex) ) intersectionpoint p ;
 x7 = x4 ; y7 = -0.3desc ;
 x8 = x5 ; y8 = -0.9desc ;
 draw z6{dir penangle} .. z7{down} .. tension 0.9 and 2 .. z8 ;
 labels(1,2,3,4,5,6,7,8) ;
endchar ;

beginchar("h",0.8tinco_width#,asc#,0) ; "The tengwa hyarmen" ;
 pickup main_nib ;
 bot y1 = 0 ; x1 = straight_sidebar ; % bottom of left arm
 y2 = 0 ; x2 = w - x1 ; % bottom of right arm
 x3 = 0.6[x1,x2] ; y3 = 0.9ex ; % junction point
 top y4 = round (0.9asc) ; z4 - z2 = whatever*(z3-z2) ; % top of arm
 z4' = z4 + 0.08em*dir(penangle+160);
 z4'' = z4 + 0.08em*(dir(angle(z2-z4))) ;
 draw z4'{dir penangle} .. z4'' --- z2 ;
 draw z3 .. z1 ;
 z1' = z1 + 0.05em*dir(penangle+180) ;
 z2' = z2 + 0.05em*dir(penangle) ;
 draw z2'{dir(penangle+180)} .. {z4-z2}z2 ;
 draw z1'{dir(penangle-90)} .. {z3-z1}z1 ;
 labels(1,2,3,4) ;
endchar ;

beginchar("H",tinco_width#,asc#,0) ; "The tengwa hwesta sindarinwa" ;
 pickup main_nib ;
 top y1 = asc ; x1 = good.x (w - 0.2em) ;
 bot y2 = 0 ; x2 = x1 ;
 draw_telco(1,2,"t") ;
 x3 = x7 = x1 ; y3 = .75ex ; y7 = 0.1ex ;
 top y4 = round(ex+o) ;
 bot y6 = round(-o) ;
 x4 = 0.5w ;
 x6 = 0.4w ;
 y5 = 0.5ex ; x5 = curve_sidebar ;
 draw z3 .. z4{left} .. z5{down} .. z6{right} .. z7 ;
 z2' = z2 + 0.05em*dir(penangle) ;
 z2'' = z2 + 0.2em*right ;
 z2''' = z2 - 0.05em*dir(penangle+180) ;
 draw z2{dir penangle} .. z2' .. z2'' .. z2'''{dir penangle} ;
 labels(1,2,3,4,5,6,2'') ;
endchar ;

beginchar("@",0.3em#,ex#,0) ; "The short carrier" ;
 pickup main_nib ;
 top y1 = round(ex) ; y2 = 0 ;
 x1 = x2 = good.x 0.5w ;
 draw_telco(1,2,"tb") ;
endchar ;

beginchar("*",0.3em#,ex#,desc#) ; "The long carrier" ;
 pickup main_nib ;
 top y1 = round(ex) ; y2 = -0.6desc ;
 x1 = x2 = good.x 0.5w ;
 draw_telco(1,2,"t") ;
 z3 = z2 + 0.2em*dir(penangle-150) ;
 draw z2{z2-z1} .. z3{dir(penangle+180)} ;
endchar ;

beginchar("A",0.75tinco_width#,ex#,0) ; "The tengwa A" ;
 pickup main_nib ;
 top y1 = round(ex+o) ; x1 = 0.6w ;
 y3 = 0 ; x3 = x1 ;
 lft x2 = curve_sidebar ; y2 = 0.55h ;
 x4 = w - straight_sidebar ; x6 = x4+0.05em ;
 y4 = 0.75h ; y6 = 0.35h ;
 z4' = z4 + 0.03em*dir(180+penangle) ;
 draw z4'{dir penangle} .. z4 .. z1{left} .. z2{down} .. z3{right} .. z6 ;
endchar ;

beginchar("|",0.3em#,asc#,0); "The tengwa halla" ;
 pickup main_nib ;
 x1 = x2 = good.x 0.5w ;
 top y1 = asc ;
 y2 = 0 ;
 draw_telco(1,2)("tb") ;
 endchar ;

beginchar("L",0.8em#,ex#,desc#) ; "The tengwa alda" ;
 pickup main_nib ;
 x1 = straight_sidebar = w - x2 ;
 top y1 = top y2 = round ex ;
 z1' = z1 - ( 0.04em * dir penangle) ;
 z2' = z2 + ( 0.04em * dir penangle) ;
 draw z1'{dir penangle} .. {dir penangle}z2' ;
 x3 = 0.4[x1,x2] ; % top of bowl
 y3 = 0.95ex ;
 lft x4 = straight_sidebar ; y4 = 0.5ex ; % first bend
 rt x5 = w - straight_sidebar ; y5 = -0.15ex ; % second bend
 x6 = 0.65w ; bot y6 = -0.7desc ; % bottom of bowl
 x7 = 0.3w ; y7 = -0.2 ex ; % end
 draw z3{curl 0} .. tension 2 .. z4{down} .. z5{down} .. z6{left} ..
        z7{dir penangle} ;
endchar ;
beginchar("$", romen_width#, asc#, 0) ; "Inverted romen - wh" ;
 pickup main_nib ;
 x1 = w - straight_sidebar ; bot y1 = round(0.05ex) ;
 top y2 = 1.0ex ;
 lft x3 = curve_sidebar ; y3 = 0.25ex ;
 numeric temp ;
 y3 - y2 = temp*(y1 - y2) ;
 x3 - x2 = 1.1temp*(x2 - x1) ;
 draw z1 -- z2 ;
 z1' = z1 + 0.05em*dir(penangle-45) ;
 draw z1'{dir(penangle+180)} .. {z2-z1}z1 ;
 bot y4 = round(0.2penwidth*sind penangle) ; x4 = 1/3[x2,x3] ;
 top y5 = round(ex+0.9desc) ; x5 = 0[x2,x3] ;
 y6 = ex + 0.2desc ; x6 = 1/2[x5,x3] ;
 draw z4{dir(penangle+180)} .. z3 .. z2
        .. tension 3/4 .. z5{left} .. {dir penangle}z6 ;
 draw z1'{dir penangle} .. {z2 - z1}z1 .. z2 ;
 labels(1,2,3,4,5,6) ;
endchar ;

beginchar("#",0.7em#,ex#,desc#) ; "Inverted lambe - w" ;
 pickup main_nib ;
 x1 = straight_sidebar = w - x2 ;
 bot y1 = bot y2 = -0.5desc ;
 z1' = z1 - 0.04em*dir(penangle) ;
 z2' = z2 + 0.04em*dir(penangle) ;
 draw z1'{dir penangle} .. {dir penangle}z2' ;
 y3 = y1 ; x3 = 0.2[x1,x2] ;
 rt x4 = w - curve_sidebar ; y4 = 0.8ex - 0.5desc;
 top y5 = round(ex) ; x5 = 0.6w ;
 x6 = w - x4 ; y6 = y4 ;
 z7 = z6 + 0.05em*(left rotated 170) ;
 draw z3{dir penangle} .. {up}z4 .. z5{left}
      .. z6 .. {dir(180-penangle)}z7 ;
 labels(1,2,3,4,5,6,7) ;
endchar ;

beginchar("%",0.8tinco_width#,ex#,0) ; "The tengwa for u in up" ;
 pickup main_nib ;
 top y1 = ex ; rt x1 = w - straight_sidebar ;
 y2 = 0 ; x2 = x1 ;
 draw_telco(1,2)("tb") ;
 y3 = y1 ; x3 = w - x1 ;
 x4 = x3 ; y4 = 0.3h ;
 draw_telco(3,4)("t") ;
 y5 = 0 ; x5 = 0.45w ;
 x6 = x1 ; y6 = 0.3ex ;
 draw z4{z4-z3} .. z5 .. z6{dir penangle} ;
 labels(5,6) ;
endchar ;

beginchar(9,0.55em#,ex#,0) ; "The schwa tengwa (Pictures plate 48)" ;
 pickup main_nib ;
 lft x1 = lft x2 = straight_sidebar ;
 top y1 = ex ; y2 = 0 ;
 draw_telco(1,2)("tb") ;
 y3 = y1 ; rt x3 = w ; %- curve_sidebar ;
 draw_bar(1,3)("r") ;
endchar ;