Ejemplo n.º 1
0
        private void Comp(StringBuilder result)
        {
            // All decomposed and reordered.
            // Combine all combinable characters.
            int  cc;
            int  last_cc = 0;
            char c;
            int  last_start = 0;

            for (int i = 0; i < result.Length; i++)
            {
                cc = Combining.Class(result[i]);
                if ((i > 0) &&
                    ((last_cc == 0) || (last_cc != cc)) &&
                    Compose.Combine(result[last_start], result[i], out c))
                {
                    result[last_start] = c;
                    result.Remove(i, 1);
                    i--;

                    if (i == last_start)
                    {
                        last_cc = 0;
                    }
                    else
                    {
                        last_cc = Combining.Class(result[i - 1]);
                    }

                    continue;
                }

                if (cc == 0)
                {
                    last_start = i;
                }

                last_cc = cc;
            }
        }