You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2019/05/21 16:59:25 UTC

svn commit: r1859664 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java

Author: lehmi
Date: Tue May 21 16:59:25 2019
New Revision: 1859664

URL: http://svn.apache.org/viewvc?rev=1859664&view=rev
Log:
PDFBOX-4550: fix/improve the replacement of a buggy identity cmap

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java?rev=1859664&r1=1859663&r2=1859664&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java Tue May 21 16:59:25 2019
@@ -148,8 +148,11 @@ public abstract class PDFont implements
             if (cmap != null && !cmap.hasUnicodeMappings())
             {
                 LOG.warn("Invalid ToUnicode CMap in font " + getName());
-                if (COSName.IDENTITY_H.equals(dict.getDictionaryObject(COSName.ENCODING)) &&
-                    COSName.IDENTITY_H.getName().equals(cmap.getOrdering()))
+                String cmapName = cmap.getName() != null ? cmap.getName() : cmap.getOrdering();
+                COSBase encoding = dict.getDictionaryObject(COSName.ENCODING);
+                if ( cmapName != null && cmapName.contains("Identity") //
+                        && (COSName.IDENTITY_H.equals(encoding) //
+                                || COSName.IDENTITY_V.equals(encoding)))
                 {
                     // assume that if encoding is identity, then the reverse is also true
                     cmap = CMapManager.getPredefinedCMap(COSName.IDENTITY_H.getName());