Author: lehmi
Date: Sat May 24 17:34:25 2014
New Revision: 1597330

URL: http://svn.apache.org/r1597330
Log:
PDFBOX-1689: added mapping for windows, null-checks, bugfix for the mapping and 
a bugfix for the psname encoding

Modified:
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/FontManager.java
    
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/autodetect/UnixFontDirFinder.java
    
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/autodetect/WindowsFontDirFinder.java

Modified: 
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java?rev=1597330&r1=1597329&r2=1597330&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java 
(original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/NamingTable.java 
Sat May 24 17:34:25 2014
@@ -66,7 +66,7 @@ public class NamingTable extends TTFTabl
             int platform = nr.getPlatformId();
             int encoding = nr.getPlatformEncodingId();
             String charset = "ISO-8859-1";
-            if( platform == 3 && encoding == 1 )
+            if( platform == 3 && (encoding == 1 || encoding == 0) )
             {
                 charset = "UTF-16";
             }
@@ -88,18 +88,21 @@ public class NamingTable extends TTFTabl
             }
             String string = data.readString( nr.getStringLength(), charset );
             nr.setString( string );
-            int nameID = nr.getNameId();
-            if (nameID == NameRecord.NAME_FONT_FAMILY_NAME && fontFamily == 
null )
+            if( platform == 3 && (encoding == 1 || encoding == 0) )
             {
-                fontFamily = string;
-            }
-            if (NameRecord.NAME_FONT_SUB_FAMILY_NAME == nameID && 
fontSubFamily == null)
-            {
-                fontSubFamily = string;
-            }
-            if ( nameID == NameRecord.NAME_POSTSCRIPT_NAME && psName == null )
-            {
-                psName = string;
+                int nameID = nr.getNameId();
+                if (nameID == NameRecord.NAME_FONT_FAMILY_NAME && fontFamily 
== null )
+                {
+                    fontFamily = string;
+                }
+                if (NameRecord.NAME_FONT_SUB_FAMILY_NAME == nameID && 
fontSubFamily == null)
+                {
+                    fontSubFamily = string;
+                }
+                if ( nameID == NameRecord.NAME_POSTSCRIPT_NAME && psName == 
null )
+                {
+                    psName = string;
+                }
             }
         }
     }

Modified: 
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/FontManager.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/FontManager.java?rev=1597330&r1=1597329&r2=1597330&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/FontManager.java 
(original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/FontManager.java 
Sat May 24 17:34:25 2014
@@ -107,8 +107,11 @@ public class FontManager
         if (ttfFont != null)
         {
             NamingTable namingTable = ttfFont.getNaming();
-            String normalizedName = normalizeFontname(namingTable.getPSName());
-            ttfFontfiles.put(normalizedName, ttfFilename);
+            if (namingTable != null && namingTable.getPSName() != null)
+            {
+                String normalizedName = 
normalizeFontname(namingTable.getPSName());
+                ttfFontfiles.put(normalizedName, ttfFilename);
+            }
         }
     }
 
@@ -216,6 +219,7 @@ public class FontManager
     private static void createFontmapping()
     {
         addFontFamilyMapping("ArialNarrow", "Arial", fontMappingTTF);
+        addFontFamilyMapping("CourierNew", "Courier", fontMappingTTF);
     }
 
     /**
@@ -246,9 +250,10 @@ public class FontManager
             loadFonts();
         }
         String fontfile = null;
-        if (ttfFontfiles.containsKey(fontname))
+        String normalizedFontname = normalizeFontname(fontname);
+        if (ttfFontfiles.containsKey(normalizedFontname))
         {
-            fontfile = ttfFontfiles.get(fontname);
+            fontfile = ttfFontfiles.get(normalizedFontname);
         }
         if (fontfile == null)
         {

Modified: 
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/autodetect/UnixFontDirFinder.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/autodetect/UnixFontDirFinder.java?rev=1597330&r1=1597329&r2=1597330&view=diff
==============================================================================
--- 
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/autodetect/UnixFontDirFinder.java
 (original)
+++ 
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/autodetect/UnixFontDirFinder.java
 Sat May 24 17:34:25 2014
@@ -53,9 +53,9 @@ public class UnixFontDirFinder extends N
         map.put("TimesNewRoman,Bold","LiberationSerif-Bold");
         map.put("TimesNewRoman,Italic","LiberationSerif-Italic");
         map.put("TimesNewRoman","LiberationSerif");
-        map.put("ArialNarrow,BoldItalic","LiberationSans-BoldItalic");
-        map.put("ArialNarrow,Italic","LiberationSans-Italic");
-        map.put("ArialNarrow,Bold","LiberationSans-Bold");
+        map.put("Arial,BoldItalic","LiberationSans-BoldItalic");
+        map.put("Arial,Italic","LiberationSans-Italic");
+        map.put("Arial,Bold","LiberationSans-Bold");
         map.put("Arial","LiberationSans");
         map.put("Symbol", "OpenSymbol");
         map.put("ZapfDingbats", "Dingbats");

Modified: 
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/autodetect/WindowsFontDirFinder.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/autodetect/WindowsFontDirFinder.java?rev=1597330&r1=1597329&r2=1597330&view=diff
==============================================================================
--- 
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/autodetect/WindowsFontDirFinder.java
 (original)
+++ 
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/util/autodetect/WindowsFontDirFinder.java
 Sat May 24 17:34:25 2014
@@ -21,6 +21,8 @@ import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -134,8 +136,26 @@ public class WindowsFontDirFinder implem
      */
     public Map<String, String> getCommonTTFMapping()
     {
-        // TODO Auto-generated method stub
-        return null;
+        HashMap<String,String> map = new HashMap<String,String>();
+        map.put("Arial", "arialmt");
+        map.put("Arial,Bold", "arialmtbold");
+        map.put("Arial,Italic", "arialmtitalic");
+        map.put("Arial,BoldItalic", "arialmtbolditalic");
+
+        map.put("TimesNewRoman", "timesnewromanpsmt");
+        map.put("TimesNewRoman,Bold", "timesnewromanpsmtbold");
+        map.put("TimesNewRoman,BoldItalic", "timesnewromanpsmtbolditalic");
+        map.put("TimesNewRoman,Italic", "timesnewromanpsmtitalic");
+        
+        map.put("Courier", "couriernewpsmt");
+        map.put("Courier,Bold", "couriernewpsmtbold");
+        map.put("Courier,Italic", "couriernewpsmtitalic");
+        map.put("Courier,BoldItalic", "couriernewpsmtbolditalic");
+
+        map.put("Symbol", "symbolmt");
+        map.put("ZapfDingbats", "Wingdings");
+
+        return Collections.unmodifiableMap(map);
     }
 
 }


Reply via email to