diff --git a/src/framework/graphics/font.cpp b/src/framework/graphics/font.cpp index 8350fd0e..37851d2f 100644 --- a/src/framework/graphics/font.cpp +++ b/src/framework/graphics/font.cpp @@ -261,28 +261,19 @@ void Font::calculateGlyphsWidthsAutomatically(const ImagePtr& image, const Size& glyphSize.width(), m_glyphHeight); int width = glyphSize.width(); - int lastColumnFilledPixels = 0; - bool foundAnything = false; for(int x = glyphCoords.left(); x <= glyphCoords.right(); ++x) { - int columnFilledPixels = 0; - + int filledPixels = 0; // check if all vertical pixels are alpha for(int y = glyphCoords.top(); y <= glyphCoords.bottom(); ++y) { - if(texturePixels[(y * image->getSize().width() * 4) + (x*4) + 3] != 0) { - columnFilledPixels++; - foundAnything = true; - } + if(texturePixels[(y * image->getSize().width() * 4) + (x*4) + 3] != 0) + filledPixels++; } - - // if all pixels were alpha we found the width - if(columnFilledPixels == 0 && foundAnything) { - width = x - glyphCoords.left(); + if(filledPixels > 0) { + width = x - glyphCoords.left() + 1; width += m_glyphSpacing.width(); - if(m_glyphHeight >= 16 && lastColumnFilledPixels >= m_glyphHeight/3) + if(m_glyphHeight >= 16 && filledPixels >= m_glyphHeight/3) width += 1; - break; } - lastColumnFilledPixels = columnFilledPixels; } // store glyph size m_glyphsSize[glyph].resize(width, m_glyphHeight);