From 0f639b309a3b9126983234e3d7d8bb1ed52f4d69 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 25 Apr 2020 18:00:46 +0200 Subject: [PATCH] Custom render: sub/sup support --- .../java/eu/faircode/email/HtmlHelper.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index bd5dd3541a..933065e393 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -43,6 +43,8 @@ import android.text.style.QuoteSpan; import android.text.style.RelativeSizeSpan; import android.text.style.StrikethroughSpan; import android.text.style.StyleSpan; +import android.text.style.SubscriptSpan; +import android.text.style.SuperscriptSpan; import android.text.style.URLSpan; import android.text.style.UnderlineSpan; import android.util.Base64; @@ -746,11 +748,9 @@ public class HtmlHelper { // Subscript/Superscript // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sub // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sup - for (Element subp : document.select("sub,sup")) { - Element small = document.createElement("small"); - small.html(subp.html()); - subp.html(small.outerHtml()); - } + if (!experiments || !view) + for (Element subp : document.select("sub,sup")) + subp.tagName("small"); // Lists // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li @@ -1986,6 +1986,14 @@ public class HtmlHelper { case "span": // Do nothing break; + case "sub": + ssb.setSpan(new SubscriptSpan(), start, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + ssb.setSpan(new RelativeSizeSpan(FONT_SMALL), start, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + break; + case "sup": + ssb.setSpan(new SuperscriptSpan(), start, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + ssb.setSpan(new RelativeSizeSpan(FONT_SMALL), start, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + break; case "b": case "strong": ssb.setSpan(new StyleSpan(Typeface.BOLD), start, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);