you re-read and re-draw the image every single time you call render! Don't do that! Load the image once and store it as a variable to be reused.
When drawing the letter, your destination x2 should be x+8 not x + (length * 8 ) since that's making the letter as wide as the entire word length
Also, since your letters at 8x8 pixels, you should be doing (c%29) * 8 and (c/29) * 8
Lastly, you should check if c == -1 so it can skip drawing that non-existant letter. This will probably be needed for spaces so don't forget to add 8 to x, or better yet, don't add 8 to x and simply add i * 8 to x when drawing