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); }