You need is a contiguous list of unused display-list numbers, which you can
obtain from glGenLists().
Use the command glListBase() to set the offset and than
glCallLists()
(Note: OpenGL allows strings to be composed of one-, two-, three-, or four-byte
characters through the type parameter in glCallLists()).
glDeleteLists() makes it easy to delete all the lists associated with a font in a single operation.
Example (C code,
alternative
JOGL (using Swing and javax.media.opengl.*)):
import java.io.*;
import java.nio.*;
import java.nio.charset.*;
import java.awt.*;
import java.awt.event.*;
import net.java.games.jogl.*;
public class Font {
private final int asciiOffset = 32;
private int fontOffset;
public Font() {}
public void init( GL gl )
{
// Init byte buffers with letters.
for (int i = 0; i < rasters.length; i++) {
buf[i] = ByteBuffer.allocateDirect( rasters[i].length );
buf[i].put( rasters[i] );
buf[i].rewind();
}
// An other font with just the letter F.
bufF = ByteBuffer.allocateDirect( rasterF.length );
bufF.put( rasterF );
bufF.rewind();
// OpenGL init.
gl.glShadeModel(GL.GL_FLAT);
makeRasterFont(gl); // Init display lists.
}
private void makeRasterFont(GL gl)
{
gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1);
fontOffset = gl.glGenLists(128);
if( fontOffset == 0 ) {
System.out.println("GenList Error");
} else {
System.out.println("GenList listoffset: "+fontOffset);//ddd
for (int i = 0; i < rasters.length; i++)
{
// We start the lists at ASCII Space=20
gl.glNewList( fontOffset + asciiOffset + i , GL.GL_COMPILE); {
gl.glBitmap( 8, 13, 0.0f, 2.0f, 10.0f, 0.0f, buf[i] );
} gl.glEndList();
}
}
}
public void printString( GL gl, String s )
{
// Charset charset = Charset.forName("iso-latin-1");
// System.out.println("charset.name():"+charset.name() );
// ByteBuffer strbufTmp = charset.encode( s );
// Copy the string as bytes into a buffer.
// These bytes are used to select the
// displaylists to call for each character.
ByteBuffer strbuf = ByteBuffer.allocateDirect( s.length() );
for( int i = 0; i < strbuf.capacity(); i++ ) {
strbuf.put( (byte)s.charAt(i) ); }
gl.glPushAttrib(GL.GL_LIST_BIT);
gl.glListBase(fontOffset);
gl.glCallLists( strbuf.capacity(),//s.length(),
GL.GL_UNSIGNED_BYTE, strbuf );
gl.glPopAttrib();
}
public void draw( GL gl )
{
drawFont( gl );
gl.glWindowPos2i(20, 250);
printString( gl, "The quick brown fox jumps" );
gl.glWindowPos2i(20, 220);
printString(gl, "over a lazy dog.");
}
public void drawFont( GL gl )
{
gl.glColor3f( 1f, 1f, 1f );
gl.glWindowPos2i(10, 120);
for (int i = 0; i < rasters.length; i++) {
gl.glBitmap( 8, 13, 0.0f, 2.0f, 10.0f, 0.0f, buf[i] );
// Wrap.
float pos[] = new float[4];
gl.glGetFloatv( GL.GL_CURRENT_RASTER_POSITION, pos );
//System.out.println("x"+pos[0]+"y"+pos[1]+"z"+pos[2] );
if( (int)pos[0] > 260 )
{
gl.glWindowPos2i(10, (int)pos[1]-25);
}
}
}
///////////// Data //////////////////////////////////
// Bitmaps for all letters of one font
// starting with space.
private byte rasters [][] = {
{(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x18, (byte)0x18, (byte)0x00, (byte)0x00, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18},
{(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x36, (byte)0x36, (byte)0x36, (byte)0x36},
{(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x66, (byte)0x66, (byte)0xff, (byte)0x66, (byte)0x66, (byte)0xff, (byte)0x66, (byte)0x66, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x18, (byte)0x7e, (byte)0xff, (byte)0x1b, (byte)0x1f, (byte)0x7e, (byte)0xf8, (byte)0xd8, (byte)0xff, (byte)0x7e, (byte)0x18},
{(byte)0x00, (byte)0x00, (byte)0x0e, (byte)0x1b, (byte)0xdb, (byte)0x6e, (byte)0x30, (byte)0x18, (byte)0x0c, (byte)0x76, (byte)0xdb, (byte)0xd8, (byte)0x70},
{(byte)0x00, (byte)0x00, (byte)0x7f, (byte)0xc6, (byte)0xcf, (byte)0xd8, (byte)0x70, (byte)0x70, (byte)0xd8, (byte)0xcc, (byte)0xcc, (byte)0x6c, (byte)0x38},
{(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x18, (byte)0x1c, (byte)0x0c, (byte)0x0e},
{(byte)0x00, (byte)0x00, (byte)0x0c, (byte)0x18, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x18, (byte)0x0c},
{(byte)0x00, (byte)0x00, (byte)0x30, (byte)0x18, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x18, (byte)0x30},
{(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x99, (byte)0x5a, (byte)0x3c, (byte)0xff, (byte)0x3c, (byte)0x5a, (byte)0x99, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0xff, (byte)0xff, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x30, (byte)0x18, (byte)0x1c, (byte)0x1c, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xff, (byte)0xff, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x38, (byte)0x38, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x60, (byte)0x60, (byte)0x30, (byte)0x30, (byte)0x18, (byte)0x18, (byte)0x0c, (byte)0x0c, (byte)0x06, (byte)0x06, (byte)0x03, (byte)0x03},
{(byte)0x00, (byte)0x00, (byte)0x3c, (byte)0x66, (byte)0xc3, (byte)0xe3, (byte)0xf3, (byte)0xdb, (byte)0xcf, (byte)0xc7, (byte)0xc3, (byte)0x66, (byte)0x3c},
{(byte)0x00, (byte)0x00, (byte)0x7e, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x78, (byte)0x38, (byte)0x18},
{(byte)0x00, (byte)0x00, (byte)0xff, (byte)0xc0, (byte)0xc0, (byte)0x60, (byte)0x30, (byte)0x18, (byte)0x0c, (byte)0x06, (byte)0x03, (byte)0xe7, (byte)0x7e},
{(byte)0x00, (byte)0x00, (byte)0x7e, (byte)0xe7, (byte)0x03, (byte)0x03, (byte)0x07, (byte)0x7e, (byte)0x07, (byte)0x03, (byte)0x03, (byte)0xe7, (byte)0x7e},
{(byte)0x00, (byte)0x00, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0xff, (byte)0xcc, (byte)0x6c, (byte)0x3c, (byte)0x1c, (byte)0x0c},
{(byte)0x00, (byte)0x00, (byte)0x7e, (byte)0xe7, (byte)0x03, (byte)0x03, (byte)0x07, (byte)0xfe, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xff},
{(byte)0x00, (byte)0x00, (byte)0x7e, (byte)0xe7, (byte)0xc3, (byte)0xc3, (byte)0xc7, (byte)0xfe, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xe7, (byte)0x7e},
{(byte)0x00, (byte)0x00, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x18, (byte)0x0c, (byte)0x06, (byte)0x03, (byte)0x03, (byte)0x03, (byte)0xff},
{(byte)0x00, (byte)0x00, (byte)0x7e, (byte)0xe7, (byte)0xc3, (byte)0xc3, (byte)0xe7, (byte)0x7e, (byte)0xe7, (byte)0xc3, (byte)0xc3, (byte)0xe7, (byte)0x7e},
{(byte)0x00, (byte)0x00, (byte)0x7e, (byte)0xe7, (byte)0x03, (byte)0x03, (byte)0x03, (byte)0x7f, (byte)0xe7, (byte)0xc3, (byte)0xc3, (byte)0xe7, (byte)0x7e},
{(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x38, (byte)0x38, (byte)0x00, (byte)0x00, (byte)0x38, (byte)0x38, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x30, (byte)0x18, (byte)0x1c, (byte)0x1c, (byte)0x00, (byte)0x00, (byte)0x1c, (byte)0x1c, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x06, (byte)0x0c, (byte)0x18, (byte)0x30, (byte)0x60, (byte)0xc0, (byte)0x60, (byte)0x30, (byte)0x18, (byte)0x0c, (byte)0x06},
{(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xff, (byte)0xff, (byte)0x00, (byte)0xff, (byte)0xff, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x60, (byte)0x30, (byte)0x18, (byte)0x0c, (byte)0x06, (byte)0x03, (byte)0x06, (byte)0x0c, (byte)0x18, (byte)0x30, (byte)0x60},
{(byte)0x00, (byte)0x00, (byte)0x18, (byte)0x00, (byte)0x00, (byte)0x18, (byte)0x18, (byte)0x0c, (byte)0x06, (byte)0x03, (byte)0xc3, (byte)0xc3, (byte)0x7e},
{(byte)0x00, (byte)0x00, (byte)0x3f, (byte)0x60, (byte)0xcf, (byte)0xdb, (byte)0xd3, (byte)0xdd, (byte)0xc3, (byte)0x7e, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xff, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0x66, (byte)0x3c, (byte)0x18},
{(byte)0x00, (byte)0x00, (byte)0xfe, (byte)0xc7, (byte)0xc3, (byte)0xc3, (byte)0xc7, (byte)0xfe, (byte)0xc7, (byte)0xc3, (byte)0xc3, (byte)0xc7, (byte)0xfe},
{(byte)0x00, (byte)0x00, (byte)0x7e, (byte)0xe7, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xe7, (byte)0x7e},
{(byte)0x00, (byte)0x00, (byte)0xfc, (byte)0xce, (byte)0xc7, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc7, (byte)0xce, (byte)0xfc},
{(byte)0x00, (byte)0x00, (byte)0xff, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xfc, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xff},
{(byte)0x00, (byte)0x00, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xfc, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xff},
{(byte)0x00, (byte)0x00, (byte)0x7e, (byte)0xe7, (byte)0xc3, (byte)0xc3, (byte)0xcf, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xe7, (byte)0x7e},
{(byte)0x00, (byte)0x00, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xff, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3},
{(byte)0x00, (byte)0x00, (byte)0x7e, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x7e},
{(byte)0x00, (byte)0x00, (byte)0x7c, (byte)0xee, (byte)0xc6, (byte)0x06, (byte)0x06, (byte)0x06, (byte)0x06, (byte)0x06, (byte)0x06, (byte)0x06, (byte)0x06},
{(byte)0x00, (byte)0x00, (byte)0xc3, (byte)0xc6, (byte)0xcc, (byte)0xd8, (byte)0xf0, (byte)0xe0, (byte)0xf0, (byte)0xd8, (byte)0xcc, (byte)0xc6, (byte)0xc3},
{(byte)0x00, (byte)0x00, (byte)0xff, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0},
{(byte)0x00, (byte)0x00, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xdb, (byte)0xff, (byte)0xff, (byte)0xe7, (byte)0xc3},
{(byte)0x00, (byte)0x00, (byte)0xc7, (byte)0xc7, (byte)0xcf, (byte)0xcf, (byte)0xdf, (byte)0xdb, (byte)0xfb, (byte)0xf3, (byte)0xf3, (byte)0xe3, (byte)0xe3},
{(byte)0x00, (byte)0x00, (byte)0x7e, (byte)0xe7, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xe7, (byte)0x7e},
{(byte)0x00, (byte)0x00, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xfe, (byte)0xc7, (byte)0xc3, (byte)0xc3, (byte)0xc7, (byte)0xfe},
{(byte)0x00, (byte)0x00, (byte)0x3f, (byte)0x6e, (byte)0xdf, (byte)0xdb, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0x66, (byte)0x3c},
{(byte)0x00, (byte)0x00, (byte)0xc3, (byte)0xc6, (byte)0xcc, (byte)0xd8, (byte)0xf0, (byte)0xfe, (byte)0xc7, (byte)0xc3, (byte)0xc3, (byte)0xc7, (byte)0xfe},
{(byte)0x00, (byte)0x00, (byte)0x7e, (byte)0xe7, (byte)0x03, (byte)0x03, (byte)0x07, (byte)0x7e, (byte)0xe0, (byte)0xc0, (byte)0xc0, (byte)0xe7, (byte)0x7e},
{(byte)0x00, (byte)0x00, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0xff},
{(byte)0x00, (byte)0x00, (byte)0x7e, (byte)0xe7, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3},
{(byte)0x00, (byte)0x00, (byte)0x18, (byte)0x3c, (byte)0x3c, (byte)0x66, (byte)0x66, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3},
{(byte)0x00, (byte)0x00, (byte)0xc3, (byte)0xe7, (byte)0xff, (byte)0xff, (byte)0xdb, (byte)0xdb, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3},
{(byte)0x00, (byte)0x00, (byte)0xc3, (byte)0x66, (byte)0x66, (byte)0x3c, (byte)0x3c, (byte)0x18, (byte)0x3c, (byte)0x3c, (byte)0x66, (byte)0x66, (byte)0xc3},
{(byte)0x00, (byte)0x00, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x3c, (byte)0x3c, (byte)0x66, (byte)0x66, (byte)0xc3},
{(byte)0x00, (byte)0x00, (byte)0xff, (byte)0xc0, (byte)0xc0, (byte)0x60, (byte)0x30, (byte)0x7e, (byte)0x0c, (byte)0x06, (byte)0x03, (byte)0x03, (byte)0xff},
{(byte)0x00, (byte)0x00, (byte)0x3c, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x3c},
{(byte)0x00, (byte)0x03, (byte)0x03, (byte)0x06, (byte)0x06, (byte)0x0c, (byte)0x0c, (byte)0x18, (byte)0x18, (byte)0x30, (byte)0x30, (byte)0x60, (byte)0x60},
{(byte)0x00, (byte)0x00, (byte)0x3c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x3c},
{(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xc3, (byte)0x66, (byte)0x3c, (byte)0x18},
{(byte)0xff, (byte)0xff, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x18, (byte)0x38, (byte)0x30, (byte)0x70},
{(byte)0x00, (byte)0x00, (byte)0x7f, (byte)0xc3, (byte)0xc3, (byte)0x7f, (byte)0x03, (byte)0xc3, (byte)0x7e, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0xfe, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xfe, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0},
{(byte)0x00, (byte)0x00, (byte)0x7e, (byte)0xc3, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc3, (byte)0x7e, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x7f, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0x7f, (byte)0x03, (byte)0x03, (byte)0x03, (byte)0x03, (byte)0x03},
{(byte)0x00, (byte)0x00, (byte)0x7f, (byte)0xc0, (byte)0xc0, (byte)0xfe, (byte)0xc3, (byte)0xc3, (byte)0x7e, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0xfc, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x33, (byte)0x1e},
{(byte)0x7e, (byte)0xc3, (byte)0x03, (byte)0x03, (byte)0x7f, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0x7e, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xfe, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0},
{(byte)0x00, (byte)0x00, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x00, (byte)0x00, (byte)0x18, (byte)0x00},
{(byte)0x38, (byte)0x6c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x0c, (byte)0x00, (byte)0x00, (byte)0x0c, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0xc6, (byte)0xcc, (byte)0xf8, (byte)0xf0, (byte)0xd8, (byte)0xcc, (byte)0xc6, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0},
{(byte)0x00, (byte)0x00, (byte)0x7e, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x78},
{(byte)0x00, (byte)0x00, (byte)0xdb, (byte)0xdb, (byte)0xdb, (byte)0xdb, (byte)0xdb, (byte)0xdb, (byte)0xfe, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0xc6, (byte)0xc6, (byte)0xc6, (byte)0xc6, (byte)0xc6, (byte)0xc6, (byte)0xfc, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x7c, (byte)0xc6, (byte)0xc6, (byte)0xc6, (byte)0xc6, (byte)0xc6, (byte)0x7c, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xfe, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xfe, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x03, (byte)0x03, (byte)0x03, (byte)0x7f, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0x7f, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xc0, (byte)0xe0, (byte)0xfe, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0xfe, (byte)0x03, (byte)0x03, (byte)0x7e, (byte)0xc0, (byte)0xc0, (byte)0x7f, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x1c, (byte)0x36, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0xfc, (byte)0x30, (byte)0x30, (byte)0x30, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x7e, (byte)0xc6, (byte)0xc6, (byte)0xc6, (byte)0xc6, (byte)0xc6, (byte)0xc6, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x18, (byte)0x3c, (byte)0x3c, (byte)0x66, (byte)0x66, (byte)0xc3, (byte)0xc3, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0xc3, (byte)0xe7, (byte)0xff, (byte)0xdb, (byte)0xc3, (byte)0xc3, (byte)0xc3, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0xc3, (byte)0x66, (byte)0x3c, (byte)0x18, (byte)0x3c, (byte)0x66, (byte)0xc3, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0xc0, (byte)0x60, (byte)0x60, (byte)0x30, (byte)0x18, (byte)0x3c, (byte)0x66, (byte)0x66, (byte)0xc3, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0xff, (byte)0x60, (byte)0x30, (byte)0x18, (byte)0x0c, (byte)0x06, (byte)0xff, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00},
{(byte)0x00, (byte)0x00, (byte)0x0f, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x38, (byte)0xf0, (byte)0x38, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x0f},
{(byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x18},
{(byte)0x00, (byte)0x00, (byte)0xf0, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0x1c, (byte)0x0f, (byte)0x1c, (byte)0x18, (byte)0x18, (byte)0x18, (byte)0xf0},
{(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x06, (byte)0x8f, (byte)0xf1, (byte)0x60, (byte)0x00, (byte)0x00, (byte)0x00},
};
// Buffers for all font-bitmap byte arrays.
// The glBitmap function is the current jogl version (1.1.1)
// requires a byte buffer not an array.
ByteBuffer buf[] = new ByteBuffer[rasters.length];
}
To incorporate and use this font add the following lines
to your JOGL template:
Font font = new Font(); // global.
font.init( gl ); // In init function.
font.draw( gl ); // In display function.
gl.glWindowPos2i(20, 20);
font.printString( gl, new String("This is it.") );