iTextSharp.text.pdf.ArabicLigaturizer.Doublelig C# (CSharp) Метод

Doublelig() статический приватный Метод

static private Doublelig ( StringBuilder str, int level ) : void
str StringBuilder
level int
Результат void
        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;
        }