Author: lehmi
Date: Sat May 24 09:16:38 2014
New Revision: 1597271

URL: http://svn.apache.org/r1597271
Log:
PDFBOX-2091: use 3,0 cmap as fallback scenario for non symbolic true type fonts

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java
    
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/font/TTFGlyph2D.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java?rev=1597271&r1=1597270&r2=1597271&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java 
Sat May 24 09:16:38 2014
@@ -176,6 +176,28 @@ public abstract class Encoding implement
     }
 
     /**
+     * Determines if the encoding has a mapping for the given name value.
+     * 
+     * @param name the source value for the mapping
+     * @return the mapped value
+     */
+    public boolean hasCodeForName(String name)
+    {
+        return nameToCode.containsKey(name);
+    }
+
+    /**
+     * Determines if the encoding has a mapping for the given code value.
+     * 
+     * @param code the source value for the mapping
+     * @return the mapped value
+     */
+    public boolean hasNameForCode(int code)
+    {
+        return codeToName.containsKey(code);
+    }
+    
+    /**
      * This will get the character code for the name.
      * 
      * @param name The name of the character.

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/font/TTFGlyph2D.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/font/TTFGlyph2D.java?rev=1597271&r1=1597270&r2=1597271&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/font/TTFGlyph2D.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/font/TTFGlyph2D.java
 Sat May 24 09:16:38 2014
@@ -257,11 +257,18 @@ public class TTFGlyph2D implements Glyph
                         }
                         result = cmapWinUnicode.getGlyphId(result);
                     }
-                    else if (cmapMacintoshSymbol != null)
+                    else if (cmapMacintoshSymbol != null && 
MacOSRomanEncoding.INSTANCE.hasCodeForName(charactername))
                     {
                         result = 
MacOSRomanEncoding.INSTANCE.getCode(charactername);
                         result = cmapMacintoshSymbol.getGlyphId(result);
                     }
+                    else if (cmapWinSymbol != null)
+                    {
+                        // fallback scenario if the glyph can't be found yet
+                        // maybe the 3,0 cmap provides a suitable mapping
+                        // see PDFBOX-2091
+                        result = cmapWinSymbol.getGlyphId(code);
+                    }
                 }
             }
             catch (IOException exception)


Reply via email to