From 792f8bdd5b8875703b75c39b362b1fb0b6093bc6 Mon Sep 17 00:00:00 2001 From: pverkind Date: Thu, 2 Sep 2021 16:18:12 +0200 Subject: [PATCH 1/2] Fix for unconnected Arabic letters issue --- src/dom-to-image.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/dom-to-image.js b/src/dom-to-image.js index 27201ac9..ab45b763 100644 --- a/src/dom-to-image.js +++ b/src/dom-to-image.js @@ -341,6 +341,8 @@ foreignObject + ''; }) .then(function (svg) { + // add U+200D ZERO WIDTH JOINER for Arabic-script letter connections that would be broken by a HTML tag: + svg = svg.replace(/(?<=[بتثپجحخچسشصضطظعغفقكکگلمنهيیی][ًٌٍَُِّّْ]*)((?:<(?!br)[^>]+>)+)(?=[ء-يٮ-ٳژکگی])/g, "%E2%80%8D$1%E2%80%8D"); return 'data:image/svg+xml;charset=utf-8,' + svg; }); } From b2a819f776941878aa47b94ee9867d3ab2ed0d02 Mon Sep 17 00:00:00 2001 From: pverkind Date: Tue, 23 Nov 2021 15:17:45 +0100 Subject: [PATCH 2/2] add zwj only around tags that do not separate words --- src/dom-to-image.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dom-to-image.js b/src/dom-to-image.js index ab45b763..83fa6eca 100644 --- a/src/dom-to-image.js +++ b/src/dom-to-image.js @@ -342,7 +342,7 @@ }) .then(function (svg) { // add U+200D ZERO WIDTH JOINER for Arabic-script letter connections that would be broken by a HTML tag: - svg = svg.replace(/(?<=[بتثپجحخچسشصضطظعغفقكکگلمنهيیی][ًٌٍَُِّّْ]*)((?:<(?!br)[^>]+>)+)(?=[ء-يٮ-ٳژکگی])/g, "%E2%80%8D$1%E2%80%8D"); + svg = svg.replace(/(?<=[بتثپجحخچسشصضطظعغفقكکگلمنهيیی][ًٌٍَُِّّْ]*)((?:<\/?(?:span|b\b|del|em|ins|mark|s\b|strong|u\b)[^>]*>)+)(?=[ء-يٮ-ٳژکگی])/g, "%E2%80%8D$1%E2%80%8D"); return 'data:image/svg+xml;charset=utf-8,' + svg; }); }