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 2017/07/30 13:50:27 UTC

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

Author: tilman
Date: Sun Jul 30 13:50:27 2017
New Revision: 1803428

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

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

Modified: pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestFontEncoding.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestFontEncoding.java?rev=1803428&r1=1803427&r2=1803428&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestFontEncoding.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestFontEncoding.java Sun Jul 30 13:50:27 2017
@@ -17,15 +17,22 @@
 
 package org.apache.pdfbox.pdmodel.font;
 
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSInteger;
 import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.pdfbox.pdmodel.PDPageContentStream;
 import org.apache.pdfbox.pdmodel.font.encoding.DictionaryEncoding;
 import org.apache.pdfbox.pdmodel.font.encoding.MacRomanEncoding;
 import org.apache.pdfbox.pdmodel.font.encoding.WinAnsiEncoding;
-
-import junit.framework.TestCase;
+import org.apache.pdfbox.text.PDFTextStripper;
 
 /**
  * Tests font encoding.
@@ -60,4 +67,36 @@ public class TestFontEncoding extends Te
         assertNull(dictEncoding.getNameToCodeMap().get("space"));
         assertEquals(32, dictEncoding.getNameToCodeMap().get("a").intValue());
     }
+
+    /**
+     * PDFBOX-3826: Some unicodes are reached by several names in glyphlist.txt, e.g. tilde and
+     * ilde.
+     *
+     * @throws IOException
+     */
+    public void testPDFBox3884() throws IOException
+    {
+        PDDocument doc = new PDDocument();
+        PDPage page = new PDPage();
+        doc.addPage(page);
+        PDPageContentStream cs = new PDPageContentStream(doc, page);
+        cs.setFont(PDType1Font.HELVETICA, 20);
+        cs.beginText();
+        cs.newLineAtOffset(100, 700);
+        // first tilde is "asciitilde" (from the keyboard), 2nd tilde is "tilde"
+        // using ˜ would bring IllegalArgumentException prior to bugfix
+        cs.showText("~˜");
+        cs.endText();
+        cs.close();
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        doc.save(baos);
+        doc.close();
+
+        // verify
+        doc = PDDocument.load(baos.toByteArray());
+        PDFTextStripper stripper = new PDFTextStripper();
+        String text = stripper.getText(doc);
+        assertEquals("~˜", text.trim());
+        doc.close();
+    }
 }