diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index 60926c7863..43032f430f 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -344,12 +344,72 @@ public class HtmlHelper { x11ColorMap.put("yellowgreen", 0x9ACD32); } - static int[] WINGDINGS_EMOTICONS = {0x1F642, 0x1F610, 0x1F641}; - private static final List TRACKING_HOSTS = Collections.unmodifiableList(Arrays.asList( "www.google-analytics.com" )); + static Map MAP_WINGDINGS; + + static { + // http://www.alanwood.net/demos/wingdings.html + // https://unicode.org/L2/L2011/11052r-wingding.pdf + Map map = new HashMap<>(); + map.put(37, 0x1F514); // Bell + map.put(39, 0x1F56F); // Candle + map.put(44, 0x1F4EA); // Closed mailbox with lowered flag + map.put(45, 0x1F4EB); // Closed mailbox with raised flag + map.put(46, 0x1F4EC); // Open mailbox with raised flag + map.put(47, 0x1F4ED); // Open mailbox with lowered flag + map.put(48, 0x1F4C1); // Folder + map.put(49, 0x1F4C2); // Open folder + map.put(53, 0x1F5C4); // File cabinet + map.put(54, 0x231B); // Hourglass + map.put(57, 0x1F5B2); // Trackball + map.put(58, 0x1F5A5); // Computer + map.put(65, 0x270C); // Victory hand + map.put(66, 0x1F44C); // OK hand + map.put(67, 0x1F44D); // Thumb up + map.put(68, 0x1F44E); // Thumb down + map.put(69, 0x1F448); // Pointing left + map.put(70, 0x1F449); // Pointing right + map.put(71, 0x261D); // Pointing up + map.put(72, 0x1F447); // Pointing down + map.put(73, 0x1F590); // Raised hand + map.put(74, 0x1F642); // Smiling face + map.put(75, 0x1F610); // Neutral face + map.put(76, 0x1F641); // Frowning face + map.put(77, 0x1F4A3); // Bomb + map.put(83, 0x1F4A7); // Droplet + map.put(84, 0x2744); // Snowflake + map.put(94, 0x2648); // Aries + map.put(95, 0x2649); // Taurus + map.put(96, 0x264A); // Gemini + map.put(97, 0x264B); // Cancer + map.put(98, 0x264C); // Leo + map.put(99, 0x264D); // Virgo + map.put(100, 0x264E); // Libra + map.put(101, 0x264F); // Scorpio + map.put(102, 0x2650); // Sagittarius + map.put(103, 0x2651); // Capricorn + map.put(104, 0x2652); // Aquarius + map.put(105, 0x2653); // Pisces + map.put(183, 0x1F550); // Clock 1 + map.put(184, 0x1F551); // Clock 2 + map.put(185, 0x1F552); // Clock 3 + map.put(186, 0x1F553); // Clock 4 + map.put(187, 0x1F554); // Clock 5 + map.put(188, 0x1F555); // Clock 6 + map.put(189, 0x1F556); // Clock 7 + map.put(190, 0x1F557); // Clock 8 + map.put(191, 0x1F558); // Clock 9 + map.put(192, 0x1F559); // Clock 10 + map.put(193, 0x1F55A); // Clock 11 + map.put(194, 0x1F55B); // Clock 12 + map.put(251, 0x274C); // Red cross + map.put(252, 0x2705); // Green check + MAP_WINGDINGS = Collections.unmodifiableMap(map); + } + static Document sanitizeCompose(Context context, String html, boolean show_images) { try { return sanitize(context, JsoupEx.parse(html), false, show_images); @@ -3201,12 +3261,12 @@ public class HtmlHelper { int from = start; for (int i = start; i < ssb.length(); i++) { int kar = ssb.charAt(i); - if (kar >= 74 && kar <= 76) { + if (MAP_WINGDINGS.containsKey(kar)) { if (from < i) { TypefaceSpan span = new CustomTypefaceSpan("wingdings", wingdings); setSpan(ssb, span, from, i); } - int codepoint = WINGDINGS_EMOTICONS[kar - 74]; + int codepoint = MAP_WINGDINGS.get(kar); String replacement = new String(Character.toChars(codepoint)); ssb.replace(i, i + 1, replacement); i += replacement.length() - 1;