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); } }); }