Пример #1
0
        /// <summary>
        ///     Fixes the provided string
        /// </summary>
        /// <param name="input">Text to fix</param>
        /// <param name="output">Fixed text</param>
        /// <param name="fixTextTags"></param>
        /// <param name="preserveNumbers"></param>
        /// <param name="farsi"></param>
        /// <returns>Fixed text</returns>
        public static void FixRTL(
            string input,
            FastStringBuilder output,
            bool farsi           = true,
            bool fixTextTags     = true,
            bool preserveNumbers = false)
        {
            inputBuilder.SetValue(input);

            TashkeelFixer.RemoveTashkeel(inputBuilder);

            // The shape of the letters in shapeFixedLetters is fixed according to their position in word. But the flow of the text is not fixed.
            GlyphFixer.Fix(inputBuilder, glyphFixerOutput, preserveNumbers, farsi, fixTextTags);

            //Restore tashkeel to their places.
            TashkeelFixer.RestoreTashkeel(glyphFixerOutput);

            // Fix flow of the text and put the result in FinalLetters field
            LigatureFixer.Fix(glyphFixerOutput, output, farsi, fixTextTags, preserveNumbers);
            if (fixTextTags)
            {
                RichTextFixer.Fix(output);
            }
            inputBuilder.Clear();
        }
Пример #2
0
        public void GlyphFixer_PreservesNumbers_WhenPreserveNumberIsTrue()
        {
            var text   = GetEnglishNumbers();
            var output = new FastStringBuilder(10);

            GlyphFixer.Fix(text, output, true, false, false);

            Assert.AreEqual(text.ToString(), output.ToString());
        }
Пример #3
0
        public void GlyphFixer_ConvertsNumbers_Hindu()
        {
            var text   = GetEnglishNumbers();
            var output = new FastStringBuilder(10);

            GlyphFixer.Fix(text, output, false, false, false);

            Assert.AreEqual(GetHinduNumbers().ToString(), output.ToString());
        }
Пример #4
0
        public void ConvertNumbers_ConvertsEnglishNumbersToHindu_WhenFarsiIsFalse()
        {
            var text     = GetEnglishNumbers();
            var expected = GetHinduNumbers();

            GlyphFixer.FixNumbers(text, false);

            Assert.AreEqual(expected.ToString(), text.ToString());
        }
Пример #5
0
        public void ConvertNumbers_ConvertsEnglishNumbersToFarsi_WhenFarsiIsTrue()
        {
            var text     = GetEnglishNumbers();
            var expected = GetFarsiNumbers();

            GlyphFixer.FixNumbers(text, true);

            Assert.AreEqual(expected.ToString(), text.ToString());
        }
Пример #6
0
        public void GlyphFixer_FixesYah_WhenFarsiIsRequired()
        {
            var text = new FastStringBuilder(10);

            text.Append((char)ArabicGeneralLetters.Yeh);

            GlyphFixer.FixYah(text, true);

            Assert.AreEqual(((char)ArabicGeneralLetters.FarsiYeh).ToString(), text.ToString());
        }
Пример #7
0
        public void GlyphFixer_ConvertsNumbers_Farsi()
        {
            var text   = GetEnglishNumbers();
            var output = new FastStringBuilder(10);

            GlyphFixer.Fix(text, output, false, true, false);

            Debug.Log("Output: " + output);

            Assert.AreEqual(GetFarsiNumbers().ToString(), output.ToString());
        }
Пример #8
0
        public void GlyphFixer_FixesYah_WhenFarsiIsRequired()
        {
            var text = new FastStringBuilder(10);

            text.Append((char)GeneralLetters.Ya);

            Debug.Log("Before: " + text);

            GlyphFixer.FixYah(text, true);

            Debug.Log("After: " + text);

            Assert.AreEqual(((char)GeneralLetters.PersianYa).ToString(), text.ToString());
        }