Ok.

The revert is done. (svn commit r1488796)
Thanks for the tips. I tried first with the subclipse plugin but it failed
the command line worked fine.

BR,
Eric



2013/6/2 Andreas Lehmkuehler <[email protected]>

> Hi,
>
> Am 02.06.2013 23:20, schrieb Leleu Eric:
>
>  Hi,
>>
>> Ah yes you are right, I'm sorry.
>>
> No need to worry, those things happen ...
>
>
>  Do you want I try to revert this revision?
>>
> Yes, please. If you don't know how to do that, try something like this:
>
> change to the directory of your working copy
> svn merge -c -1488722 https://svn.apache.org/repos/**
> asf/pdfbox/branches/1.8<https://svn.apache.org/repos/asf/pdfbox/branches/1.8>
> svn commit -m "reverting rev. 1488722"
>
>  BR,
>> Eric
>>
>
>
> Thanks in advance
> Andreas Lehmkühler
>
>  2013/6/2 Andreas Lehmkuehler <[email protected]>
>>
>>  Hi,
>>>
>>> I guess you targeted the wrong repository. It should have been the trunk
>>> and not the branch.
>>>
>>> BR
>>> Andreas Lehmkühler
>>>
>>> Am 02.06.2013 16:49, schrieb [email protected]:
>>>
>>>   Author: leleueri
>>>
>>>> Date: Sun Jun  2 14:49:47 2013
>>>> New Revision: 1488722
>>>>
>>>> URL: http://svn.apache.org/r1488722
>>>> Log:
>>>> [PDFBox-1617] Fix NullPointer during Type1C font validation
>>>>
>>>> Modified:
>>>>       pdfbox/branches/1.8/preflight/****src/main/java/org/apache/**
>>>> pdfbox/preflight/font/****container/FontContainer.java
>>>>       pdfbox/branches/1.8/preflight/****src/main/java/org/apache/**
>>>> pdfbox/preflight/font/****container/Type0Container.java
>>>>       pdfbox/branches/1.8/preflight/****src/main/java/org/apache/**
>>>> pdfbox/preflight/font/****container/Type1Container.java
>>>>
>>>> Modified: pdfbox/branches/1.8/preflight/****src/main/java/org/apache/**
>>>> pdfbox/preflight/font/****container/FontContainer.java
>>>> URL: http://svn.apache.org/viewvc/****pdfbox/branches/1.8/**
>>>> preflight/**<http://svn.apache.org/viewvc/**pdfbox/branches/1.8/preflight/**>
>>>> src/main/java/org/apache/****pdfbox/preflight/font/**
>>>> container/FontContainer.java?****rev=1488722&r1=1488721&r2=**
>>>> 1488722&view=diff<http://svn.**apache.org/viewvc/pdfbox/**
>>>> branches/1.8/preflight/src/**main/java/org/apache/pdfbox/**
>>>> preflight/font/container/**FontContainer.java?rev=**
>>>> 1488722&r1=1488721&r2=1488722&**view=diff<http://svn.apache.org/viewvc/pdfbox/branches/1.8/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/FontContainer.java?rev=1488722&r1=1488721&r2=1488722&view=diff>
>>>> >
>>>> ==============================****============================**==**
>>>> ==================
>>>> --- pdfbox/branches/1.8/preflight/****src/main/java/org/apache/**
>>>> pdfbox/preflight/font/****container/FontContainer.java (original)
>>>> +++ pdfbox/branches/1.8/preflight/****src/main/java/org/apache/**
>>>> pdfbox/preflight/font/****container/FontContainer.java Sun Jun  2
>>>> 14:49:47
>>>>
>>>> 2013
>>>> @@ -142,8 +142,9 @@ public abstract class FontContainer
>>>>         *
>>>>         * @param cid
>>>>         * @return The Glyph width in 'em' unit.
>>>> +     * @throws GlyphException
>>>>         */
>>>> -    protected abstract float getFontProgramWidth(int cid);
>>>> +    protected abstract float getFontProgramWidth(int cid) throws
>>>> GlyphException;
>>>>
>>>>        /**
>>>>         * Test if both width are consistent. At the end of this method,
>>>> the CID is marked as valid or invalid.
>>>>
>>>> Modified: pdfbox/branches/1.8/preflight/****src/main/java/org/apache/**
>>>> pdfbox/preflight/font/****container/Type0Container.java
>>>> URL: http://svn.apache.org/viewvc/****pdfbox/branches/1.8/**
>>>> preflight/**<http://svn.apache.org/viewvc/**pdfbox/branches/1.8/preflight/**>
>>>> src/main/java/org/apache/****pdfbox/preflight/font/**
>>>> container/Type0Container.java?****rev=1488722&r1=1488721&r2=**
>>>> 1488722&view=diff<http://svn.**apache.org/viewvc/pdfbox/**
>>>> branches/1.8/preflight/src/**main/java/org/apache/pdfbox/**
>>>> preflight/font/container/**Type0Container.java?rev=**
>>>> 1488722&r1=1488721&r2=1488722&**view=diff<http://svn.apache.org/viewvc/pdfbox/branches/1.8/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/Type0Container.java?rev=1488722&r1=1488721&r2=1488722&view=diff>
>>>> >
>>>> ==============================****============================**==**
>>>> ==================
>>>> --- pdfbox/branches/1.8/preflight/****src/main/java/org/apache/**
>>>> pdfbox/preflight/font/****container/Type0Container.java (original)
>>>> +++ pdfbox/branches/1.8/preflight/****src/main/java/org/apache/**
>>>> pdfbox/preflight/font/****container/Type0Container.java Sun Jun  2
>>>>
>>>> 14:49:47 2013
>>>> @@ -25,6 +25,7 @@ import java.util.List;
>>>>
>>>>    import org.apache.pdfbox.pdmodel.****font.PDFont;
>>>>    import org.apache.pdfbox.preflight.****ValidationResult.**
>>>> ValidationError;
>>>> +import org.apache.pdfbox.preflight.****font.util.GlyphException;
>>>>
>>>>
>>>>    public class Type0Container extends FontContainer
>>>>    {
>>>> @@ -37,7 +38,7 @@ public class Type0Container extends Font
>>>>        }
>>>>
>>>>        @Override
>>>> -    protected float getFontProgramWidth(int cid)
>>>> +    protected float getFontProgramWidth(int cid) throws GlyphException
>>>>        {
>>>>            float width = 0;
>>>>            if (this.delegateFontContainer != null)
>>>>
>>>> Modified: pdfbox/branches/1.8/preflight/****src/main/java/org/apache/**
>>>> pdfbox/preflight/font/****container/Type1Container.java
>>>> URL: http://svn.apache.org/viewvc/****pdfbox/branches/1.8/**
>>>> preflight/**<http://svn.apache.org/viewvc/**pdfbox/branches/1.8/preflight/**>
>>>> src/main/java/org/apache/****pdfbox/preflight/font/**
>>>> container/Type1Container.java?****rev=1488722&r1=1488721&r2=**
>>>> 1488722&view=diff<http://svn.**apache.org/viewvc/pdfbox/**
>>>> branches/1.8/preflight/src/**main/java/org/apache/pdfbox/**
>>>> preflight/font/container/**Type1Container.java?rev=**
>>>> 1488722&r1=1488721&r2=1488722&**view=diff<http://svn.apache.org/viewvc/pdfbox/branches/1.8/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/Type1Container.java?rev=1488722&r1=1488721&r2=1488722&view=diff>
>>>> >
>>>> ==============================****============================**==**
>>>> ==================
>>>> --- pdfbox/branches/1.8/preflight/****src/main/java/org/apache/**
>>>> pdfbox/preflight/font/****container/Type1Container.java (original)
>>>> +++ pdfbox/branches/1.8/preflight/****src/main/java/org/apache/**
>>>> pdfbox/preflight/font/****container/Type1Container.java Sun Jun  2
>>>>
>>>> 14:49:47 2013
>>>> @@ -27,6 +27,7 @@ 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.pdfbox.preflight.****PreflightConstants;
>>>>    import org.apache.pdfbox.preflight.****font.util.GlyphException;
>>>>    import org.apache.pdfbox.preflight.****font.util.Type1;
>>>>
>>>>
>>>> @@ -52,7 +53,7 @@ public class Type1Container extends Font
>>>>        }
>>>>
>>>>        @Override
>>>> -    protected float getFontProgramWidth(int cid)
>>>> +    protected float getFontProgramWidth(int cid) throws GlyphException
>>>>        {
>>>>            float widthResult = -1;
>>>>            try
>>>> @@ -67,41 +68,72 @@ 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
>>>> +                 * 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.
>>>>                     */
>>>> -                String name = this.font.getFontEncoding().**
>>>>
>>>> getName(cid);
>>>>                    for (CFFFont cff : lCFonts)
>>>>                    {
>>>> -                    int SID = cff.getEncoding().getSID(cid);
>>>> -                    for (Mapping m : cff.getMappings())
>>>> -                    {
>>>> -                        if (m.getName().equals(name))
>>>> +                    if (name == null) {
>>>> +                        SID = cff.getEncoding().getSID(cid);
>>>> +                    } else {
>>>> +                        SID = getSIDByCharacterName(name, cff);
>>>> +                    }
>>>> +
>>>> +                    if (SID > 0) {
>>>> +                        widthResult = cff.getWidth(SID);
>>>> +                        if (widthResult != defaultGlyphWidth)
>>>>                            {
>>>> -                            SID = m.getSID();
>>>>                                break;
>>>>                            }
>>>>                        }
>>>> -                    widthResult = cff.getWidth(SID);
>>>> -                    if (widthResult != defaultGlyphWidth)
>>>> -                    {
>>>> -                        break;
>>>> -                    }
>>>> +                }
>>>> +
>>>> +                if (SID < 0)
>>>> +                {
>>>> +                    throw new GlyphException(****
>>>> PreflightConstants.ERROR_
>>>> **FONTS_GLYPH_MISSING, cid, "Unknown character CID(" + cid+")");
>>>>
>>>>                    }
>>>>                }
>>>>            }
>>>> -        catch (GlyphException e)
>>>> -        {
>>>> -            widthResult = -1;
>>>> -        }
>>>>            catch (IOException e)
>>>>            {
>>>> -            widthResult = -1; // TODO validation exception
>>>> +            throw new GlyphException(****PreflightConstants.ERROR_****
>>>> FONTS_GLYPH,
>>>>
>>>> cid, "Unexpected error during the width validtion for the character
>>>> CID(" +
>>>> cid+") : " + e.getMessage());
>>>>            }
>>>>
>>>>            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;
>>>>
>>>>
>>>>
>>>>
>>>
>>
>

Reply via email to