Loading libs/hwui/hwui/Canvas.cpp +22 −10 Original line number Diff line number Diff line Loading @@ -154,6 +154,11 @@ void Canvas::drawText(const uint16_t* text, int textSize, int start, int count, // minikin may modify the original paint Paint paint(origPaint); // interpret 'linear metrics' flag as 'linear', forcing no-hinting when drawing if (paint.getSkFont().isLinearMetrics()) { paint.getSkFont().setHinting(SkFontHinting::kNone); } minikin::Layout layout = MinikinUtils::doLayout(&paint, bidiFlags, typeface, text, textSize, start, count, contextStart, contextCount, mt); Loading Loading @@ -234,23 +239,30 @@ private: }; void Canvas::drawTextOnPath(const uint16_t* text, int count, minikin::Bidi bidiFlags, const SkPath& path, float hOffset, float vOffset, const Paint& paint, const Typeface* typeface) { Paint paintCopy(paint); const SkPath& path, float hOffset, float vOffset, const Paint& origPaint, const Typeface* typeface) { // minikin may modify the original paint Paint paint(origPaint); // interpret 'linear metrics' flag as 'linear', forcing no-hinting when drawing if (paint.getSkFont().isLinearMetrics()) { paint.getSkFont().setHinting(SkFontHinting::kNone); } minikin::Layout layout = MinikinUtils::doLayout(&paintCopy, bidiFlags, typeface, text, count, // text buffer MinikinUtils::doLayout(&paint, bidiFlags, typeface, text, count, // text buffer 0, count, // draw range 0, count, // context range nullptr); hOffset += MinikinUtils::hOffsetForTextAlign(&paintCopy, layout, path); hOffset += MinikinUtils::hOffsetForTextAlign(&paint, layout, path); // Set align to left for drawing, as we don't want individual // glyphs centered or right-aligned; the offset above takes // care of all alignment. paintCopy.setTextAlign(Paint::kLeft_Align); paint.setTextAlign(Paint::kLeft_Align); DrawTextOnPathFunctor f(layout, this, hOffset, vOffset, paintCopy, path); MinikinUtils::forFontRun(layout, &paintCopy, f); DrawTextOnPathFunctor f(layout, this, hOffset, vOffset, paint, path); MinikinUtils::forFontRun(layout, &paint, f); } int Canvas::sApiLevel = 1; Loading Loading
libs/hwui/hwui/Canvas.cpp +22 −10 Original line number Diff line number Diff line Loading @@ -154,6 +154,11 @@ void Canvas::drawText(const uint16_t* text, int textSize, int start, int count, // minikin may modify the original paint Paint paint(origPaint); // interpret 'linear metrics' flag as 'linear', forcing no-hinting when drawing if (paint.getSkFont().isLinearMetrics()) { paint.getSkFont().setHinting(SkFontHinting::kNone); } minikin::Layout layout = MinikinUtils::doLayout(&paint, bidiFlags, typeface, text, textSize, start, count, contextStart, contextCount, mt); Loading Loading @@ -234,23 +239,30 @@ private: }; void Canvas::drawTextOnPath(const uint16_t* text, int count, minikin::Bidi bidiFlags, const SkPath& path, float hOffset, float vOffset, const Paint& paint, const Typeface* typeface) { Paint paintCopy(paint); const SkPath& path, float hOffset, float vOffset, const Paint& origPaint, const Typeface* typeface) { // minikin may modify the original paint Paint paint(origPaint); // interpret 'linear metrics' flag as 'linear', forcing no-hinting when drawing if (paint.getSkFont().isLinearMetrics()) { paint.getSkFont().setHinting(SkFontHinting::kNone); } minikin::Layout layout = MinikinUtils::doLayout(&paintCopy, bidiFlags, typeface, text, count, // text buffer MinikinUtils::doLayout(&paint, bidiFlags, typeface, text, count, // text buffer 0, count, // draw range 0, count, // context range nullptr); hOffset += MinikinUtils::hOffsetForTextAlign(&paintCopy, layout, path); hOffset += MinikinUtils::hOffsetForTextAlign(&paint, layout, path); // Set align to left for drawing, as we don't want individual // glyphs centered or right-aligned; the offset above takes // care of all alignment. paintCopy.setTextAlign(Paint::kLeft_Align); paint.setTextAlign(Paint::kLeft_Align); DrawTextOnPathFunctor f(layout, this, hOffset, vOffset, paintCopy, path); MinikinUtils::forFontRun(layout, &paintCopy, f); DrawTextOnPathFunctor f(layout, this, hOffset, vOffset, paint, path); MinikinUtils::forFontRun(layout, &paint, f); } int Canvas::sApiLevel = 1; Loading