Transliterate improvements

pull/199/head
M66B 4 years ago
parent df00a0d041
commit 1293c885cc

@ -35,7 +35,6 @@ import android.content.res.Configuration;
import android.content.res.Resources; import android.content.res.Resources;
import android.database.sqlite.SQLiteFullException; import android.database.sqlite.SQLiteFullException;
import android.graphics.Point; import android.graphics.Point;
import android.icu.text.Transliterator;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.LinkProperties; import android.net.LinkProperties;
import android.net.Network; import android.net.Network;
@ -100,7 +99,6 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
@ -1694,14 +1692,9 @@ public class Log {
.append(" yes=").append((uiMode & Configuration.UI_MODE_NIGHT_YES) != 0) .append(" yes=").append((uiMode & Configuration.UI_MODE_NIGHT_YES) != 0)
.append("\r\n"); .append("\r\n");
if (BuildConfig.DEBUG && sb.append("Transliterate")
Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { .append(TextHelper.canTransliterate())
sb.append("Transliterators:"); .append("\r\n");
Enumeration<String> ids = Transliterator.getAvailableIDs();
while (ids.hasMoreElements())
sb.append(' ').append(ids.nextElement());
sb.append("\r\n");
}
try { try {
int maxKeySize = javax.crypto.Cipher.getMaxAllowedKeyLength("AES"); int maxKeySize = javax.crypto.Cipher.getMaxAllowedKeyLength("AES");

@ -32,7 +32,6 @@ import android.view.textclassifier.TextClassifier;
import androidx.preference.PreferenceManager; import androidx.preference.PreferenceManager;
import java.text.Normalizer;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import java.util.ArrayList; import java.util.ArrayList;
@ -47,6 +46,7 @@ import java.util.Set;
public class TextHelper { public class TextHelper {
private static final int MAX_SAMPLE_SIZE = 8192; private static final int MAX_SAMPLE_SIZE = 8192;
private static final float MIN_PROBABILITY = 0.80f; private static final float MIN_PROBABILITY = 0.80f;
private static final String TRANSLITERATOR = "Any-Latin; Latin-ASCII";
static { static {
System.loadLibrary("fairemail"); System.loadLibrary("fairemail");
@ -95,7 +95,7 @@ public class TextHelper {
return false; return false;
try { try {
Transliterator.getInstance("Any-Latin"); Transliterator.getInstance(TRANSLITERATOR);
return true; return true;
} catch (Throwable ex) { } catch (Throwable ex) {
return false; return false;
@ -112,10 +112,8 @@ public class TextHelper {
return text; return text;
try { try {
Transliterator t = Transliterator.getInstance("Any-Latin"); // http://userguide.icu-project.org/transforms/general
text = t.transliterate(text); return Transliterator.getInstance(TRANSLITERATOR).transliterate(text);
String normalized = Normalizer.normalize(text, Normalizer.Form.NFD);
text = normalized.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
} catch (Throwable ex) { } catch (Throwable ex) {
Log.w(ex); Log.w(ex);
} }

Loading…
Cancel
Save