%    Copyright (C) 1991 Silvio Levy
%     
%    This file is free software: you can redistribute it and/or modify
%    it under the terms of the GNU General Public License as published by
%    the Free Software Foundation, either version 2 of the License, or
%    (at your option) any later version.
%
%    This file is distributed in the hope that it will be useful,
%    but WITHOUT ANY WARRANTY; without even the implied warranty of
%    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%    GNU General Public License for more details.
%
%    You should have received a copy of the GNU General Public License
%    along with this program.  If not, see <http://www.gnu.org/licenses/>.
%
%    As a special exception, if you create a document which uses this font,
%    and embed this font or unaltered portions of this font into the
%    document, this font does not by itself cause the resulting document to
%    be covered by the GNU General Public License. This exception does not
%    however invalidate any other reasons why the document might be covered
%    by the GNU General Public License. If you modify this font, you may
%    extend this exception to your version of the font, but you are not
%    obligated to do so. If you do not wish to do so, delete this exception
%    statement from your version.

if unknown gen_acc : readfrom("gen_acc") fi
if unknown gen_sigma : readfrom("gen_sigma") fi
     
def width = 9u enddef;
def dims = width#,x_height#,0 enddef;
def ital = 0 enddef;
def fit_params = 0,0 enddef;
     
def gen_letter=
  pickup fine.nib;
  y2+.5stem=x_height+o; x2-.5stem=hround.75u;                   %left tip
  lft x4r=hround(x2-.5stem+.75u); y4r=.5x_height;               %left middle
  y8r=y4r; rt x8r=hround(w-.75u);                               %right bulge
  x6r=.5[x4r,x8r]; bot y6r=-oo;                                 %bottom
  numeric tilt;
  tilt:=min(2*otilt,.5);
  filldraw stroke
    gr_arc.e(6,7,8)(vair,stem,tilt) ;
  filldraw stroke
    gr_arc.e(4,5,6)(vair,.4[vair,stem],tilt) ;
  y9+.5hair=x_height+o; x9=x8-u; pos9(hair,angle ((z8-z9) xscaled 2)+90);
  filldraw circ_stroke z9e...{-z8'e}z8e;
  pos2(stem,angle((z4-z2) xscaled 2)-90);
  filldraw circ_stroke z2e...{z4'e}z4e;
  numeric x_baryctr; x_baryctr=.5w;
enddef;
     
cmchar "Lowercase upsilon";
beginchar("u",dims);
this_letter; penlabels(1,2,3,4,5,6,7,8,9); endchar;
     
if boolean barebones: picture savedpicture; endinput; fi
     
cmchar "Lowercase upsilon with grave";
beginchar(oct"314",width#,acc_ht#,0);
this_letter; grave(x_baryctr); endchar;
     
cmchar "Lowercase upsilon with rough breathing";
beginchar(oct"315",width#,acc_ht#,0);
this_letter; spirit(x_baryctr)<; endchar;
     
cmchar "Lowercase upsilon with smooth breathing";
beginchar(oct"316",width#,acc_ht#,0);
this_letter; spirit(x_baryctr)>; endchar;
     
cmchar "Lowercase sigma followed by upsilon with grave";
begindoublechar(oct"317",dim_sigma);
mid_sigma; middoublechar(width#,acc_ht#,0);
this_letter; grave(x_baryctr); endchar;
     
cmchar "Lowercase upsilon with acute";
beginchar(oct"324",width#,acc_ht#,0);
this_letter; acute(x_baryctr); endchar;
     
cmchar "Lowercase upsilon with rough breathing and acute";
beginchar(oct"325",width#,acc_ht#,0);
this_letter; spirit_acute(x_baryctr)<; endchar;
     
cmchar "Lowercase upsilon with smooth breathing and acute";
beginchar(oct"326",width#,acc_ht#,0);
this_letter; spirit_acute(x_baryctr)>; endchar;
     
cmchar "Lowercase sigma followed by upsilon with acute";
begindoublechar(oct"327",dim_sigma);
mid_sigma; middoublechar(width#,acc_ht#,0);
this_letter; acute(x_baryctr); endchar;
     
cmchar "Lowercase upsilon with circumflex";
beginchar(oct"334",width#,circ_ht#,0);
this_letter; circumflex(x_baryctr); endchar;
     
cmchar "Lowercase upsilon with rough breathing and circumflex";
beginchar(oct"335",width#,Circ_ht#,0);
this_letter; spirit_circumflex(x_baryctr)<; endchar;
     
cmchar "Lowercase upsilon with smooth breathing and circumflex";
beginchar(oct"336",width#,Circ_ht#,0);
this_letter; spirit_circumflex(x_baryctr)>; endchar;
     
cmchar "Lowercase sigma followed by upsilon with circumflex";
begindoublechar(oct"337",dim_sigma);
mid_sigma; middoublechar(width#,acc_ht#,0);
this_letter; circumflex(x_baryctr); endchar;
     
cmchar "Lowercase upsilon with diaeresis";
beginchar(oct"364",width#,circ_ht#,0);
this_letter; diaeresis(x_baryctr); endchar;
     
cmchar "Lowercase upsilon with diaeresis and grave";
beginchar(oct"365",width#,acc_ht#,0);
this_letter; diaeresis_grave(x_baryctr); endchar;
     
cmchar "Lowercase upsilon with diaeresis and acute";
beginchar(oct"366",width#,acc_ht#,0);
this_letter; diaeresis_acute(x_baryctr); endchar;
     
cmchar "Lowercase upsilon with diaeresis and circumflex";
beginchar(oct"367",width#,Circ_ht#,0);
this_letter; diaeresis_circumflex(x_baryctr); endchar;
     
cmchar "Lowercase sigma followed by upsilon";
begindoublechar(oct"025",dim_sigma);
mid_sigma; middoublechar(dims); this_letter; endchar;
     
picture savedpicture;
