diff --git a/flexmark-html2md-converter/src/main/java/com/vladsch/flexmark/html2md/converter/FlexmarkHtmlConverter.java b/flexmark-html2md-converter/src/main/java/com/vladsch/flexmark/html2md/converter/FlexmarkHtmlConverter.java
index cf53645b9..8e23b1362 100644
--- a/flexmark-html2md-converter/src/main/java/com/vladsch/flexmark/html2md/converter/FlexmarkHtmlConverter.java
+++ b/flexmark-html2md-converter/src/main/java/com/vladsch/flexmark/html2md/converter/FlexmarkHtmlConverter.java
@@ -1593,6 +1593,8 @@ static void wrapTextNodes(@NotNull HtmlNodeConverterContext context, @NotNull No
} else {
// if we already have space or nothing before us
addSpaceBefore = !(out.getPendingEOL() == 0 || out.isPendingSpace() || out.offsetWithPending() == 0 || out.getPendingEOL() > 0);
+
+ if(". , : ; ! ? ) ] @ # $ % ^ & \" \' /".indexOf(text.charAt(0)) != -1) addSpaceBefore = true;
}
if (!text.isEmpty() && "\u00A0 \t\n".indexOf(text.charAt(text.length() - 1)) != -1) {
diff --git a/flexmark-html2md-converter/src/main/java/com/vladsch/flexmark/html2md/converter/internal/HtmlConverterCoreNodeRenderer.java b/flexmark-html2md-converter/src/main/java/com/vladsch/flexmark/html2md/converter/internal/HtmlConverterCoreNodeRenderer.java
index 9dd95eec1..5eeda1db0 100644
--- a/flexmark-html2md-converter/src/main/java/com/vladsch/flexmark/html2md/converter/internal/HtmlConverterCoreNodeRenderer.java
+++ b/flexmark-html2md-converter/src/main/java/com/vladsch/flexmark/html2md/converter/internal/HtmlConverterCoreNodeRenderer.java
@@ -423,7 +423,7 @@ private void processDel(Element element, HtmlNodeConverterContext context, HtmlM
if (!myHtmlConverterOptions.preCodePreserveEmphasis && out.isPreFormatted()) {
context.wrapTextNodes(element, "", false);
} else {
- context.wrapTextNodes(element, myHtmlConverterOptions.extInlineDel.isTextOnly() ? "" : "~~", element.nextElementSibling() != null);
+ context.wrapTextNodes(element, myHtmlConverterOptions.extInlineDel.isTextOnly() ? "" : "~~", element.nextSibling() != null || element.previousSibling() != null);
}
});
}
@@ -626,7 +626,7 @@ private void processEmphasis(Element element, HtmlNodeConverterContext context,
if (!myHtmlConverterOptions.preCodePreserveEmphasis && out.isPreFormatted()) {
context.wrapTextNodes(element, "", false);
} else {
- context.wrapTextNodes(element, myHtmlConverterOptions.extInlineEmphasis.isTextOnly() ? "" : "*", element.nextElementSibling() != null);
+ context.wrapTextNodes(element, myHtmlConverterOptions.extInlineEmphasis.isTextOnly() ? "" : "*", element.nextSibling() != null || element.previousSibling() != null);
}
});
}
@@ -748,7 +748,7 @@ private void processIns(Element element, HtmlNodeConverterContext context, HtmlM
if (!myHtmlConverterOptions.preCodePreserveEmphasis && out.isPreFormatted()) {
context.wrapTextNodes(element, "", false);
} else {
- context.wrapTextNodes(element, myHtmlConverterOptions.extInlineIns.isTextOnly() ? "" : "++", element.nextElementSibling() != null);
+ context.wrapTextNodes(element, myHtmlConverterOptions.extInlineIns.isTextOnly() ? "" : "++", element.nextSibling() != null || element.previousSibling() != null);
}
});
}
@@ -758,7 +758,7 @@ private void processStrong(Element element, HtmlNodeConverterContext context, Ht
if (!myHtmlConverterOptions.preCodePreserveEmphasis && out.isPreFormatted()) {
context.wrapTextNodes(element, "", false);
} else {
- context.wrapTextNodes(element, myHtmlConverterOptions.extInlineStrong.isTextOnly() ? "" : "**", element.nextElementSibling() != null);
+ context.wrapTextNodes(element, myHtmlConverterOptions.extInlineStrong.isTextOnly() ? "" : "**", element.nextSibling() != null || element.previousSibling() != null);
}
});
}