Chromium Code Reviews| Index: src/ports/SkScalerContext_win_dw.cpp |
| diff --git a/src/ports/SkScalerContext_win_dw.cpp b/src/ports/SkScalerContext_win_dw.cpp |
| index f27497be62ef7e40fdc88fede12c183624cbb227..a5771260bc0bafdece519288fc0571aef7d60b91 100644 |
| --- a/src/ports/SkScalerContext_win_dw.cpp |
| +++ b/src/ports/SkScalerContext_win_dw.cpp |
| @@ -399,6 +399,7 @@ void SkScalerContext_DW::generateAdvance(SkGlyph* glyph) { |
| } |
| void SkScalerContext_DW::generateMetrics(SkGlyph* glyph) { |
|
Shrikant Kelkar
2014/08/27 21:09:13
nit: optional
generateMetricsInternal(SKGlyph* gl
|
| +try_again: |
| glyph->fWidth = 0; |
| this->generateAdvance(glyph); |
| @@ -440,6 +441,12 @@ void SkScalerContext_DW::generateMetrics(SkGlyph* glyph) { |
| RECT bbox; |
| HRVM(glyphRunAnalysis->GetAlphaTextureBounds(fTextureType, &bbox), |
| "Could not get texture bounds."); |
| + if (bbox.right == 0 && bbox.left == 0 && bbox.top == 0 && bbox.bottom == 0 && |
| + fTextureType == DWRITE_TEXTURE_CLEARTYPE_3x1) { |
| + fTextureType = DWRITE_TEXTURE_ALIASED_1x1; |
| + fRenderingMode = DWRITE_RENDERING_MODE_ALIASED; |
| + goto try_again; |
| + } |
| glyph->fWidth = SkToU16(bbox.right - bbox.left); |
| glyph->fHeight = SkToU16(bbox.bottom - bbox.top); |