Index: src/core/SkTextBlob.cpp |
diff --git a/src/core/SkTextBlob.cpp b/src/core/SkTextBlob.cpp |
index 551d98836a3e40ea172a07e573de30dde9966756..157321b00cfbc6c8764cfbb329c38ad8eea74e40 100644 |
--- a/src/core/SkTextBlob.cpp |
+++ b/src/core/SkTextBlob.cpp |
@@ -61,14 +61,38 @@ const SkPoint& SkTextBlob::RunIterator::offset() const { |
return (*fBlob->fRuns)[fIndex].offset; |
} |
-const SkPaint& SkTextBlob::RunIterator::font() const { |
+SkTextBlob::GlyphPositioning SkTextBlob::RunIterator::positioning() const { |
SkASSERT(!this->done()); |
- return (*fBlob->fRuns)[fIndex].font; |
+ return (*fBlob->fRuns)[fIndex].positioning; |
} |
-SkTextBlob::GlyphPositioning SkTextBlob::RunIterator::positioning() const { |
+void SkTextBlob::RunIterator::applyFont(SkPaint& paint) const { |
SkASSERT(!this->done()); |
- return (*fBlob->fRuns)[fIndex].positioning; |
+ |
+ const SkPaint& font = (*fBlob->fRuns)[fIndex].font; |
+ |
+ paint.setTypeface(font.getTypeface()); |
+ paint.setTextEncoding(font.getTextEncoding()); |
+ paint.setTextSize(font.getTextSize()); |
+ paint.setTextScaleX(font.getTextScaleX()); |
+ paint.setTextSkewX(font.getTextSkewX()); |
+ paint.setHinting(font.getHinting()); |
+ |
+ uint32_t flagsMask = SkPaint::kAntiAlias_Flag |
+ | SkPaint::kUnderlineText_Flag |
+ | SkPaint::kStrikeThruText_Flag |
+ | SkPaint::kFakeBoldText_Flag |
+ | SkPaint::kLinearText_Flag |
+ | SkPaint::kSubpixelText_Flag |
+ | SkPaint::kDevKernText_Flag |
+ | SkPaint::kLCDRenderText_Flag |
+ | SkPaint::kEmbeddedBitmapText_Flag |
+ | SkPaint::kAutoHinting_Flag |
+ | SkPaint::kVerticalText_Flag |
+ | SkPaint::kGenA8FromLCD_Flag |
+ | SkPaint::kDistanceFieldTextTEMP_Flag; |
+ paint.setFlags((paint.getFlags() & ~flagsMask) | (font.getFlags() & flagsMask)); |
+ |
} |
SkTextBlobBuilder::SkTextBlobBuilder(unsigned runs) |