Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        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);
                }
            }
        }