diff --git a/android/src/main/java/com/horcrux/svg/TSpanView.java b/android/src/main/java/com/horcrux/svg/TSpanView.java index a9274823..2663b153 100644 --- a/android/src/main/java/com/horcrux/svg/TSpanView.java +++ b/android/src/main/java/com/horcrux/svg/TSpanView.java @@ -48,6 +48,7 @@ class TSpanView extends TextView { private static final String OTF = ".otf"; private static final String TTF = ".ttf"; + private Path mCachedPath; @Nullable String mContent; private TextPathView textPath; ArrayList emoji = new ArrayList<>(); @@ -63,6 +64,12 @@ class TSpanView extends TextView { invalidate(); } + @Override + public void invalidate() { + mCachedPath = null; + super.invalidate(); + } + @Override void draw(Canvas canvas, Paint paint, float opacity) { if (mContent != null) { @@ -89,21 +96,22 @@ class TSpanView extends TextView { @Override Path getPath(Canvas canvas, Paint paint) { - if (mPath != null) { - return mPath; + if (mCachedPath != null) { + return mCachedPath; } if (mContent == null) { - return getGroupPath(canvas, paint); + mCachedPath = getGroupPath(canvas, paint); + return mCachedPath; } setupTextPath(); pushGlyphContext(); - Path path = getLinePath(mContent, paint, canvas); + mCachedPath = getLinePath(mContent, paint, canvas); popGlyphContext(); - return path; + return mCachedPath; } double getSubtreeTextChunksTotalAdvance(Paint paint) {