b-r-g, b-l-g-s, etc., when converted from Tibetan to Wylie, give
correct, unambiguous Wylie.
This commit is contained in:
parent
8565855dd1
commit
1987f7d80a
2 changed files with 26 additions and 10 deletions
|
@ -830,10 +830,7 @@ public class TibTextUtils {
|
||||||
sb.append(aVowelToUseAfter(lastWylie));
|
sb.append(aVowelToUseAfter(lastWylie));
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: "g" and "y" should not be hard-coded here.
|
if (TibetanMachineWeb.isAmbiguousWylie(lastWylie, wylie))
|
||||||
// Instead, TibetanMachineWeb should introduce relevant sets
|
|
||||||
|
|
||||||
if (lastWylie.equals("g") && wylie.equals("y"))
|
|
||||||
sb.append(TibetanMachineWeb.WYLIE_DISAMBIGUATING_KEY);
|
sb.append(TibetanMachineWeb.WYLIE_DISAMBIGUATING_KEY);
|
||||||
|
|
||||||
if (!wylie.equals(TibetanMachineWeb.ACHEN)) {
|
if (!wylie.equals(TibetanMachineWeb.ACHEN)) {
|
||||||
|
@ -895,7 +892,7 @@ public class TibTextUtils {
|
||||||
|| !TibetanMachineWeb.isWylieFarRight(TibetanMachineWeb.getWylieForGlyph((DuffCode)glyphList.get(size - 1))))))) {
|
|| !TibetanMachineWeb.isWylieFarRight(TibetanMachineWeb.getWylieForGlyph((DuffCode)glyphList.get(size - 1))))))) {
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
wylie = TibetanMachineWeb.getWylieForGlyph((DuffCode)glyphList.get(i));
|
wylie = TibetanMachineWeb.getWylieForGlyph((DuffCode)glyphList.get(i));
|
||||||
if ((lastWylie.equals("g") && wylie.equals("y"))
|
if (TibetanMachineWeb.isAmbiguousWylie(lastWylie, wylie)
|
||||||
|| (i != 0 && wylie.equals(TibetanMachineWeb.ACHEN)))
|
|| (i != 0 && wylie.equals(TibetanMachineWeb.ACHEN)))
|
||||||
sb.append(TibetanMachineWeb.WYLIE_DISAMBIGUATING_KEY);
|
sb.append(TibetanMachineWeb.WYLIE_DISAMBIGUATING_KEY);
|
||||||
|
|
||||||
|
@ -909,7 +906,7 @@ public class TibTextUtils {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (i+2 < size) {
|
while (i+2 < size) {
|
||||||
wylie = TibetanMachineWeb.getWylieForGlyph((DuffCode)glyphList.get(i));
|
wylie = TibetanMachineWeb.getWylieForGlyph((DuffCode)glyphList.get(i));
|
||||||
if ((lastWylie.equals("g") && wylie.equals("y"))
|
if (TibetanMachineWeb.isAmbiguousWylie(lastWylie, wylie)
|
||||||
|| (i != 0 && wylie.equals(TibetanMachineWeb.ACHEN)))
|
|| (i != 0 && wylie.equals(TibetanMachineWeb.ACHEN)))
|
||||||
sb.append(TibetanMachineWeb.WYLIE_DISAMBIGUATING_KEY);
|
sb.append(TibetanMachineWeb.WYLIE_DISAMBIGUATING_KEY);
|
||||||
|
|
||||||
|
@ -1010,6 +1007,8 @@ public class TibTextUtils {
|
||||||
} else {
|
} else {
|
||||||
/* no ambiguity. the "a" vowel comes after
|
/* no ambiguity. the "a" vowel comes after
|
||||||
* wylie1. */
|
* wylie1. */
|
||||||
|
if (TibetanMachineWeb.isAmbiguousWylie(wylie0, wylie1))
|
||||||
|
sb.append(TibetanMachineWeb.WYLIE_DISAMBIGUATING_KEY);
|
||||||
sb.append(wylie1
|
sb.append(wylie1
|
||||||
+ aVowelToUseAfter(wylie1)
|
+ aVowelToUseAfter(wylie1)
|
||||||
+ wylie2);
|
+ wylie2);
|
||||||
|
@ -1068,10 +1067,7 @@ public class TibTextUtils {
|
||||||
dc = (DuffCode)iter.next();
|
dc = (DuffCode)iter.next();
|
||||||
currWylie = TibetanMachineWeb.getWylieForGlyph(dc);
|
currWylie = TibetanMachineWeb.getWylieForGlyph(dc);
|
||||||
|
|
||||||
//note: "g" and "y" should not be hard-coded
|
if (TibetanMachineWeb.isAmbiguousWylie(lastWylie, currWylie)
|
||||||
// instead, TibetanMachineWeb should introduce relevant sets
|
|
||||||
|
|
||||||
if ((lastWylie.equals("g") && currWylie.equals("y"))
|
|
||||||
|| (!lastWylie.equals("")
|
|| (!lastWylie.equals("")
|
||||||
&& currWylie.equals(TibetanMachineWeb.ACHEN)))
|
&& currWylie.equals(TibetanMachineWeb.ACHEN)))
|
||||||
sb.append(TibetanMachineWeb.WYLIE_DISAMBIGUATING_KEY);
|
sb.append(TibetanMachineWeb.WYLIE_DISAMBIGUATING_KEY);
|
||||||
|
@ -1081,6 +1077,9 @@ public class TibTextUtils {
|
||||||
lastWylie = currWylie;
|
lastWylie = currWylie;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DLC FIXME: type jeskada, convert Tibetan->Wylie. You get
|
||||||
|
// the wrong thing in makeIllegalTibetanGoEndToEnd mode. Fix
|
||||||
|
// it here.
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,7 @@ import org.thdl.util.ThdlOptions;
|
||||||
* @author Edward Garrett, Tibetan and Himalayan Digital Library
|
* @author Edward Garrett, Tibetan and Himalayan Digital Library
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
|
// FIXME: for speed, make either this class, its methods, or both, final?
|
||||||
public class TibetanMachineWeb {
|
public class TibetanMachineWeb {
|
||||||
/** This addresses bug 624133, "Input freezes after impossible
|
/** This addresses bug 624133, "Input freezes after impossible
|
||||||
* character". The input sequences that are valid in Extended
|
* character". The input sequences that are valid in Extended
|
||||||
|
@ -696,6 +697,22 @@ public static boolean isVowel(String s) {
|
||||||
return keyboard.isVowel(s);
|
return keyboard.isVowel(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks to see if the concatenation of x and y is ambiguous in
|
||||||
|
* Extended Wylie. gya and g.ya, bla and b.la, and bra and b.ra are
|
||||||
|
* the only syntactically legal ambigous fellows, as stacks like blha,
|
||||||
|
* blda, brla, brkya, brgya, brka, etc. are unambiguous.
|
||||||
|
* @param x the prefix
|
||||||
|
* @param y the root stack
|
||||||
|
* @return true if x + y is ambiguous in the Extended Wylie
|
||||||
|
* transliteration, false if not
|
||||||
|
*/
|
||||||
|
public static boolean isAmbiguousWylie(String x, String y) {
|
||||||
|
return (("g".equals(x) && "y".equals(y))
|
||||||
|
|| ("b".equals(x) && "l".equals(y))
|
||||||
|
|| ("b".equals(x) && "r".equals(y)));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks to see if the passed string
|
* Checks to see if the passed string
|
||||||
* is a vowel in Extended Wylie.
|
* is a vowel in Extended Wylie.
|
||||||
|
|
Loading…
Add table
Reference in a new issue