public void LtrWordsInRtlContentTest() { var content = "این یک متن راست به چپ برای تست left to right content میباشد."; var rtlPara = new Paragraph(0); rtlPara.Styles.SetDirection(true); var rtlLine = rtlPara.AddLine(new Line(new Point(1000, 0))); var offset = 0; var wordCounter = 0; foreach (var word in content.Split(" ")) { var wordInfo = new WordInfo(word, offset, WordType.Normal); wordInfo.Styles.SetDirection(Paragraph.IsRtl(word)); wordInfo.SetFormattedText(_arial, _fontSize, 1, _lineHeight); offset += word.Length; var space = new SpaceWord(offset++); space.Styles.SetDirection(wordInfo.Styles.IsRtl); space.SetFormattedText(_arial, _fontSize, 1, _lineHeight); rtlLine.AddWord(wordInfo); Assert.AreEqual(++wordCounter, rtlLine.Words.Count); rtlLine.AddWord(space); Assert.AreEqual(++wordCounter, rtlLine.Words.Count); } rtlLine.Build(false); for (var i = 0; i < rtlLine.Words.Count - 1; i++) { Debug.WriteLine($"Word {i}'th"); var word = rtlLine.Words[i]; var nextWord = rtlLine.Words[i + 1]; if (word.Styles.IsRtl && nextWord.Styles.IsRtl) // 0X <--2-- <--1-- 1000X { Assert.IsTrue(word.Area.X > nextWord.Area.X); } else if (word.Styles.IsLtr && nextWord.Styles.IsLtr) // 0X --1--> --2--> 1000X { Assert.IsTrue(word.Area.X < nextWord.Area.X); } else { Assert.IsTrue(word.Area.X > nextWord.Area.X); } } }
public void RtlWordsInLtrContentTest() { var content = "This is a test content for use متن تستی راست به چپ in ltr content"; var ltrPara = new Paragraph(0); var ltrLine = ltrPara.AddLine(new Line(new Point(0, 0))); var offset = 0; var wordCounter = 0; foreach (var word in content.Split(" ")) { var wordInfo = new WordInfo(word, offset, WordType.Normal); wordInfo.Styles.SetDirection(Paragraph.IsRtl(word)); wordInfo.SetFormattedText(_arial, _fontSize, 1, _lineHeight); offset += word.Length; var space = new SpaceWord(offset++); space.Styles.SetDirection(wordInfo.Styles.IsRtl); space.SetFormattedText(_arial, _fontSize, 1, _lineHeight); ltrLine.AddWord(wordInfo); Assert.AreEqual(++wordCounter, ltrLine.Words.Count); ltrLine.AddWord(space); Assert.AreEqual(++wordCounter, ltrLine.Words.Count); } ltrLine.Build(false); for (var i = 0; i < ltrLine.Words.Count - 1; i++) { Debug.WriteLine($"Word {i}'th"); var word = ltrLine.Words[i]; var nextWord = ltrLine.Words[i + 1]; if (word.Styles.IsRtl && nextWord.Styles.IsRtl) // 0X <--2-- <--1-- NX { Assert.IsTrue(word.Area.X > nextWord.Area.X); } else if (word.Styles.IsLtr && nextWord.Styles.IsLtr) // 0X --1--> --2--> NX { Assert.IsTrue(word.Area.X < nextWord.Area.X); } else { Assert.IsTrue(word.Area.X < nextWord.Area.X); } } }