You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2017/07/15 14:33:48 UTC

svn commit: r1802024 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font: PDTrueTypeFont.java PDTrueTypeFontEmbedder.java TrueTypeEmbedder.java

Author: lehmi
Date: Sat Jul 15 14:33:48 2017
New Revision: 1802024

URL: http://svn.apache.org/viewvc?rev=1802024&view=rev
Log:
PDFBOX-3826: always pass a TrueTypeFont to the font embedder class

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFontEmbedder.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java?rev=1802024&r1=1802023&r2=1802024&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java Sat Jul 15 14:33:48 2017
@@ -19,7 +19,6 @@ package org.apache.pdfbox.pdmodel.font;
 import java.awt.geom.AffineTransform;
 import java.awt.geom.GeneralPath;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.HashMap;
@@ -139,13 +138,13 @@ public class PDTrueTypeFont extends PDSi
     /**
      * Creates a new TrueType font for embedding.
      */
-    private PDTrueTypeFont(PDDocument document, InputStream ttfStream, Encoding encoding)
+    private PDTrueTypeFont(PDDocument document, TrueTypeFont ttf, Encoding encoding)
             throws IOException
     {
-        PDTrueTypeFontEmbedder embedder = new PDTrueTypeFontEmbedder(document, dict, ttfStream,
+        PDTrueTypeFontEmbedder embedder = new PDTrueTypeFontEmbedder(document, dict, ttf,
                                                                      encoding);
         this.encoding = encoding;
-        ttf = embedder.getTrueTypeFont();
+        this.ttf = ttf;
         setFontDescriptor(embedder.getFontDescriptor());
         isEmbedded = true;
         isDamaged = false;
@@ -167,7 +166,7 @@ public class PDTrueTypeFont extends PDSi
     public static PDTrueTypeFont load(PDDocument doc, File file, Encoding encoding)
             throws IOException
     {
-        return new PDTrueTypeFont(doc, new FileInputStream(file), encoding);
+        return new PDTrueTypeFont(doc, new TTFParser().parse(file), encoding);
     }
 
     /**
@@ -185,7 +184,7 @@ public class PDTrueTypeFont extends PDSi
     public static PDTrueTypeFont load(PDDocument doc, InputStream input, Encoding encoding)
             throws IOException
     {
-        return new PDTrueTypeFont(doc, input, encoding);
+        return new PDTrueTypeFont(doc, new TTFParser().parse(input), encoding);
     }
 
     /**
@@ -201,7 +200,7 @@ public class PDTrueTypeFont extends PDSi
     @Deprecated
     public static PDTrueTypeFont loadTTF(PDDocument doc, File file) throws IOException
     {
-        return new PDTrueTypeFont(doc, new FileInputStream(file), WinAnsiEncoding.INSTANCE);
+        return new PDTrueTypeFont(doc, new TTFParser().parse(file), WinAnsiEncoding.INSTANCE);
     }
 
     /**
@@ -217,7 +216,7 @@ public class PDTrueTypeFont extends PDSi
     @Deprecated
     public static PDTrueTypeFont loadTTF(PDDocument doc, InputStream input) throws IOException
     {
-        return new PDTrueTypeFont(doc, input, WinAnsiEncoding.INSTANCE);
+        return new PDTrueTypeFont(doc, new TTFParser().parse(input), WinAnsiEncoding.INSTANCE);
     }
 
     /**

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFontEmbedder.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFontEmbedder.java?rev=1802024&r1=1802023&r2=1802024&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFontEmbedder.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFontEmbedder.java Sat Jul 15 14:33:48 2017
@@ -24,6 +24,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import org.apache.fontbox.ttf.HorizontalMetricsTable;
+import org.apache.fontbox.ttf.TrueTypeFont;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.PDDocument;
@@ -50,10 +51,10 @@ final class PDTrueTypeFontEmbedder exten
      * @param encoding The PostScript encoding vector to be used for embedding.
      * @throws IOException if the TTF could not be read
      */
-    PDTrueTypeFontEmbedder(PDDocument document, COSDictionary dict, InputStream ttfStream,
+    PDTrueTypeFontEmbedder(PDDocument document, COSDictionary dict, TrueTypeFont ttf,
                            Encoding encoding) throws IOException
     {
-        super(document, dict, ttfStream);
+        super(document, dict, ttf, false);
         dict.setItem(COSName.SUBTYPE, COSName.TRUE_TYPE);
         
         GlyphList glyphList = GlyphList.getAdobeGlyphList();

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java?rev=1802024&r1=1802023&r2=1802024&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java Sat Jul 15 14:33:48 2017
@@ -61,22 +61,6 @@ abstract class TrueTypeEmbedder implemen
     private final boolean embedSubset;
 
     /**
-     * Creates a new TrueType font for full embedding.
-     */
-    TrueTypeEmbedder(PDDocument document, COSDictionary dict, InputStream ttfStream) throws IOException
-    {
-        this.document = document;
-        this.embedSubset = false;
-
-        buildFontFile2(ttfStream);
-
-        dict.setName(COSName.BASE_FONT, ttf.getName());
-
-        // choose a Unicode "cmap"
-        cmap = ttf.getUnicodeCmap();
-    }
-
-    /**
      * Creates a new TrueType font for embedding.
      */
     TrueTypeEmbedder(PDDocument document, COSDictionary dict, TrueTypeFont ttf,
@@ -264,6 +248,7 @@ abstract class TrueTypeEmbedder implemen
     /**
      * Returns the FontBox font.
      */
+    @Deprecated
     public TrueTypeFont getTrueTypeFont()
     {
         return ttf;
@@ -311,7 +296,7 @@ abstract class TrueTypeEmbedder implemen
         tables.add("gasp");
 
         // set the GIDs to subset
-        TTFSubsetter subsetter = new TTFSubsetter(getTrueTypeFont(), tables);
+        TTFSubsetter subsetter = new TTFSubsetter(ttf, tables);
         subsetter.addAll(subsetCodePoints);
 
         // calculate deterministic tag based on the chosen subset