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 2018/02/16 16:22:14 UTC
svn commit: r1824526 -
/pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestFontEmbedding.java
Author: tilman
Date: Fri Feb 16 16:22:14 2018
New Revision: 1824526
URL: http://svn.apache.org/viewvc?rev=1824526&view=rev
Log:
PDFBOX-4106: add test for vertical subsetting
Modified:
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestFontEmbedding.java
Modified: pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestFontEmbedding.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestFontEmbedding.java?rev=1824526&r1=1824525&r2=1824526&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestFontEmbedding.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestFontEmbedding.java Fri Feb 16 16:22:14 2018
@@ -21,6 +21,9 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import junit.framework.TestCase;
+import org.apache.pdfbox.cos.COSArray;
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
@@ -31,6 +34,7 @@ import org.apache.pdfbox.text.PDFTextStr
* Tests font embedding.
*
* @author John Hewson
+ * @author Tilman Hausherr
*/
public class TestFontEmbedding extends TestCase
{
@@ -58,6 +62,53 @@ public class TestFontEmbedding extends T
validateCIDFontType2(true);
}
+ /**
+ * Embed a TTF as vertical CIDFontType2 with subsetting.
+ *
+ * @throws IOException
+ */
+ public void testCIDFontType2VerticalSubset() throws IOException
+ {
+ String text = "ãABCã";
+ String expectedExtractedtext = "ã\r\nA\r\nB\r\nC\r\nã";
+ File pdf = new File(OUT_DIR, "CIDFontType2V.pdf");
+
+ PDDocument document = new PDDocument();
+ PDPage page = new PDPage(PDRectangle.A4);
+ document.addPage(page);
+
+ File ipafont = new File("target/fonts/ipag00303", "ipag.ttf");
+ PDType0Font vfont = PDType0Font.loadVertical(document, ipafont);
+
+ PDPageContentStream contentStream = new PDPageContentStream(document, page);
+ contentStream.beginText();
+ contentStream.setFont(vfont, 20);
+ contentStream.newLineAtOffset(50, 700);
+ contentStream.showText(text);
+ contentStream.endText();
+ contentStream.close();
+
+ // Check the font substitution
+ byte[] encode = vfont.encode(text);
+ int cid = ((encode[0] & 0xFF) << 8) + (encode[1] & 0xFF);
+ assertEquals(7392, cid); // it's 441 without substitution
+
+ // Check the dictionaries
+ COSDictionary fontDict = vfont.getCOSObject();
+ assertEquals(COSName.IDENTITY_V, fontDict.getDictionaryObject(COSName.ENCODING));
+ COSDictionary descFontDict = vfont.getDescendantFont().getCOSObject();
+ COSArray dw2 = (COSArray) descFontDict.getDictionaryObject(COSName.DW2);
+ assertEquals(880, dw2.getInt(0));
+ assertEquals(-1000, dw2.getInt(1));
+
+ document.save(pdf);
+ document.close();
+
+ // Check text extraction
+ String extracted = getUnicodeText(pdf);
+ assertEquals(expectedExtractedtext, extracted.trim());
+ }
+
private void validateCIDFontType2(boolean useSubset) throws Exception
{
PDDocument document = new PDDocument();