From 2a98c1e79042276916032f5f5299770cabba8a72 Mon Sep 17 00:00:00 2001 From: Krystian Sienkiewicz Date: Wed, 8 Jul 2026 12:14:32 +0200 Subject: [PATCH 1/4] fix: float img dimensions parsing --- .../enriched/common/parser/EnrichedParser.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java b/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java index 08198b3c6..218596daf 100644 --- a/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java +++ b/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java @@ -849,10 +849,19 @@ private static void startImg( int len = text.length(); text.append(""); Object imageSpan = - spanFactory.createImageSpan(src, Integer.parseInt(width), Integer.parseInt(height)); + spanFactory.createImageSpan(src, parseDimension(width), parseDimension(height)); text.setSpan(imageSpan, len, text.length(), EnrichedSpanFlags.forSpan(imageSpan)); } + private static int parseDimension(String value) { + if (value == null) return 0; + try { + return (int) Math.floor(Float.parseFloat(value)); + } catch (NumberFormatException e) { + return 0; + } + } + private static void startA(Editable text, Attributes attributes) { String href = attributes.getValue("", "href"); start(text, new Href(href)); From cd0cba2a8bb4b572df466078346a203b1d5c0878 Mon Sep 17 00:00:00 2001 From: Krystian Sienkiewicz Date: Wed, 8 Jul 2026 13:45:29 +0200 Subject: [PATCH 2/4] fix: negative numbers handling --- .../swmansion/enriched/common/parser/EnrichedParser.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java b/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java index 218596daf..57a32a2a0 100644 --- a/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java +++ b/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java @@ -856,7 +856,11 @@ private static void startImg( private static int parseDimension(String value) { if (value == null) return 0; try { - return (int) Math.floor(Float.parseFloat(value)); + int parsed = (int) Math.floor(Float.parseFloat(value)); + if (parsed < 0) { + return 0; + } + return parsed; } catch (NumberFormatException e) { return 0; } From da0ea3a3bab49572e4356c22272a3cf2915eb2df Mon Sep 17 00:00:00 2001 From: Krystian Sienkiewicz <146986839+hejsztynx@users.noreply.github.com> Date: Wed, 8 Jul 2026 17:56:37 +0200 Subject: [PATCH 3/4] fix(ios): convert img attributes to integer values (#688) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Summary Now the `img` attributes are converted to integer. It's truthful to official HTML5 specifications, where `width` and `height` should be integer values and the floating point in HTML could be destructive, which could produce a similar issue as in https://github.com/software-mansion/react-native-enriched-html/pull/685 ## Screenshots When adding an image via modal with `height` and `width` set to `30` Before: image After: image ## Compatibility | OS | Implemented | | ------- | :---------: | | iOS | ✅ | | Android | ❌ | | Web | ❌ | ## Checklist - [ ] E2E tests are passing - [ ] Required E2E tests have been added (if applicable) --- ios/htmlParser/HtmlParser.mm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ios/htmlParser/HtmlParser.mm b/ios/htmlParser/HtmlParser.mm index f8d4dc7d6..94603bb5c 100644 --- a/ios/htmlParser/HtmlParser.mm +++ b/ios/htmlParser/HtmlParser.mm @@ -1327,8 +1327,9 @@ + (NSString *)tagContentForStyle:(NSNumber *)style ImageData *data = [imageStyle getImageDataAt:location]; if (data != nullptr && data.uri != nullptr) { return [NSString - stringWithFormat:@"img src=\"%@\" width=\"%f\" height=\"%f\"", - data.uri, data.width, data.height]; + stringWithFormat:@"img src=\"%@\" width=\"%d\" height=\"%d\"", + data.uri, (int)floor(data.width), + (int)floor(data.height)]; } } return @"img"; From d9056b698108061620bd380e0d3b8708085b1402 Mon Sep 17 00:00:00 2001 From: Krystian Sienkiewicz Date: Thu, 9 Jul 2026 11:25:23 +0200 Subject: [PATCH 4/4] refactor(android): logical cleanup --- .../com/swmansion/enriched/common/parser/EnrichedParser.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java b/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java index 57a32a2a0..5ed68cfe6 100644 --- a/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java +++ b/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java @@ -857,10 +857,7 @@ private static int parseDimension(String value) { if (value == null) return 0; try { int parsed = (int) Math.floor(Float.parseFloat(value)); - if (parsed < 0) { - return 0; - } - return parsed; + return Math.max(parsed, 0); } catch (NumberFormatException e) { return 0; }