You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2020/06/16 18:13:19 UTC
svn commit: r1878897 -
/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java
Author: tilman
Date: Tue Jun 16 18:13:19 2020
New Revision: 1878897
URL: http://svn.apache.org/viewvc?rev=1878897&view=rev
Log:
PDFBOX-4887: prevent full embedding (only subsetting is allowed) of TrueType collections
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java?rev=1878897&r1=1878896&r2=1878897&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java Tue Jun 16 18:13:19 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);
}