Fix crash with LCD vertical text.
https://codereview.appspot.com/6012050/


git-svn-id: http://skia.googlecode.com/svn/trunk@3660 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/ports/SkFontHost_FreeType.cpp b/src/ports/SkFontHost_FreeType.cpp
index 514a041..3399ec7 100644
--- a/src/ports/SkFontHost_FreeType.cpp
+++ b/src/ports/SkFontHost_FreeType.cpp
@@ -173,6 +173,7 @@
     void getBBoxForCurrentGlyph(SkGlyph* glyph, FT_BBox* bbox,
                                 bool snapToPixelBoundary = false);
     void updateGlyphIfLCD(SkGlyph* glyph);
+    void updateGlyphPosIfLCD(SkGlyph* glyph);
 };
 
 ///////////////////////////////////////////////////////////////////////////
@@ -1008,6 +1009,15 @@
         }
     }
 }
+void SkScalerContext_FreeType::updateGlyphPosIfLCD(SkGlyph* glyph) {
+    if (isLCD(fRec)) {
+        if (fLCDIsVert) {
+            glyph->fTop -= gLCDExtra >> 1;
+        } else {
+            glyph->fLeft -= gLCDExtra >> 1;
+        }
+    }
+}
 
 void SkScalerContext_FreeType::generateMetrics(SkGlyph* glyph) {
     SkAutoMutexAcquire  ac(gFTMutex);
@@ -1142,7 +1152,7 @@
         glyph->fLeft = SkFixedRoundToInt(vLeft - vOrigin.x);
         glyph->fTop =  -SkFixedRoundToInt(vTop - vOrigin.y);
 
-        updateGlyphIfLCD(glyph);
+        updateGlyphPosIfLCD(glyph);
 
         // use the vertical advance values computed by freetype
         glyph->fAdvanceX = -SkFixedMul(fMatrix22.xy, fFace->glyph->linearVertAdvance);