text is done using a font texture. Basically a texture with all the required characters placed in a grid format with fixed width and height. When you want to display a character, you simply count the offset, ie k = 11th character. You have 4 chars per rows, X number of columns etc, then you do some little sums, to work out where the K starts.
IE
row = abs(offset, row_length) * char_width
column = mod(offset, row_length) * char_height
something like that. Obviously you have to work out the algorithm for yourself, or steal one from the net (nitrogl and humus both have the code in their opensource 3d demos). THat's off the top of my head with some scribbles on a notepad. probably isn't right, and the "code" looks like visual basic to me not sure.
I'm not going to work out some test values to check.
Menus? You mean like pictures that change with the mouse over? well thats exactly what it is.