Jump to content
  • Advertisement
  • Remove ads and support GameDev.net for only $3. Learn more: The New GDNet+: No Ads!

  • 05/17/00 07:30 PM
    Sign in to follow this  

    Writing a Font Engine

    General and Gameplay Programming

    Myopic Rhino
    [size="5"]Introduction

    This article is just going to show you how to implement fonts into your game. The target is mostly for beginners. I will show you the easiest way(in my opinion) to do it. This tutorial will be in 16-bit Direct X and assumes that you have everything set up. It will use lpddsback as the back buffer.


    [size="5"]Setting it up

    First you want to make a new HFONT variable like so:

    HFONT fnt;
    Then you want to fill in the with the CreateFont Function:

    //Fill in the structure with default
    // values and use the Arial Font
    Fnt = CreateFont(14,0,0,0,0,0,0,0,0,0,0,0,0, "Arial")
    What that does is tell windows to use Arial with all the default values. The next step is creating a function to use this information


    [size="5"]Drawing Text

    Making the function to draw text using GDI is straight forward enough so I will just show you the function:

    void Draw_Text(char *text, int x,int y,
    COLORREF color,
    LPDIRECTDRAWSURFACE lpdds,
    HFONT fnt)
    {
    //this function draws text in 16-bit DX mode
    // with the selected font

    HDC dc; // the dc
    // get the dc from surface
    lpdds->GetDC(&dc)

    // set the colors
    SetTextColor(dc,color);

    // set background mode to transparent
    // so black isn't copied
    SetBkMode(dc, TRANSPARENT);

    // draw the text using the font
    SelectObject(dc, fnt);
    TextOut(dc,x,y,text,strlen(text));

    // release the dc
    lpdds->ReleaseDC(dc);

    } // end Draw_Text

    [size="5"]Using all of this

    Now I will show you an example of how to use all this to use fonts:

    //First make the font
    HFONT fnt;
    Fnt = CreateFont(14,0,0,0,0,0,0,0,0,0,0,0,0,"Arial");
    //Draw the text in Arial
    Draw_Text("This text is in Arial at Size 14",
    0,0,RGB(255, 255, 255), lpddsback, fnt);
    And that's all there is to it. You can change the font size by changing the 14 in the above example, and you can change the font face by changing the text in parentheses. For more information look in your compilers on-line documentation(assuming MSVC) for CreateFont. That will tell you what every parameter does.


    [Editor's note: Although this technique is simple and straightforward, it is also quite slow compared to other methods. For games that only have limited text output or that don't require a high degree of performance, it should work well, but for higher-end games, there are much faster techniques available.]


      Report Article
    Sign in to follow this  


    User Feedback


    There are no comments to display.



    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!