beginchar("a",0.3em#,1.5ex#,0) ; "The tehta a" ;
 pickup tehta_nib ;
 bot y1 = bot y2 = round(1.35ex) ; lft x1 = 0 = w - rt x2 ;
 y3 - y1 = round(0.45sqrt(3) * (x2 - x1)) ;
 x3 = 0.5[x1,x2] ;
 draw_dot(1) ; draw_dot(2) ; draw_dot(3) ;
endchar ;

beginchar("O",0.3em#,1.5ex#,0) ; "Inverted a tehta" ;
 pickup tehta_nib ;
 bot y3 = round(1.35ex) ; lft x1 = 0 = w - rt x2 ;
 y1 - y3 = y2 - y3 = round(0.45sqrt(3) * (x2 - x1)) ;
 x3 = 0.5[x1,x2] ;
 draw_dot(1) ; draw_dot(2) ; draw_dot(3) ;
endchar ;

beginchar(25,0.35em#,0,0.5desc#) ; "The dots for y" ; % 25 = ^^Y
 pickup tehta_nib ;
 y1 = y2 = -0.3ex ; lft x1 = 0 = w - rt x2 ;
 draw_dot(1) ; draw_dot(2) ;
endchar ;

beginchar(26,0.35em#,0,desc#) ; "Low dots for y" ; % 26 = ^^Z
 pickup tehta_nib ;
 y1 = y2 = round -0.65ex ; lft x1 = 0 = w - rt x2 ;
 draw_dot(1) ; draw_dot(2) ;
endchar ;

beginchar("i",0.1em#,1.4ex#,0) ; "The tehta i" ;
 pickup tehta_nib ;
 bot y1 = round(1.35ex) ;
 x1 = good.x (0.5w) ;
 draw_dot(1) ;
endchar ;

beginchar(5,0.1em#,0,0.5desc#) ; "The schwa tehta" ;
 pickup tehta_nib ;
 y1 = round(-0.3ex) ;
 x1 = good.x (0.5w) ;
 draw_dot(1) ;
endchar ;

beginchar("e",0.4em#,1.5ex#,0) ; "The tehta e" ;
 pickup tehta_nib ;
 y1 = round(1.3ex) ;
 y2 = (y1 + 0.3ex) ;
 lft x1 = 0 ; rt x2 = w ;
 z2' = z2 + 0.05em*dir(penangle+90) ;
 draw z1 .. tension 10 .. z2 .. {dir(penangle+90)}z2' ;
endchar ;

%beginchar("o",0.5em#,1.6ex#,0) ; "The tehta o" ;
% pickup tehta_nib ;
% y1 = round(1.3ex) ; lft x1 = 0 ;
% y2 = y1 + 0.3ex ; x2 = 0.7w ;
% rt x3 = w ; y3 = 0.7[y1,y2] ;
% x4 = x2 ; y4 = 0.3[y1,y2] ;
% draw z1 .. tension 4 and 2 .. z2 .. z3{down} .. z4 ;
%endchar ;

beginchar("o",0.45em#,1.76ex#,0) ; "The tehta o" ;
 pickup tehta_nib ;
 y1 = round(1.3ex) ; lft x1 = 0 ;
 y2 = y1 + 0.4ex ; x2 = 0.7w ;
 rt x3 = w ; y3 = 0.7[y1,y2] ;
 x4 = x2 ; y4 = 0.3[y1,y2] ;
 draw z1 .. tension 4 and 2 .. z2 .. z3{down} .. z4 ;
endchar ;

beginchar("u",0.5em#,1.9ex#,0) ; "The tehta u" ;
 pickup tehta_nib ;
 y1 = round(1.3ex) ; x1 = 0.4w ;
 rt x2 = w ; y2 = y1 + 0.5ex ;
 y3 = 1.0[y1,y2] ;
 x3 = 0.3[x1,x2] ;
 draw z1 .. tension 4 and 1.5 .. z2 .. {dir (penangle-90)}z3 ;
endchar ;

beginchar(",",0.2em#,ex#,0) ; "The point ," ;
 pickup main_nib ;
 x1 = good.x 0.5w ; y1 = good.y 0.6h ;
 draw_dot(1) ;
endchar ;

beginchar(";",0.2em#,ex#,0) ; "The point ;" ;
 pickup main_nib ;
 x1 = x2 = good.x 0.5w ;  y1 = good.y 0.2h ; y2 = good.y 0.8h ;
 draw_dot(1) ; draw_dot(2) ;
endchar ;

beginchar(".",0.5em#,ex#,0) ; "The point ." ;
 pickup main_nib ;
 y1 = y3 = good.y 0.2h ; y2 = y4 = 0.8h ;
 x1 = x2 = w - x3 = w - x4 ; x3 - x1 = y2 - y1 ;
 forsuffixes s=1,2,3,4: draw_dot(s) ; endfor ;
endchar ;

beginchar(ditto,0.35em#,1.4ex#,0) ; "The tehta two-dots-above" ;
 pickup tehta_nib ;
 y1 = y2 = round(1.35ex) ;
 lft x1 = 0 = w - rt x2 ;
 draw_dot(1) ; draw_dot(2) ;
endchar;

beginchar(2,tinco_width#,0,0.5desc#) ; "The under-bar tehta" ;
 pickup tehta_nib ;
 y1 = y2 = round(-0.3ex) ;
 lft x1 = straight_sidebar = w - rt x2 ;
 draw_bar(1,2)("rl") ;
endchar ;

beginchar(3,tinco_width#,0,desc#) ; "Low under-bar" ;
 pickup tehta_nib ;
 y1 = y2 = round(-0.65ex) ;
 lft x1 = straight_sidebar = w - rt x2 ;
 draw_bar(1,2)("rl") ;
endchar ;

beginchar(14,tinco_width#,1.5ex#,0) ; "The over-bar tehta" ;
 pickup tehta_nib ;
 y1 = y2 = round(1.2ex) ;
 lft x1 = straight_sidebar = w - rt x2 ;
 draw_bar(1,2)("rl") ;
endchar ;

beginchar(15,tinco_width#,1.6ex#,0) ; "The tilde over" ;
 pickup tehta_nib ;
 y1 = y2 = 1.35ex ;
 lft x1 = straight_sidebar = w - rt x2 ;
 z1' = z1 - ( 0.04em * dir penangle) ;
 z2' = z2 + ( 0.04em * dir penangle) ;
 draw z1'{dir penangle} .. z1 .. z2 .. {dir penangle}z2' ;
endchar ;

beginchar(21,0.5em#,1.7ex#,0) ; "Variant u tehta" ;
 pickup tehta_nib ;
 y1 = round(1.3ex) ; lft x1 = 0 ;
 y2 = y1 + 0.3ex ; x2 = 0.7w ;
 rt x3 = w ; y3 = 1.5[y1,y2] ;
 x4 = x2 ; y4 = 1.6[y1,y2] ;
 draw z1 .. tension 4 and 2 .. z2 .. z3{up} .. z4 ;
endchar ;

beginchar(22,0.5em#,1.7ex#,0) ; "Beleriand u tehta" ;
 pickup tehta_nib ;
 y1 = 1.2ex ; y3 = 1.7ex ;
 x3 = 0.2w = w - x1 ;
 y2 = good.y(0.5[y1,y3]) ; x2 = 0.5[x1,x3] ;
 z1' = z1 + 0.05em*dir(penangle) ;
 z3' = z3 + 0.05em*dir(penangle+180) ;
 draw z1 .. z1' .. z2 .. z3' .. z3 ;
endchar ;

beginchar(19,0.35em#,ex#,0) ; "Raised S hook" ;
 pickup tehta_nib ;
 x1 = -0.05em ; top y1 = ex ;
 rt x2 = w - curve_sidebar ; y2 = y1 - 0.5ex ;
 x3 = 0.5[x1,x2] ; y3 = 1.1[y1,y2] ;
 draw z1 .. tension 4 and 2 .. z2{down} .. z3 ;
endchar ;

beginchar(20,0.35em#,0,desc#) ; "Lowered S hook" ;
 pickup tehta_nib ;
 x1 = -0.08em ; y1 = 0 ;
 rt x2 = w - curve_sidebar ; y2 = y1 - 0.5ex ;
 x3 = 0.5[x1,x2] ; y3 = 1.1[y1,y2] ;
 draw z1 .. tension 4 and 2 .. z2{down} .. z3 ;
endchar ;

beginchar("!",0.5em#,asc#,0) ; "Exclamation mark" ;
 pickup main_nib ;
 x1 = x2 = good.x 0.5w ;
 y1 = 0.8asc ; y2 = 0.2ex ;
 z1' = z1 + 0.08em*dir(penangle) ;
 z2' = z2 - 0.08em*dir(penangle) ;
 draw z1' .. z1 .. tension 4 .. z2 .. z2' ;
endchar ;

beginchar("?",0.5em#,asc#,0) ; "Question mark" ;
 pickup main_nib ;
 lft x1 = round(0.1em) ; top y1 = round(0.9asc) ;
 x2 = x1 ; y2 = 0.2ex ;
 draw_telco(1,2)("t") ;
 z2' = z2 + 0.2em*dir(penangle-150) ;
 draw z2{z2-z1} .. z2'{dir(penangle+180)} ;
 x3 = x4 = x5 = x1 ;
 y5 = 0.0[y2,y1] ; y4 = 0.4[y2,y1] ; y3 = 0.75[y2,y1] ;
 x6 = good.x(w-0.1em) ; x7 = good.x(w-0.08em) ;
 y6 = 0.8[y2,y1] ; y7 = 0.47[y2,y1] ;
 draw z3{dir penangle} ... z6{down} ... z4{dir(penangle+185)} ;
 draw z4{dir penangle} ... z7{down} ... z5{dir(penangle+185)} ;
 labels(1,2,3,4,5,6,7) ;
endchar ;