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/18 15:38:29 UTC

svn commit: r1878968 - /pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java

Author: tilman
Date: Thu Jun 18 15:38:29 2020
New Revision: 1878968

URL: http://svn.apache.org/viewvc?rev=1878968&view=rev
Log:
PDFBOX-4887: add test

Modified:
    pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java

Modified: pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java?rev=1878968&r1=1878967&r2=1878968&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/PDFontTest.java Thu Jun 18 15:38:29 2020
@@ -24,10 +24,15 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
 import org.apache.fontbox.ttf.TTFParser;
+import org.apache.fontbox.ttf.TrueTypeCollection;
 import org.apache.fontbox.ttf.TrueTypeFont;
+import org.apache.fontbox.util.autodetect.FontFileFinder;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.io.IOUtils;
 import org.apache.pdfbox.pdmodel.PDDocument;
@@ -220,6 +225,53 @@ public class PDFontTest
         }
     }
 
+    @Test
+    public void testFullEmbeddingTTC() throws IOException
+    {
+        FontFileFinder fff = new FontFileFinder();
+        TrueTypeCollection ttc = null;
+        for (URI uri : fff.find())
+        {
+            if (uri.getPath().endsWith(".ttc"))
+            {
+                File file = new File(uri);
+                System.out.println("TrueType collection file: " + file);
+                ttc = new TrueTypeCollection(file);
+                break;
+            }
+        }
+        if (ttc == null)
+        {
+            System.out.println("testFullEmbeddingTTC skipped, no .ttc files available");
+            return;
+        }
+
+        final List<String> names = new ArrayList<String>();
+        ttc.processAllFonts(new TrueTypeCollection.TrueTypeFontProcessor()
+        {
+            @Override
+            public void process(TrueTypeFont ttf) throws IOException
+            {
+                System.out.println("TrueType font in collection: " + ttf.getName());
+                names.add(ttf.getName());
+            }
+        });
+
+        TrueTypeFont ttf = ttc.getFontByName(names.get(0)); // take the first one
+        System.out.println("TrueType font used for test: " + ttf.getName());
+
+        try
+        {
+            PDType0Font.load(new PDDocument(), ttf, false);
+        }
+        catch (IOException ex)
+        {
+            Assert.assertEquals("Full embedding of TrueType font collections not supported", ex.getMessage());
+            return;
+        }
+        Assert.fail("should have thrown IOException");
+    }
+
     private void testPDFBox3826checkFonts(byte[] byteArray, File fontFile) throws IOException
     {
         PDDocument doc = PDDocument.load(byteArray);