iTextSharp.text.pdf.languages.IndicLigaturizer.Process C# (CSharp) Method

Process() public method

public Process ( String s ) : String
s String
return String
        public String Process(String s) {
            if (String.IsNullOrEmpty(s))
                return "";
            StringBuilder res = new StringBuilder();

            for (int i = 0; i < s.Length; i++) {
                char letter = s[i];

                if (IsVyanjana(letter) || IsSwaraLetter(letter)) {
                    res.Append(letter);
                } else if (IsSwaraMatra(letter)) {
                    int prevCharIndex = res.Length - 1;

                    if (prevCharIndex >= 0) {
                        // a Halanta followed by swara matra, causes it to lose its
                        // identity
                        if (res[prevCharIndex] == langTable[HALANTA])
                            res.Remove(prevCharIndex, 1);

                        res.Append(letter);
                        int prevPrevCharIndex = res.Length - 2;

                        if (letter == langTable[MATRA_I] && prevPrevCharIndex >= 0)
                            Swap(res, prevPrevCharIndex, res.Length - 1);
                    } else {
                        res.Append(letter);
                    }
                } else {
                    res.Append(letter);
                }
            }

            return res.ToString();
        }