/// <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(); }
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()); }
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()); }
public void ConvertNumbers_ConvertsEnglishNumbersToHindu_WhenFarsiIsFalse() { var text = GetEnglishNumbers(); var expected = GetHinduNumbers(); GlyphFixer.FixNumbers(text, false); Assert.AreEqual(expected.ToString(), text.ToString()); }
public void ConvertNumbers_ConvertsEnglishNumbersToFarsi_WhenFarsiIsTrue() { var text = GetEnglishNumbers(); var expected = GetFarsiNumbers(); GlyphFixer.FixNumbers(text, true); Assert.AreEqual(expected.ToString(), text.ToString()); }
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()); }
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()); }
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()); }