diff --git a/gfx/thebes/src/gfxWindowsFonts.cpp b/gfx/thebes/src/gfxWindowsFonts.cpp index 728706a3b4f2..e51348a1a4cd 100644 --- a/gfx/thebes/src/gfxWindowsFonts.cpp +++ b/gfx/thebes/src/gfxWindowsFonts.cpp @@ -1137,8 +1137,24 @@ gfxWindowsFont::Measure(gfxTextRun *aTextRun, } } - return gfxFont::Measure(aTextRun, aStart, aEnd, - aBoundingBoxType, aRefContext, aSpacing); + gfxFont::RunMetrics metrics = gfxFont::Measure(aTextRun, aStart, aEnd, + aBoundingBoxType, aRefContext, + aSpacing); + + // if aBoundingBoxType is LOOSE_INK_EXTENTS + // and the underlying cairo font may be antialiased, + // we can't trust Windows to have considered all the pixels + // so we need to add "padding" to the bounds. + // (see bugs 475968, 439831, compare also bug 445087) + if (aBoundingBoxType == LOOSE_INK_EXTENTS && + mAntialiasOption != CAIRO_ANTIALIAS_NONE && + metrics.mBoundingBox.size.width > 0) { + const PRUint32 appUnitsPerDevUnit = aTextRun->GetAppUnitsPerDevUnit(); + metrics.mBoundingBox.pos.x -= appUnitsPerDevUnit; + metrics.mBoundingBox.size.width += 3 * appUnitsPerDevUnit; + } + + return metrics; } FontEntry* diff --git a/layout/reftests/bugs/308406-1-ref.html b/layout/reftests/bugs/308406-1-ref.html index 7dd1af8dbac8..b12fa08c8e81 100644 --- a/layout/reftests/bugs/308406-1-ref.html +++ b/layout/reftests/bugs/308406-1-ref.html @@ -1,5 +1,10 @@ + + + diff --git a/layout/reftests/bugs/308406-1.html b/layout/reftests/bugs/308406-1.html index 15b70d73c21d..b4507aecc352 100644 --- a/layout/reftests/bugs/308406-1.html +++ b/layout/reftests/bugs/308406-1.html @@ -1,5 +1,10 @@ + + +
diff --git a/layout/reftests/bugs/308406-2-ref.html b/layout/reftests/bugs/308406-2-ref.html index 307e9d66556f..d60c1997a7eb 100644 --- a/layout/reftests/bugs/308406-2-ref.html +++ b/layout/reftests/bugs/308406-2-ref.html @@ -1,4 +1,9 @@ + + +
diff --git a/layout/reftests/bugs/308406-2.html b/layout/reftests/bugs/308406-2.html index d2ab236a522f..8da753e45b62 100644 --- a/layout/reftests/bugs/308406-2.html +++ b/layout/reftests/bugs/308406-2.html @@ -1,4 +1,9 @@ + + +