Actually, after a little research, I found that in the TextureImpl class, the texture only binds if the last bound texture is, of course, not the one we are trying to bind. It's logical. But since my terrain's texture binding is done in a display list, well TextureImpl's last bound texture doesn't change, so TextureImpl thinks that the bound texture is still the font's texture (because it keeps a Texture reference and doesn't check the actual bound texture of openGL), and so does not do what it's supposed to do.
I just call
TextureImpl.unbind()
The reason why it worked when I was drawing units is that I was updating the last bound texture, then binding the font. For some obscure reason my units were displaying correctly (they are drawn just after the display list).
Well, now it works.