Author: ssteiner Date: Fri Feb 15 11:08:02 2019 New Revision: 1853633 URL: http://svn.apache.org/viewvc?rev=1853633&view=rev Log: FOP-2841: PDF to PDF with merge-fonts checkbox misaligned
Modified: xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeTTFonts.java xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java Modified: xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeTTFonts.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeTTFonts.java?rev=1853633&r1=1853632&r2=1853633&view=diff ============================================================================== --- xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeTTFonts.java (original) +++ xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/MergeTTFonts.java Fri Feb 15 11:08:02 2019 @@ -273,9 +273,12 @@ public class MergeTTFonts extends TTFSub } public byte[] getMergedFontSubset() throws IOException { + int sgsize = added.size(); + if (sgsize == 1 && size == fontFile.getAllBytes().length) { + return fontFile.getAllBytes(); + } output = new byte[size * 2]; createDirectory(); // Create the TrueType header and directory - int sgsize = added.size(); if (!cid) { writeCMAP(cmap); // copyTable(fontFile, OFTableName.CMAP); Modified: xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java?rev=1853633&r1=1853632&r2=1853633&view=diff ============================================================================== --- xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java (original) +++ xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java Fri Feb 15 11:08:02 2019 @@ -21,6 +21,7 @@ import java.awt.Rectangle; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; import java.io.BufferedOutputStream; +import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; @@ -50,6 +51,8 @@ import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.cos.COSObject; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.font.PDCIDFontType2; +import org.apache.pdfbox.pdmodel.font.PDType0Font; import org.apache.xmlgraphics.image.loader.ImageException; import org.apache.xmlgraphics.image.loader.ImageInfo; @@ -78,6 +81,7 @@ import org.apache.fop.render.pcl.PCLGene import org.apache.fop.render.pcl.PCLGraphics2D; import org.apache.fop.render.pdf.pdfbox.ImageConverterPDF2G2D; import org.apache.fop.render.pdf.pdfbox.ImagePDF; +import org.apache.fop.render.pdf.pdfbox.MergeTTFonts; import org.apache.fop.render.pdf.pdfbox.PDFBoxAdapter; import org.apache.fop.render.pdf.pdfbox.PDFBoxImageHandler; import org.apache.fop.render.pdf.pdfbox.PSPDFGraphics2D; @@ -85,8 +89,6 @@ import org.apache.fop.render.ps.PSDocume import org.apache.fop.render.ps.PSImageFormResource; import org.apache.fop.render.ps.PSRenderingUtil; - - public class PDFBoxAdapterTestCase { protected static final String CFF1 = "test/resources/2fonts.pdf"; protected static final String CFF2 = "test/resources/2fonts2.pdf"; @@ -172,6 +174,23 @@ public class PDFBoxAdapterTestCase { parseFonts(fi); } + @Test + public void testMergeTT() throws IOException { + PDDocument doc = PDDocument.load(new File(TYPE0TT)); + PDType0Font type0Font = (PDType0Font) doc.getPage(0).getResources().getFont(COSName.getPDFName("C2_0")); + PDCIDFontType2 ttf = (PDCIDFontType2) type0Font.getDescendantFont(); + InputStream originalData = ttf.getTrueTypeFont().getOriginalData(); + byte[] originalDataBytes = IOUtils.toByteArray(originalData); + doc.close(); + + MergeTTFonts mergeTTFonts = new MergeTTFonts(null); + Map<Integer, Integer> map = new HashMap<Integer, Integer>(); + map.put(0, 0); + mergeTTFonts.readFont(new ByteArrayInputStream(originalDataBytes), null, null, map, true); + byte[] mergedData = mergeTTFonts.getMergedFontSubset(); + Assert.assertArrayEquals(mergedData, originalDataBytes); + } + private void parseFonts(FontInfo fi) throws IOException { for (Typeface font : fi.getUsedFonts().values()) { InputStream is = ((CustomFont) font).getInputStream(); --------------------------------------------------------------------- To unsubscribe, e-mail: fop-commits-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-commits-h...@xmlgraphics.apache.org