mainly they seem to be consistently smaller than the character width which seems wrong.
i feel i am using them as documented and the same as other examples, but when rendering there is clearly something wrong in the x direction only.
the crucial bit of code that I have written looks like this:
const BMCharData& xCharData = **ppxCharData;
mfXCursor += xCharData.mfAdvanceX * fScale;
const BMKerningPair** ppxKerningData = mpxFont->mxKerningMap.Find( Render::Font::KerningHash( wcLastChar, wcCurrentChar ) );
if( ppxKerningData )
{
mfXCursor += ( **ppxKerningData ).mfKerningAmount * fScale;
}
pxCurrentGeometry->AddCharacter( *mpxFont, fScale, mfXCursor, mfYCursor, wcCurrentChar );
wcLastChar = wcCurrentChar;
the visual result comes out looking like this (in this case no kerning hints are present to be applied, so the dodgy x positions are resulting entirely from the xadvance data):
to make it clear if it is not it should be reading 182.45 fps and RT: 0.8 ms
does anyone have any suggestions on why this may be the case? am i wrong to interpret xadvance as using the same scale factor as the x, y, width, height and x and y offsets?
as a dumb guess, maybe i am rendering the quads backwards with the uvs flipped in the u direction - although i wouldn't expect the kind of overlap i see here to result from that (smaller characters seem /further/ offset to the left - but my internal visualisation may well be a complete fiction). i will try this quickly... but that would be extremely odd. none of the other code i've found and looked at for reference seems to do that. (although y is inverted, which seems to be the way)