line_of_text = 0 data_begin_line = 0 data_end_line = 0 input = open(file_name) def find_data_pos(): #print str.upper() global data_begin_line global data_end_line if not data_begin_line: if "{" in line: data_begin_line = line_of_text if not data_end_line: if "}" in line: data_end_line = line_of_text while True: line=input.readline() if not line or data_end_line: break line_of_text += 1 find_data_pos() # goto begin of file input.seek(0) #test only 4bytes font data_begin_line = 34 data_end_line = 47 print "Font region: " print "Begin line: ", data_begin_line print "End line: ", data_end_line print "Decoding font ..." line = 0 while True: input.readline() line += 1 if line == data_begin_line: break # Using line to count font line line = 0 # Read one fonts line while True: line_data = input.readline() line += 1 # Strip space line_data.strip() # Split in bytes line_data_in_bytes = line_data.split(',') # Remove fuking waste: first byte and last comment #line_data_in_bytes.pop(0) line_data_in_bytes.pop() # 36 bytes slide # slice to 12 parts, each parts contain 3 bytes for i in range(0, 22): data_3bytes = line_data_in_bytes[(i * 4):(i * 4) + 4] data_3bytes.reverse() stdout.write('|') for Hbytes in data_3bytes: #print Hbytes number = int(Hbytes, 16) for idx in range(0,8): mask = 1 << (7 - idx) if mask == (number & mask): stdout.write('*') else: stdout.write(' ') stdout.write('|\n') print '-' * 26 print "Next character: %s\n" % line print '-' * 26 if (line == data_end_line - data_begin_line): break input.close()