Use SkFont for managing distance field text
Change-Id: I4512a98063301e91bbcefe3f55de16f26601d39b
Reviewed-on: https://skia-review.googlesource.com/c/178283
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Herb Derby <herb@google.com>
diff --git a/src/gpu/text/GrTextContext.cpp b/src/gpu/text/GrTextContext.cpp
index 4e9b42b..2d8d163 100644
--- a/src/gpu/text/GrTextContext.cpp
+++ b/src/gpu/text/GrTextContext.cpp
@@ -129,13 +129,14 @@
return true;
}
-void GrTextContext::InitDistanceFieldPaint(GrTextBlob* blob,
- SkPaint* skPaint,
+void GrTextContext::InitDistanceFieldPaint(const SkScalar textSize,
const SkMatrix& viewMatrix,
const Options& options,
+ GrTextBlob* blob,
+ SkPaint* skPaint,
+ SkFont* skFont,
SkScalar* textRatio,
SkScalerContextFlags* flags) {
- SkScalar textSize = skPaint->getTextSize();
SkScalar scaledTextSize = textSize;
if (viewMatrix.hasPerspective()) {
@@ -160,17 +161,17 @@
dfMaskScaleFloor = options.fMinDistanceFieldFontSize;
dfMaskScaleCeil = kSmallDFFontLimit;
*textRatio = textSize / kSmallDFFontSize;
- skPaint->setTextSize(SkIntToScalar(kSmallDFFontSize));
+ skFont->setSize(SkIntToScalar(kSmallDFFontSize));
} else if (scaledTextSize <= kMediumDFFontLimit) {
dfMaskScaleFloor = kSmallDFFontLimit;
dfMaskScaleCeil = kMediumDFFontLimit;
*textRatio = textSize / kMediumDFFontSize;
- skPaint->setTextSize(SkIntToScalar(kMediumDFFontSize));
+ skFont->setSize(SkIntToScalar(kMediumDFFontSize));
} else {
dfMaskScaleFloor = kMediumDFFontLimit;
dfMaskScaleCeil = options.fMaxDistanceFieldFontSize;
*textRatio = textSize / kLargeDFFontSize;
- skPaint->setTextSize(SkIntToScalar(kLargeDFFontSize));
+ skFont->setSize(SkIntToScalar(kLargeDFFontSize));
}
// Because there can be multiple runs in the blob, we want the overall maxMinScale, and
@@ -186,11 +187,10 @@
dfMaskScaleCeil / scaledTextSize);
}
- skPaint->setAntiAlias(true);
- skPaint->setLCDRenderText(false);
- skPaint->setAutohinted(false);
- skPaint->setHinting(kNormal_SkFontHinting);
- skPaint->setSubpixelText(true);
+ skFont->setEdging(SkFont::Edging::kAntiAlias);
+ skFont->setForceAutoHinting(false);
+ skFont->setHinting(kNormal_SkFontHinting);
+ skFont->setSubpixel(true);
skPaint->setMaskFilter(GrSDFMaskFilter::Make());