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