diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md index cc37144450..ab59d63da7 100644 --- a/ATTRIBUTION.md +++ b/ATTRIBUTION.md @@ -31,3 +31,4 @@ FairEmail uses: * [Compact Language Detector v3](https://github.com/google/cld3). Copyright 2016 Google Inc. All rights reserved. [Apache License 2.0](https://github.com/google/cld3/blob/master/LICENSE). * [POI-HMEF](https://poi.apache.org/components/hmef/index.html). Copyright © 2001-2020 The Apache Software Foundation. [Apache Software License v2](https://poi.apache.org/devel/guidelines.html#The+Licensing). * [GoSquared's Flag Icon Set](https://github.com/gosquared/flags). Copyright (c) 2017 Go Squared Ltd. [MIT License](https://github.com/gosquared/flags/blob/master/LICENSE.txt). +* [OpenDyslexic](https://github.com/antijingoist/opendyslexic). Copyright (c) 12/2012 - 2019. Copyright (c) 2019-07-29, Abbie Gonzalez. [SIL Open Font License 1.1](https://github.com/antijingoist/opendyslexic/blob/master/OFL.txt). diff --git a/app/src/main/assets/ATTRIBUTION.md b/app/src/main/assets/ATTRIBUTION.md index cc37144450..ab59d63da7 100644 --- a/app/src/main/assets/ATTRIBUTION.md +++ b/app/src/main/assets/ATTRIBUTION.md @@ -31,3 +31,4 @@ FairEmail uses: * [Compact Language Detector v3](https://github.com/google/cld3). Copyright 2016 Google Inc. All rights reserved. [Apache License 2.0](https://github.com/google/cld3/blob/master/LICENSE). * [POI-HMEF](https://poi.apache.org/components/hmef/index.html). Copyright © 2001-2020 The Apache Software Foundation. [Apache Software License v2](https://poi.apache.org/devel/guidelines.html#The+Licensing). * [GoSquared's Flag Icon Set](https://github.com/gosquared/flags). Copyright (c) 2017 Go Squared Ltd. [MIT License](https://github.com/gosquared/flags/blob/master/LICENSE.txt). +* [OpenDyslexic](https://github.com/antijingoist/opendyslexic). Copyright (c) 12/2012 - 2019. Copyright (c) 2019-07-29, Abbie Gonzalez. [SIL Open Font License 1.1](https://github.com/antijingoist/opendyslexic/blob/master/OFL.txt). diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index 62ac062c1d..1dd691b2ca 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -54,7 +54,6 @@ import android.util.Patterns; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.FileProvider; -import androidx.core.content.res.ResourcesCompat; import androidx.core.graphics.ColorUtils; import androidx.core.util.PatternsCompat; import androidx.preference.PreferenceManager; @@ -2256,11 +2255,7 @@ public class HtmlHelper { } break; case "font-family": - String face = value.toLowerCase(Locale.ROOT); - if ("fairemail".equals(face)) { - Typeface typeface = ResourcesCompat.getFont(context, R.font.fantasy); - setSpan(ssb, new CustomTypefaceSpan(face, typeface), start, ssb.length()); - } else if ("wingdings".equals(face)) { + if ("wingdings".equalsIgnoreCase(value)) { for (int i = start; i < ssb.length(); i++) { int kar = ssb.charAt(i); if (kar >= 0x20 && kar < 0x20 + WINGDING_TO_UNICODE.length) { @@ -2271,7 +2266,7 @@ public class HtmlHelper { } } } else - setSpan(ssb, new TypefaceSpan(face), start, ssb.length()); + setSpan(ssb, StyleHelper.getTypefaceSpan(value, context), start, ssb.length()); break; case "text-decoration": if ("line-through".equals(value)) diff --git a/app/src/main/java/eu/faircode/email/StyleHelper.java b/app/src/main/java/eu/faircode/email/StyleHelper.java index 298e54c56e..e2b1b803f1 100644 --- a/app/src/main/java/eu/faircode/email/StyleHelper.java +++ b/app/src/main/java/eu/faircode/email/StyleHelper.java @@ -49,6 +49,7 @@ import android.view.View; import android.widget.EditText; import androidx.appcompat.widget.PopupMenu; +import androidx.core.content.res.ResourcesCompat; import androidx.lifecycle.LifecycleOwner; import androidx.preference.PreferenceManager; @@ -155,7 +156,7 @@ public class StyleHelper { SubMenu smenu = popupMenu.getMenu().findItem(R.id.menu_style_font).getSubMenu(); for (int i = 0; i < fontNameNames.length; i++) { SpannableStringBuilder ssb = new SpannableStringBuilder(fontNameNames[i]); - ssb.setSpan(new TypefaceSpan(fontNameValues[i]), 0, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + ssb.setSpan(getTypefaceSpan(fontNameValues[i], context), 0, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); smenu.add(R.id.group_style_font, i, 0, ssb); } smenu.add(R.id.group_style_font, fontNameNames.length, 0, R.string.title_style_font_default); @@ -412,11 +413,12 @@ public class StyleHelper { int f = edit.getSpanFlags(span); edit.removeSpan(span); splitSpan(edit, start, end, s, e, f, false, - new TypefaceSpan(span.getFamily()), new TypefaceSpan(span.getFamily())); + getTypefaceSpan(span.getFamily(), context), + getTypefaceSpan(span.getFamily(), context)); } if (face != null) - edit.setSpan(new TypefaceSpan(face), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + edit.setSpan(getTypefaceSpan(face, context), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); etBody.setText(edit); etBody.setSelection(start, end); @@ -761,5 +763,17 @@ public class StyleHelper { } } + static TypefaceSpan getTypefaceSpan(String family, Context context) { + String face = family.toLowerCase(Locale.ROOT); + if ("fairemail".equals(face)) { + Typeface typeface = ResourcesCompat.getFont(context, R.font.fantasy); + return new CustomTypefaceSpan(face, typeface); + } else if (face.contains("comic sans")) { + Typeface typeface = ResourcesCompat.getFont(context, R.font.opendyslexic); + return new CustomTypefaceSpan(face, typeface); + } else + return new TypefaceSpan(face); + } + //TextUtils.dumpSpans(text, new LogPrinter(android.util.Log.INFO, "FairEmail"), "afterTextChanged "); } diff --git a/app/src/main/res/font/opendyslexic.xml b/app/src/main/res/font/opendyslexic.xml new file mode 100644 index 0000000000..5b98f9ddf9 --- /dev/null +++ b/app/src/main/res/font/opendyslexic.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/font/opendyslexic_normal.ttf b/app/src/main/res/font/opendyslexic_normal.ttf new file mode 100644 index 0000000000..84ffc24678 Binary files /dev/null and b/app/src/main/res/font/opendyslexic_normal.ttf differ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2fed1a3d45..5895555973 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1891,6 +1891,8 @@ Sans-serif Monospace Fantasy + Fantasy + Dyslexia @@ -1900,6 +1902,7 @@ sans-serif monospace fantasy + comic sans 17BA15C1AF55D925F98B99CEA4375D4CDF4C174B