This was the second attempt to encode run length data (first attempt used huffman encoding). The results were not as optimal huffman encoding would provide, but the encoder/decoder is much simpler. The data lengths were encoded using variable length numbers, similar to those used in MIDI files. Instead of 7 bits per group, the optimal bits per group were determined emperically: bits per group dejiko puchiko 6 6083 5229 5 5268 4560 4 4765 4050 3 4224 3844 2 4014 3558 1 4456 4000 Encoding assumed alternating run/space data, synchronized after newlines. Thus every line must begin with at least one whitespace. Second try, and I realized that I don't have the time and space to do what I wanted in the beginning :P