am 78c0a044: am 9c9c0eb8: am e827c252: Merge "Allow soft hyphens in languages without patterns" into mnc-dev
* commit '78c0a0448ee3b5388d5892d2689aeebd50bac958': Allow soft hyphens in languages without patterns
This commit is contained in:
@@ -45,6 +45,8 @@ public class Hyphenator {
|
|||||||
@GuardedBy("sLock")
|
@GuardedBy("sLock")
|
||||||
final static HashMap<Locale, Hyphenator> sMap = new HashMap<Locale, Hyphenator>();
|
final static HashMap<Locale, Hyphenator> sMap = new HashMap<Locale, Hyphenator>();
|
||||||
|
|
||||||
|
final static Hyphenator sEmptyHyphenator = new Hyphenator(StaticLayout.nLoadHyphenator(""));
|
||||||
|
|
||||||
final private long mNativePtr;
|
final private long mNativePtr;
|
||||||
|
|
||||||
private Hyphenator(long nativePtr) {
|
private Hyphenator(long nativePtr) {
|
||||||
@@ -53,19 +55,19 @@ public class Hyphenator {
|
|||||||
|
|
||||||
public static long get(@Nullable Locale locale) {
|
public static long get(@Nullable Locale locale) {
|
||||||
synchronized (sLock) {
|
synchronized (sLock) {
|
||||||
if (sMap.containsKey(locale)) {
|
Hyphenator result = sMap.get(locale);
|
||||||
Hyphenator result = sMap.get(locale);
|
if (result != null) {
|
||||||
return (result == null) ? 0 : result.mNativePtr;
|
return result.mNativePtr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Convert this a proper locale-fallback system
|
// TODO: Convert this a proper locale-fallback system
|
||||||
|
|
||||||
// Fall back to language-only, if available
|
// Fall back to language-only, if available
|
||||||
Locale languageOnlyLocale = new Locale(locale.getLanguage());
|
Locale languageOnlyLocale = new Locale(locale.getLanguage());
|
||||||
if (sMap.containsKey(languageOnlyLocale)) {
|
result = sMap.get(languageOnlyLocale);
|
||||||
Hyphenator result = sMap.get(languageOnlyLocale);
|
if (result != null) {
|
||||||
sMap.put(locale, result);
|
sMap.put(locale, result);
|
||||||
return (result == null) ? 0 : result.mNativePtr;
|
return result.mNativePtr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fall back to script-only, if available
|
// Fall back to script-only, if available
|
||||||
@@ -75,16 +77,16 @@ public class Hyphenator {
|
|||||||
.setLanguage("und")
|
.setLanguage("und")
|
||||||
.setScript(script)
|
.setScript(script)
|
||||||
.build();
|
.build();
|
||||||
if (sMap.containsKey(scriptOnlyLocale)) {
|
result = sMap.get(scriptOnlyLocale);
|
||||||
Hyphenator result = sMap.get(scriptOnlyLocale);
|
if (result != null) {
|
||||||
sMap.put(locale, result);
|
sMap.put(locale, result);
|
||||||
return (result == null) ? 0 : result.mNativePtr;
|
return result.mNativePtr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sMap.put(locale, null); // To remember we found nothing.
|
sMap.put(locale, sEmptyHyphenator); // To remember we found nothing.
|
||||||
}
|
}
|
||||||
return 0;
|
return sEmptyHyphenator.mNativePtr;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Hyphenator loadHyphenator(String languageTag) {
|
private static Hyphenator loadHyphenator(String languageTag) {
|
||||||
|
|||||||
Reference in New Issue
Block a user