use font instead of paint

Bug: skia:
Change-Id: I653de31a22545cd78fba7e4aa7b7f85b6057a8e0
Reviewed-on: https://skia-review.googlesource.com/c/179984
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
diff --git a/gm/skbug_5321.cpp b/gm/skbug_5321.cpp
index be7e756..00021c8 100644
--- a/gm/skbug_5321.cpp
+++ b/gm/skbug_5321.cpp
@@ -6,28 +6,34 @@
  */
 
 #include "gm.h"
+#include "SkTextBlob.h"
 
 // https://bugs.skia.org/5321
 // two strings should draw the same.  PDF did not.
 DEF_SIMPLE_GM(skbug_5321, canvas, 128, 128) {
-    SkPaint paint;
-    paint.setStyle(SkPaint::kFill_Style);
-    paint.setTextSize(30);
+    SkFont font;
+    font.setEdging(SkFont::Edging::kAlias);
+    font.setSize(30);
 
-    paint.setTextEncoding(kUTF8_SkTextEncoding);
     const char text[] = "x\314\200y";  // utf8(u"x\u0300y")
     SkScalar x = 20, y = 45;
-    size_t byteLength = strlen(text);
-    canvas->drawText(text, byteLength, x, y, paint);
 
-    int glyph_count = paint.countText(text, byteLength);
-    SkAutoTMalloc<SkScalar> widths(glyph_count);
-    (void)paint.getTextWidths(text, byteLength, &widths[0]);
+    size_t byteLength = strlen(text);
+    canvas->drawSimpleText(text, byteLength, kUTF8_SkTextEncoding, x, y, font, SkPaint());
+
+    y += font.getMetrics(nullptr);
+    int glyph_count = font.countText(text, byteLength, kUTF8_SkTextEncoding);
+    SkTextBlobBuilder builder;
+
+    auto rec = builder.allocRunPosH(font, glyph_count, y);
+    font.textToGlyphs(text, byteLength, kUTF8_SkTextEncoding, rec.glyphs, glyph_count);
+
+    font.getWidths(rec.glyphs, glyph_count, rec.pos);
     for (int i = 0; i < glyph_count; ++i) {
-        SkScalar w = widths[i];
-        widths[i] = x;
+        SkScalar w = rec.pos[i];
+        rec.pos[i] = x;
         x += w;
     }
-    y += paint.getFontMetrics(nullptr);
-    canvas->drawPosTextH(text, byteLength, &widths[0], y, paint);
+
+    canvas->drawTextBlob(builder.make(), 0, 0, SkPaint());
 }