three related bug fixes in FontAtlas::prepareLetterDefinitions

This commit is contained in:
Greg Whitehead 2016-03-01 16:06:45 -08:00
parent 9af2f4e73a
commit 1420ea2cbc
1 changed files with 7 additions and 7 deletions

View File

@ -341,17 +341,12 @@ bool FontAtlas::prepareLetterDefinitions(const std::u16string& utf16Text)
tempDef.offsetX = tempRect.origin.x + adjustForDistanceMap + adjustForExtend;
tempDef.offsetY = _fontAscender + tempRect.origin.y - adjustForDistanceMap - adjustForExtend;
glyphHeight = static_cast<int>(bitmapHeight) + _letterPadding + _letterEdgeExtend;
if (glyphHeight > _currLineHeight)
{
_currLineHeight = glyphHeight;
}
if (_currentPageOrigX + tempDef.width > CacheTextureWidth)
{
_currentPageOrigY += _currLineHeight;
_currLineHeight = 0;
_currentPageOrigX = 0;
if (_currentPageOrigY + _lineHeight >= CacheTextureHeight)
if (_currentPageOrigY + _lineHeight + _letterPadding + _letterEdgeExtend >= CacheTextureHeight)
{
unsigned char *data = nullptr;
if (pixelFormat == Texture2D::PixelFormat::AI88)
@ -385,6 +380,11 @@ bool FontAtlas::prepareLetterDefinitions(const std::u16string& utf16Text)
tex->release();
}
}
glyphHeight = static_cast<int>(bitmapHeight) + _letterPadding + _letterEdgeExtend;
if (glyphHeight > _currLineHeight)
{
_currLineHeight = glyphHeight;
}
_fontFreeType->renderCharAt(_currentPageData, _currentPageOrigX + adjustForExtend, _currentPageOrigY + adjustForExtend, bitmap, bitmapWidth, bitmapHeight);
tempDef.U = _currentPageOrigX;
@ -425,7 +425,7 @@ bool FontAtlas::prepareLetterDefinitions(const std::u16string& utf16Text)
{
data = _currentPageData + CacheTextureWidth * (int)startY;
}
_atlasTextures[_currentPage]->updateWithData(data, 0, startY, CacheTextureWidth, _currentPageOrigY - startY + _lineHeight);
_atlasTextures[_currentPage]->updateWithData(data, 0, startY, CacheTextureWidth, _currentPageOrigY - startY + _currLineHeight);
return true;
}