diff --git a/typeface.py b/typeface.py new file mode 100644 index 0000000..d447b0f --- /dev/null +++ b/typeface.py @@ -0,0 +1,222 @@ +from turtle import * +from math import sqrt + +def fly(unit): + penup() + fd(unit) + pendown() + +def flyto(x, y): + penup() + goto(x, y) + pendown() + +def triangle(unit): + "Draws a 2x1 isocolese triangle" + lt(45) + fd(unit * sqrt(2)) + rt(90) + fd(unit * sqrt(2)) + rt(135) + fd(2 * unit) + rt(180) + +def curve(vertical_units, diagonal_units, horizontal_units, right_turn=True): + "Draws a curve to the right: up, diag, horizontal, diag, down." + turn = right if right_turn else left + fd(vertical_units) + turn(45) + fd(diagonal_units * sqrt(2)) + turn(45) + fd(horizontal_units) + turn(45) + fd(diagonal_units * sqrt(2)) + turn(45) + fd(vertical_units) + +def draw_letter_a(unit): + fly(unit) + lt(90) + fd(unit*3) + curve(unit*3, unit*2, unit*2) + curve(unit*3, 0, unit*2) + lt(90) + fd(unit*2) + lt(90) + curve(unit*3, 0, unit*2) + fd(unit) + rt(90) + fly(2*unit) + lt(90) + curve(unit, unit, 0) + rt(90) + fd(2*unit) + fly(unit*3) + lt(90) + fly(4*unit) + lt(90) + +def draw_letter_b(unit): + fly(unit) + lt(90) + fd(8*unit) + rt(90) + fd(2*unit) + + # bubbles + rt(90) + fly(unit) + lt(90) + curve(unit, unit, 0) + rt(90) + fd(2*unit) + rt(180) + fly(4*unit) + lt(90) + curve(unit, unit, 0) + rt(90) + fd(2*unit) + fly(5*unit) + rt(90) + + # right side + fd(2*unit) + curve(0, 2*unit, 0) + rt(180) + curve(0, 2*unit, 0) + fd(4*unit) + + fly(unit) + rt(180) + + +def draw_letter_c(unit): + fly(7*unit) + rt(180) + curve(4*unit, 2*unit, 4*unit) + rt(90) + fd(2*unit) + fly(4*unit) + rt(90) + curve(3*unit, unit, 2*unit) + rt(90) + fly(4*unit) + fd(2*unit) + rt(90) + fly(7*unit) + rt(180) + +def draw_letter_d(unit): + fly(unit) + lt(90) + fd(8*unit) + rt(90) + curve(4*unit, 2*unit, 4*unit) + bk(2*unit) + rt(90) + fly(2*unit) + fd(4*unit) + rt(90) + curve(unit, unit, 2*unit) + fly(3*unit) + lt(90) + fly(2*unit) + lt(90) + +def draw_letter_e(unit): + fly(3*unit) + rt(180) + curve(2*unit, 0, 8*unit) + curve(4*unit, 0, 2*unit) + curve(0, 0, -unit) + curve(4*unit, 0, 2*unit) + curve(0, 0, -unit) + curve(4*unit, 0, 2*unit) + fly(3*unit) + rt(180) + +def draw_letter_f(unit): + fly(3*unit) + rt(180) + curve(2*unit, 0, 8*unit) + curve(4*unit, 0, 2*unit) + curve(0, 0, -unit) + curve(4*unit, 0, 2*unit) + lt(90) + fd(3*unit) + rt(90) + fly(3*unit) + rt(180) + +def draw_letter_g(unit): + fly(7*unit) + rt(180) + curve(4*unit, 2*unit, 4*unit) + rt(90) + fd(2*unit) + rt(90) + fd(2*unit) + curve(unit, unit, 2*unit, False) + lt(90) + curve(2*unit, 0, 2*unit) + fd(2*unit) + rt(90) + fly(7*unit) + rt(180) + +def draw_letter_h(unit): + pass + +def draw_letter_i(unit): + pass + +def draw_letter_j(unit): + pass + +def draw_letter_k(unit): + pass + +def draw_letter_l(unit): + pass + +def draw_letter_m(unit): + pass + +def draw_letter_n(unit): + pass + +def draw_letter_o(unit): + pass + +def draw_letter_p(unit): + pass + +def draw_letter_q(unit): + pass + +def draw_letter_r(unit): + pass + +def draw_letter_s(unit): + pass + +def draw_letter_t(unit): + pass + +def draw_letter_u(unit): + pass + +def draw_letter_v(unit): + pass + +def draw_letter_w(unit): + pass + +def draw_letter_x(unit): + pass + +def draw_letter_y(unit): + pass + +def draw_letter_z(unit): + pass