If you look at any of the samples we do it all the time.
https://github.com/LdB-ECM/Raspberry-Pi ... /README.md
Essentially there are two things you need
1.) a bitmap font for the screen either 8x8 or 8x16 works well.
I just convert them the binaries to a standard C array .. look at Font8x16.h
2.) You need the graphics routine to place the font bitmaps
Step 2 is a little tricky because there are different screen colour depths 16 bit, 24 and 32 bit colour and I select the right one depending what depth you select when you initialize the screen.
What we are doing is basically
It's just a little more complex because we have multiple screen modes and I actually provide a number of graphics primitives
ClearArea ....... will clear an area of the screen from top left to bottom right coords in the given colour
VertLine ...... Draws a vertical line from Y1 to Y2 at coord x in the given colour (heavily optimized)
HorzLine ..... Draws a horizontal line from X1 to X2 at coord Y in the given colour (Heavily optimized)
DiagLine ..... Draws a line from X1,Y1 to X2,Y2 in given colour. (Can be vertical or horizontal but much slower than above)
WriteChar .... Write the character at the given X,Y cordinate in the font and fore and back colour given
TransparentWriteChar .... Transparent write the character at the given X,Y cordinate in the font and fore colour given
PutImage .... Place the binary image to screen at position X,Y