Okay, this might be long...
I'm working on a game engine that will use OpenGL... I made up a font and wrote a small app that converts it to a bit map file.
I load it in memory, reversing each letter vertically, so it works like OpenGL does (starts from bottom left)
I use the display list trick for the font.
I saw that the text I was displaying got all grabbled.
so, I added a "Test char" in the font, and displayed it (the font chars are 20x20).
here's what the test byte looks like (in OpenGL order)

FF FF F0 (this line repeats itself 17 times)
AF 00 C0 (line 3)
55 81 B0 (line 2)
AA FF F0 (line 1)

and when I use
glBitmap(24, 20, 0, 0, 22, 0, letterimage);
(letterimage is a GLubyte [60] array)
(I used 24 as xwidth to see everything)

the 3 first lines of that char should look like (X = filled pixel)

XoXoXoXo XXXXXXXX XXXXoooo (line 1)
oXoXoXoX XooooooX XoXXoooo (line 2)
XoXoXXXX oooooooo XXoooooo (line 3)

but it displays
oooooooo XXoooooo oXoXoXoX

and the char is 24x15 instead of 24x20
the raster pos. is by the center of the screen, the projection is set to an ortho2D view (then restored after writing chars)