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)