float gfx::draw_glyph(float px, float py, float fs, const Glyph &gly)
{
  const math::vec4f &corner1 = gly.getCorner1(),
                    &corner2 = gly.getCorner2();
  float rendx1 = px + (corner1.x() * fs),
        rendy1 = py + (corner1.y() * fs),
        rendx2 = px + (corner2.x() * fs),
        rendy2 = py + (corner2.y() * fs);

  //if(gly.getCode() == 'T')
  //{
  //  std::cout << corner1 << " : " << corner2 << std::endl;
  //}

  gly.bind();
  draw_fill(0, rendx1, rendy1, corner1.z(), corner1.w());
  draw_fill(1, rendx2, rendy1, corner2.z(), corner1.w());
  draw_fill(2, rendx1, rendy2, corner1.z(), corner2.w());
  draw_fill(3, rendx2, rendy2, corner2.z(), corner2.w());
  glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

  return gly.getAdvance().x() * fs;
}