internal static void Doublelig(StringBuilder str, int level)
{
int len;
int olen = len = str.Length;
int j = 0, si = 1;
char lapresult;
while (si < olen) {
lapresult = (char)0;
if ((level & ar_composedtashkeel) != 0) {
switch (str[j]) {
case SHADDA:
switch (str[si]) {
case KASRA:
lapresult = '\uFC62';
break;
case FATHA:
lapresult = '\uFC60';
break;
case DAMMA:
lapresult = '\uFC61';
break;
case '\u064C':
lapresult = '\uFC5E';
break;
case '\u064D':
lapresult = '\uFC5F';
break;
}
break;
case KASRA:
if (str[si] == SHADDA)
lapresult = '\uFC62';
break;
case FATHA:
if (str[si] == SHADDA)
lapresult = '\uFC60';
break;
case DAMMA:
if (str[si] == SHADDA)
lapresult = '\uFC61';
break;
}
}
if ((level & ar_lig) != 0) {
switch (str[j]) {
case '\uFEDF': /* LAM initial */
switch (str[si]) {
case '\uFE9E':
lapresult = '\uFC3F';
break; /* JEEM final */
case '\uFEA0':
lapresult = '\uFCC9';
break; /* JEEM medial */
case '\uFEA2':
lapresult = '\uFC40';
break; /* HAH final */
case '\uFEA4':
lapresult = '\uFCCA';
break; /* HAH medial */
case '\uFEA6':
lapresult = '\uFC41';
break; /* KHAH final */
case '\uFEA8':
lapresult = '\uFCCB';
break; /* KHAH medial */
case '\uFEE2':
lapresult = '\uFC42';
break; /* MEEM final */
case '\uFEE4':
lapresult = '\uFCCC';
break; /* MEEM medial */
}
break;
case '\uFE97': /* TEH inital */
switch (str[si]) {
case '\uFEA0':
lapresult = '\uFCA1';
break; /* JEEM medial */
case '\uFEA4':
lapresult = '\uFCA2';
break; /* HAH medial */
case '\uFEA8':
lapresult = '\uFCA3';
break; /* KHAH medial */
}
break;
case '\uFE91': /* BEH inital */
switch (str[si]) {
case '\uFEA0':
lapresult = '\uFC9C';
break; /* JEEM medial */
case '\uFEA4':
lapresult = '\uFC9D';
break; /* HAH medial */
case '\uFEA8':
lapresult = '\uFC9E';
break; /* KHAH medial */
}
break;
case '\uFEE7': /* NOON inital */
switch (str[si]) {
case '\uFEA0':
lapresult = '\uFCD2';
break; /* JEEM initial */
case '\uFEA4':
lapresult = '\uFCD3';
break; /* HAH medial */
case '\uFEA8':
lapresult = '\uFCD4';
break; /* KHAH medial */
}
break;
case '\uFEE8': /* NOON medial */
switch (str[si]) {
case '\uFEAE':
lapresult = '\uFC8A';
break; /* REH final */
case '\uFEB0':
lapresult = '\uFC8B';
break; /* ZAIN final */
}
break;
case '\uFEE3': /* MEEM initial */
switch (str[si]) {
case '\uFEA0':
lapresult = '\uFCCE';
break; /* JEEM medial */
case '\uFEA4':
lapresult = '\uFCCF';
break; /* HAH medial */
case '\uFEA8':
lapresult = '\uFCD0';
break; /* KHAH medial */
case '\uFEE4':
lapresult = '\uFCD1';
break; /* MEEM medial */
}
break;
case '\uFED3': /* FEH initial */
switch (str[si]) {
case '\uFEF2':
lapresult = '\uFC32';
break; /* YEH final */
}
break;
default:
break;
} /* end switch string[si] */
}
if (lapresult != 0) {
str[j] = lapresult;
len--;
si++; /* jump over one character */
/* we'll have to change this, too. */
}
else {
j++;
str[j] = str[si];
si++;
}
}
str.Length = len;
}