use font for measuring

Bug: skia:
Change-Id: I451c61d5b98cb42440a4eaa889d9404638a72f5c
Reviewed-on: https://skia-review.googlesource.com/c/179980
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
diff --git a/samplecode/SampleAnimatedText.cpp b/samplecode/SampleAnimatedText.cpp
index 1aa50e2..a7e86d6 100644
--- a/samplecode/SampleAnimatedText.cpp
+++ b/samplecode/SampleAnimatedText.cpp
@@ -24,11 +24,10 @@
 SkRandom gRand;
 
 static void DrawTheText(SkCanvas* canvas, const char text[], size_t length, SkScalar x, SkScalar y,
-                        const SkPaint& paint) {
-    SkPaint p(paint);
-
-    p.setSubpixelText(true);
-    canvas->drawText(text, length, x, y, p);
+                        const SkFont& font, const SkPaint& paint) {
+    SkFont f(font);
+    f.setSubpixel(true);
+    canvas->drawSimpleText(text, length, kUTF8_SkTextEncoding, x, y, f, paint);
 }
 
 // This sample demonstrates the cache behavior of bitmap vs. distance field text
@@ -69,8 +68,9 @@
     }
 
     void onDrawContent(SkCanvas* canvas) override {
+        SkFont font(SkTypeface::MakeFromFile("/skimages/samplefont.ttf"));
+
         SkPaint paint;
-        paint.setTypeface(SkTypeface::MakeFromFile("/skimages/samplefont.ttf"));
         paint.setAntiAlias(true);
         paint.setFilterQuality(kMedium_SkFilterQuality);
 
@@ -118,15 +118,16 @@
 
         SkScalar y = SkIntToScalar(0);
         for (int i = 12; i <= 26; i++) {
-            paint.setTextSize(SkIntToScalar(i*fSizeScale));
-            y += paint.getFontSpacing();
-            DrawTheText(canvas, text, length, SkIntToScalar(110), y, paint);
+            font.setSize(SkIntToScalar(i*fSizeScale));
+            y += font.getSpacing();
+            DrawTheText(canvas, text, length, SkIntToScalar(110), y, font, paint);
         }
         canvas->restore();
 
-        paint.setTextSize(16);
+        font.setSize(16);
 //        canvas->drawString(outString, 512.f, 540.f, paint);
-        canvas->drawString(modeString, 768.f, 540.f, paint);
+        canvas->drawSimpleText(modeString.c_str(), modeString.size(), kUTF8_SkTextEncoding,
+                               768.f, 540.f, font, paint);
     }
 
     bool onAnimate(const SkAnimTimer& timer) override {
diff --git a/samplecode/SampleChineseFling.cpp b/samplecode/SampleChineseFling.cpp
index b8110f3..3b73bb2 100644
--- a/samplecode/SampleChineseFling.cpp
+++ b/samplecode/SampleChineseFling.cpp
@@ -20,16 +20,6 @@
 #include "GrContextPriv.h"
 #endif
 
-static void make_paint(SkPaint* paint, sk_sp<SkTypeface> typeface) {
-  static const int kTextSize = 56;
-
-  paint->setAntiAlias(true);
-  paint->setColor(0xDE000000);
-  paint->setTypeface(typeface);
-  paint->setTextSize(kTextSize);
-  paint->setTextEncoding(kUTF32_SkTextEncoding);
-}
-
 static sk_sp<SkTypeface> chinese_typeface() {
 #ifdef SK_BUILD_FOR_ANDROID
     return MakeResourceAsTypeface("fonts/NotoSansCJK-Regular.ttc");
@@ -68,7 +58,7 @@
         canvas->clear(0xFFDDDDDD);
 
         SkPaint paint;
-        make_paint(&paint, fTypeface);
+        paint.setColor(0xDE000000);
 
         // draw a consistent run of the 'words' - one word per line
         int index = fIndex;
@@ -93,10 +83,8 @@
     void init() {
         fTypeface = chinese_typeface();
 
-        SkPaint paint;
-        make_paint(&paint, fTypeface);
-
-        paint.getFontMetrics(&fMetrics);
+        SkFont font(fTypeface, 56);
+        font.getMetrics(&fMetrics);
 
         SkUnichar glyphs[kWordLength];
         for (int32_t i = 0; i < kNumBlobs; ++i) {
@@ -104,7 +92,7 @@
 
             SkTextBlobBuilder builder;
             sk_tool_utils::add_to_text_blob_w_len(&builder, (const char*) glyphs, kWordLength*4,
-                                                  paint, 0, 0);
+                                                  kUTF32_SkTextEncoding, font, 0, 0);
 
             fBlobs.emplace_back(builder.make());
         }
@@ -215,14 +203,11 @@
     void init() {
         fTypeface = chinese_typeface();
 
-        SkPaint paint;
-        paint.setAntiAlias(true);
-        paint.setColor(0xDE000000);
-        paint.setTypeface(fTypeface);
-        paint.setTextSize(11);
-        paint.setTextEncoding(kUTF32_SkTextEncoding);
+        SkFont font(fTypeface, 11);
+        font.getMetrics(&fMetrics);
 
-        paint.getFontMetrics(&fMetrics);
+        SkPaint paint;
+        paint.setColor(0xDE000000);
 
         SkUnichar glyphs[45];
         for (int32_t i = 0; i < kNumBlobs; ++i) {
@@ -234,7 +219,8 @@
                 this->createRandomLine(glyphs, currentLineLength);
 
                 sk_tool_utils::add_to_text_blob_w_len(&builder, (const char*) glyphs,
-                                                      currentLineLength*4, paint, 0, y);
+                                                      currentLineLength*4, kUTF32_SkTextEncoding,
+                                                      font, 0, y);
                 y += fMetrics.fDescent - fMetrics.fAscent + fMetrics.fLeading;
                 paragraphLength -= 45;
             }