Let me try to explain this a little better.
A few months ago I was working with a GLCD module.
Originally, I was using PIC microcontroller, cross-compiling with SDCC compiler.
Unfortunately it generates a huge final code.
So I decide to do it with Arduino. I created a little driver to draw
bitmap images and text on that GLCD module.
As you know, there are a lot of bitmap fonts and drivers out there. But
everyone has it's own way to organize such bitmaps, and it's own way to
read it. Usually they store the bitmap in the program memory.
A bitmap font usually is an array of bytes, such bytes are grouped to
represent a charactere in the GLCD display (glyph). Usually the groups
are sequentially stored, corresponding the ASCII table.
Considering this, I thought that my driver could be more generic. So I could
create a font format that works similar to the above approach, but doesn't
require to have all glyphs. The font could has only the used glyphs,
saving some memory.
(My bitmap font format: http://www.itisopensource.com/arduino/library/glcd/doc/html/classGlcdBitmapFont.html
I started to write the font class and then I realized that I need to store the
font bitmap somewhere, and I also need to read it.
Whereas my goal was to make something generic, my solution about reading the
font bitmap need to be generic too.
So I created the IO library, firstly it had only InputStream and its
subclasses. I got excited and wrote a lot of more classes.