Using Bitmap Fonts in your game

Loading a font

To load a font you should just create a hgeFont object and pass the font file name to it's constructor:

hgeFont *fnt;
fnt = new hgeFont("font1.fnt");

Alternatively you may want to describe a font within resource script and use hgeResourceManager to load it.

Rendering text

The simplest way to render a text is hgeFont::Render method. You should just specify an anchor point on the screen, text alignment mode and the string to be rendered:

fnt->Render(20, 20, HGETEXT_LEFT, "Hello, world!");

You may use '\n' character in the string to indicate line breaks:

fnt->Render(20, 20, HGETEXT_LEFT,
       "Hello, Peter!\nLet's meet in 2012.");

A more advanced hgeFont::printf methods allows to render complex formatted strings with variables in a usual C-like syntax:

char *player;
int score;

fnt->printf(780, 10, HGETEXT_RIGHT,
       "Player:%s Score:%d", player, score);

The most powerful method is hgeFont::printfb. It has all functionality of printf plus it can automatically format the string into a rectangle on the screen.

int level;

fnt->printfb(200, 200, 400, 100, HGETEXT_CENTER | HGETEXT_MIDDLE,
       "Level:%d\nOnce upon a time in a galaxy far away..."
       "There was a great hero of unbelievable strength.", level);

Adjusting text appearance

You may alter the font appearance with SetColor, SetBlendMode, SetScale, SetRotation, SetTracking, SetSpacing methods:

fnt->SetColor(0x80FFFF00);
fnt->SetBlendMode(BLEND_DEFAULT);
fnt->SetScale(1.3f);
fnt->SetRotation(0.1f);
fnt->SetTracking(8.0f);
fnt->SetSpacing(1.4f);

Clean up

When the font isn't needed longer, you must delete it:

delete fnt;

If the font was loaded with hgeResourceManager you must NOT delete it. Leave this to the resource manager.

See also

hgeFont, hgeResourceManager, Bitmap Font Builder, Tutorial 03