You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by ss...@apache.org on 2019/02/15 11:08:02 UTC

svn commit: r1853633 - in /xmlgraphics/fop-pdf-images/trunk: src/java/org/apache/fop/render/pdf/pdfbox/MergeTTFonts.java test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java

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-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org