diff options
author | Simon Steiner <ssteiner@apache.org> | 2023-08-02 09:01:31 +0100 |
---|---|---|
committer | Simon Steiner <ssteiner@apache.org> | 2023-08-02 09:01:31 +0100 |
commit | 0ec06d934b8671dcdde338aa5e5605cf26fddf85 (patch) | |
tree | b8572efd9672db33a469b7175ef1669f7b3fef42 /fop-core/src/test | |
parent | c49a080dc64d39ece4a0aba6f3ad20af56a4ac25 (diff) | |
download | xmlgraphics-fop-0ec06d934b8671dcdde338aa5e5605cf26fddf85.tar.gz xmlgraphics-fop-0ec06d934b8671dcdde338aa5e5605cf26fddf85.zip |
FOP-2985: Revert AFP reset character spacing
Diffstat (limited to 'fop-core/src/test')
-rw-r--r-- | fop-core/src/test/java/org/apache/fop/render/afp/AFPPainterTestCase.java | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/fop-core/src/test/java/org/apache/fop/render/afp/AFPPainterTestCase.java b/fop-core/src/test/java/org/apache/fop/render/afp/AFPPainterTestCase.java index b396d6d67..92bf91edb 100644 --- a/fop-core/src/test/java/org/apache/fop/render/afp/AFPPainterTestCase.java +++ b/fop-core/src/test/java/org/apache/fop/render/afp/AFPPainterTestCase.java @@ -24,6 +24,7 @@ import java.awt.Dimension; import java.awt.Rectangle; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.io.DataInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -44,8 +45,6 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import org.apache.commons.io.IOUtils; - import org.apache.xmlgraphics.image.loader.Image; import org.apache.xmlgraphics.image.loader.ImageException; import org.apache.xmlgraphics.image.loader.ImageFlavor; @@ -63,6 +62,9 @@ import org.apache.fop.afp.fonts.CharacterSet; import org.apache.fop.afp.fonts.CharactersetEncoder; import org.apache.fop.afp.fonts.OutlineFontTestCase; import org.apache.fop.afp.fonts.RasterFont; +import org.apache.fop.afp.parser.MODCAParser; +import org.apache.fop.afp.parser.UnparsedStructuredField; +import org.apache.fop.afp.ptoca.PtocaConstants; import org.apache.fop.apps.FOUserAgent; import org.apache.fop.apps.FopFactory; import org.apache.fop.events.Event; @@ -212,36 +214,37 @@ public class AFPPainterTestCase { + "END DOCUMENT DOC00001\n"); } - /** - * Checks that letter spacing is reset to 0 after the relevant text block. - */ @Test - public void testLetterSpacingReset() throws Exception { + public void testLetterSpacing() throws Exception { List<String> strings = new ArrayList<>(); strings.add("xxxx"); - InputStream inputStream = getDocResultInputStream(strings, 10000); - byte[] bytes = IOUtils.toByteArray(inputStream); - // The 134th byte is incremented by 5 to account for the 5 extra bytes inserted for the reset. - Assert.assertEquals((byte)39, bytes[134]); - // And these are the 5 reset bytes. - Assert.assertEquals((byte)5, bytes[163]); - Assert.assertEquals((byte)195, bytes[164]); - Assert.assertEquals((byte)0, bytes[165]); - Assert.assertEquals((byte)0, bytes[166]); - Assert.assertEquals((byte)0, bytes[167]); + InputStream bis = getDocResultInputStream(strings, 10000); + MODCAParser parser = new MODCAParser(bis); + UnparsedStructuredField field; + while ((field = parser.readNextStructuredField()) != null) { + if (field.toString().contains("Data Presentation Text")) { + break; + } + } + DataInputStream data = new DataInputStream(new ByteArrayInputStream(field.getData())); + data.skip(13); //2 for controlInd + Assert.assertEquals(data.readByte(), 5); //len + Assert.assertEquals(data.readByte(), PtocaConstants.SIA | PtocaConstants.CHAIN_BIT); //functionType + Assert.assertEquals(data.readShort(), 33); //Increment + Assert.assertEquals(data.readByte(), 0); //Direction + data.skip(4); //varSpaceCharacterIncrement + //flushText: + Assert.assertEquals(data.readByte(), 2); //len + Assert.assertEquals(data.readByte(), PtocaConstants.TRN | PtocaConstants.CHAIN_BIT); //functionType } private String writeText(List<String> text) throws Exception { - InputStream bis = getDocResultInputStream(text); + InputStream bis = getDocResultInputStream(text, 0); StringBuilder sb = new StringBuilder(); new AFPParser(false).read(bis, sb); return sb.toString(); } - private static InputStream getDocResultInputStream(List<String> text) throws Exception { - return getDocResultInputStream(text, 0); - } - private static InputStream getDocResultInputStream(List<String> text, int letterSpacing) throws Exception { FOUserAgent agent = FopFactory.newInstance(new URI(".")).newFOUserAgent(); IFContext context = new IFContext(agent); @@ -266,7 +269,6 @@ public class AFPPainterTestCase { afpPainter.drawText(0, 0, letterSpacing, 0, null, s); } doc.endDocument(); - return new ByteArrayInputStream(outputStream.toByteArray()); } |