From 1de8a46d1e11a5fe0eec80ada7592b0f16c17d06 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Fri, 29 Apr 2011 07:47:36 +0200 Subject: Fix missing glyphs for large fonts with QStaticText/GL/Freetype MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When rendering fonts that are so large the Freetype engine will fall back to outline rendering, we would sometimes lose glyphs that were at the edge of the texture, because the width of the image returned by QFontEngine::alphaMapForGlyph() includes a margin (which the other font engines do not) and thus it would sometimes be wider than the available area in the cache's texture. This would in turn cause the GL call to copy the glyph into the cache to fail. The correct fix would probably be to make the algorithm used to calculate the width in QFontEngine::alphaMapForGlyph() the same as the algorithm used by the glyph cache (which would mean to remove the margin there), but to minimize the impact in a patch release, we fix the symptom and move the correct fix to next minor release instead. Task-number: QT-4876 Reviewed-by: Jørgen --- src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp index 312d66f..0ffc7af 100644 --- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp +++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp @@ -306,7 +306,7 @@ void QGLTextureGlyphCache::fillTexture(const Coord &c, glyph_t glyph) // time. for (int i = 0; i < maskHeight; ++i) - glTexSubImage2D(GL_TEXTURE_2D, 0, c.x, c.y + i, maskWidth, 1, GL_ALPHA, GL_UNSIGNED_BYTE, mask.scanLine(i)); + glTexSubImage2D(GL_TEXTURE_2D, 0, c.x, c.y + i, qMin(c.w, maskWidth), 1, GL_ALPHA, GL_UNSIGNED_BYTE, mask.scanLine(i)); } } -- cgit v0.12