Procedurally Generated Script

This project aims to procedurally generate curves such that they resemble handwriting. Here is an example:

A sample of procedurally generated text

This project was originally a computer graphics (CSCI 580) project done by Sam Pollard (me) at Western Washington University under the instruction of Geof Matthews. The source code is hosted on GitHub and right now consists of a few Python files which when executed run a pygame instance, drawing the image realtime, and saving the image to a file.

This has been inactive since I have been working on other things but please contact me if you would like to contribute. I can be reached at spollard at cs dot uoregon dot edu.

Some ideas I have for continuing this are

  • Beautifying the existing output. One thought would be to compress each character dynamically depending on its width; essentially the program would automatically adjust the kerning.
  • Increasing the rendering speed. Currently, this samples each pixel and determines whether that pixel is inside or outside of the bézier curve. This is what Python is incredibly ill-suited for. A “stretch” goal would be to render this on a GPU (one implementation is described in GPU Gems).
  • Increasing the number of tunable parameters while keeping the user interface simple. Examples include changing the direction of the text, another could be adjusting the “sharpness” of the curves.
  • Developing an actual API. That way, someone could import the module then call something like handwriting = bezier.Handwriting(...) then call handwriting.render()