From fb0501936979b954bba1237dd9d35183572dc4f6 Mon Sep 17 00:00:00 2001 From: Mikael Sand Date: Mon, 24 Jul 2017 20:46:19 +0300 Subject: [PATCH] Fix fontSize propagation and getFontSizeFromContext --- .../main/java/com/horcrux/svg/GlyphContext.java | 1 + .../main/java/com/horcrux/svg/VirtualNode.java | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/android/src/main/java/com/horcrux/svg/GlyphContext.java b/android/src/main/java/com/horcrux/svg/GlyphContext.java index 92b5d55a..424081c2 100644 --- a/android/src/main/java/com/horcrux/svg/GlyphContext.java +++ b/android/src/main/java/com/horcrux/svg/GlyphContext.java @@ -174,6 +174,7 @@ class GlyphContext { } FontData data = new FontData(font, parent, mScale); + mFontSize = data.fontSize; mFontContext.add(data); topFont = data; diff --git a/android/src/main/java/com/horcrux/svg/VirtualNode.java b/android/src/main/java/com/horcrux/svg/VirtualNode.java index 754989f7..50f366c8 100644 --- a/android/src/main/java/com/horcrux/svg/VirtualNode.java +++ b/android/src/main/java/com/horcrux/svg/VirtualNode.java @@ -44,7 +44,6 @@ abstract class VirtualNode extends LayoutShadowNode { 0, 0, 1 }; float mOpacity = 1f; - private double mFontSize = -1; Matrix mMatrix = new Matrix(); private int mClipRule; @@ -63,6 +62,7 @@ abstract class VirtualNode extends LayoutShadowNode { private GroupShadowNode mTextRoot; private float canvasHeight = -1; private float canvasWidth = -1; + private GlyphContext glyphContext; VirtualNode() { mScale = DisplayMetricsHolder.getScreenDisplayMetrics().density; @@ -136,16 +136,16 @@ abstract class VirtualNode extends LayoutShadowNode { } private double getFontSizeFromContext() { - if (mFontSize != -1) { - return mFontSize; - } GroupShadowNode root = getTextRoot(); if (root == null) { - mFontSize = DEFAULT_FONT_SIZE; - } else { - mFontSize = root.getGlyphContext().getFontSize(); + return DEFAULT_FONT_SIZE; } - return mFontSize; + + if (glyphContext == null) { + glyphContext = root.getGlyphContext(); + } + + return glyphContext.getFontSize(); } public abstract void draw(Canvas canvas, Paint paint, float opacity);