diff --git a/android/src/main/java/com/horcrux/svg/RenderableViewManager.java b/android/src/main/java/com/horcrux/svg/RenderableViewManager.java index 34d31c18..c3858864 100644 --- a/android/src/main/java/com/horcrux/svg/RenderableViewManager.java +++ b/android/src/main/java/com/horcrux/svg/RenderableViewManager.java @@ -15,6 +15,7 @@ import android.view.ViewGroup; import com.facebook.infer.annotation.Assertions; import com.facebook.react.bridge.Dynamic; +import com.facebook.react.bridge.JavaOnlyMap; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.uimanager.DisplayMetricsHolder; @@ -345,6 +346,22 @@ class RenderableViewManager extends ViewGroupManager { public void setFont(GroupView node, @Nullable ReadableMap font) { node.setFont(font); } + + @ReactProp(name = "fontSize") + public void setFontSize(GroupView node, Dynamic fontSize) { + JavaOnlyMap map = new JavaOnlyMap(); + switch (fontSize.getType()) { + case Number: + map.putDouble("fontSize", fontSize.asDouble()); + break; + case String: + map.putString("fontSize", fontSize.asString()); + break; + default: + return; + } + node.setFont(map); + } } diff --git a/ios/ViewManagers/RNSVGGroupManager.m b/ios/ViewManagers/RNSVGGroupManager.m index ffac110f..8daa2335 100644 --- a/ios/ViewManagers/RNSVGGroupManager.m +++ b/ios/ViewManagers/RNSVGGroupManager.m @@ -21,4 +21,16 @@ RCT_EXPORT_MODULE() RCT_EXPORT_VIEW_PROPERTY(font, NSDictionary) +RCT_CUSTOM_VIEW_PROPERTY(fontSize, id, RNSVGGroup) +{ + if ([json isKindOfClass:[NSString class]]) { + NSString *stringValue = (NSString *)json; + view.font = @{ @"fontSize": stringValue }; + } else { + NSNumber* number = (NSNumber*)json; + double num = [number doubleValue]; + view.font = @{@"fontSize": [NSNumber numberWithDouble:num] }; + } +} + @end diff --git a/ios/ViewManagers/RNSVGTextManager.m b/ios/ViewManagers/RNSVGTextManager.m index 93d8e536..a273ff08 100644 --- a/ios/ViewManagers/RNSVGTextManager.m +++ b/ios/ViewManagers/RNSVGTextManager.m @@ -68,4 +68,16 @@ RCT_CUSTOM_VIEW_PROPERTY(baselineShift, id, RNSVGText) RCT_EXPORT_VIEW_PROPERTY(lengthAdjust, NSString) RCT_EXPORT_VIEW_PROPERTY(alignmentBaseline, NSString) +RCT_CUSTOM_VIEW_PROPERTY(fontSize, id, RNSVGGroup) +{ + if ([json isKindOfClass:[NSString class]]) { + NSString *stringValue = (NSString *)json; + view.font = @{ @"fontSize": stringValue }; + } else { + NSNumber* number = (NSNumber*)json; + double num = [number doubleValue]; + view.font = @{@"fontSize": [NSNumber numberWithDouble:num] }; + } +} + @end diff --git a/lib/extract/extractText.js b/lib/extract/extractText.js index d908079e..4b0f3d59 100644 --- a/lib/extract/extractText.js +++ b/lib/extract/extractText.js @@ -33,7 +33,7 @@ function parseFontString(font) { const isBold = /bold/.exec(match[1]); const isItalic = /italic/.exec(match[1]); cachedFontObjectsFromString[font] = { - fontSize: match[2] || '12', + fontSize: match[2] || 12, fontWeight: isBold ? 'bold' : 'normal', fontStyle: isItalic ? 'italic' : 'normal', fontFamily: extractSingleFontFamily(match[3]),