Author: tilman
Date: Tue Jun 16 18:13:04 2020
New Revision: 1878896

URL: http://svn.apache.org/viewvc?rev=1878896&view=rev
Log:
PDFBOX-4887: prevent full embedding (only subsetting is allowed) of TrueType 
collections

Modified:
    
pdfbox/branches/issue45/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java

Modified: 
pdfbox/branches/issue45/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/issue45/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java?rev=1878896&r1=1878895&r2=1878896&view=diff
==============================================================================
--- 
pdfbox/branches/issue45/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java
 (original)
+++ 
pdfbox/branches/issue45/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java
 Tue Jun 16 18:13:04 2020
@@ -90,7 +90,18 @@ abstract class TrueTypeEmbedder implemen
         if (!embedSubset)
         {
             // full embedding
-            PDStream stream = new PDStream(document, ttf.getOriginalData(), 
COSName.FLATE_DECODE);
+            
+            // TrueType collections are not supported
+            InputStream is = ttf.getOriginalData();
+            byte b[] = new byte[4];
+            is.mark(b.length); // "is" is FileInputStream or 
ByteArrayInputStream
+            if (is.read(b) == b.length && new String(b).equals("ttcf"))
+            {
+                is.close();
+                throw new IOException("Full embedding of TrueType font 
collections not supported");
+            }
+            is.reset();
+            PDStream stream = new PDStream(document, is, COSName.FLATE_DECODE);
             stream.getCOSObject().setLong(COSName.LENGTH1, 
ttf.getOriginalDataSize());
             fontDescriptor.setFontFile2(stream);
         }


Reply via email to