EVALUATION
This bug was introduced by the fix for
6595317: D3D: some character combinations show color fringing (LCD AA)
The edge pixels in some cases don't get textured because
the cached destination texture is a little small.
This fix for 6595317 adjusted the bounds of the glyphs in some cases,
so that we don't update the cached destination texture if the glyphs' pixels
don't touch too much.
The problem is that when we need to reload the cached destination
completely (like when the new glyph's bounds are not fully
contained in the cached bounds), we may read 1 or 2 pixels too
little, so when the first or the last glyph which supposedly
fits into the cached destination is rendered, their edge pixels
are not in the cached destination, and thus aren't textured, or
textured with some random color.
The fix is to use the adjusted glyph bounds only in case when we check
the current glyph bounds against the previous glyph bounds.
|