You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2014/08/30 04:27:00 UTC

svn commit: r1621411 [7/7] - in /pdfbox/trunk: ./ examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ fontbox/src/main/java/org/apache/fontbox/afm/ fontbox/src/main/java/org/apache/fontbox/cff/ fontbox/src/main/java/org/apache/fontbox/cff/charse...

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDType0FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDType0FontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDType0FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDType0FontValidator.java Sat Aug 30 02:26:57 2014
@@ -22,7 +22,7 @@
 package org.apache.pdfbox.preflight.font;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDCIDFontType0;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.font.container.CIDType0Container;
 import org.apache.pdfbox.preflight.font.descriptor.CIDType0DescriptorHelper;
@@ -30,7 +30,7 @@ import org.apache.pdfbox.preflight.font.
 public class CIDType0FontValidator extends DescendantFontValidator<CIDType0Container>
 {
 
-    public CIDType0FontValidator(PreflightContext context, PDFont font)
+    public CIDType0FontValidator(PreflightContext context, PDCIDFontType0 font)
     {
         super(context, font, new CIDType0Container(font));
     }

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDType2FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDType2FontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDType2FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDType2FontValidator.java Sat Aug 30 02:26:57 2014
@@ -22,7 +22,7 @@
 package org.apache.pdfbox.preflight.font;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDCIDFontType2;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.font.container.CIDType2Container;
 import org.apache.pdfbox.preflight.font.descriptor.CIDType2DescriptorHelper;
@@ -31,7 +31,7 @@ import org.apache.pdfbox.preflight.font.
 public class CIDType2FontValidator extends DescendantFontValidator<CIDType2Container>
 {
 
-    public CIDType2FontValidator(PreflightContext context, PDFont font)
+    public CIDType2FontValidator(PreflightContext context, PDCIDFontType2 font)
     {
         super(context, font, new CIDType2Container(font));
     }

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java Sat Aug 30 02:26:57 2014
@@ -33,7 +33,7 @@ import org.apache.pdfbox.cos.COSDictiona
 import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSStream;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDCIDFont;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.font.container.FontContainer;
@@ -42,20 +42,17 @@ import org.apache.pdfbox.preflight.utils
 
 public abstract class DescendantFontValidator<T extends FontContainer> extends SimpleFontValidator<T>
 {
-
     protected COSDocument cosDocument = null;
 
-    public DescendantFontValidator(PreflightContext context, PDFont font, T fContainer)
+    public DescendantFontValidator(PreflightContext context, PDCIDFont font, T fContainer)
     {
-        super(context, font, fContainer);
+        super(context, font.getCOSObject(), fContainer);
         cosDocument = context.getDocument().getDocument();
     }
 
     @Override
     protected void checkMandatoryField()
     {
-        COSDictionary fontDictionary = (COSDictionary) font.getCOSObject();
-
         boolean arePresent = fontDictionary.containsKey(COSName.TYPE);
         arePresent &= fontDictionary.containsKey(COSName.SUBTYPE);
         arePresent &= fontDictionary.containsKey(COSName.BASE_FONT);

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/FontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/FontValidator.java Sat Aug 30 02:26:57 2014
@@ -21,7 +21,7 @@
 
 package org.apache.pdfbox.preflight.font;
 
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.exception.ValidationException;
 import org.apache.pdfbox.preflight.font.container.FontContainer;
@@ -29,21 +29,18 @@ import org.apache.pdfbox.preflight.font.
 
 public abstract class FontValidator<T extends FontContainer>
 {
-
     protected T fontContainer;
     protected PreflightContext context;
-    protected PDFont font;
     protected FontDescriptorHelper<T> descriptorHelper;
 
     private static final String SUB_SET_PATTERN = "^[A-Z]{6}\\+.*";
 
-    public FontValidator(PreflightContext context, PDFont font, T fContainer)
+    public FontValidator(PreflightContext context, COSDictionary dict, T fContainer)
     {
         super();
         this.context = context;
-        this.font = font;
         this.fontContainer = fContainer;
-        this.context.addFontContainer(font.getCOSObject(), fContainer);
+        this.context.addFontContainer(dict, fContainer);
     }
 
     public static boolean isSubSet(String fontName)

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/SimpleFontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/SimpleFontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/SimpleFontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/SimpleFontValidator.java Sat Aug 30 02:26:57 2014
@@ -25,7 +25,7 @@ import static org.apache.pdfbox.prefligh
 
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDSimpleFont;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.exception.ValidationException;
@@ -33,10 +33,19 @@ import org.apache.pdfbox.preflight.font.
 
 public abstract class SimpleFontValidator<T extends FontContainer> extends FontValidator<T>
 {
+    protected PDSimpleFont font;
+    protected COSDictionary fontDictionary;
 
-    public SimpleFontValidator(PreflightContext context, PDFont font, T fContainer)
+    public SimpleFontValidator(PreflightContext context, PDSimpleFont font, T fContainer)
     {
-        super(context, font, fContainer);
+        super(context, font.getCOSObject(), fContainer);
+        this.fontDictionary = font.getCOSObject();
+    }
+
+    public SimpleFontValidator(PreflightContext context, COSDictionary fontDictionary, T fContainer)
+    {
+        super(context, fontDictionary, fContainer);
+        this.fontDictionary = fontDictionary;
     }
 
     /**
@@ -60,7 +69,6 @@ public abstract class SimpleFontValidato
 
     protected void checkMandatoryField()
     {
-        COSDictionary fontDictionary = (COSDictionary) font.getCOSObject();
         boolean areFieldsPResent = fontDictionary.containsKey(COSName.TYPE);
         areFieldsPResent &= fontDictionary.containsKey(COSName.SUBTYPE);
         areFieldsPResent &= fontDictionary.containsKey(COSName.BASE_FONT);

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/TrueTypeFontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/TrueTypeFontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/TrueTypeFontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/TrueTypeFontValidator.java Sat Aug 30 02:26:57 2014
@@ -28,8 +28,8 @@ import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.encoding.Encoding;
 import org.apache.pdfbox.encoding.MacRomanEncoding;
 import org.apache.pdfbox.encoding.WinAnsiEncoding;
-import org.apache.pdfbox.pdmodel.font.PDFont;
 import org.apache.pdfbox.pdmodel.font.PDFontDescriptor;
+import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.font.container.TrueTypeContainer;
@@ -37,8 +37,7 @@ import org.apache.pdfbox.preflight.font.
 
 public class TrueTypeFontValidator extends SimpleFontValidator<TrueTypeContainer>
 {
-
-    public TrueTypeFontValidator(PreflightContext context, PDFont font)
+    public TrueTypeFontValidator(PreflightContext context, PDTrueTypeFont font)
     {
         super(context, font, new TrueTypeContainer(font));
     }
@@ -58,7 +57,7 @@ public class TrueTypeFontValidator exten
              */
             if (fd.isNonSymbolic())
             {
-                Encoding encodingValue = this.font.getFontEncoding();
+                Encoding encodingValue = this.font.getEncoding();
                 if (encodingValue == null
                         || !(encodingValue instanceof MacRomanEncoding || encodingValue instanceof WinAnsiEncoding))
                 {

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java Sat Aug 30 02:26:57 2014
@@ -24,6 +24,7 @@ package org.apache.pdfbox.preflight.font
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CIDKEYED_CMAP_INVALID_OR_MISSING;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CIDKEYED_INVALID;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CIDKEYED_SYSINFO;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CID_DAMAGED;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CID_CMAP_DAMAGED;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_DICTIONARY_INVALID;
 import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_DEFAULT_CMAP_WMODE;
@@ -46,8 +47,8 @@ import org.apache.pdfbox.cos.COSDictiona
 import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSStream;
-import org.apache.pdfbox.pdmodel.font.PDCIDFontType0Font;
-import org.apache.pdfbox.pdmodel.font.PDCIDFontType2Font;
+import org.apache.pdfbox.pdmodel.font.PDCIDFontType0;
+import org.apache.pdfbox.pdmodel.font.PDCIDFontType2;
 import org.apache.pdfbox.pdmodel.font.PDFont;
 import org.apache.pdfbox.pdmodel.font.PDType0Font;
 import org.apache.pdfbox.preflight.PreflightContext;
@@ -59,12 +60,12 @@ import org.apache.pdfbox.preflight.utils
 
 public class Type0FontValidator extends FontValidator<Type0Container>
 {
-
+    protected PDFont font;
     protected COSDocument cosDocument = null;
 
     public Type0FontValidator(PreflightContext context, PDFont font)
     {
-        super(context, font, new Type0Container(font));
+        super(context, font.getCOSObject(), new Type0Container(font));
         cosDocument = this.context.getDocument().getDocument();
     }
 
@@ -157,22 +158,34 @@ public class Type0FontValidator extends 
 
     /**
      * Create the validation object for CIDType0 Font
-     * 
-     * @return
      */
     protected FontValidator<? extends FontContainer> createCIDType0FontValidator(COSDictionary fDict)
     {
-        return new CIDType0FontValidator(context, new PDCIDFontType0Font(fDict, (PDType0Font)font));
+        try
+        {
+            return new CIDType0FontValidator(context, new PDCIDFontType0(fDict, (PDType0Font)font));
+        }
+        catch (IOException e)
+        {
+            this.fontContainer.push(new ValidationError(ERROR_FONTS_CID_DAMAGED, "The CIDType0 font is damaged"));
+            return null;
+        }
     }
 
     /**
      * Create the validation object for CIDType2 Font
-     * 
-     * @return
      */
     protected FontValidator<? extends FontContainer> createCIDType2FontValidator(COSDictionary fDict)
     {
-        return new CIDType2FontValidator(context, new PDCIDFontType2Font(fDict, (PDType0Font)font));
+        try
+        {
+            return new CIDType2FontValidator(context, new PDCIDFontType2(fDict, (PDType0Font)font));
+        }
+        catch (IOException e)
+        {
+            this.fontContainer.push(new ValidationError(ERROR_FONTS_CID_DAMAGED, "The CIDType2 font is damaged"));
+            return null;
+        }
     }
 
     /**
@@ -180,8 +193,6 @@ public class Type0FontValidator extends 
      * 
      * The CMap entry must be a dictionary in a PDF/A. This entry can be a String only if the String value is Identity-H
      * or Identity-V
-     * 
-     * @param encoding
      */
     protected void checkEncoding()
     {

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java Sat Aug 30 02:26:57 2014
@@ -32,7 +32,7 @@ import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDSimpleFont;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.font.container.Type1Container;
@@ -42,7 +42,7 @@ import org.apache.pdfbox.preflight.utils
 public class Type1FontValidator extends SimpleFontValidator<Type1Container>
 {
 
-    public Type1FontValidator(PreflightContext context, PDFont font)
+    public Type1FontValidator(PreflightContext context, PDSimpleFont font)
     {
         super(context, font, new Type1Container(font));
     }

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java Sat Aug 30 02:26:57 2014
@@ -28,6 +28,7 @@ import static org.apache.pdfbox.prefligh
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_TYPE3_DAMAGED;
 
 import java.io.IOException;
+import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 
@@ -41,9 +42,11 @@ import org.apache.pdfbox.encoding.Dictio
 import org.apache.pdfbox.encoding.Encoding;
 import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.pdfbox.pdmodel.PDResources;
+import org.apache.pdfbox.pdmodel.common.COSArrayList;
 import org.apache.pdfbox.pdmodel.common.PDRectangle;
 import org.apache.pdfbox.pdmodel.font.PDFont;
 import org.apache.pdfbox.pdmodel.font.PDFontFactory;
+import org.apache.pdfbox.pdmodel.font.PDType3Font;
 import org.apache.pdfbox.preflight.PreflightConstants;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.PreflightPath;
@@ -59,15 +62,17 @@ import org.apache.pdfbox.preflight.utils
 
 public class Type3FontValidator extends FontValidator<Type3Container>
 {
+    protected PDFont font;
     protected COSDictionary fontDictionary;
     protected COSDocument cosDocument;
     protected Encoding encoding;
 
-    public Type3FontValidator(PreflightContext context, PDFont font)
+    public Type3FontValidator(PreflightContext context, PDType3Font font)
     {
-        super(context, font, new Type3Container(font));
+        super(context, font.getCOSObject(), new Type3Container(font));
         this.cosDocument = context.getDocument().getDocument();
-        this.fontDictionary = (COSDictionary) font.getCOSObject();
+        this.fontDictionary = font.getCOSObject();
+        this.font = font;
     }
 
     public void validate() throws ValidationException
@@ -224,22 +229,13 @@ public class Type3FontValidator extends 
     {
         // Encoding is a Name, check if it is an Existing Encoding
         String enc = COSUtils.getAsString(fontEncoding, cosDocument);
-        try
-        {
-            this.encoding = Encoding.getInstance(COSName.getPDFName(enc));
-        }
-        catch (IOException e)
-        {
-            // the encoding doesn't exist
-            this.fontContainer.push(new ValidationError(ERROR_FONTS_ENCODING));
-            return;
-        }
+        this.encoding = Encoding.getInstance(COSName.getPDFName(enc));
     }
 
     /**
      * This method is called by the CheckEncoding method if the Encoding entry is an instance of COSDictionary. In this
      * case, a new instance of {@link DictionaryEncoding} is created. If an IOException is thrown by the
-     * DictionaryEncoding constructor the {@link PreflightConstants.ERROR_FONTS_ENCODING} is pushed in the
+     * DictionaryEncoding constructor the ERROR_FONTS_ENCODING is pushed in the
      * FontContainer.
      * 
      * Differences entry validation is implicitly done by the DictionaryEncoding constructor.
@@ -249,16 +245,7 @@ public class Type3FontValidator extends 
     private void checkEncodingAsDictionary(COSBase fontEncoding)
     {
         COSDictionary encodingDictionary = COSUtils.getAsDictionary(fontEncoding, cosDocument);
-        try
-        {
-            this.encoding = new DictionaryEncoding(encodingDictionary);
-        }
-        catch (IOException e)
-        {
-            // the encoding doesn't exist
-            this.fontContainer.push(new ValidationError(ERROR_FONTS_ENCODING));
-            return;
-        }
+        this.encoding = new DictionaryEncoding(encodingDictionary, false, null);
     }
 
     /**
@@ -269,13 +256,10 @@ public class Type3FontValidator extends 
      * the CharProcs doesn't know the Character, it is mapped with the .notdef one.
      * 
      * For each character, the Glyph width must be the same as the Width value declared in the Widths array.
-     * 
-     * @param errors
-     * @return
      */
     private void checkCharProcsAndMetrics() throws ValidationException
     {
-        List<Integer> widths = font.getWidths();
+        List<Integer> widths = getWidths(font);
         if (widths == null || widths.isEmpty())
         {
             this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
@@ -291,8 +275,8 @@ public class Type3FontValidator extends 
             return;
         }
 
-        int fc = this.font.getFirstChar();
-        int lc = this.font.getLastChar();
+        int fc = font.getCOSObject().getInt(COSName.FIRST_CHAR, -1);
+        int lc = font.getCOSObject().getInt(COSName.LAST_CHAR, -1);
 
         /*
          * wArr length = (lc - fc) + 1 and it is an array of int. 
@@ -353,6 +337,21 @@ public class Type3FontValidator extends 
         }
     }
 
+    public List<Integer> getWidths(PDFont font)
+    {
+        List<Integer> widths;
+        COSArray array = (COSArray) font.getCOSObject().getDictionaryObject(COSName.WIDTHS);
+        if (array != null)
+        {
+            widths = COSArrayList.convertIntegerCOSArrayToList(array);
+        }
+        else
+        {
+            widths = Collections.emptyList();
+        }
+        return widths;
+    }
+
     private PDResources getPDResources()
     {
         COSBase res = this.fontDictionary.getItem(COSName.RESOURCES);
@@ -385,15 +384,7 @@ public class Type3FontValidator extends 
 
     private String getCharNameFromEncoding(int cid) throws ValidationException
     {
-        try
-        {
-            return this.encoding.getName(cid);
-        }
-        catch (IOException e)
-        {
-            // shouldn't occur
-            throw new ValidationException("Unable to check Widths consistency", e);
-        }
+        return this.encoding.getName(cid);
     }
 
     /**

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/CIDType0Container.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/CIDType0Container.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/CIDType0Container.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/CIDType0Container.java Sat Aug 30 02:26:57 2014
@@ -23,84 +23,35 @@ package org.apache.pdfbox.preflight.font
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 
+import org.apache.fontbox.cff.CFFCIDFont;
 import org.apache.fontbox.cff.CFFFont;
-import org.apache.fontbox.cff.CFFFont.Mapping;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDCIDFontType0;
+import org.apache.pdfbox.preflight.font.util.FontLike;
 
 public class CIDType0Container extends FontContainer
 {
     protected List<CFFFont> lCFonts = new ArrayList<CFFFont>();
 
-    public CIDType0Container(PDFont font)
+    public CIDType0Container(PDCIDFontType0 font)
     {
-        super(font);
+        super(new FontLike(font));
     }
 
     @Override
     protected float getFontProgramWidth(int cid)
     {
-        // build the font container and keep it in the Handler.
-        boolean cidFound = false;
-        for (CFFFont font : this.lCFonts)
+        CFFCIDFont cffFont = (CFFCIDFont)lCFonts.get(0);
+        try
         {
-            Collection<Mapping> cMapping = font.getMappings();
-            for (Mapping mapping : cMapping)
-            {
-                /*
-                 * REMARK : May be this code must be changed like the Type1FontContainer to Map the SID with the
-                 * character name? Not enough PDF with this kind of Font to test the current implementation
-                 */
-                if (mapping.getSID() == cid)
-                {
-                    cidFound = true;
-                    break;
-                }
-            }
-            if (cidFound)
-            {
-                break;
-            }
+            // fixme: this does not take into account the PDF's CMap or the FontDescriptor's default width
+            return cffFont.getType2CharString(cid).getWidth();
         }
-
-        float widthInFontProgram = 0;
-        if (cidFound || cid == 0)
-        {
-
-            float defaultGlyphWidth = 0;
-            if (this.font.getFontDescriptor() != null)
-            {
-                defaultGlyphWidth = this.font.getFontDescriptor().getMissingWidth();
-            }
-
-            try
-            {
-                // Search the CID in all CFFFont in the FontProgram
-                for (CFFFont cff : this.lCFonts)
-                {
-                    widthInFontProgram = cff.getWidth(cid);
-                    if (widthInFontProgram != defaultGlyphWidth)
-                    {
-                        break;
-                    }
-                }
-            }
-            catch (IOException e)
-            {
-                widthInFontProgram = -1;
-            }
-        }
-        else
+        catch (IOException e)
         {
-            /*
-             * Cid 0 is commonly used as the NotDef Glyph. this glyph can be used as Space. IN PDF/A-1 the Notdef glyph
-             * can be used as space. Not in PDF/A-2
-             */
-            widthInFontProgram = -1;
+            return -1;
         }
-        return widthInFontProgram;
     }
 
     public void setlCFonts(List<CFFFont> lCFonts)

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/CIDType2Container.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/CIDType2Container.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/CIDType2Container.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/CIDType2Container.java Sat Aug 30 02:26:57 2014
@@ -22,46 +22,56 @@
 package org.apache.pdfbox.preflight.font.container;
 
 import org.apache.fontbox.ttf.TrueTypeFont;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDCIDFontType2;
+import org.apache.pdfbox.preflight.PreflightConstants;
 import org.apache.pdfbox.preflight.font.util.CIDToGIDMap;
+import org.apache.pdfbox.preflight.font.util.FontLike;
+import org.apache.pdfbox.preflight.font.util.GlyphException;
+
+import java.io.IOException;
 
 public class CIDType2Container extends FontContainer
 {
-
     protected CIDToGIDMap cidToGid = null;
-
     protected TrueTypeFont ttf = null;
 
-    public CIDType2Container(PDFont font)
+    public CIDType2Container(PDCIDFontType2 font)
     {
-        super(font);
+        super(new FontLike(font));
     }
 
     @Override
-    protected float getFontProgramWidth(int cid)
+    protected float getFontProgramWidth(int cid) throws GlyphException
     {
         float foundWidth = -1;
         final int glyphIndex = getGlyphIndex(cid);
 
-        // if glyph exists we can check the width
-        if (this.ttf != null && this.ttf.getGlyph().getGlyphs().length > glyphIndex)
+        try
         {
+            // if glyph exists we can check the width
+            if (this.ttf != null && this.ttf.getGlyph().getGlyphs().length > glyphIndex)
+            {
             /*
              * In a Mono space font program, the length of the AdvanceWidth array must be one. According to the TrueType
              * font specification, the Last Value of the AdvanceWidth array is apply to the subsequent glyphs. So if the
              * GlyphId is greater than the length of the array the last entry is used.
              */
-            int numberOfLongHorMetrics = ttf.getHorizontalHeader().getNumberOfHMetrics();
-            int unitsPerEm = ttf.getHeader().getUnitsPerEm();
-            int[] advanceGlyphWidths = ttf.getHorizontalMetrics().getAdvanceWidth();
-            float glypdWidth = advanceGlyphWidths[numberOfLongHorMetrics - 1];
-            if (glyphIndex < numberOfLongHorMetrics)
-            {
-                glypdWidth = advanceGlyphWidths[glyphIndex];
+                int numberOfLongHorMetrics = ttf.getHorizontalHeader().getNumberOfHMetrics();
+                int unitsPerEm = ttf.getHeader().getUnitsPerEm();
+                int[] advanceGlyphWidths = ttf.getHorizontalMetrics().getAdvanceWidth();
+                float glypdWidth = advanceGlyphWidths[numberOfLongHorMetrics - 1];
+                if (glyphIndex < numberOfLongHorMetrics)
+                {
+                    glypdWidth = advanceGlyphWidths[glyphIndex];
+                }
+                foundWidth = ((glypdWidth * 1000) / unitsPerEm);
             }
-            foundWidth = ((glypdWidth * 1000) / unitsPerEm);
+            return foundWidth;
+        }
+        catch (IOException e)
+        {
+            throw new GlyphException(PreflightConstants.ERROR_FONTS_GLYPH, cid, "Unexpected error during the width validtion for the character CID(" + cid+") : " + e.getMessage());
         }
-        return foundWidth;
     }
 
     /**

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/FontContainer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/FontContainer.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/FontContainer.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/FontContainer.java Sat Aug 30 02:26:57 2014
@@ -21,6 +21,7 @@
 
 package org.apache.pdfbox.preflight.font.container;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -29,6 +30,7 @@ import java.util.Map;
 import org.apache.pdfbox.pdmodel.font.PDFont;
 import org.apache.pdfbox.preflight.PreflightConstants;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
+import org.apache.pdfbox.preflight.font.util.FontLike;
 import org.apache.pdfbox.preflight.font.util.GlyphDetail;
 import org.apache.pdfbox.preflight.font.util.GlyphException;
 
@@ -51,11 +53,15 @@ public abstract class FontContainer
 
     protected boolean errorsAleadyMerged = false;
 
-    protected PDFont font;
+    protected FontLike font;
 
     public FontContainer(PDFont font)
     {
-        super();
+        this.font = new FontLike(font);
+    }
+
+    public FontContainer(FontLike font)
+    {
         this.font = font;
     }
 
@@ -101,19 +107,25 @@ public abstract class FontContainer
 
     /**
      * 
-     * @param cid
+     * @param cid todo: not a CID, this is actually a char code!
      * @throws GlyphException
      */
-    public void checkGlyphWith(int cid) throws GlyphException
+    public void checkGlyphWidth(int cid) throws GlyphException
     {
         if (isAlreadyComputedCid(cid))
         {
             return;
         }
-
-        final float expectedWidth = this.font.getFontWidth(cid);
-        final float foundWidth = getFontProgramWidth(cid);
-        checkWidthsConsistency(cid, expectedWidth, foundWidth);
+        try
+        {
+            final float expectedWidth = this.font.getWidth(cid);
+            final float foundWidth = getFontProgramWidth(cid);
+            checkWidthsConsistency(cid, expectedWidth, foundWidth);
+        }
+        catch (IOException e)
+        {
+            throw new GlyphException(PreflightConstants.ERROR_FONTS_GLYPH, cid, "Unexpected error during the width validtion for the character CID(" + cid+") : " + e.getMessage());
+        }
     }
 
     /**

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/TrueTypeContainer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/TrueTypeContainer.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/TrueTypeContainer.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/TrueTypeContainer.java Sat Aug 30 02:26:57 2014
@@ -25,22 +25,25 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.fontbox.ttf.CMAPEncodingEntry;
-import org.apache.fontbox.ttf.CMAPTable;
+import org.apache.fontbox.ttf.CmapSubtable;
+import org.apache.fontbox.ttf.CmapTable;
 import org.apache.fontbox.ttf.TrueTypeFont;
 import org.apache.pdfbox.encoding.Encoding;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.encoding.GlyphList;
+import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont;
+import org.apache.pdfbox.preflight.PreflightConstants;
+import org.apache.pdfbox.preflight.font.util.GlyphException;
 
 public class TrueTypeContainer extends FontContainer
 {
-
     protected TrueTypeFont ttFont;
+    private CmapSubtable[] cmapEncodingEntries = null;
+    private PDTrueTypeFont trueTypeFont;
 
-    private CMAPEncodingEntry[] cmapEncodingEntries = null;
-
-    public TrueTypeContainer(PDFont font)
+    public TrueTypeContainer(PDTrueTypeFont font)
     {
         super(font);
+        this.trueTypeFont = font;
     }
 
     public void setTrueTypeFont(TrueTypeFont ttFont)
@@ -65,22 +68,29 @@ public class TrueTypeContainer extends F
         if (this.cmapEncodingEntries != null)
             return;
 
-        CMAPTable cmap = this.ttFont.getCMAP();
-        if (this.font.getFontDescriptor().isSymbolic())
+        try
         {
-            this.cmapEncodingEntries = cmap.getCmaps();
+            CmapTable cmap = this.ttFont.getCmap();
+            if (this.trueTypeFont.getFontDescriptor().isSymbolic())
+            {
+                this.cmapEncodingEntries = cmap.getCmaps();
+            }
+            else
+            {
+                this.cmapEncodingEntries = orderCMapEntries(cmap);
+            }
         }
-        else
+        catch (IOException e)
         {
-            this.cmapEncodingEntries = orderCMapEntries(cmap);
+            return;
         }
     }
 
-    private CMAPEncodingEntry[] orderCMapEntries(CMAPTable cmap)
+    private CmapSubtable[] orderCMapEntries(CmapTable cmap)
     {
-        List<CMAPEncodingEntry> res = new ArrayList<CMAPEncodingEntry>();
+        List<CmapSubtable> res = new ArrayList<CmapSubtable>();
         boolean firstIs31 = false;
-        for (CMAPEncodingEntry cmapEntry : cmap.getCmaps())
+        for (CmapSubtable cmapEntry : cmap.getCmaps())
         {
             // WinAnsi
             if ((cmapEntry.getPlatformId() == 3) && (cmapEntry.getPlatformEncodingId() == 1))
@@ -107,26 +117,33 @@ public class TrueTypeContainer extends F
                 res.add(cmapEntry);
             }
         }
-        return res.toArray(new CMAPEncodingEntry[res.size()]);
+        return res.toArray(new CmapSubtable[res.size()]);
     }
 
     @Override
-    protected float getFontProgramWidth(int cid)
+    protected float getFontProgramWidth(int cid) throws GlyphException
     {
-        float result = -1f;
-        if (cmapEncodingEntries != null)
+        try
         {
-            for (CMAPEncodingEntry entry : cmapEncodingEntries)
+            float result = -1f;
+            if (cmapEncodingEntries != null)
             {
-                int glyphID = extractGlyphID(cid, entry);
-                if (glyphID > 0)
+                for (CmapSubtable entry : cmapEncodingEntries)
                 {
-                    result = extractGlyphWidth(glyphID);
-                    break;
+                    int glyphID = extractGlyphID(cid, entry);
+                    if (glyphID > 0)
+                    {
+                        result = extractGlyphWidth(glyphID);
+                        break;
+                    }
                 }
             }
+            return result;
+        }
+        catch (IOException e)
+        {
+            throw new GlyphException(PreflightConstants.ERROR_FONTS_GLYPH, cid, "Unexpected error during the width validtion for the character CID(" + cid+") : " + e.getMessage());
         }
-        return result;
     }
 
     /**
@@ -137,52 +154,45 @@ public class TrueTypeContainer extends F
      * @param cmap
      * @return
      */
-    private int extractGlyphID(int cid, CMAPEncodingEntry cmap)
+    private int extractGlyphID(int cid, CmapSubtable cmap)
     {
         int notFoundGlyphID = 0;
 
         int innerFontCid = cid;
         if (cmap.getPlatformEncodingId() == 1 && cmap.getPlatformId() == 3)
         {
-            try
+            Encoding fontEncoding = this.trueTypeFont.getEncoding();
+            String name = fontEncoding.getName(cid);
+            String character = GlyphList.toUnicode(name);
+            if (character == null)
             {
-                Encoding fontEncoding = this.font.getFontEncoding();
-                String character = fontEncoding.getCharacter(cid);
-                if (character == null)
-                {
-                    return notFoundGlyphID;
-                }
+                return notFoundGlyphID;
+            }
 
-                char[] characterArray = character.toCharArray();
-                if (characterArray.length == 1)
-                {
-                    innerFontCid = (int) characterArray[0];
-                }
-                else
+            char[] characterArray = character.toCharArray();
+            if (characterArray.length == 1)
+            {
+                innerFontCid = (int) characterArray[0];
+            }
+            else
+            {
+                // TODO OD-PDFA-87 A faire?
+                innerFontCid = (int) characterArray[0];
+                for (int i = 1; i < characterArray.length; ++i)
                 {
-                    // TODO OD-PDFA-87 A faire?
-                    innerFontCid = (int) characterArray[0];
-                    for (int i = 1; i < characterArray.length; ++i)
+                    if (cmap.getGlyphId((int) characterArray[i]) == 0)
                     {
-                        if (cmap.getGlyphId((int) characterArray[i]) == 0)
-                        {
-                            return notFoundGlyphID; // TODO what we have to do here ???
-                        }
+                        return notFoundGlyphID; // TODO what we have to do here ???
                     }
                 }
             }
-            catch (IOException ioe)
-            {
-                // should never happen
-                return notFoundGlyphID;
-            }
         }
 
         // search glyph
         return cmap.getGlyphId(innerFontCid);
     }
 
-    private float extractGlyphWidth(int glyphID)
+    private float extractGlyphWidth(int glyphID) throws IOException
     {
         int unitsPerEm = this.ttFont.getHeader().getUnitsPerEm();
         int[] glyphWidths = this.ttFont.getHorizontalMetrics().getAdvanceWidth();

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/Type1Container.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/Type1Container.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/Type1Container.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/Type1Container.java Sat Aug 30 02:26:57 2014
@@ -25,8 +25,8 @@ import java.io.IOException;
 import java.util.List;
 
 import org.apache.fontbox.cff.CFFFont;
-import org.apache.fontbox.cff.CFFFont.Mapping;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.fontbox.cff.CFFType1Font;
+import org.apache.pdfbox.pdmodel.font.PDSimpleFont;
 import org.apache.pdfbox.preflight.PreflightConstants;
 import org.apache.pdfbox.preflight.font.util.GlyphException;
 import org.apache.pdfbox.preflight.font.util.Type1;
@@ -47,14 +47,21 @@ public class Type1Container extends Font
     protected Type1 type1Font;
     protected List<CFFFont> lCFonts;
 
-    public Type1Container(PDFont font)
+    private PDSimpleFont simpleFont;
+
+    public Type1Container(PDSimpleFont font)
     {
         super(font);
+        this.simpleFont = font;
     }
 
     @Override
     protected float getFontProgramWidth(int cid) throws GlyphException
     {
+        // fixme: Type 1 fonts don't use CIDs, so this method makes little sense,
+        //        when making changes I've assumed that "cid" is actually the character code
+        //        from the PDF content stream.
+
         float widthResult = -1;
         try
         {
@@ -67,42 +74,15 @@ public class Type1Container extends Font
             }
             else
             {
-                /*
-                 * Retrieves the SID with the Character Name in the encoding map Need
-                 * more PDF with a Type1C subfont to valid this implementation
-                 */
-                String name = null;
-                if (this.font.getFontEncoding() != null) {
-                    name = this.font.getFontEncoding().getName(cid);
-                }
-
-                int SID = -1;
-                
-                /* For each CFF, try to found the SID that correspond to the CID. 
-                 * Look up by name if the encoding entry is present in the PDFont object 
-                 * otherwise use the internal encoding map of the font.
-                 */
-                for (CFFFont cff : lCFonts)
-                {
-                    if (name == null) {
-                        SID = cff.getEncoding().getSID(cid);
-                    } else {
-                        SID = getSIDByCharacterName(name, cff);
-                    }
-
-                    if (SID > 0) {
-                        widthResult = cff.getWidth(SID);
-                        if (widthResult != defaultGlyphWidth)
-                        {
-                            break;
-                        }
-                    }
-                }
-
-                if (SID < 0) 
+                // assuming that "cid" is actually the character code
+                String name = simpleFont.getEncoding().getName(cid);
+                if (name.equals(".notdef"))
                 {
                     throw new GlyphException(PreflightConstants.ERROR_FONTS_GLYPH_MISSING, cid, "Unknown character CID(" + cid+")");
                 }
+
+                CFFType1Font cffFont = (CFFType1Font)lCFonts.get(0);
+                widthResult = cffFont.getType1CharString(name).getWidth();
             }
         }
         catch (IOException e)
@@ -113,27 +93,6 @@ public class Type1Container extends Font
         return widthResult;
     }
 
-    /**
-     * Return the SID of the given character name.
-     * 
-     * @param name the character name looked up
-     * @param cff Compact Font Format that represents a sub set of the Type1C Font.
-     * @return -1 if the name is missing from the Font encoding map, the SID of the character if it is present in the CFF.
-     */
-    private int getSIDByCharacterName(String name, CFFFont cff)
-    {
-        int SID = -1;
-        for (Mapping m : cff.getMappings())
-        {
-            if (m.getName().equals(name))
-            {
-                SID = m.getSID();
-                break;
-            }
-        }
-        return SID;
-    }
-
     public void setType1Font(Type1 type1Font)
     {
         this.type1Font = type1Font;

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/TrueTypeDescriptorHelper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/TrueTypeDescriptorHelper.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/TrueTypeDescriptorHelper.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/TrueTypeDescriptorHelper.java Sat Aug 30 02:26:57 2014
@@ -83,7 +83,7 @@ public class TrueTypeDescriptorHelper ex
             bis = new ByteArrayInputStream(fontFile.getByteArray());
             TrueTypeFont ttf = new TTFParser(true).parseTTF(bis);
 
-            if (fontDescriptor.isSymbolic() && ttf.getCMAP().getCmaps().length != 1)
+            if (fontDescriptor.isSymbolic() && ttf.getCmap().getCmaps().length != 1)
             {
                 this.fContainer.push(new ValidationError(ERROR_FONTS_ENCODING,
                         "The Encoding should be missing for the Symbolic TTF"));

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/Type1DescriptorHelper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/Type1DescriptorHelper.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/Type1DescriptorHelper.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/Type1DescriptorHelper.java Sat Aug 30 02:26:57 2014
@@ -44,6 +44,7 @@ import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.pdmodel.common.PDStream;
 import org.apache.pdfbox.pdmodel.font.PDFont;
 import org.apache.pdfbox.pdmodel.font.PDFontDescriptorDictionary;
+import org.apache.pdfbox.pdmodel.font.PDSimpleFont;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.exception.ValidationException;
@@ -151,7 +152,7 @@ public class Type1DescriptorHelper exten
             int length2 = streamObj.getInt(COSName.LENGTH2);
             bis = new ByteArrayInputStream(fontFile.getByteArray());
             Type1Parser parserForMetrics = Type1Parser.createParserWithEncodingObject(bis, length1, length2,
-                    font.getFontEncoding());
+                    ((PDSimpleFont) font).getEncoding());
             Type1 parsedData = parserForMetrics.parse();
 
             this.fContainer.setType1Font(parsedData);
@@ -173,8 +174,7 @@ public class Type1DescriptorHelper exten
 
     /**
      * Type1C is a CFF font format, extract all CFFFont object from the stream
-     * 
-     * @param fontStream
+     *
      * @return
      * @throws ValidationException
      */

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1.java Sat Aug 30 02:26:57 2014
@@ -450,21 +450,7 @@ public class Type1
 
     private String getLabelAsName(int cid)
     {
-        String label = null;
-
-        try
-        {
-            label = this.encoding.getName(cid);
-        }
-        catch (IOException e)
-        {
-            label = this.cidToLabel.get(cid);
-            if (label == null)
-            {
-                label = Type1Parser.NOTDEF;
-            }
-        }
-
+        String label = this.encoding.getName(cid);
         return label.charAt(0) == Type1Parser.NAME_START ? label : Type1Parser.NAME_START + label;
     }
 }

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1Parser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1Parser.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1Parser.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1Parser.java Sat Aug 30 02:26:57 2014
@@ -40,7 +40,6 @@ import org.apache.fontbox.cff.Type1CharS
 import org.apache.fontbox.cff.Type1FontUtil;
 import org.apache.pdfbox.encoding.Encoding;
 import org.apache.pdfbox.encoding.MacRomanEncoding;
-import org.apache.pdfbox.encoding.PdfDocEncoding;
 import org.apache.pdfbox.encoding.StandardEncoding;
 import org.apache.pdfbox.encoding.WinAnsiEncoding;
 
@@ -155,10 +154,6 @@ public final class Type1Parser
         {
             encoding = new WinAnsiEncoding();
         }
-        else if (FONT_DICTIONARY_VALUE_ENCODING_PDFDOC.equals(encodingName))
-        {
-            encoding = new PdfDocEncoding();
-        }
         return encoding;
     }
 

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/FontValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/FontValidationProcess.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/FontValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/FontValidationProcess.java Sat Aug 30 02:26:57 2014
@@ -32,6 +32,9 @@ import static org.apache.pdfbox.prefligh
 import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_TYPE3;
 
 import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDSimpleFont;
+import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont;
+import org.apache.pdfbox.pdmodel.font.PDType3Font;
 import org.apache.pdfbox.preflight.PreflightConstants;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.PreflightPath;
@@ -82,15 +85,15 @@ public class FontValidationProcess exten
         String subtype = font.getSubType();
         if (FONT_DICTIONARY_VALUE_TRUETYPE.equals(subtype))
         {
-            return new TrueTypeFontValidator(context, font);
+            return new TrueTypeFontValidator(context, (PDTrueTypeFont)font);
         }
         else if (FONT_DICTIONARY_VALUE_MMTYPE.equals(subtype) || FONT_DICTIONARY_VALUE_TYPE1.equals(subtype))
         {
-            return new Type1FontValidator(context, font);
+            return new Type1FontValidator(context, (PDSimpleFont)font);
         }
         else if (FONT_DICTIONARY_VALUE_TYPE3.equals(subtype))
         {
-            return new Type3FontValidator(context, font);
+            return new Type3FontValidator(context, (PDType3Font)font);
         }
         else if (FONT_DICTIONARY_VALUE_COMPOSITE.equals(subtype))
         {

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/TextToPDF.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/TextToPDF.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/TextToPDF.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/TextToPDF.java Sat Aug 30 02:26:57 2014
@@ -21,6 +21,8 @@ import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.Reader;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDPage;
@@ -42,6 +44,25 @@ public class TextToPDF
     private int fontSize = 10;
     private PDFont font = PDType1Font.HELVETICA;
 
+    private static final Map<String, PDType1Font> STANDARD_14 = new HashMap<String, PDType1Font>();
+    static
+    {
+        STANDARD_14.put(PDType1Font.TIMES_ROMAN.getBaseFont(), PDType1Font.TIMES_ROMAN);
+        STANDARD_14.put(PDType1Font.TIMES_BOLD.getBaseFont(), PDType1Font.TIMES_BOLD);
+        STANDARD_14.put(PDType1Font.TIMES_ITALIC.getBaseFont(), PDType1Font.TIMES_ITALIC);
+        STANDARD_14.put(PDType1Font.TIMES_BOLD_ITALIC.getBaseFont(), PDType1Font.TIMES_BOLD_ITALIC);
+        STANDARD_14.put(PDType1Font.HELVETICA.getBaseFont(), PDType1Font.HELVETICA);
+        STANDARD_14.put(PDType1Font.HELVETICA_BOLD.getBaseFont(), PDType1Font.HELVETICA_BOLD);
+        STANDARD_14.put(PDType1Font.HELVETICA_OBLIQUE.getBaseFont(), PDType1Font.HELVETICA_OBLIQUE);
+        STANDARD_14.put(PDType1Font.HELVETICA_BOLD_OBLIQUE.getBaseFont(), PDType1Font.HELVETICA_BOLD_OBLIQUE);
+        STANDARD_14.put(PDType1Font.COURIER.getBaseFont(), PDType1Font.COURIER);
+        STANDARD_14.put(PDType1Font.COURIER_BOLD.getBaseFont(), PDType1Font.COURIER_BOLD);
+        STANDARD_14.put(PDType1Font.COURIER_OBLIQUE.getBaseFont(), PDType1Font.COURIER_OBLIQUE);
+        STANDARD_14.put(PDType1Font.COURIER_BOLD_OBLIQUE.getBaseFont(), PDType1Font.COURIER_BOLD_OBLIQUE);
+        STANDARD_14.put(PDType1Font.SYMBOL.getBaseFont(), PDType1Font.SYMBOL);
+        STANDARD_14.put(PDType1Font.ZAPF_DINGBATS.getBaseFont(), PDType1Font.ZAPF_DINGBATS);
+    }
+
     /**
      * Create a PDF document with some text.
      *
@@ -188,7 +209,7 @@ public class TextToPDF
                     if( args[i].equals( "-standardFont" ))
                     {
                         i++;
-                        app.setFont( PDType1Font.getStandardFont( args[i] ));
+                        app.setFont( getStandardFont( args[i] ));
                     }
                     else if( args[i].equals( "-ttf" ))
                     {
@@ -224,7 +245,7 @@ public class TextToPDF
      */
     private void usage()
     {
-        String[] std14 = PDType1Font.getStandard14Names();
+        String[] std14 = getStandard14Names();
         System.err.println( "usage: jar -jar pdfbox-app-x.y.z.jar TextToPDF [options] <output-file> <text-file>" );
         System.err.println( "    -standardFont <name>    default:" + PDType1Font.HELVETICA.getBaseFont() );
         for (String std14String : std14)
@@ -233,9 +254,32 @@ public class TextToPDF
         }
         System.err.println( "    -ttf <ttf file>         The TTF font to use.");
         System.err.println( "    -fontSize <fontSize>    default:10" );
+    }
 
 
+    /**
+     * A convenience method to get one of the standard 14 font from name.
+     *
+     * @param name The name of the font to get.
+     *
+     * @return The font that matches the name or null if it does not exist.
+     */
+    private static PDType1Font getStandardFont(String name)
+    {
+        return STANDARD_14.get(name);
     }
+
+    /**
+     * This will get the names of the standard 14 fonts.
+     *
+     * @return An array of the names of the standard 14 fonts.
+     */
+    private static String[] getStandard14Names()
+    {
+        return STANDARD_14.keySet().toArray(new String[14]);
+    }
+
+
     /**
      * @return Returns the font.
      */