beginchar("i",wedge_wid#+wedge_len#,let_height#,0);
wedgesetup;

wccw(2) = (w, h);
mid(2) = wpnt(1); rot(2) := -90;
wlenwid(2, h);
wpnt(3) = cen(2);
mid(4) = mid(3); rot(4) := -90;

wedgeset(1, 4);
endchar;

beginchar("h",wedge_len# + wedge_wid#,let_height#,0);
wedgesetup;

wcw(1) = wccw(2) = (0, h/2);
tback(3) = mid(1); tback(4) = mid(2);

wedgeset(1, 4);
endchar;

beginchar("g",wedge_len# + 2wedge_wid#,let_height#,0);
wedgesetup;

wlenwid(1, h); rot(1) := -90;
wpnt(2) = ccwmid(1);
cen(3) = cen(1);
wcw(4) = wpnt(3); rot(4) := -60;
wccw(6) = wcw(5) = wccw(4); 
rot(5) := -60; rot(6) := 60;
xpart tback(2) = 0;
ypart tback(1) = h;

wedgeset(1, 6);
endchar;

beginchar("f",wedge_len# + 2wedge_wid#,let_height#,0);
wedgesetup;

mid(7) = wcw(9); rot(7) := 10;
wlenwid(8, h);
wccw(8) = (w, h);
rot(8) := -90;
wpnt(9) = mstem(8);
rot(9) := -30;
wpnt(10) = mid(8);
rot(10) := -30;
wlenwid(10, 3/4*wedge_len);
wccw(11) = wcw(10);
rot(11) := 90;
wlenwid(11, 3/4*wedge_len);

wedgeset(7, 11);
endchar;

beginchar("e",wedge_len#,let_height#,0);
wedgesetup;

wlenwid(1, h); rot(1) := -90; cen(1) = (w/2, h/2);
cen(2) = mid(1);
cen(3) = mstem(1);

wedgeset(1, 3);
endchar;

beginchar("d",1.5wedge_len#,let_height#,0);
wedgesetup;

wccw(1) = wcw(2);
wccw(3) = mid(2);
rot(1) := rot(2) := -30; rot(3) := 60;
wlenwid(4, h); wccw(4) = (w, h); rot(4) := -90;
xpart wcw(1) = 0;
ypart wpnt(1) = 0;

wedgeset(1, 4);
endchar;

beginchar("c",2.5wedge_len#,let_height#,0);
wedgesetup;

wcw(1) = wccw(2) = (0, h/2);
wcw(3) = wmid(2);
wcw(4) = wccw(3);
wcw(5) = wccw(4) = wccw(6);
wcw(7) = wpnt(3);
rot(3) := rot(4) := rot(5) := rot(7) := -60;
rot(6) := 60;
wlenwid(3, wedge_len*.66);
wlenwid(4, wedge_len*.66);
wlenwid(5, wedge_len*.66);
wlenwid(6, wedge_len*.66);
wlen(7) := wedge_len*.66;
wwid(7) := 2*wwid(3);

wedgeset(1, 7);
endchar;

wcw(1) = wccw(2) = wpnt(0);
beginchar("b",2wedge_len#,let_height#,0);
wedgesetup;

wcw(1) = wccw(2) = wpnt(0);
rot(1) := -60;
rot(2) := 60;
tback(0) = (0, h/2);

wedgeset(0, 2);
endchar;

beginchar("a",2wedge_len#,let_height#,0);
wedgesetup;

wcw(1) = wccw(2) = (0, h/2);
wpnt(1) = wcw(3) = wccw(4);
rot(3) := -60; rot(4) := 60;
wpnt(2) = wcw(5);
rot(5) := -60;
wlenwid(6, wedge_len/2); wlenwid(7, wedge_len/2);
cen(6) = .33[mid(2), wpnt(2)]; cen(7) = .66[mid(2), wpnt(2)];
rot(6) := -90; rot(7) := -90;
wlenwid(8, h);
wccw(8) = (w, h);
rot(8) := -90;

wedgeset(1, 8);
endchar;

beginchar("`",2wedge_len#,let_height#,0);
wedgesetup;

wcw(1) = wccw(2);
wpnt(1) = wccw(3) = mid(4);
wlenwid(4, let_height);
ypart wpnt(4) = 0;
xpart wcw(1) = 0;
rot(4) := -90;

wedgeset(1, 4);
endchar;

beginchar("_",2wedge_len#,let_height#,0);
wedgesetup;

wlenwid(1, h/2);	rot(1) := -90;
wlenwid(2, h/2);	rot(2) := -90;
wlenwid(3, h/2);	rot(3) := -90;
wccw(2) = (w, h);
wccw(1) = wcw(2);
wcw(3) = wpnt(1);
wpnt(4) = cwmid(3);

wedgeset(1, 4);
endchar;

beginchar("^",wedge_len#+wedge_wid#,let_height#,0);
wedgesetup;

wcw(1) = wccw(2) = wccw(3) = wcw(4);
rot(1) := 60; rot(2) := -60;
rot(3) := 60; rot(4) := -60;
ypart wcw(1) = h/2;
xpart wccw(1) = 0;

wedgeset(1, 4);
endchar;

beginchar("]",wedge_len#+wedge_wid#,let_height#,0);
wedgesetup;

wlenwid(1, h);	rot(1) := -90;
wwid(2) := wwid(3) := wwid(4) := wwid(5) := wwid(6) := wedge_wid*.6;
wccw(1) = (w, h);
wpnt(2) = .33[wcw(1), mid(1)];
wpnt(3) = .66[wcw(1), mid(1)];
wpnt(4) = mid(1);
wpnt(5) = cen(1);
wcw(6) = mid(2);	rot(6) := -90;

wedgeset(1, 6);
endchar;

beginchar("\\",wedge_len#+wedge_wid#,let_height#,0);
wedgesetup;

wlenwid(1, h);	rot(1) := -90;
wwid(2) := wwid(3) := wwid(4) := wwid(5) := wedge_wid*.6;
wccw(1) = (w, h);
wpnt(2) = .33[wcw(1), mid(1)];
wpnt(3) = .66[wcw(1), mid(1)];
wpnt(4) = mid(1);
wpnt(5) = cen(1);

wedgeset(1, 5);
endchar;

beginchar("[",wedge_len#+wedge_wid#,let_height#,0);
wedgesetup;

tback(1) = (0, h/2);
tback(2) = mid(1);
cen(2) = cen(3);
rot(3) := -90;

wedgeset(1, 3);
endchar;

beginchar("Z",wedge_len#,let_height#,0);
wedgesetup;

wcw(1) = wccw(2) = (0, h/2);
rot(1) := -60;
rot(2) := 60;

wedgeset(1, 2);
endchar;

beginchar("Y",2wedge_wid#,let_height#,0);
wedgesetup;

wcw(1) = (0, h);	rot(1) := -90;
tback(2) = mid(1);	rot(2) := -90;
wcw(3) = wccw(1);	rot(3) := -90;
tback(4) = mid(3);	rot(4) := -90;
wccw(5) = mid(2);	rot(5) := -20;

wedgeset(1, 5);
endchar;

beginchar("X",3.5wedge_wid#,let_height#,0);
wedgesetup;

wccw(1) = (0, h);
wcw(2) = mid(1);	rot(2) := -90;
wcw(3) = wccw(2);	rot(3) := -90;
wcw(4) = wccw(3);	rot(4) := -90;
wcw(5) = wpnt(2);
wedgeset(1, 5);
endchar;

beginchar("W",wedge_len#+wedge_wid#,let_height#,0);
wedgesetup;

wccw(5) = (w, h);
wlenwid(5, h);
rot(5) := -90;

wpnt(2) = mid(5);
mid(1) = tback(2);
wpnt(4) = cwmid(5);
mid(3) = tback(4);
wlenwid(1, wedge_len*.7);
wlenwid(2, wedge_len*.7);
wlenwid(3, wedge_len*.7);
wlenwid(4, wedge_len*.7);

wedgeset(1, 5);
endchar;

beginchar("V",wedge_len#*2,let_height#,0);
wedgesetup;

wlenwid(5, 1.5wedge_len);
cen(1) = wccw(5);
cen(2) = wcw(5);
wcw(3) = ccwmid(5);
wccw(4) = cwmid(5);
ypart tback(5) = h/2;
xpart wcw(1) = 0;

wedgeset(1, 5);
endchar;

beginchar("U",wedge_len#,let_height#,0);
wedgesetup;

wcw(1) = (0, h);
wlen(1) := h;
rot(1) := -90;
wccw(2) = mid(1);
rot(2) := -20;
wedgeset(1, 2);
endchar;

beginchar("T",2*wedge_wid#+wedge_len#,let_height#,0);
wedgesetup;

wccw(1) = wcw(2);
wccw(2) = (w, h);
wccw(3) = wcw(4);
tback(3) = mid(1);
rot(1) := -90;
rot(2) := -90;
rot(3) := -90;
rot(4) := -90;
wpnt(5) = wcw(3);
wpnt(6) = mid(3);

wedgeset(1, 6);
endchar;

beginchar("S",wedge_len#,let_height#,0);
wedgesetup;

tback(1) = (0, h/2);

wedgeset(1, 1);
endchar;

beginchar("R",width_to_length_ratio*let_height#,let_height#,0);
wedgesetup;

wlenwid(1, h);
rot(1) := -90;
wcw(1) = (0, h);

wedgeset(1, 1);
endchar;

beginchar("Q",wedge_len#,let_height#,0);
wedgesetup;

rot(2) := -90;
cen(1) = cen(2) = (w/2, h/2);

wedgeset(1, 2);
endchar;

beginchar("P",width_to_length_ratio*let_height#*3/2,let_height#,0);
wedgesetup;

wlenwid(1, h/2);	rot(1) := -90;
wlenwid(2, h/2);	rot(2) := -90;
wlenwid(3, h/2);	rot(3) := -90;
wlen(4) := h/2; wwid(4) := wwid(3)*2; rot(4) := -90;

wcw(1) = (0, h);
wcw(2) = wccw(1);
wcw(3) = wccw(2);
wcw(4) = wpnt(1);

wedgeset(1, 4);
endchar;

beginchar("O",width_to_length_ratio*let_height#*7/4,let_height#,0);
wedgesetup;

wlen(1) := h/3;	wwid(1) := 4w/7; rot(1) := -90;
wlen(2) := h/3;	wwid(2) := 2w/7; rot(2) := -90;
wlen(3) := h/3;	wwid(3) := 2w/7; rot(3) := -90;
wlen(4) := h/3;	wwid(4) := 2w/7; rot(4) := -90;
wlen(5) := h/3;	wwid(5) := 2w/7; rot(5) := -90;
wlen(6) := h/3;	wwid(6) := 2w/7; rot(6) := -90;
wlen(7) := h/3;	wwid(7) := 2w/7; rot(7) := -90;

wcw(5) = (0, h);
wcw(6) = wccw(5);
wcw(7) = wccw(6);
wcw(2) = wpnt(5);
wcw(3) = wccw(2);
wcw(4) = wccw(3);
wcw(1) = wpnt(2);

wedgeset(1, 7);
endchar;

beginchar("N",5wedge_wid#,let_height#,0);
wedgesetup;

wlen(1) := h;	rot(1) := -90;
wlen(2) := h;	rot(2) := -90;
wlen(3) := h;	rot(3) := -90;
wlen(4) := h;	rot(4) := -90;
wlen(5) := w;
wccw(1) = wcw(2);
wccw(2) = wcw(3);
wccw(3) = wcw(4);
wccw(4) = (w, h);
wpnt(5) = (w, h/2);

wedgeset(1, 5);
endchar;

beginchar("M",5wedge_wid#,let_height#,0);
wedgesetup;

wlen(1) := let_height;	rot(1) := -90;
wlen(2) := let_height;	rot(2) := -90;
wlen(3) := let_height;	rot(3) := -90;
wlen(4) := let_height;	rot(4) := -90;
wlen(5) := w;
wlen(6) := w;
wccw(1) = wcw(2);
wccw(2) = wcw(3);
wccw(3) = wcw(4);
wccw(4) = (w, h);
wpnt(5) = (w, ypart mid(4));
wccw(6) = wcw(5);

wedgeset(1, 6);
endchar;

beginchar("L",.75width_to_length_ratio*let_height# + wedge_len#,let_height#,0);
wedgesetup;

wlenwid(1, let_height/2);
wlenwid(2, let_height/2);
wlenwid(3, let_height/2);
rot(1) := rot(2) := rot(3) := -90;
tback(0) = (0, h/2);
wpnt(1) = wpnt(0);
wcw(2) = wccw(1);
wcw(3) = wpnt(1);

wedgeset(0, 3);
endchar;

beginchar("K",wedge_len#+.5wedge_wid#,let_height#,0);
wedgesetup;

wpnt(1) = (wedge_wid/2, 0);
rot(1) := -90;
tback(2) = tback(1);

wedgeset(1, 2);
endchar;

beginchar("J",width_to_length_ratio*let_height#,let_height#,0);
wedgesetup;

wlenwid(1, let_height/2);
wlenwid(2, let_height/2);
wlenwid(3, let_height/2);
rot(1) := rot(2) := rot(3) := -90;
wcw(1) = (0, h);
wcw(2) = wccw(1);
wcw(3) = wpnt(1);

wedgeset(1, 3);
endchar;

beginchar("I",2wedge_wid#,let_height#,0);
wedgesetup;

wcw(1) = wccw(2) = (0, h/2);
wcw(3) = mid(1);
rot(3) := -90;
wccw(4) = wcw(3);
rot(4) := -90;
tmid(5) = tmid(6) = wpnt(1);
rot(5) := 60;
rot(6) := -60;
tmid(7) = wpnt(2);
rot(7) := -60;

wedgeset(1, 7);
endchar;

beginchar("H",3wedge_wid#/stem_porp,let_height#,0);
wedgesetup;

wlen(1) := 3wedge_wid/stem_porp;
wccw(1) = (0, h);
rot(2) := -90;
rot(3) := -90;
rot(4) := -90;
wcw(2) = mid(1);
wcw(3) = wccw(2);
wcw(4) = wccw(3);
wccw(5) = mid(2);
wlen(5) := wedge_len*1.5;
wmid(6) = mstem(2);

wedgeset(1, 6);
endchar;

beginchar("G",wedge_len# + .5wedge_wid#,let_height#,0);
wedgesetup;

wlenwid(8, h);
wccw(8) = (w, h);
rot(8) := -90;
wpnt(9) = cen(8);
rot(9) := -30;
wpnt(10) = mstem(8);
rot(10) := -30;
wlenwid(10, 3/4*wedge_len);
wcw(11) = mid(10);
rot(11) := 90;
wlenwid(11, 3/4*wedge_len);

wedgeset(8, 11);
endchar;

beginchar("F",wedge_len# + .5wedge_wid#,let_height#,0);
wedgesetup;

wccw(7) = (w, h);
wlenwid(7, h);
rot(7) := -90;
wpnt(5) = mid(7);
wccw(6) = wcw(5);

wedgeset(5, 7);
endchar;

beginchar("E",wedge_len#+2tail_len#,let_height#,0);
wedgesetup;

wccw(5) = (w, h);
wlenwid(5, h);
rot(5) := -90;
wpnt(2) = mid(5);
mid(1) = tback(2);
wccw(3) = wcw(1);
wccw(4) = wcw(2);

wedgeset(1, 5);
endchar;

beginchar("D",wedge_len# + wedge_wid#,let_height#,0);
wedgesetup;

mid(1) = wccw(2) = wccw(3) = mid(4);
rot(1) := rot(3) := -60;
rot(2) := rot(4) := 60;
mid(5) = wccw(6) = wccw(7) = mid(8);
rot(5) := rot(7) := -60;
rot(6) := rot(8) := 60;
xpart wccw(1) = 0;
ypart wcw(1) = h/2;
wccw(5) = cwmid(1);

wedgeset(1, 8);
endchar;

beginchar("C",2wedge_wid#,let_height#,0);
wedgesetup;

rot(1) := -90;
rot(2) := -90;
rot(3) := -90;
wccw(2) = (w, h);
tback(1) = mid(2);
wccw(3) = .5[wcw(1), wcw(2)];

wedgeset(1, 3);
endchar;

beginchar("B",wedge_len#+wedge_wid#,let_height#,0);
wedgesetup;

wccw(4) = (w, h);
rot(4) := -90;
wlenwid(4, h);
wpnt(1) = cwmid(4);
wpnt(2) = cen(4);
wpnt(3) = mid(4);

wedgeset(1, 4);
endchar;

beginchar("A",wedge_len#,let_height#,0);
wedgesetup;

cen(1) = cen(2) = (w/2, h/2);
rot(2) := 80;

wedgeset(1, 2);
endchar;

beginchar("@",wedge_wid#+wedge_len#,let_height#,0);
wedgesetup;

wccw(1) = (0, h);
wmid(2) = wpnt(1); rot(2) := -90;
tback(3) = cen(2); rot(3) := -90;
wpnt(4) = mid(3);
mid(5) = mid(4); rot(5) := -90;

wedgeset(1, 5);
endchar;