Search for "fill polygon" or "scanline fill algorithm".
It is a scan-line problem. If you can draw the font outline, then you can also store the points in a Y/X sorted list. If you did not draw the outline, then you can scan it to create the list.
[y1][x1], [y1][x2], [y1][x3], [y1][x4], ...
[y2][x1], [y2][x2], [y2][x3], [y2][x4]...
...
x1 => far left
x2 => first right
x3 => next left
x4 => next right
...
[y1][x1] line to [y1][x2] no line [y1][x3] line to [y1][x4]
I just wrote the following - so it has not been tested. But it should give you an idea of how a scan-line fill works.
struct MyPoint {
int x, y;
};
void FillBetweens(MyPoint* list, size_t list_size)
{
int current_y = 0;
for (size_t i=0; i<list_size-1; ++i)
{
if( list[i].y != current_y )
current_y = list[i].y;
if( list[i+1].y == current_y )
{
draw_betweens(list[i].y, list[i].x, list[i+1].x);
++i;
}
}
}