diff --git a/android/src/main/java/com/horcrux/svg/TSpanView.java b/android/src/main/java/com/horcrux/svg/TSpanView.java index 25eea86f0..9bfa8e642 100644 --- a/android/src/main/java/com/horcrux/svg/TSpanView.java +++ b/android/src/main/java/com/horcrux/svg/TSpanView.java @@ -213,6 +213,36 @@ Path getPath(Canvas canvas, Paint paint) { return advance; } + GlyphContext gc = getTextRootGlyphContext(); + FontData font = gc.getFont(); + + ViewParent parent = getParent(); + + if (parent instanceof TextView) { + TextView textView = (TextView) parent; + + for (int i = 0; i < textView.getChildCount(); i++) { + View child = textView.getChildAt(i); + if (child instanceof TSpanView && child != this) { + TSpanView text = (TSpanView) child; + String spanContent = text.mContent; + int spanLength = spanContent.length(); + + if (spanLength == 0) { + continue; + } + + ReadableMap fontMap = text.mFont; + FontData fontData = new FontData(fontMap, font, textView.mScale); + applyTextPropertiesToPaint(paint, fontData); + + applySpacingAndFeatures(paint, fontData); + + advance += paint.measureText(spanContent); + } + } + } + String line = mContent; final int length = line.length(); @@ -221,14 +251,15 @@ Path getPath(Canvas canvas, Paint paint) { return advance; } - GlyphContext gc = getTextRootGlyphContext(); - FontData font = gc.getFont(); applyTextPropertiesToPaint(paint, font); applySpacingAndFeatures(paint, font); - cachedAdvance = paint.measureText(line); - return cachedAdvance; + advance += paint.measureText(line); + + cachedAdvance = advance; + + return advance; } final static String requiredFontFeatures = "'rlig', 'liga', 'clig', 'calt', 'locl', 'ccmp', 'mark', 'mkmk',";