@micahmicah I have no experience with RoboFont, but I assume this wil work. The trick is to remember the last point and use that as the first point.
g = BezierPath()
g.oval(0,0,500,500)
newPage(1000,1000)
P = BezierPath()
diameter = 10
translate(240,100)
# DRAW CONTOURS
for contour in g.contours:
# DEFINE STARTING POINT
x3,y3 = (contour[0][0][0],contour[0][0][1])
P.moveTo((x3,y3))
for segment in contour:
# LAST POINT BECOMES THE FIRST POINT
x0,y0 = x3,y3
# IF IT'S A CURVE DRAW A CURVE
if len(segment) == 3:
x1,y1 = segment[0][0], segment[0][1]
x2,y2 = segment[1][0], segment[1][1]
x3,y3 = segment[2][0], segment[2][1]
P.curveTo((x1,y1),(x2,y2),(x3,y3))
# SHOW THE OFF CURVE POINTS
oval(x1-diameter/2,y1-diameter/2,diameter,diameter)
oval(x2-diameter/2,y2-diameter/2,diameter,diameter)
# SHOW THE ON CURVE POINTS
rect(x3-diameter/2,y3-diameter/2,diameter,diameter)
# DRAW A LINE
stroke(0)
line((x2,y2),(x3,y3))
line((x0,y0),(x1,y1))
# IF IT'S A LINE DRAW A LINE
if len(segment) == 1:
x,y = segment[0][0], segment[0][1]
P.lineTo((x,y))
#SHOW POINTS
rect(x-diameter/2,y-diameter/2,diameter,diameter)
P.closePath()
fill(None)
stroke(0)
drawPath(P)