Some simple code:
[java]
Vector2f imgLSize = new Vector2f(16f, 16f);
Vector2f labelLSize = new Vector2f(258f, 16f);
// Legend
Element img1 = new Element(screen, null, new Vector2f(1f, 40f), imgLSize, Vector4f.ZERO, "Interface/GUI/Map/Resource.png");
Label iL1 = new Label(screen, new Vector2f(19f, 40f), labelLSize, resize, "Interface/GUI/infoBoxGreen.png");
iL1.setText("Resource Node");
iL1.setTextVAlign(BitmapFont.VAlign.Top);
Element img2 = new Element(screen, null, new Vector2f(1f, 56f), imgLSize, Vector4f.ZERO, "Interface/GUI/Map/Lightning.png");
Label iL2 = new Label(screen, new Vector2f(19f, 56f), labelLSize);
iL2.setText("Lightning Storm");
[/java]
And some details.
As you can see, both in the code and the result of that code, the text isn’t top-aligned. The green box is a simple frame image with the inside transparent and shows where the actual control is located on the screen. But the text is offset by 9 pixels from the top. I would expect to have the bottom part of the text to be at the same level as the lower part of the box. Not 2 pixels lower. And that is if VAlign wasn’t set. Which it is, at Top as shown on line 8.
The box frame is simply there to demonstrate the discrepancy, it won’t be used in the game, at least not there. That means I could “fix” it by cheating the control higher, probably 6 pixels would center the whole thing. I would much prefer if the text was at its proper place.
There’s also the possibility I’m doing something wrong. But, well… I would be surprised if that was the case. I can’t get them all wrong now I can?