Add font scaler gm.
http://codereview.appspot.com/5337044/


git-svn-id: http://skia.googlecode.com/svn/trunk@2619 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gm/fontscaler.cpp b/gm/fontscaler.cpp
index 411eb67..5c2a3de 100644
--- a/gm/fontscaler.cpp
+++ b/gm/fontscaler.cpp
@@ -47,7 +47,7 @@
     }
 
     virtual SkISize onISize() {
-        return make_isize(1500, 750);
+        return make_isize(1450, 750);
     }
 
     static void rotate_about(SkCanvas* canvas, SkScalar degrees, SkScalar px, SkScalar py) {
diff --git a/gyp/gmslides.gypi b/gyp/gmslides.gypi
index e7cc883..8a97b0c 100644
--- a/gyp/gmslides.gypi
+++ b/gyp/gmslides.gypi
@@ -10,7 +10,7 @@
     '../gm/emptypath.cpp',
     '../gm/filltypes.cpp',
     '../gm/filltypespersp.cpp',
-#    '../gm/fontscaler.cpp',
+    '../gm/fontscaler.cpp',
     '../gm/gradients.cpp',
     '../gm/hairmodes.cpp',
     '../gm/lcdtext.cpp',
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index ce08e0b..aa1d7b1 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -1569,7 +1569,13 @@
     ptr = write_scalar(ptr, this->getStrokeWidth());
     ptr = write_scalar(ptr, this->getStrokeMiter());
     *ptr++ = this->getColor();
-    *ptr++ = (this->getFlags() << 16) | (this->getTextAlign() << 8) | flatFlags;
+    // previously flags:16, textAlign:8, flatFlags:8
+    // now flags:16, hinting:4, textAlign:4, flatFlags:8
+    *ptr++ = (this->getFlags() << 16) |
+             // hinting added later. 0 in this nibble means use the default.
+             ((this->getHinting()+1) << 12) |
+             (this->getTextAlign() << 8) |
+             flatFlags;
     *ptr++ = pack_4(this->getStrokeCap(), this->getStrokeJoin(),
                     this->getStyle(), this->getTextEncoding());
 
@@ -1602,9 +1608,17 @@
     this->setStrokeMiter(read_scalar(pod));
     this->setColor(*pod++);
 
+    // previously flags:16, textAlign:8, flatFlags:8
+    // now flags:16, hinting:4, textAlign:4, flatFlags:8
     uint32_t tmp = *pod++;
     this->setFlags(tmp >> 16);
-    this->setTextAlign(static_cast<Align>((tmp >> 8) & 0xFF));
+
+    // hinting added later. 0 in this nibble means use the default.
+    uint32_t hinting = (tmp >> 12) & 0xF;
+    this->setHinting(0 == hinting ? kNormal_Hinting : static_cast<Hinting>(hinting-1));
+
+    this->setTextAlign(static_cast<Align>((tmp >> 8) & 0xF));
+
     uint8_t flatFlags = tmp & 0xFF;
 
     tmp = *pod++;