In my situation, I need to be able to render a lot of text with varying font sizes and styles.

Here's some pseudo of how I typically draw a string on screen every frame:
Code :
void DrawText(text, position, font)
{
    foreach(char c in text)
    {
        DrawTexture(font.GetTexture(c), position); // Pushes 4 vertices and the glyph texture into a render queue which eventually all gets drawn at the same time
        position += font.spacing; // Move the position of the cursor over to account for spacing and kerning between letters
    }
}

Basically, when drawing a lot of text on screen (big or small, doesn't matter) it really starts to take a toll on performance. The amount of text I'm drawing doesn't seem unreasonable either, maybe 1000 characters at the most. Binding the texture for each character doesn't seem to have that significant of a performance hit. The problem appears to be all of the vertices used (4 per character).

So, my question, is there a way to reduce the amount of vertices used when drawing text? How are many games able to draw so much text on screen with a seemingly negligible performance decrease?