@@ -42,8 +42,13 @@ This file is part of the iText (R) project.
42
42
*/
43
43
package com .itextpdf .layout .renderer ;
44
44
45
+ import com .itextpdf .io .font .otf .Glyph ;
46
+ import com .itextpdf .layout .renderer .LineRenderer .RendererGlyph ;
45
47
import com .itextpdf .test .ExtendedITextTest ;
46
48
import com .itextpdf .test .annotations .type .UnitTest ;
49
+
50
+ import java .util .Arrays ;
51
+ import java .util .List ;
47
52
import org .junit .Assert ;
48
53
import org .junit .Test ;
49
54
import org .junit .experimental .categories .Category ;
@@ -56,4 +61,48 @@ public void verifyPdfCalligraphIsNotAvailable() {
56
61
Assert .assertFalse (TypographyUtils .isPdfCalligraphAvailable ());
57
62
}
58
63
64
+ @ Test
65
+ public void updateAnchorDeltaMarkNotReorderedTest () {
66
+ // original line 'abm', and 'm' is a mark based on 'b'
67
+ Glyph mGlyph = new Glyph (100 , 'm' );
68
+ mGlyph .setAnchorDelta ((short ) -1 );
69
+ mGlyph .setXAdvance ((short ) 15 );
70
+ mGlyph .setYAdvance ((short ) 25 );
71
+
72
+ RendererGlyph b = new RendererGlyph (new Glyph (100 , 'b' ), null );
73
+ RendererGlyph m = new RendererGlyph (mGlyph , null );
74
+ RendererGlyph a = new RendererGlyph (new Glyph (100 , 'a' ), null );
75
+ List <RendererGlyph > reorderedLine = Arrays .asList (b , m , a );
76
+
77
+ int [] reorder = new int [] {1 , 2 , 0 };
78
+ int [] inverseReorder = new int [] {2 , 0 , 1 };
79
+
80
+ TypographyUtils .updateAnchorDeltaForReorderedLineGlyphs (reorder , inverseReorder , reorderedLine );
81
+
82
+ Assert .assertSame (mGlyph , m .glyph );
83
+ Assert .assertEquals (-1 , m .glyph .getAnchorDelta ());
84
+ }
85
+
86
+ @ Test
87
+ public void updateAnchorDeltaMarkReorderedTest () {
88
+ // original line 'abm', and 'm' is a mark based on 'b'
89
+ Glyph mGlyph = new Glyph (100 , 'm' );
90
+ mGlyph .setAnchorDelta ((short ) -1 );
91
+ mGlyph .setXAdvance ((short ) 15 );
92
+ mGlyph .setYAdvance ((short ) 25 );
93
+
94
+ RendererGlyph m = new RendererGlyph (mGlyph , null );
95
+ RendererGlyph b = new RendererGlyph (new Glyph (100 , 'b' ), null );
96
+ RendererGlyph a = new RendererGlyph (new Glyph (100 , 'a' ), null );
97
+ List <RendererGlyph > reorderedLine = Arrays .asList (m , b , a );
98
+
99
+ int [] reorder = new int [] {2 , 1 , 0 };
100
+ int [] inverseReorder = new int [] {2 , 1 , 0 };
101
+
102
+ TypographyUtils .updateAnchorDeltaForReorderedLineGlyphs (reorder , inverseReorder , reorderedLine );
103
+
104
+ Assert .assertNotSame (mGlyph , m .glyph );
105
+ Assert .assertEquals (1 , m .glyph .getAnchorDelta ());
106
+ }
107
+
59
108
}
0 commit comments