fontrenderer: bring RenderString() and getRenderWidth() in line

both functions had slightly different ideas on how wide a string
would render, leading to occational off-by-ones and eventually
stripped characters

git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-experimental@1264 e54a6e83-5905-42d5-8d5c-058d10e6a962
This commit is contained in:
seife
2011-03-06 18:08:23 +00:00
parent 3aa7e2f854
commit f0d56fe6e7

View File

@@ -500,10 +500,6 @@ void Font::RenderString(int x, int y, const int width, const char *text, const u
continue; continue;
} }
// width clip
if (x + glyph->xadvance + spread_by > left + width)
break;
//kerning //kerning
if (use_kerning) if (use_kerning)
{ {
@@ -512,6 +508,10 @@ void Font::RenderString(int x, int y, const int width, const char *text, const u
x += (kerning.x) >> 6; // kerning! x += (kerning.x) >> 6; // kerning!
} }
// width clip
if (x + glyph->xadvance + spread_by > left + width)
break;
#ifndef USE_NEVIS_GXA #ifndef USE_NEVIS_GXA
int stride = frameBuffer->getStride(); int stride = frameBuffer->getStride();
int ap=(x + glyph->left) * sizeof(fb_pixel_t) + stride * (y - glyph->top); int ap=(x + glyph->left) * sizeof(fb_pixel_t) + stride * (y - glyph->top);
@@ -641,7 +641,7 @@ int Font::getRenderWidth(const char *text, const bool utf8_encoded)
if (use_kerning) if (use_kerning)
{ {
FT_Get_Kerning(face, lastindex, index, 0, &kerning); FT_Get_Kerning(face, lastindex, index, 0, &kerning);
x+=(kerning.x+32)>>6; // kerning! x += (kerning.x) >> 6; // kerning!
} }
x+=glyph->xadvance+1; x+=glyph->xadvance+1;