When did I say I use 2 displays? Well I don't. There's only one display.
Anyway it is really hard to explain the behavior of the code you posted. First of all it often does not get redrawn when being resized. When it does not I can minimize the window and show it again. The the it is redrawn when being resized but in a really strange way. Just as if the backbuffers would get flipped before drawing all of the text. And moreover just as if the text would be drawn from the back to the front. But in the end (When I let go of the mouse button) it is drawn properly. No characters missing.
Can the problem relate to the number of the fonts I have currently loaded? Because I have 9 fonts loaded at the same time (well actually only 2 types, but in different sizes). And only two of them has have the problem with missing characters.
//edit: OK, I made some progress simplifying the code and... I found this once more related to the calling of the al_get_text_width function. Here is the quotation from the previous thread:
I don't have a clue of what's this about because it seems so random. I also noticed that it seems to be related with the text aligned to the center and thus to calling al_get_text_width. Well I checked the result of this function and it always seems to return the correct width, the only problem is that the consequential text drawing (like x - text_width/2) will fail to print some letters, although their positions are correct. If I replace all the al_get_text_width calls the constants they return it seems* to work fine.
Well I kinda forgot about this but now I am back at this again. Somewhere deep in my code I use string wrapping for which I need to know the width of the the text in order to slice it into the correctly sized lines. Now here is the significant statement for which I stand: "If I do not call al_get_text_width() with some particular font, NO characters of this font will EVER get missing."
Now do you know how could calling this method "damage" the font? This is strange because a function like this should be essentially read-only. Anyway calling this method is not enough. You also need to resize the window. This leads me to the opinion, that it somehow caches out some info which may than get lost when resizing the window.
As soon as I'm done with making a simple example that would demonstrate this problem, I will post it. But I will probably not make it till monday (I'm doing dance show at a ball and I'm kinda short on time :-D).
//edit2: Finally! So, to make the example for you. Just take the first code you posted - the one from the beginning of the thread - and place these lines before the do-while loop:
For me it results in lowercase 'y' and 'z' missing. If I replace those letters for uppercase, then 'UVWXYZ' will be missing, but no lowercase letters. The connection is obvious. Only those letter used with al_get_text_width may get missing, as I stated before.