%%
%% This is file `givbc10.mf',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% greek4cbc.dtx  (with options: `up')
%% ------------------------------------------------------------------
%%   Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net
%%   Copyright 1999--2005 Peter R. Wilson
%% 
%%   This work may be distributed and/or modified under the
%%   conditions of the Latex Project Public License, either
%%   version 1.3 of this license or (at your option) any
%%   later version.
%%   The latest version of the license is in
%%     http://www.latex-project.org/lppl.txt
%%   and version 1.3 or later is part of all distributions of
%%   LaTeX version 2003/06/01 or later.
%% 
%%   This work has the LPPL maintenance status "author-maintained".
%% 
%%   This work consists of the files listed in the README file.
%% ------------------------------------------------------------------
 %%% GIVBC10.MF  Computer Greek 4 century BC font 10 point design size.

if unknown cmbase: input cmbase fi

font_identifier:="GIVBC"; font_size 10pt#;

u#:=20/36pt#;             % unit width
letter_fit#:=0pt#;        % extra space added to all sidebars

body_height#:=270/36pt#;       % height of tallest characters
asc_height#:=250/36pt#;        % height of lowercase ascenders
cap_height#:=246/36pt#;        % height of caps
fig_height#:=232/36pt#;        % height of numerals
x_height#:=155/36pt#;          % height of lowercase without ascenders
desc_depth#:=70/36pt#;         % depth of lowercase descenders
half_height#:=1/2cap_height#;  % half the height of caps

side#:=cap_height#;          % Height and width of the square
thickfudge:=1/9;
thick#:=thickfudge*side#;    % thickness of all lines in the font

rule_thickness#:=.4pt#;  % thickness of lines

cap_stem#:=thick#;     % thickness of majuscule stems

o#:=8/36pt#;       % amount of overshoot for curves
apex_o#:=thin#;    % amount of overshoot for diagonal junctions
apex_corr#=0pt#;   % fine tuning of overshoot

slant:=0;      % tilt ratio $(\Delta x/\Delta y)$

serifs:=false;        % should serifs and bulbs be attached?
monospace:=false;     % should all characters have the same width?

dot_size#:=38/36pt#; % size of dots
square_dots:=false;  % should dots be square?

boolean whole_font;  % try generating a complete font?
whole_font:=false;


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%  MACRO SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

def makebox(text rule) =
  for y=0,half_height,cap_height,body_height,x_height,-desc_depth,-body_depth:
    rule((l,y)t_,(r,y)t_); endfor  % horizontals
  for x=l,r: rule((x,-body_depth)t_,(x,body_height)t_); endfor % verticals
  for x=u*(1+floor(1/u)) step u until r-1:
    rule((x,-body_depth)t_,(x,body_height)t_); endfor         % more verticals
  if charic<>0:
    rule((r+charic*pt,h.o_),(r+charic*pt,.5h.o_)); fi  % italic correction
enddef;


def proofpcbb(suffix $)(expr xoff, yoff) =
if proofing > 0:
  x$bl = x$ - xoff; y$bl = y$ - yoff;         % Bottom Left Hand Corner
  z$br = (x$bl+cap_height, y$bl);             % BRHC
  z$tr = (x$bl+cap_height, y$bl+cap_height);  % TRHC
  z$tl = (x$bl, y$bl+cap_height);             % TLHC
  z$bc = 1/2[z$bl,z$br]; z$tc = 1/2[z$tl,z$tr];  % horizontal mid points
  pair hc, vc;
  hc = (2u,0); vc = (0,2u);
  pickup pensquare scaled 2;
  for s = z$bl, z$br, z$tr, z$tl, z$bc, z$tc:
    draw s-hc--s+hc;
    draw s-vc--s+vc;
  endfor
fi
enddef;


let cm_font_setup=font_setup; % Knuth's original font_setup


def greek_font_setup= % contains special stuff for archaic Greek font
  define_pixels(u);
  define_pixels(side,thick,half_height);
  let adjust_fit=normal_adjust_fit;
  define_whole_pixels(letter_fit);
  define_whole_vertical_pixels(body_height,asc_height,
    cap_height,x_height,desc_depth);
  body_depth:=desc_depth+body_height-asc_height;
  define_pixels(dot_size);
  shrink_fit:=1+hround(2letter_fit#*hppp)-2letter_fit;
  if not string mode:
    if mode<=smoke:
      shrink_fit:=0;
    fi
  fi
enddef;


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%  END OF MACROS %%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


font_coding_scheme:="ASCII caps and miniscules";

mode_setup;

greek_font_setup;

numeric pcshiftx#; % x value of LHS of box wrt origin of char box
define_pixels(pcshiftx);


font_slant slant;
font_x_height x_height#;
if monospace: font_normal_space 9u#; % no stretching or shrinking
 font_quad 18u#;
 font_extra_space 9u#;
else: font_normal_space 6u#+2letter_fit#;
 font_normal_stretch 3u#; font_normal_shrink 2u#;
 font_quad 18u#+4letter_fit#;
 font_extra_space 2u#;
fi


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


cmchar "Greek 394BC letter alpha (a)";
beginchar("a", 2u#+side#+2thick#, cap_height#, 0);
adjust_fit(0,0);
pcshiftx := u+thick;
y100 = h/2; x100 = pcshiftx+y100;  % center point
numeric alpha[], hor, vert, hypot, theta;
pair greek[];
hor := 0.5h; vert := h-thick;
greek1 = (hor, vert);
theta = 270 + angle(greek1);
  % for left leg
penpos1(thick,theta); penpos2(thick,theta);
  % and for the right leg
penpos3(thick,-theta); penpos4(thick,-theta);
rt x1r=pcshiftx; lft x4l=x1r+side;
bot y1r=bot y4l=0;
top y3r= top y2l=h;
x3r=x2l = 0.5[x1r,x4l];
z0=whatever[z1r,z2r]=whatever[z3l,z4l];
  % draw the legs
filldraw z1l--z2l--z4r--z4l--z0--z1r--cycle;
  % now for the bar
y5l=y6l=hround(1/3h);
y5r-y5l=y6r-y6l=thick;
penpos5(whatever, angle(z2-z1)); penpos6(whatever, angle(z3-z4));
z5=whatever[z1,z2]; z6=whatever[z3,z4];
penstroke z5e--z6e; % bar line
proofpcbb(100, y100, y100);
penlabels(0,1,2,3,4,5,6,100); endchar;


cmchar "Greek 394BC letter beta (b)";
beginchar("b",4u#+5/9side#, cap_height#, 0);
adjust_fit(0,0);
pcshiftx := 2u;
y100=h/2; x100=pcshiftx+y100;  % square center
penpos1(thick,0); penpos2(thick,0);
y2l=0; y1l=h; x1l=x2l=pcshiftx;
numeric alpha, long, short, hypot;
long=(w-2pcshiftx); short=h/4; hypot=short++long;
alpha := hypot/long;
penpos3(alpha*thick,90); penpos4(alpha*thick,90);
penpos5(alpha*thick,90); penpos6(alpha*thick,90);
z3l=z2l;
x4l=w-pcshiftx; y4l=0.25[y2l,y1l];
z5r=z4l;
x6l=x2r; y6l=0.5[y2l,y1l];
penpos7(alpha*thick,90); penpos8(alpha*thick,90);
penpos9(alpha*thick,90); penpos10(alpha*thick,90);
z7r=z6l;
x8l=x4l; y8l=0.75[y2l,y1l];
z9r=z8l;
z10r=z1l;
z11=whatever[z2r,z1r]=whatever[z3r,z4r];  % bottom bowl and stem
z12=whatever[z3r,z4r]=whatever[z6l,z5l];  % bottom bowl inner
z13=whatever[z5r,z6r]=whatever[z7l,z8l];  % between the bowls
z14=whatever[z7r,z8r]=whatever[z9l,z10l]; % top bowl inner
z15=whatever[z2r,z1r]=whatever[z9l,z10l]; % top bowl and stem
filldraw z1l--z2l--z4l--z13--z8l--cycle;
unfilldraw z6l--z12--z11--cycle;
unfilldraw z7r--z15--z14--cycle;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,100);
endchar;


cmchar "Greek 394BC letter gamma (g)";
beginchar("g",2u#+thick#+2/3side#, cap_height#, 0);
adjust_fit(0, 0);
pcshiftx := u;
y100 = h/2; x100 = pcshiftx + y100;        % center point
penpos1(thick,0); penpos2(thick,0);
x1l=x2l=pcshiftx; top y1l=h; bot y2l=0;
filldraw stroke z1e--z2e;
penpos3(thick,90); penpos4(thick,90);
y3r=y4r=y1l; x3l=x1l; x4l=w-pcshiftx;
filldraw stroke z3e--z4e;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,100); endchar;


cmchar "Greek 394BC letter delat (d)";
beginchar("d", 2u#+side#+2thick#, cap_height#, 0);
adjust_fit(0,0);
pcshiftx := u+thick;
y100 = h/2; x100 = pcshiftx+y100;  % center point
numeric alpha, hor, vert, hypot, theta;
pair greek[];
hor := 0.5h; vert := h-thick;
greek1 = (hor, vert);
theta = 270 + angle(greek1);
  % for left leg
penpos1(thick,theta); penpos2(thick,theta);
  % and for the right leg
penpos3(thick,-theta); penpos4(thick,-theta);
rt x1r=pcshiftx; lft x4l=x1r+side;
bot y1r=bot y4l=0;
top y2l= top y3r=h;
x3r=x2l = 0.5[x1r,x4l];
z0=whatever[z1r,z2r]=whatever[z3l,z4l];
  % now for the bar
penpos5(thick,90); penpos6(thick,90);
bot y5l=bot y6l=0;
x5l=pcshiftx; x6l=w-pcshiftx;
z7=whatever[z1l,z2l]=whatever[z5l,z6l];
z8=whatever[z3r,z4r]=whatever[z5l,z6l];
z9=whatever[z1r,z2r]=whatever[z5r,z6r];
z10=whatever[z3l,z4l]=whatever[z5r,z6r];
filldraw z7--z2l--z8--cycle;
unfilldraw z9--z0--z10--cycle;
proofpcbb(100, y100, y100);
penlabels(0,1,2,3,4,5,6,7,8,9,10,100); endchar;


cmchar "Greek 394BC letter epsilon (e)";
beginchar("e", 2u#+2/3side#+2thick#, cap_height#,0);
adjust_fit(0,0);
pcshiftx := u;
y100=h/2; x100=pcshiftx+y100;  % center point
penpos1(thick,0); penpos2(thick,0);
lft x1l=lft x2l=pcshiftx; top y1=h; bot y2=0;
filldraw stroke z1e--z2e; % stem
penpos5(thick,90); penpos6(thick,90);
x5=x1; y5=y6=h/2; rt x6=pcshiftx + 2/3side;
filldraw stroke z5e--z6e;
penpos3(thick,90); penpos4(thick,90);
x3=x1; top y3r=top y4r=h; x4=x6+thick;
filldraw stroke z3e--z4e;
penpos7(thick,90); penpos8(thick,90);
x7=x1; bot y7l=bot y8l=0; x8=x6+2thick;
filldraw stroke z7e--z8e;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,6,7,8,100); endchar; % end of "E"


cmchar "Greek 394BC letter zeta (z)";
beginchar("z", 2u#+side#, cap_height#,0);
adjust_fit(0, 0);
pcshiftx := u;
y100=h/2; x100=pcshiftx+y100;    % center of square
numeric alpha, hor, vert, hypot;
vert=h; hor=4/5side; hypot=vert++hor;
alpha=hypot/vert;
penpos1(thick,90); penpos2(thick,90); penpos3(alpha*thick, 0);
penpos4(alpha*thick, 0);
top y1r=h; lft x1=pcshiftx;
y2=y1; rt x2=x3;
rt x3r=x1+4/5side;; top y3=h; x4l=x1; bot y4=0;
filldraw stroke z1e--z2e; % top bar
filldraw stroke z3e--z4e; % diagonal
penpos8(thick,90); penpos9(thick,90);
x8=x4; bot y8l=0;
x9=pcshiftx+side; y9=y8;
filldraw stroke z8e--z9e;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,6,7,8,9,100); endchar;


cmchar "Greek 394BC letter eta (h)";
beginchar("h", 4u#+side#, cap_height#,0);
adjust_fit(0,0);
pcshiftx := 2u;
y100 = h/2; x100 = pcshiftx + y100;  % center point
penpos1(thick,0); penpos2(thick,0);
lft x1l=lft x2l=pcshiftx; bot y1=0; top y2=h;
filldraw stroke z1e--z2e;
penpos3(thick,0); penpos4(thick,0);
rt x3r= rt x4r= x1l+side; bot y3=0; top y4=h;
filldraw stroke z3e--z4e;
penpos5(thick,90); penpos6(thick,90);
x5=x1; x6=x3; y5=y6=h/2;
filldraw stroke z5e--z6e;
proofpcbb(100, y100, y100);
labels(1,2,3,4,5,6,100); endchar;


cmchar "Greek 394BC letter theta (T)";
beginchar("T", 2u#+side#, cap_height#, 0);
adjust_fit(0,0);
pcshiftx := u;
y100=h/2; x100=pcshiftx+y100;    % square center
numeric alpha; alpha=0.75;
x2r=pcshiftx; x4r=x2r+h; y2r=y4r=y100;
y1r=h; y3r=0; x1r=x3r=x100;
x2l=x2r+thick; x4l=x4r-thick; y2l=y4l=y2r;
y1l=y1r-thick; y3l=y3r+thick; x1l=x3l=x1r;
filldraw z1r..z2r..z3r..z4r..cycle;
unfilldraw z1l..z2l..z3l..z4l..cycle;
x12=x100-alpha*thick; x14=x100+alpha*thick; y12=y14=y100;
y11=y100+alpha*thick; y13=y100-alpha*thick; x11=x13=x100;
path p;
p= z11..z12..z13..z14..cycle;
filldraw p; filldraw p;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,100); endchar;


cmchar "Greek 394BC letter iota (i)";
beginchar("i", 4u#+thick#, cap_height#,0);
adjust_fit(0,0);
pcshiftx := 2u;
y100 = h/2; x100 = pcshiftx + 0.5thick;  % center point
penpos1(thick,0); penpos2(thick,0);
x1=x2=hround(w/2); top y1=h; bot y2=0;
filldraw stroke z1e--z2e; % vertical stem
proofpcbb(100, y100, y100);
penlabels(1, 2, 100);
endchar;


cmchar "Greek 394BC letter kappa (k)";
beginchar("k", 2u#+2/3side#, cap_height#,0);
adjust_fit(0,0);
pcshiftx := u;
y100=h/2; x100=pcshiftx+y100;  % square center
penpos1(thick,0); penpos2(thick,0);
lft x1l=lft x2l=pcshiftx;
 top y1=h; bot y2=0;
 filldraw stroke z1e--z2e; % left stem
numeric hor, vert, theta[];
pair greek[];
hor := 2/3side; vert := side/2;
greek1 = (hor,vert);
theta1=270+angle(greek1);
penpos3(thick,theta1); penpos4(thick,theta1);
x3l=x2r; y3l=side/2;
y4l=h; x4r=x1l+2/3side;
vert := -side/4;
greek2 = (hor,vert);
theta2=270+angle(greek2);
penpos5(thick,theta2); penpos6(thick,theta2);
z5r=z3l;
x6l=x4r; y6l=side/4;
z0=whatever[z3r,z4r]=whatever[z5l,z6l];
filldraw z3l--z4l--z4r--z0--z6l--z6r--cycle;
proofpcbb(100, y100, y100);
penlabels(0,1,2,3,4,5,6,100); endchar;


cmchar "Greek 394BC letter lambda (l)";
beginchar("l", 2u#+side#+2thick#, cap_height#,0);
adjust_fit(0,0);
pcshiftx := u+thick;
y100 = h/2; x100 = pcshiftx+y100;  % center point
numeric alpha[], hor, vert, hypot, theta;
pair greek[];
hor := 0.5h; vert := h-thick;
greek1 = (hor, vert);
theta = 270 + angle(greek1);
  % for left leg
penpos1(thick,theta); penpos2(thick,theta);
  % and for the right leg
penpos3(thick,-theta); penpos4(thick,-theta);
rt x1r=pcshiftx; lft x4l=x1r+side;
bot y1r=bot y4l=0;
top y3r= top y2l=h;
x3r=x2l = 0.5[x1r,x4l];
z0=whatever[z1r,z2r]=whatever[z3l,z4l];
  % draw the legs
filldraw z1l--z2l--z4r--z4l--z0--z1r--cycle;
proofpcbb(100, y100, y100);
penlabels(0,1,2,3,4,100); endchar; % end of "L"


cmchar"Greek 394BC letter mu (m)";
beginchar("m", 2u#+side#+2thick#, cap_height#, 0);
adjust_fit(0,0);
pcshiftx := u+thick;
y100=h/2; x100=pcshiftx+y100;     % square center
numeric alpha, hor, vert, hypot, theta[];
pair greek[];
hor := 3thick; vert := side;
greek1 = (hor, vert);
theta1 = 270 + angle(greek1);
penpos1(thick,theta1); penpos2(thick,theta1);
z1r=(pcshiftx,0); z2l=(pcshiftx+2thick,h);
penpos3(thick,-theta1); penpos4(thick,-theta1);
z3l=(pcshiftx+side,0); z4r=(pcshiftx+side-2thick,h);
z0=z100;
theta2 = 270 + angle(z4r-z0);
penpos5(thick,-theta2); penpos6(thick,-theta2);
z5r=z0; z6r=z2l;
penpos7(thick,theta2); penpos8(thick,theta2);
z7l=z0; z8l=z4r;
z9=whatever[z1r,z2r]=whatever[z5l,z6l];
z10=whatever[z5l,z6l]=whatever[z7r,z8r];
z11=whatever[z7r,z8r]=whatever[z3l,z4l];
filldraw z1l--z2l--z0--z4r--z3r--z3l--z11--z10--z9--z1r--cycle;
proofpcbb(100, y100, y100);
penlabels(0,1,2,3,4,5,6,7,8,9,10,100); endchar;


cmchar "Greek 394BC letter nu (n)";
beginchar("n", 4u#+side#, cap_height#,0);
adjust_fit(0,0);
pcshiftx := 2u;
y100 = h/2; x100 = pcshiftx + y100;   % center point
numeric hor, vert, theta;
pair greek[];
hor = side-thick; vert = h;
greek1=(hor,vert);
theta=270 + angle(greek1);
penpos1(thick,0); penpos2(thick,0);
z1l=(pcshiftx,0); z2l=(pcshiftx,h);
penpos3(thick,0); penpos4(thick,0);
z3r=(pcshiftx+side,0); z4r=(pcshiftx+side,h);
penpos5(thick,-theta); penpos6(thick,-theta);
z5l=z3r; z6r=z2l;
z7=whatever[z1r,z2r]=whatever[z5l,z6l];
z8=whatever[z5r,z6r]=whatever[z3l,z4l];
filldraw z1l--z2l--z8--z4l--z4r--z3r--z7--z1r--cycle;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,6,7,8,100); endchar;


cmchar "Greek 394BC letter xi (x)";
beginchar("x", 2u#+side#, cap_height#, 0);
adjust_fit(0,0);
pcshiftx := u;
y100 = h/2; x100 = pcshiftx + y100;  % center point
penpos1(thick,0); penpos2(thick,0);
z1=(x100,0); z2=(x100,h);
filldraw stroke z1e--z2e;
penpos3(thick,90); penpos4(thick,90);
z3r=(pcshiftx,h); z4r=(pcshiftx+side,h);
filldraw stroke z3e--z4e;
penpos5(thick,90); penpos6(thick,90);
z5=(pcshiftx,h/2); z6=(pcshiftx+side,h/2);
filldraw stroke z5e--z6e;
penpos7(thick,90); penpos8(thick,90);
z7l=(pcshiftx,0); z8l=(pcshiftx+side,0);
filldraw stroke z7e--z8e;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,6,7,8,100);
endchar;


cmchar "Greek 394BC letter omicron (o)";
beginchar("o", 2u#+side#, cap_height#, 0);
adjust_fit(0,0);
pcshiftx := u;
y100=h/2; x100=pcshiftx+y100;    % square center
x2r=pcshiftx; x4r=x2r+h; y2r=y4r=y100;
y1r=h; y3r=0; x1r=x3r=x100;
x2l=x2r+thick; x4l=x4r-thick; y2l=y4l=y2r;
y1l=y1r-thick; y3l=y3r+thick; x1l=x3l=x1r;
filldraw z1r..z2r..z3r..z4r..cycle;
unfilldraw z1l..z2l..z3l..z4l..cycle;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,100); endchar;


cmchar "Greek 394BC letter pi (p)";
beginchar("p", 4u#+side#, cap_height#, 0);
adjust_fit(0, 0);
pcshiftx := 2u;
y100 = h/2; x100 = pcshiftx + y100;        % center point
penpos1(thick,0); penpos2(thick,0);
x1l=x2l=pcshiftx; top y1l=h; bot y2l=0;
filldraw stroke z1e--z2e;
penpos3(thick,90); penpos4(thick,90);
y3r=y4r=y1l; x3l=x1l; x4l=w-pcshiftx;
filldraw stroke z3e--z4e;
penpos5(thick,0); penpos6(thick,0);
x5r=x6r=x4; top y5=h; bot y6=h/2;
filldraw stroke z5e--z6e;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,6,100); endchar;


cmchar "Greek 394BC letter rho (r)";
beginchar("r", 2u#+5/9side#, cap_height#,0);
adjust_fit(0, 0);
pcshiftx := u;
y100=h/2; x100=pcshiftx+y100;    % square center
penpos1(thick,0); penpos2(thick,0);
  top lft z1l=(pcshiftx,h); bot lft z2l=(pcshiftx,0);
filldraw stroke z1e--z2e; % vertical stem
penpos3(thick,90); penpos4(thick,0); penpos5(thick,-90);
top y3r=top y1; x3r=x1r;
bot y5r=5/9[y1,y2]; x5=x3;
x4r=x1l+5/9side; y4=0.5[y5r,y3r];
filldraw z3r{right}..z4r{down}..z5r{left}--z5l{right}..z4l{up}..z3l{left}--cycle;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,100);
endchar;


cmchar "Greek 394BC letter sigma (s)";
beginchar("s", 2u#+2/3side#, cap_height#, 0);
adjust_fit(0,0);
pcshiftx := u;
y100 = h/2; x100 = pcshiftx+y100;    % square center
pair greek[];
numeric theta[];
numeric hor, vert;
hor := 2/3side; vert := 1/3h;
greek1=(hor,vert);
theta1=270+angle(greek1);
penpos1(thick,-theta1); penpos2(thick,-theta1);
penpos7(thick,theta1); penpos8(thick,theta1);
hor := 2/3side-thick; vert := h/2 - h/3;
greek2=(hor,vert);
theta2=270-angle(greek2);
penpos3(thick,theta2); penpos4(thick,theta2);
penpos5(thick,-theta2); penpos6(thick,-theta2);
y1l=0; x1r=pcshiftx+2/3side;
z2l=(pcshiftx,h/3);
z3l=z2l;
z4r=(pcshiftx+2/3side-thick, h/2);
z5r=z4r;
z6l=(pcshiftx,2/3h);
z7l=z6l;
y8l=h; x8r=x1r;
z10=whatever[z1r,z2r]=whatever[z3r,z4r];
z11=whatever[z3l,z4l]=whatever[z5l,z6l];
z12=whatever[z5r,z6r]=whatever[z7r,z8r];
filldraw z1l--z2l--z11--z6l--z8l--z8r--z12--z4r--z10--z1r--cycle;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,6,7,8,10,11,12,100); endchar;


cmchar "Greek 394BC letter tau (t)";
beginchar("t",2u#+side#, cap_height#,0);
adjust_fit(0,0);
pcshiftx := u;
y100=h/2; x100=pcshiftx+y100;     % square center
numeric hor, vert, theta;
numeric alpha[]; pair greek[];
alpha1=h-thick;
penpos1(thick,0); penpos2(thick,0);
z1=(w/2,0); z2=(w/2,alpha1);
filldraw stroke z1e--z2e;
penpos3(thick,90); penpos4(thick,90);
z3r=(pcshiftx,alpha1); z4r=(w/2,alpha1);
filldraw stroke z3e--z4e;
hor := w/2; vert := h/5;
greek1=(hor,vert);
theta = 270 + angle(greek1);
penpos5(thick,theta);
y5l=h; x5r=w-pcshiftx;
filldraw z4l{right}..{greek1}z5r--z5l{-greek1}..{left}z4r--cycle;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,100); endchar;


cmchar "Greek 394BC letter upsilon (y)";
beginchar("y", 2u#+side#, cap_height#, 0);
adjust_fit(0,0);
pcshiftx := u;
y100=h/2; x100=pcshiftx+y100;       % center of square
numeric alpha, theta;
numeric hor, vert;
pair greek[];
alpha=h/3;
hor := h; vert := 0.75h;
greek1 = (hor,vert); greek2 = (-hor, -vert);
greek3 = (-hor,vert); greek4 = (hor, -vert);
theta = 270 + angle(greek1);
penpos1(thick,0); penpos2(thick,0);
z1=(w/2,0); z2=(w/2,alpha);
penpos3(thick,theta);
y3l=h; x3r=w-pcshiftx;
penpos4(thick,-theta);
y4r=h; x4l=pcshiftx;
filldraw z1l--z1r--z2r{up}..{greek1}z3r--z3l{greek2}..{down}z2l--cycle;
filldraw z1l--z1r--z2r{up}..{greek3}z4r--z4l{greek4}..{down}z2l--cycle;
proofpcbb(100, y100, y100);
penlabels(0,1,2,3,4,5,6,100); endchar; % End of "U"


cmchar "Greek 394BC letter chi (X)";
beginchar("X", 2u#+side#, cap_height#, 0);
adjust_fit(0,0);
pcshiftx := u;
y100=h/2; x100=pcshiftx+y100;    % center of square
numeric theta;
theta = 270+45;
penpos1(thick,theta); penpos2(thick,theta);
x1l=pcshiftx; y1r=0;  x2r=pcshiftx+side; y2l=h;
filldraw stroke z1e--z2e;
penpos3(thick,-theta); penpos4(thick,-theta);
x3l=pcshiftx; y3r=h; x4r=pcshiftx+side; y4l=0;
filldraw stroke z3e--z4e;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,100); endchar;


cmchar "Greek 394BC letter phi (f)";
beginchar("f", 2u#+2/3side#, cap_height#,0);
adjust_fit(0, 0);
pcshiftx := u;
y100 = h/2; x100 = pcshiftx + y100;  % center point
penpos1(thick,0); penpos2(thick,0);
z1=(w/2,0); z2=(w/2,h);
z0=(w/2,h/2);
numeric alpha;
alpha := 1/3h;
y3o=y3i=y5i=y5o=h/2;
x3o=x0-alpha; x3i=x3o+thick; x5o=x0+alpha; x5i=x5o-thick;
x4o=x4i=x6i=x6o=w/2;
y4o=y0+alpha; y4i=y4o-thick; y6o=y0-alpha; y6i=y6o+thick;
unfilldraw z3i..z4i..z5i..z6i..cycle;
filldraw z3o..z4o..z5o..z6o..cycle;
filldraw stroke z1e--z2e; filldraw stroke z1e--z2e;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,6,100);
endchar;


cmchar "Greek 394BC letter psi (P)";
beginchar("P", 2u#+5/6side#, cap_height#,0);
adjust_fit(0, 0);
pcshiftx := u;
y100 = h/2; x100 = pcshiftx + y100;  % center point
numeric alpha, beta;
numeric hor, vert, theta;
pair greek;
alpha=5/6;  % scale factor
beta=1/3alpha*side+thick; % arm seperation height
penpos1(thick,0); penpos2(thick,0);
z1=(w/2,0); z2=(w/2,h);
filldraw stroke z1e--z2e;
hor := w/2; vert := h-beta;
greek = (hor,vert);
theta=270+angle(greek);
penpos3(thick,theta); penpos4(thick,theta);
z3l=(w/2,beta); y4l=alpha*h; x4r=w-pcshiftx;
penpos5(thick,-theta); penpos6(thick,-theta);
z5r=z3l; x6l=pcshiftx; y6r=y4l;
z10=whatever[z1r,z2r]=whatever[z3r,z4r];
z11=whatever[z1l,z2l]=whatever[z5l,z6l];
filldraw z3l--z4l--z4r--z10--cycle; % right arm
filldraw z5r--z6r--z6l--z11--cycle; % left arm
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,6,10,11,100);
endchar;


cmchar "Greek 394BC letter omega (O)";
beginchar("O", 2u#+4/3side#, cap_height#,0);
adjust_fit(0, 0);
pcshiftx := u;
y100 = h/2; x100 = pcshiftx + y100;  % center point
penpos1(thick,90); penpos2(thick,90); penpos3(thick,90); penpos4(thick,90);
z1l=(pcshiftx,0); z4l=(w-pcshiftx,0);
x2l = w/2-side/4; x3l=w/2+side/4; y2l=y3l=0;
numeric theta, hor, vert;
pair greek[];
hor := x2r-pcshiftx; vert := h;
greek1=(hor,vert); greek2=(-hor,-vert);
greek3=(-hor,vert); greek4=(hor,-vert);
theta = 270+angle(greek1);
penpos5(thick,-theta); penpos9(thick,theta);
z5r=z2l; z9l=z3l;
penpos6(thick,0); penpos8(thick,0);
z6l=(w/2-side/2, h/2); z8r=(w/2+side/2, h/2);
penpos7(thick,90);
z7r=(w/2,h);
path p[];
p1=z5l{greek3}..z6l{up}..{right}z7r;
p2=z7r{right}..z8r{down}..{greek2}z9r;
p3=z1r--z4r;
z10 = p3 intersectionpoint p1;
z11 = p3 intersectionpoint p2;
filldraw z1r--z10{greek3}..z6l{up}..z7r{right}..z8r{down}..{greek2}z11--z4r
       --z4l--z3l{greek1}..z8l{up}..z7l{left}..z6r{down}..{greek4}z2l--z1l--cycle;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,6,7,8,9,10,11,100);
endchar;


cmchar "Greek 394BC letter beta (rough, B)";
beginchar("B",4u#+2/3side#, cap_height#, 0);
adjust_fit(0,0);
pcshiftx := 2u;
y100=h/2; x100=pcshiftx+y100;  % square center
numeric beta;
beta := side/10; % amount to extend top and bottom
penpos1(thick,0); penpos2(thick,0);
y2l=-beta; y1l=h+beta; x1l=x2l=pcshiftx;
numeric alpha, long, short, hypot;
long=(w-2pcshiftx); short=h/4; hypot=short++long;
alpha := hypot/long;
penpos3(alpha*thick,90); penpos4(alpha*thick,90);
penpos5(alpha*thick,90); penpos6(alpha*thick,90);
z3l=z2l;
x4l=w-pcshiftx; y4l=0.25[y2l,y1l];
z5r=z4l;
x6l=x2r; y6l=0.5[y2l,y1l];
penpos7(alpha*thick,90); penpos8(alpha*thick,90);
penpos9(alpha*thick,90); penpos10(alpha*thick,90);
z7r=z6l;
x8l=x4l; y8l=0.75[y2l,y1l];
z9r=z8l;
z10r=z1l;
z11=whatever[z2r,z1r]=whatever[z3r,z4r];  % bottom bowl and stem
z12=whatever[z3r,z4r]=whatever[z6l,z5l];  % bottom bowl inner
z13=whatever[z5r,z6r]=whatever[z7l,z8l];  % between the bowls
z14=whatever[z7r,z8r]=whatever[z9l,z10l]; % top bowl inner
z15=whatever[z2r,z1r]=whatever[z9l,z10l]; % top bowl and stem
filldraw z1l--z2l--z4l--z13--z8l--cycle;
unfilldraw z6l--z12--z11--cycle;
unfilldraw z7r--z15--z14--cycle;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,100);
endchar;


cmchar"Greek 394BC letter mu (rough, M)";
beginchar("M", 2u#+side#+2thick#, cap_height#, 0);
adjust_fit(0,0);
pcshiftx := u+thick;
y100=h/2; x100=pcshiftx+y100;     % square center
numeric alpha, hor, vert, hypot, theta[];
pair greek[];
hor := 3thick; vert := side;
greek1 = (hor, vert);
theta1 = 270 + angle(greek1);
numeric beta;
beta := thick; % extra depth below baseline
penpos1(thick,theta1); penpos2(thick,theta1);
z1r=(pcshiftx,-beta); z2l=(pcshiftx+2thick,h);
penpos3(thick,-theta1); penpos4(thick,-theta1);
z3l=(pcshiftx+side,0); z4r=(pcshiftx+side-2thick,h);
z0=z100;
theta2 = 270 + angle(z4r-z0);
penpos5(thick,-theta2); penpos6(thick,-theta2);
z5r=z0; z6r=z2l;
penpos7(thick,theta2); penpos8(thick,theta2);
z7l=z0; z8l=z4r;
z9=whatever[z1r,z2r]=whatever[z5l,z6l];
z10=whatever[z5l,z6l]=whatever[z7r,z8r];
z11=whatever[z7r,z8r]=whatever[z3l,z4l];
filldraw z1l--z2l--z0--z4r--z3r--z3l--z11--z10--z9--z1r--cycle;
proofpcbb(100, y100, y100);
penlabels(0,1,2,3,4,5,6,7,8,9,10,100); endchar;


cmchar "Greek 394BC letter nu (rough, N)";
beginchar("N", 4u#+side#, cap_height#,0);
adjust_fit(0,0);
pcshiftx := 2u;
y100 = h/2; x100 = pcshiftx + y100;   % center point
numeric hor, vert, theta;
pair greek[];
hor = side-thick; vert = h;
greek1=(hor,vert);
theta=270 + angle(greek1);
numeric beta;
beta := thick;  % extra extensions of the legs
penpos1(thick,0); penpos2(thick,0);
z1l=(pcshiftx,-beta); z2l=(pcshiftx,h);
penpos3(thick,0); penpos4(thick,0);
z3r=(pcshiftx+side,0); z4r=(pcshiftx+side,h+beta);
penpos5(thick,-theta); penpos6(thick,-theta);
z5l=z3r; z6r=z2l;
z7=whatever[z1r,z2r]=whatever[z5l,z6l];
z8=whatever[z5r,z6r]=whatever[z3l,z4l];
filldraw z1l--z2l--z8--z4l--z4r--z3r--z7--z1r--cycle;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,6,7,8,100); endchar;


cmchar "Greek 394BC letter rho (rough, R)";
beginchar("R", 2u#+2/3side#, cap_height#,0);
adjust_fit(0, 0);
pcshiftx := u;
y100=h/2; x100=pcshiftx+y100;    % square center
numeric beta;
beta := side/10;  % extra top and bottom extensions
penpos1(thick,0); penpos2(thick,0);
  top lft z1l=(pcshiftx,h+beta); bot lft z2l=(pcshiftx,-beta);
filldraw stroke z1e--z2e; % vertical stem
penpos3(thick,90); penpos4(thick,0); penpos5(thick,-90);
top y3r=top y1; x3r=x1r;
bot y5r=5/9[y1,y2]; x5=x3;
x4r=x1l+5/9side; y4=0.5[y5r,y3r];
filldraw z3r{right}..z4r{down}..z5r{left}--z5l{right}..z4l{up}..z3l{left}--cycle;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,100);
endchar;


cmchar "Greek 394BC letter upsilon (rough, Y)";
beginchar("Y", 2u#+6/5side#, cap_height#, 0);
adjust_fit(0,0);
pcshiftx := u;
y100=h/2; x100=pcshiftx+y100;       % center of square
numeric beta;
beta := side/10;  % extra at top and bottom
numeric alpha, theta;
numeric hor, vert;
pair greek[];
alpha=h/3;
hor := h; vert := 0.75h;
greek1 = (hor,vert); greek2 = (-hor, -vert);
greek3 = (-hor,vert); greek4 = (hor, -vert);
theta = 270 + angle(greek1);
penpos1(thick,0); penpos2(thick,0);
z1=(w/2,-beta); z2=(w/2,alpha);
penpos3(thick,theta);
y3l=h+beta; x3r=w-pcshiftx;
penpos4(thick,-theta);
y4r=h+beta; x4l=pcshiftx;
filldraw z1l--z1r--z2r{up}..{greek1}z3r--z3l{greek2}..{down}z2l--cycle;
filldraw z1l--z1r--z2r{up}..{greek3}z4r--z4l{greek4}..{down}z2l--cycle;
proofpcbb(100, y100, y100);
penlabels(0,1,2,3,4,5,6,100); endchar; % End of "u"


cmchar "Greek 394BC letter phi (rough, F)";
beginchar("F", 2u#+4/5side#, cap_height#,0);
adjust_fit(0, 0);
pcshiftx := u;
y100 = h/2; x100 = pcshiftx + y100;  % center point
numeric beta;
beta := side/10;  % extra at top and bottom
penpos1(thick,0); penpos2(thick,0);
z1=(w/2,-beta); z2=(w/2,h+beta);
z0=(w/2,h/2);
numeric alpha;
alpha := 2/5side;
y3o=y3i=y5i=y5o=h/2;
x3o=x0-alpha; x3i=x3o+thick; x5o=x0+alpha; x5i=x5o-thick;
x4o=x4i=x6i=x6o=w/2;
y4o=y0+alpha; y4i=y4o-thick; y6o=y0-alpha; y6i=y6o+thick;
unfilldraw z3i..z4i..z5i..z6i..cycle;
filldraw z3o..z4o..z5o..z6o..cycle;
filldraw stroke z1e--z2e; filldraw stroke z1e--z2e;
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,6,100);
endchar;


cmchar "Greek 394BC letter psi (rough, Q)";
beginchar("Q", 2u#+side#, cap_height#,0);
adjust_fit(0, 0);
pcshiftx := u;
y100 = h/2; x100 = pcshiftx + y100;  % center point
numeric alpha, beta;
numeric hor, vert, theta;
pair greek;
alpha=1;  % scale factor
beta=1/3alpha*side+thick; % arm seperation height
numeric gamma;
gamma := side/10;  % extra at top and bottom
penpos1(thick,0); penpos2(thick,0);
z1=(w/2,-gamma); z2=(w/2,h+gamma);
filldraw stroke z1e--z2e;
hor := w/2; vert := h-beta;
greek = (hor,vert);
theta=270+angle(greek);
penpos3(thick,theta); penpos4(thick,theta);
z3l=(w/2,beta); y4l=alpha*h; x4r=w-pcshiftx;
penpos5(thick,-theta); penpos6(thick,-theta);
z5r=z3l; x6l=pcshiftx; y6r=y4l;
z10=whatever[z1r,z2r]=whatever[z3r,z4r];
z11=whatever[z1l,z2l]=whatever[z5l,z6l];
filldraw z3l--z4l--z4r--z10--cycle; % right arm
filldraw z5r--z6r--z6l--z11--cycle; % left arm
proofpcbb(100, y100, y100);
penlabels(1,2,3,4,5,6,10,11,100);
endchar;


end

