Don't try to scale embedded bitmaps.

If a font is bitmap only we need to scale a bitmap to obtain
the requested size if there isn't an exact match. If a font has
embedded bitmaps then these bitmaps should never be scaled by Skia.
Allow FreeType to do the scaling (as requested by the font).

BUG=chromium:408059
R=mtklein@google.com

Author: bungeman@google.com

Review URL: https://codereview.chromium.org/596513002
This commit is contained in:
bungeman 2014-09-22 12:24:41 -07:00 committed by Commit bot
parent 8d034a154f
commit a85511adc0

View File

@ -1301,7 +1301,9 @@ void SkScalerContext_FreeType::generateMetrics(SkGlyph* glyph) {
} }
} }
if (fFace->glyph->format == FT_GLYPH_FORMAT_BITMAP && fScaleY && fFace->size->metrics.y_ppem) { // If the font isn't scalable, scale the metrics from the non-scalable strike.
// This means do not try to scale embedded bitmaps; only scale bitmaps in bitmap only fonts.
if (!FT_IS_SCALABLE(fFace) && fScaleY && fFace->size->metrics.y_ppem) {
// NOTE: both dimensions are scaled by y_ppem. this is WAI. // NOTE: both dimensions are scaled by y_ppem. this is WAI.
scaleGlyphMetrics(*glyph, SkScalarDiv(SkFixedToScalar(fScaleY), scaleGlyphMetrics(*glyph, SkScalarDiv(SkFixedToScalar(fScaleY),
SkIntToScalar(fFace->size->metrics.y_ppem))); SkIntToScalar(fFace->size->metrics.y_ppem)));