Skip to content

Instantly share code, notes, and snippets.

@djds23
Created July 23, 2014 00:34
Show Gist options
  • Save djds23/1675b6afcb2d8162aeaf to your computer and use it in GitHub Desktop.
Save djds23/1675b6afcb2d8162aeaf to your computer and use it in GitHub Desktop.
The answer for Daily Programmer #172
from string import uppercase
#Build fonts from txt file
with open('font.txt', 'rb') as fonts:
letters = fonts.readlines()
font = {}
for line in letters:
if line[0] in uppercase:
line = line.translate(None, '\n')
font[line] = []
default = font[line]
else:
default.append(line.translate(None, '\n'))
def render_text(WORD, letters):
rendered_text = []
space = ' 0 '
word_len = len(letters)
letter_index, pixel_index = 0, 0
line = ''
while letter_index<=word_len:
if letter_index == word_len:
rendered_text.append(line)
line = ''
letter_index = 0
pixel_index +=1
try:
line += letters[letter_index][pixel_index] + space
except IndexError:
break
letter_index += 1
for line in rendered_text:
print line
return write_file(WORD,rendered_text)
def write_file(WORD, rendered_text):
filename = WORD + '.PBM'
with open(filename, 'wb') as output:
output.write('P1\n')
output.write(str(len(rendered_text[0])/2)+' '+\
str(len(rendered_text))+'\n')
for line in rendered_text:
output.write(line+'\n')
if __name__=='__main__':
while True:
WORD = raw_input('Type your word here: ').upper()
if WORD == '.exit':
break
letters = []
for letter in WORD.upper():
render = font[letter]
letters.append(render)
render_text(WORD, letters)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment