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