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/07/19 17:53:34 UTC

svn commit: r1836286 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontMapperImpl.java

Author: tilman
Date: Thu Jul 19 17:53:34 2018
New Revision: 1836286

URL: http://svn.apache.org/viewvc?rev=1836286&view=rev
Log:
PDFBOX-4268: ignore barcode font if we aren't searching for one

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

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontMapperImpl.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontMapperImpl.java?rev=1836286&r1=1836285&r2=1836286&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontMapperImpl.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontMapperImpl.java Thu Jul 19 17:53:34 2018
@@ -560,6 +560,14 @@ final class FontMapperImpl implements Fo
                 PDPanoseClassification panose = fontDescriptor.getPanose().getPanose();
                 if (panose.getFamilyKind() == info.getPanose().getFamilyKind())
                 {
+                    if (panose.getFamilyKind() == 0 && 
+                        (info.getPostScriptName().toLowerCase().contains("barcode") ||
+                         info.getPostScriptName().startsWith("Code")) && 
+                        !probablyBarcodeFont(fontDescriptor))
+                    {
+                        // PDFBOX-4268: ignore barcode font if we aren't searching for one.
+                        continue;
+                    }
                     // serifs
                     if (panose.getSerifStyle() == info.getPanose().getSerifStyle())
                     {
@@ -624,6 +632,22 @@ final class FontMapperImpl implements Fo
         return queue;
     }
 
+    private boolean probablyBarcodeFont(PDFontDescriptor fontDescriptor)
+    {
+        String ff = fontDescriptor.getFontFamily();
+        if (ff == null)
+        {
+            ff = "";
+        }
+        String fn = fontDescriptor.getFontName();
+        if (fn == null)
+        {
+            fn = "";
+        }
+        return ff.startsWith("Code") || ff.toLowerCase().contains("barcode") ||
+               fn.startsWith("Code") || fn.toLowerCase().contains("barcode");
+    }
+
     /**
      * Returns true if the character set described by CIDSystemInfo is present in the given font.
      * Only applies to Adobe-GB1, Adobe-CNS1, Adobe-Japan1, Adobe-Korea1, as per the PDF spec.