diff --git a/android/src/main/java/com/horcrux/svg/SvgViewShadowNode.java b/android/src/main/java/com/horcrux/svg/SvgViewShadowNode.java index 1d60f88c..291e7c40 100644 --- a/android/src/main/java/com/horcrux/svg/SvgViewShadowNode.java +++ b/android/src/main/java/com/horcrux/svg/SvgViewShadowNode.java @@ -16,6 +16,7 @@ import android.graphics.Paint; import android.graphics.Point; import android.graphics.Rect; import android.graphics.RectF; +import android.graphics.Typeface; import android.util.Base64; import com.facebook.react.uimanager.DisplayMetricsHolder; @@ -135,6 +136,10 @@ public class SvgViewShadowNode extends LayoutShadowNode { Paint paint = new Paint(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG | Paint.SUBPIXEL_TEXT_FLAG); + + paint.setTypeface(Typeface.DEFAULT); + for (int i = 0; i < getChildCount(); i++) { if (!(getChildAt(i) instanceof VirtualNode)) { continue; diff --git a/android/src/main/java/com/horcrux/svg/TSpanShadowNode.java b/android/src/main/java/com/horcrux/svg/TSpanShadowNode.java index f0a633a4..c5cd94dd 100644 --- a/android/src/main/java/com/horcrux/svg/TSpanShadowNode.java +++ b/android/src/main/java/com/horcrux/svg/TSpanShadowNode.java @@ -101,12 +101,12 @@ public class TSpanShadowNode extends TextShadowNode { paint.getTextPath(letter, 0, 1, 0, 0, glyph); PointF glyphDelta = getGlyphDeltaFromContext(); - PointF glyphPoint = getGlyphPointFromContext(glyphPosition, width); + PointF glyphPoint = getGlyphPointFromContext(glyphPosition * 1.2f, width); glyphPosition += width; Matrix matrix = new Matrix(); if (mBezierTransformer != null) { - matrix = mBezierTransformer.getTransformAtDistance(glyphPoint.x + glyphDelta.x); + matrix = mBezierTransformer.getTransformAtDistance(glyphPoint.x + glyphDelta.x + width / 2); if (textPathHasReachedEnd()) { break; @@ -114,7 +114,7 @@ public class TSpanShadowNode extends TextShadowNode { continue; } - matrix.preTranslate(0, glyphDelta.y); + matrix.preTranslate(-width / 2, glyphDelta.y); matrix.postTranslate(0, glyphPoint.y); } else { matrix.setTranslate(glyphPoint.x + glyphDelta.x, glyphPoint.y + glyphDelta.y); diff --git a/android/src/main/java/com/horcrux/svg/TextPathShadowNode.java b/android/src/main/java/com/horcrux/svg/TextPathShadowNode.java index ec48c17c..f3f88c54 100644 --- a/android/src/main/java/com/horcrux/svg/TextPathShadowNode.java +++ b/android/src/main/java/com/horcrux/svg/TextPathShadowNode.java @@ -52,7 +52,7 @@ public class TextPathShadowNode extends TextShadowNode { } PathShadowNode path = (PathShadowNode)template; - return new BezierTransformer(path.getBezierCurves(), relativeOnWidth(mStartOffset)); + return new BezierTransformer(path.getBezierCurves(), relativeOnWidth(mStartOffset) / 1.2f); } @Override