You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by vh...@apache.org on 2014/01/13 21:39:41 UTC

svn commit: r1557840 [3/9] - in /xmlgraphics/fop/branches/Temp_InlineContainer: ./ examples/fo/basic/ lib/ src/codegen/unicode/java/org/apache/fop/complexscripts/bidi/ src/documentation/intermediate-format-ng/ src/java/org/apache/fop/ src/java/org/apac...

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/scripts/GujaratiScriptProcessor.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/scripts/GujaratiScriptProcessor.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/scripts/GujaratiScriptProcessor.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/scripts/GujaratiScriptProcessor.java Mon Jan 13 20:39:34 2014
@@ -24,11 +24,6 @@ import org.apache.commons.logging.LogFac
 
 import org.apache.fop.complexscripts.util.GlyphSequence;
 
-// CSOFF: AvoidNestedBlocksCheck
-// CSOFF: NoWhitespaceAfterCheck
-// CSOFF: WhitespaceAfter
-// CSOFF: InnerAssignmentCheck
-// CSOFF: SimplifyBooleanReturnCheck
 // CSOFF: LineLengthCheck
 
 /**
@@ -109,7 +104,7 @@ public class GujaratiScriptProcessor ext
     }
 
     private static boolean containsHalfConsonant(GlyphSequence gs, int k) {
-        Boolean half = (Boolean) gs.getAssociation(k) . getPredication("half");
+        Boolean half = (Boolean) gs.getAssociation(k) .getPredication("half");
         return (half != null) ? half.booleanValue() : false;
     }
 
@@ -134,7 +129,7 @@ public class GujaratiScriptProcessor ext
         // first candidate target is after first non-half consonant
         for (int i = 0; i < ng; i++) {
             if ((i != source) && containsConsonant(gs, i)) {
-                if (! containsHalfConsonant(gs, i)) {
+                if (!containsHalfConsonant(gs, i)) {
                     c1 = i + 1;
                     break;
                 }
@@ -142,7 +137,7 @@ public class GujaratiScriptProcessor ext
         }
         // second candidate target is after last non-prebase matra after first candidate or before first syllable or vedic mark
         for (int i = (c1 >= 0) ? c1 : 0; i < ng; i++) {
-            if (containsMatra(gs, i) && ! containsPreBaseMatra(gs, i)) {
+            if (containsMatra(gs, i) && !containsPreBaseMatra(gs, i)) {
                 c2 = i + 1;
             } else if (containsOtherMark(gs, i)) {
                 c2 = i;
@@ -159,7 +154,7 @@ public class GujaratiScriptProcessor ext
     }
 
     private static boolean containsReph(GlyphSequence gs, int k) {
-        Boolean rphf = (Boolean) gs.getAssociation(k) . getPredication("rphf");
+        Boolean rphf = (Boolean) gs.getAssociation(k) .getPredication("rphf");
         return (rphf != null) ? rphf.booleanValue() : false;
     }
 
@@ -503,13 +498,13 @@ public class GujaratiScriptProcessor ext
         }
     }
     static boolean isC(int c) {
-        return isType(c,C_C);
+        return isType(c, C_C);
     }
     static boolean isR(int c) {
-        return isType(c,C_C) && hasR(c);
+        return isType(c, C_C) && hasR(c);
     }
     static boolean isV(int c) {
-        return isType(c,C_V);
+        return isType(c, C_V);
     }
     static boolean isN(int c) {
         return c == 0x0ABC;
@@ -518,10 +513,10 @@ public class GujaratiScriptProcessor ext
         return c == 0x0ACD;
     }
     static boolean isM(int c) {
-        return isType(c,C_M);
+        return isType(c, C_M);
     }
     static boolean isPreM(int c) {
-        return isType(c,C_M) && hasFlag(c,C_PRE);
+        return isType(c, C_M) && hasFlag(c, C_PRE);
     }
     static boolean isX(int c) {
         switch (typeOf(c)) {
@@ -535,10 +530,10 @@ public class GujaratiScriptProcessor ext
         }
     }
     static boolean hasR(int c) {
-        return hasFlag(c,C_R);
+        return hasFlag(c, C_R);
     }
     static boolean hasN(int c) {
-        return hasFlag(c,C_N);
+        return hasFlag(c, C_N);
     }
 
 }

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/scripts/GurmukhiScriptProcessor.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/scripts/GurmukhiScriptProcessor.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/scripts/GurmukhiScriptProcessor.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/scripts/GurmukhiScriptProcessor.java Mon Jan 13 20:39:34 2014
@@ -25,11 +25,6 @@ import org.apache.commons.logging.LogFac
 import org.apache.fop.complexscripts.fonts.GlyphDefinitionTable;
 import org.apache.fop.complexscripts.util.GlyphSequence;
 
-// CSOFF: AvoidNestedBlocksCheck
-// CSOFF: NoWhitespaceAfterCheck
-// CSOFF: WhitespaceAfter
-// CSOFF: InnerAssignmentCheck
-// CSOFF: SimplifyBooleanReturnCheck
 // CSOFF: LineLengthCheck
 
 /**
@@ -110,7 +105,7 @@ public class GurmukhiScriptProcessor ext
     }
 
     private static boolean containsHalfConsonant(GlyphSequence gs, int k) {
-        Boolean half = (Boolean) gs.getAssociation(k) . getPredication("half");
+        Boolean half = (Boolean) gs.getAssociation(k) .getPredication("half");
         return (half != null) ? half.booleanValue() : false;
     }
 
@@ -135,7 +130,7 @@ public class GurmukhiScriptProcessor ext
         // first candidate target is after first non-half consonant
         for (int i = 0; i < ng; i++) {
             if ((i != source) && containsConsonant(gs, i)) {
-                if (! containsHalfConsonant(gs, i)) {
+                if (!containsHalfConsonant(gs, i)) {
                     c1 = i + 1;
                     break;
                 }
@@ -143,7 +138,7 @@ public class GurmukhiScriptProcessor ext
         }
         // second candidate target is after last non-prebase matra after first candidate or before first syllable or vedic mark
         for (int i = (c1 >= 0) ? c1 : 0; i < ng; i++) {
-            if (containsMatra(gs, i) && ! containsPreBaseMatra(gs, i)) {
+            if (containsMatra(gs, i) && !containsPreBaseMatra(gs, i)) {
                 c2 = i + 1;
             } else if (containsOtherMark(gs, i)) {
                 c2 = i;
@@ -160,7 +155,7 @@ public class GurmukhiScriptProcessor ext
     }
 
     private static boolean containsReph(GlyphSequence gs, int k) {
-        Boolean rphf = (Boolean) gs.getAssociation(k) . getPredication("rphf");
+        Boolean rphf = (Boolean) gs.getAssociation(k) .getPredication("rphf");
         return (rphf != null) ? rphf.booleanValue() : false;
     }
 
@@ -504,13 +499,13 @@ public class GurmukhiScriptProcessor ext
         }
     }
     static boolean isC(int c) {
-        return isType(c,C_C);
+        return isType(c, C_C);
     }
     static boolean isR(int c) {
-        return isType(c,C_C) && hasR(c);
+        return isType(c, C_C) && hasR(c);
     }
     static boolean isV(int c) {
-        return isType(c,C_V);
+        return isType(c, C_V);
     }
     static boolean isN(int c) {
         return c == 0x0A3C;
@@ -519,10 +514,10 @@ public class GurmukhiScriptProcessor ext
         return c == 0x0A4D;
     }
     static boolean isM(int c) {
-        return isType(c,C_M);
+        return isType(c, C_M);
     }
     static boolean isPreM(int c) {
-        return isType(c,C_M) && hasFlag(c,C_PRE);
+        return isType(c, C_M) && hasFlag(c, C_PRE);
     }
     static boolean isX(int c) {
         switch (typeOf(c)) {
@@ -536,10 +531,10 @@ public class GurmukhiScriptProcessor ext
         }
     }
     static boolean hasR(int c) {
-        return hasFlag(c,C_R);
+        return hasFlag(c, C_R);
     }
     static boolean hasN(int c) {
-        return hasFlag(c,C_N);
+        return hasFlag(c, C_N);
     }
 
     @Override

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/scripts/IndicScriptProcessor.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/scripts/IndicScriptProcessor.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/scripts/IndicScriptProcessor.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/scripts/IndicScriptProcessor.java Mon Jan 13 20:39:34 2014
@@ -36,13 +36,6 @@ import org.apache.fop.complexscripts.uti
 import org.apache.fop.complexscripts.util.GlyphSequence;
 import org.apache.fop.complexscripts.util.ScriptContextTester;
 
-// CSOFF: AvoidNestedBlocksCheck
-// CSOFF: NoWhitespaceAfterCheck
-// CSOFF: InnerAssignmentCheck
-// CSOFF: SimplifyBooleanReturnCheck
-// CSOFF: EmptyForIteratorPadCheck
-// CSOFF: WhitespaceAfterCheck
-// CSOFF: ParameterNumberCheck
 // CSOFF: LineLengthCheck
 
 /**
@@ -222,7 +215,7 @@ public class IndicScriptProcessor extend
     }
 
     private GlyphSequence[] syllabize(GlyphSequence gs, String script, String language) {
-        return Syllabizer.getSyllabizer(script, language, getSyllabizerClass()) . syllabize(gs);
+        return Syllabizer.getSyllabizer(script, language, getSyllabizerClass()) .syllabize(gs);
     }
 
     private GlyphSequence unsyllabize(GlyphSequence gs, GlyphSequence[] sa) {
@@ -384,12 +377,10 @@ public class IndicScriptProcessor extend
         public boolean equals(Object o) {
             if (o instanceof Syllabizer) {
                 Syllabizer s = (Syllabizer) o;
-                if (! s.script.equals(script)) {
-                    return false;
-                } else if (! s.language.equals(language)) {
+                if (!s.script.equals(script)) {
                     return false;
                 } else {
-                    return true;
+                    return s.language.equals(language);
                 }
             } else {
                 return false;
@@ -408,7 +399,7 @@ public class IndicScriptProcessor extend
             }
             return d;
         }
-        private static Map<String,Syllabizer> syllabizers = new HashMap<String,Syllabizer>();
+        private static Map<String, Syllabizer> syllabizers = new HashMap<String, Syllabizer>();
         static Syllabizer getSyllabizer(String script, String language, Class<? extends Syllabizer> syllabizerClass) {
             String sid = makeSyllabizerId(script, language);
             Syllabizer s = syllabizers.get(sid);

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/scripts/ScriptProcessor.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/scripts/ScriptProcessor.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/scripts/ScriptProcessor.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/scripts/ScriptProcessor.java Mon Jan 13 20:39:34 2014
@@ -31,11 +31,7 @@ import org.apache.fop.complexscripts.uti
 import org.apache.fop.complexscripts.util.GlyphSequence;
 import org.apache.fop.complexscripts.util.ScriptContextTester;
 
-// CSOFF: InnerAssignmentCheck
 // CSOFF: LineLengthCheck
-// CSOFF: NoWhitespaceAfterCheck
-// CSOFF: ParameterNumberCheck
-// CSOFF: SimplifyBooleanReturnCheck
 
 /**
  * <p>Abstract script processor base class for which an implementation of the substitution and positioning methods
@@ -278,14 +274,12 @@ public abstract class ScriptProcessor {
         public boolean equals(Object o) {
             if (o instanceof AssembledLookupsKey) {
                 AssembledLookupsKey k = (AssembledLookupsKey) o;
-                if (! table.equals(k.table)) {
+                if (!table.equals(k.table)) {
                     return false;
-                } else if (! Arrays.equals(features, k.features)) {
-                    return false;
-                } else if (! lookups.equals(k.lookups)) {
+                } else if (!Arrays.equals(features, k.features)) {
                     return false;
                 } else {
-                    return true;
+                    return lookups.equals(k.lookups);
                 }
             } else {
                 return false;

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/util/CharScript.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/util/CharScript.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/util/CharScript.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/util/CharScript.java Mon Jan 13 20:39:34 2014
@@ -28,12 +28,6 @@ import java.util.Set;
 
 import org.apache.fop.util.CharUtilities;
 
-// CSOFF: AvoidNestedBlocksCheck
-// CSOFF: InnerAssignmentCheck
-// CSOFF: LineLengthCheck
-// CSOFF: SimplifyBooleanReturnCheck
-// CSOFF: WhitespaceAfterCheck
-
 /**
  * <p>Script related utilities.</p>
  *
@@ -41,6 +35,8 @@ import org.apache.fop.util.CharUtilities
  */
 public final class CharScript {
 
+    // CSOFF: LineLength
+
     //
     // The following script codes are based on ISO 15924. Codes less than 1000 are
     // official assignments from 15924; those equal to or greater than 1000 are FOP
@@ -754,16 +750,14 @@ public final class CharScript {
             case SCRIPT_UNCODED:
                 break;
             default:
-                {
-                    Integer v = (Integer) e.getValue();
-                    assert v != null;
-                    int c = v.intValue();
-                    if (c > cMax) {
-                        cMax = c;
-                        sMax = s;
-                    }
-                    break;
+                Integer v = (Integer) e.getValue();
+                assert v != null;
+                int c = v.intValue();
+                if (c > cMax) {
+                    cMax = c;
+                    sMax = s;
                 }
+                break;
             }
         }
         if (sMax < 0) {
@@ -823,7 +817,7 @@ public final class CharScript {
      * @return a  script tag
      */
     public static String scriptTagFromCode(int code) {
-        Map<Integer,String> m = getScriptTagsMap();
+        Map<Integer, String> m = getScriptTagsMap();
         if (m != null) {
             String tag;
             if ((tag = m.get(Integer.valueOf(code))) != null) {
@@ -842,7 +836,7 @@ public final class CharScript {
      * @return a script code
      */
     public static int scriptCodeFromTag(String tag) {
-        Map<String,Integer> m = getScriptCodeMap();
+        Map<String, Integer> m = getScriptCodeMap();
         if (m != null) {
             Integer c;
             if ((c = m.get(tag)) != null) {
@@ -855,8 +849,8 @@ public final class CharScript {
         }
     }
 
-    private static Map<Integer,String> scriptTagsMap = null;
-    private static Map<String,Integer> scriptCodeMap = null;
+    private static Map<Integer, String> scriptTagsMap = null;
+    private static Map<String, Integer> scriptCodeMap = null;
 
     private static void putScriptTag(Map tm, Map cm, int code, String tag) {
         assert tag != null;
@@ -868,8 +862,8 @@ public final class CharScript {
     }
 
     private static void makeScriptMaps() {
-        HashMap<Integer,String> tm = new HashMap<Integer,String>();
-        HashMap<String,Integer> cm = new HashMap<String,Integer>();
+        HashMap<Integer, String> tm = new HashMap<Integer, String>();
+        HashMap<String, Integer> cm = new HashMap<String, Integer>();
         putScriptTag(tm, cm, SCRIPT_HEBREW, "hebr");
         putScriptTag(tm, cm, SCRIPT_MONGOLIAN, "mong");
         putScriptTag(tm, cm, SCRIPT_ARABIC, "arab");
@@ -915,14 +909,14 @@ public final class CharScript {
         scriptCodeMap = cm;
     }
 
-    private static Map<Integer,String> getScriptTagsMap() {
+    private static Map<Integer, String> getScriptTagsMap() {
         if (scriptTagsMap == null) {
             makeScriptMaps();
         }
         return scriptTagsMap;
     }
 
-    private static Map<String,Integer> getScriptCodeMap() {
+    private static Map<String, Integer> getScriptCodeMap() {
         if (scriptCodeMap == null) {
             makeScriptMaps();
         }

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/util/GlyphSequence.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/util/GlyphSequence.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/util/GlyphSequence.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/util/GlyphSequence.java Mon Jan 13 20:39:34 2014
@@ -26,10 +26,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-// CSOFF: InnerAssignmentCheck
 // CSOFF: LineLengthCheck
-// CSOFF: WhitespaceAfterCheck
-// CSOFF: NoWhitespaceAfterCheck
 
 /**
  * <p>A GlyphSequence encapsulates a sequence of character codes, a sequence of glyph codes,
@@ -639,10 +636,10 @@ public class GlyphSequence implements Cl
         private final int offset;
         private final int count;
         private final int[] subIntervals;
-        private Map<String,Object> predications;
+        private Map<String, Object> predications;
 
         // class state
-        private static volatile Map<String,PredicationMerger> predicationMergers;
+        private static volatile Map<String, PredicationMerger> predicationMergers;
 
         interface PredicationMerger {
             Object merge(String key, Object v1, Object v2);
@@ -724,7 +721,7 @@ public class GlyphSequence implements Cl
         public boolean contained(int offset, int count) {
             int s = offset;
             int e = offset + count;
-            if (! isDisjoint()) {
+            if (!isDisjoint()) {
                 int s0 = getStart();
                 int e0 = getEnd();
                 return (s0 >= s) && (e0 <= e);
@@ -748,7 +745,7 @@ public class GlyphSequence implements Cl
          */
         public void setPredication(String key, Object value) {
             if (predications == null) {
-                predications = new HashMap<String,Object>();
+                predications = new HashMap<String, Object>();
             }
             if (predications != null) {
                 predications.put(key, value);
@@ -775,7 +772,7 @@ public class GlyphSequence implements Cl
          */
         public void mergePredication(String key, Object value) {
             if (predications == null) {
-                predications = new HashMap<String,Object>();
+                predications = new HashMap<String, Object>();
             }
             if (predications != null) {
                 if (predications.containsKey(key)) {
@@ -813,7 +810,7 @@ public class GlyphSequence implements Cl
          */
         public void mergePredications(CharAssociation ca) {
             if (ca.predications != null) {
-                for (Map.Entry<String,Object> e : ca.predications.entrySet()) {
+                for (Map.Entry<String, Object> e : ca.predications.entrySet()) {
                     mergePredication(e.getKey(), e.getValue());
                 }
             }
@@ -824,7 +821,7 @@ public class GlyphSequence implements Cl
             try {
                 CharAssociation ca = (CharAssociation) super.clone();
                 if (predications != null) {
-                    ca.predications = new HashMap<String,Object>(predications);
+                    ca.predications = new HashMap<String, Object>(predications);
                 }
                 return ca;
             } catch (CloneNotSupportedException e) {
@@ -839,7 +836,7 @@ public class GlyphSequence implements Cl
          */
         public static void setPredicationMerger(String key, PredicationMerger pm) {
             if (predicationMergers == null) {
-                predicationMergers = new HashMap<String,PredicationMerger>();
+                predicationMergers = new HashMap<String, PredicationMerger>();
             }
             if (predicationMergers != null) {
                 predicationMergers.put(key, pm);

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/util/NumberConverter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/util/NumberConverter.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/util/NumberConverter.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/util/NumberConverter.java Mon Jan 13 20:39:34 2014
@@ -23,9 +23,6 @@ import java.util.ArrayList;
 import java.util.List;
 
 // CSOFF: LineLengthCheck
-// CSOFF: InnerAssignmentCheck
-// CSOFF: NoWhitespaceAfterCheck
-// CSOFF: AvoidNestedBlocksCheck
 
 /**
  * <p>Implementation of Number to String Conversion algorithm specified by
@@ -186,10 +183,10 @@ public class NumberConverter {
                 separators.add(token.toArray(new Integer [ token.size() ]));
             }
         }
-        if (! separators.isEmpty()) {
+        if (!separators.isEmpty()) {
             this.prefix = separators.remove(0);
         }
-        if (! separators.isEmpty()) {
+        if (!separators.isEmpty()) {
             this.suffix = separators.remove(separators.size() - 1);
         }
         this.separators = separators.toArray(new Integer [ separators.size() ] []);
@@ -260,33 +257,27 @@ public class NumberConverter {
             int s = token[0].intValue();
             switch (s) {
             case (int) '1':
-                {
-                    fn = formatNumberAsDecimal(number, (int) '1', 1);
-                    break;
-                }
+                fn = formatNumberAsDecimal(number, (int) '1', 1);
+            break;
             case (int) 'W':
             case (int) 'w':
-                {
-                    fn = formatNumberAsWord(number, (s == (int) 'W') ? Character.UPPERCASE_LETTER : Character.LOWERCASE_LETTER);
-                    break;
-                }
+                fn = formatNumberAsWord(number, (s == (int) 'W') ? Character.UPPERCASE_LETTER : Character.LOWERCASE_LETTER);
+            break;
             case (int) 'A': // handled as numeric sequence
             case (int) 'a': // handled as numeric sequence
             case (int) 'I': // handled as numeric special
             case (int) 'i': // handled as numeric special
             default:
-                {
-                    if (isStartOfDecimalSequence(s)) {
-                        fn = formatNumberAsDecimal(number, s, 1);
-                    } else if (isStartOfAlphabeticSequence(s)) {
-                        fn = formatNumberAsSequence(number, s, getSequenceBase(s), null);
-                    } else if (isStartOfNumericSpecial(s)) {
-                        fn = formatNumberAsSpecial(number, s);
-                    } else {
-                        fn = null;
-                    }
-                    break;
+                if (isStartOfDecimalSequence(s)) {
+                    fn = formatNumberAsDecimal(number, s, 1);
+                } else if (isStartOfAlphabeticSequence(s)) {
+                    fn = formatNumberAsSequence(number, s, getSequenceBase(s), null);
+                } else if (isStartOfNumericSpecial(s)) {
+                    fn = formatNumberAsSpecial(number, s);
+                } else {
+                    fn = null;
                 }
+                break;
             }
         } else if ((token.length == 2) && (token[0] == (int) 'W') && (token[1] == (int) 'w')) {
             fn = formatNumberAsWord(number, Character.TITLECASE_LETTER);

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/util/UTF32.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/util/UTF32.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/util/UTF32.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/complexscripts/util/UTF32.java Mon Jan 13 20:39:34 2014
@@ -21,7 +21,6 @@ package org.apache.fop.complexscripts.ut
 
 import org.apache.fop.util.CharUtilities;
 
-// CSOFF: InnerAssignmentCheck
 
 /**
  * <p>UTF32 related utilities.</p>

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/Constants.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/Constants.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/Constants.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/Constants.java Mon Jan 13 20:39:34 2014
@@ -816,8 +816,11 @@ public interface Constants {
     /** Scope for table header */
     int PR_X_HEADER_COLUMN = 290;
 
+    /** For specifying PDF optional content group (layer) binding. */
+    int PR_X_LAYER = 291;
+
     /** Number of property constants defined */
-    int PROPERTY_COUNT = 290;
+    int PROPERTY_COUNT = 291;
 
     // compound property constants
 

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/FOPropertyMapping.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/FOPropertyMapping.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/FOPropertyMapping.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/FOPropertyMapping.java Mon Jan 13 20:39:34 2014
@@ -2721,6 +2721,13 @@ public final class FOPropertyMapping imp
         m.addEnum("auto", getEnumProperty(EN_AUTO, "AUTO"));
         m.setDefault("auto");
         addPropertyMaker("z-index", m);
+
+        // fox:layer
+        m  = new StringProperty.Maker(PR_X_LAYER);
+        m.setInherited(false);
+        m.setDefault("");
+        addPropertyMaker("fox:layer", m);
+
     }
 
     private void createShorthandProperties() {

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/FObj.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/FObj.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/FObj.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/FObj.java Mon Jan 13 20:39:34 2014
@@ -74,7 +74,8 @@ public abstract class FObj extends FONod
     private int bidiLevel = -1;
 
     // The value of properties relevant for all fo objects
-    private String id = null;
+    private String id;
+    private String layer;
     // End of property values
 
     /**
@@ -148,7 +149,7 @@ public abstract class FObj extends FONod
             String attributeName = attList.getQName(i);
             String attributeValue = attList.getValue(i);
             Property prop = propertyList.getPropertyForAttribute(attList, attributeName, attributeValue);
-            if (prop.equals(value)) {
+            if (prop != null && prop.equals(value)) {
                 return attributeName;
             }
         }
@@ -173,6 +174,7 @@ public abstract class FObj extends FONod
      */
     public void bind(PropertyList pList) throws FOPException {
         id = pList.get(PR_ID).getString();
+        layer = pList.get(PR_X_LAYER).getString();
     }
 
     /**
@@ -583,6 +585,16 @@ public abstract class FObj extends FONod
         return (id != null && id.length() > 0);
     }
 
+    /** @return the "layer" property. */
+    public String getLayer() {
+        return layer;
+    }
+
+    /** @return whether this object has an layer set */
+    public boolean hasLayer() {
+        return (layer != null && layer.length() > 0);
+    }
+
     /** {@inheritDoc} */
     public String getNamespaceURI() {
         return FOElementMapping.URI;
@@ -611,7 +623,7 @@ public abstract class FObj extends FONod
         if (bidiLevel >= 0) {
             if ((this.bidiLevel < 0) || (bidiLevel < this.bidiLevel)) {
                 this.bidiLevel = bidiLevel;
-                if (parent != null) {
+                if ((parent != null) && !isBidiPropagationBoundary()) {
                     FObj foParent = (FObj) parent;
                     int parentBidiLevel = foParent.getBidiLevel();
                     if ((parentBidiLevel < 0) || (bidiLevel < parentBidiLevel)) {
@@ -646,10 +658,25 @@ public abstract class FObj extends FONod
                     return level;
                 }
             }
+            if (isBidiInheritanceBoundary()) {
+                break;
+            }
         }
         return -1;
     }
 
+    protected boolean isBidiBoundary(boolean propagate) {
+        return false;
+    }
+
+    private boolean isBidiInheritanceBoundary() {
+        return isBidiBoundary(false);
+    }
+
+    private boolean isBidiPropagationBoundary() {
+        return isBidiBoundary(true);
+    }
+
     /**
      * Add a new extension attachment to this FObj.
      * (see org.apache.fop.fo.FONode for details)

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/expr/FunctionBase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/expr/FunctionBase.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/expr/FunctionBase.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/expr/FunctionBase.java Mon Jan 13 20:39:34 2014
@@ -36,7 +36,8 @@ public abstract class FunctionBase imple
     /** {@inheritDoc} */
     public Property getOptionalArgDefault(int index, PropertyInfo pi) throws PropertyException {
         if (index >= getOptionalArgsCount()) {
-            PropertyException e = new PropertyException(new IndexOutOfBoundsException("illegal optional argument index"));
+            PropertyException e = new PropertyException(
+                    new IndexOutOfBoundsException("illegal optional argument index"));
             e.setPropertyInfo(pi);
             throw e;
         } else {

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/expr/PropertyParser.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/expr/PropertyParser.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/expr/PropertyParser.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/expr/PropertyParser.java Mon Jan 13 20:39:34 2014
@@ -385,7 +385,8 @@ public final class PropertyParser extend
         }
         int numArgs = args.size();
         if (numArgs < numReq) {
-            throw new PropertyException("Expected " + numReq + " required arguments, but only " + numArgs + " specified");
+            throw new PropertyException("Expected " + numReq + " required arguments, but only "
+                    + numArgs + " specified");
         } else {
             for (int i = 0; i < numOpt; i++) {
                 if (args.size() < (numReq + i + 1)) {

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/extensions/ExtensionElementMapping.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/extensions/ExtensionElementMapping.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/extensions/ExtensionElementMapping.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/extensions/ExtensionElementMapping.java Mon Jan 13 20:39:34 2014
@@ -66,6 +66,8 @@ public class ExtensionElementMapping ext
         PROPERTY_ATTRIBUTES.add("border-before-end-radius");
         PROPERTY_ATTRIBUTES.add("border-after-start-radius");
         PROPERTY_ATTRIBUTES.add("border-after-end-radius");
+        //Optional content groups (layers)
+        PROPERTY_ATTRIBUTES.add("layer");
     }
 
     /**

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/flow/BlockContainer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/flow/BlockContainer.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/flow/BlockContainer.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/flow/BlockContainer.java Mon Jan 13 20:39:34 2014
@@ -98,7 +98,8 @@ public class BlockContainer extends FObj
         referenceOrientation = pList.get(PR_REFERENCE_ORIENTATION).getNumeric();
         span = pList.get(PR_SPAN).getEnum();
         writingModeTraits = new WritingModeTraits(
-            WritingMode.valueOf(pList.get(PR_WRITING_MODE).getEnum()));
+            WritingMode.valueOf(pList.get(PR_WRITING_MODE).getEnum()),
+            pList.getExplicit(PR_WRITING_MODE) != null);
         disableColumnBalancing = pList.get(PR_X_DISABLE_COLUMN_BALANCING).getEnum();
     }
 
@@ -280,6 +281,14 @@ public class BlockContainer extends FObj
         return writingModeTraits.getWritingMode();
     }
 
+    /**
+     * Obtain writing mode explicit indicator.
+     * @return the writing mode explicit indicator
+     */
+    public boolean getExplicitWritingMode() {
+        return writingModeTraits.getExplicitWritingMode();
+    }
+
     /** {@inheritDoc} */
     public String getLocalName() {
         return "block-container";
@@ -292,5 +301,10 @@ public class BlockContainer extends FObj
     public int getNameId() {
         return FO_BLOCK_CONTAINER;
     }
-}
 
+    @Override
+    protected boolean isBidiBoundary(boolean propagate) {
+        return getExplicitWritingMode();
+    }
+
+}

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/flow/InlineContainer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/flow/InlineContainer.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/flow/InlineContainer.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/flow/InlineContainer.java Mon Jan 13 20:39:34 2014
@@ -87,7 +87,8 @@ public class InlineContainer extends FOb
         overflow = pList.get(PR_OVERFLOW).getEnum();
         referenceOrientation = pList.get(PR_REFERENCE_ORIENTATION).getNumeric();
         writingModeTraits = new WritingModeTraits(
-                WritingMode.valueOf(pList.get(PR_WRITING_MODE).getEnum()));
+                WritingMode.valueOf(pList.get(PR_WRITING_MODE).getEnum()),
+                pList.getExplicit(PR_WRITING_MODE) != null);
     }
 
     /**
@@ -194,6 +195,14 @@ public class InlineContainer extends FOb
         return writingModeTraits.getWritingMode();
     }
 
+    /**
+     * Obtain writing mode explicit indicator.
+     * @return the writing mode explicit indicator
+     */
+    public boolean getExplicitWritingMode() {
+        return writingModeTraits.getExplicitWritingMode();
+    }
+
     public Direction getInlineProgressionDirection() {
         return writingModeTraits.getInlineProgressionDirection();
     }
@@ -224,4 +233,9 @@ public class InlineContainer extends FOb
         return true;
     }
 
+    @Override
+    protected boolean isBidiBoundary(boolean propagate) {
+        return getExplicitWritingMode();
+    }
+
 }

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/flow/table/Table.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/flow/table/Table.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/flow/table/Table.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/flow/table/Table.java Mon Jan 13 20:39:34 2014
@@ -139,7 +139,8 @@ public class Table extends TableFObj imp
         tableOmitFooterAtBreak = pList.get(PR_TABLE_OMIT_FOOTER_AT_BREAK).getEnum();
         tableOmitHeaderAtBreak = pList.get(PR_TABLE_OMIT_HEADER_AT_BREAK).getEnum();
         writingModeTraits = new WritingModeTraits(
-            WritingMode.valueOf(pList.get(PR_WRITING_MODE).getEnum()));
+            WritingMode.valueOf(pList.get(PR_WRITING_MODE).getEnum()),
+            pList.getExplicit(PR_WRITING_MODE) != null);
 
         //Bind extension properties
         widowContentLimit = pList.get(PR_X_WIDOW_CONTENT_LIMIT).getLength();
@@ -554,6 +555,11 @@ public class Table extends TableFObj imp
         return writingModeTraits.getWritingMode();
     }
 
+    /** {@inheritDoc} */
+    public boolean getExplicitWritingMode() {
+        return writingModeTraits.getExplicitWritingMode();
+    }
+
     /** @return the "fox:widow-content-limit" extension FO trait */
     public Length getWidowContentLimit() {
         return widowContentLimit;
@@ -620,4 +626,9 @@ public class Table extends TableFObj imp
         return ranges;
     }
 
+    @Override
+    protected boolean isBidiBoundary(boolean propagate) {
+        return getExplicitWritingMode();
+    }
+
 }

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/pagination/PageSequence.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/pagination/PageSequence.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/pagination/PageSequence.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/pagination/PageSequence.java Mon Jan 13 20:39:34 2014
@@ -96,7 +96,8 @@ public class PageSequence extends Abstra
         masterReference = pList.get(PR_MASTER_REFERENCE).getString();
         referenceOrientation = pList.get(PR_REFERENCE_ORIENTATION).getNumeric();
         writingModeTraits = new WritingModeTraits(
-            WritingMode.valueOf(pList.get(PR_WRITING_MODE).getEnum()));
+            WritingMode.valueOf(pList.get(PR_WRITING_MODE).getEnum()),
+            pList.getExplicit(PR_WRITING_MODE) != null);
         if (masterReference == null || masterReference.equals("")) {
             missingPropertyError("master-reference");
         }
@@ -403,6 +404,16 @@ public class PageSequence extends Abstra
         }
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    public boolean getExplicitWritingMode() {
+        if (writingModeTraits != null) {
+            return writingModeTraits.getExplicitWritingMode();
+        } else {
+            return false;
+        }
+    }
 
     @Override
     protected Stack collectDelimitedTextRanges(Stack ranges, DelimitedTextRange currentRange) {
@@ -423,6 +434,11 @@ public class PageSequence extends Abstra
         return ranges;
     }
 
+    @Override
+    protected boolean isBidiBoundary(boolean propagate) {
+        return true;
+    }
+
     /**
      * Releases a page-sequence's children after the page-sequence has been fully processed.
      */

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/properties/GenericShorthandParser.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/properties/GenericShorthandParser.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/properties/GenericShorthandParser.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fo/properties/GenericShorthandParser.java Mon Jan 13 20:39:34 2014
@@ -83,13 +83,17 @@ public class GenericShorthandParser impl
                                                PropertyList propertyList)
                     throws PropertyException {
         Property prop = null;
+        String vProperty = "";
         // Try each of the stored values in turn
         Iterator iprop = property.getList().iterator();
         while (iprop.hasNext() && prop == null) {
             Property p = (Property)iprop.next();
+            if (p.getNCname() != null) {
+                vProperty += p.getNCname() + " ";
+            }
             prop = maker.convertShorthandProperty(propertyList, p, null);
-            propertyList.validatePropertyValue(p.getNCname(), prop, property);
         }
+        propertyList.validatePropertyValue(vProperty.trim(), prop, property);
         return prop;
     }
 

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/FontManagerConfigurator.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/FontManagerConfigurator.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/FontManagerConfigurator.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/FontManagerConfigurator.java Mon Jan 13 20:39:34 2014
@@ -48,20 +48,24 @@ public class FontManagerConfigurator {
 
     private final Configuration cfg;
 
-    private final URI defaultBaseUri;
+    private final URI baseURI;
+
+    private final URI fallbackURI;
 
     private final ResourceResolver resourceResolver;
 
     /**
      * Main constructor
      * @param cfg the font manager configuration object
-     * @param defaultBaseUri the default URI base to use for URI resolution
+     * @param baseURI the URI against which to resolve relative URIs
+     * @param fallbackURI the URI to use as a fallback if font-base is unspecified
      * @param resourceResolver the resource resolver
      */
-    public FontManagerConfigurator(Configuration cfg, URI defaultBaseUri,
+    public FontManagerConfigurator(Configuration cfg, URI baseURI, URI fallbackURI,
             ResourceResolver resourceResolver) {
         this.cfg = cfg;
-        this.defaultBaseUri = defaultBaseUri;
+        this.baseURI = baseURI;
+        this.fallbackURI = fallbackURI;
         this.resourceResolver = resourceResolver;
     }
 
@@ -77,13 +81,13 @@ public class FontManagerConfigurator {
                 URI fontBase = InternalResourceResolver.getBaseURI(cfg.getChild("font-base")
                                                                       .getValue(null));
                 fontManager.setResourceResolver(ResourceResolverFactory.createInternalResourceResolver(
-                        defaultBaseUri.resolve(fontBase), resourceResolver));
+                        baseURI.resolve(fontBase), resourceResolver));
             } catch (URISyntaxException use) {
                 LogUtil.handleException(log, use, true);
             }
         } else {
             fontManager.setResourceResolver(ResourceResolverFactory.createInternalResourceResolver(
-                    defaultBaseUri, resourceResolver));
+                    fallbackURI, resourceResolver));
         }
         // caching (fonts)
         if (cfg.getChild("use-cache", false) != null) {

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/FontTriplet.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/FontTriplet.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/FontTriplet.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/FontTriplet.java Mon Jan 13 20:39:34 2014
@@ -27,7 +27,8 @@ import java.io.Serializable;
  */
 public class FontTriplet implements Comparable<FontTriplet>, Serializable {
 
-    public static final FontTriplet DEFAULT_FONT_TRIPLET = new FontTriplet("any", Font.STYLE_NORMAL, Font.WEIGHT_NORMAL);
+    public static final FontTriplet DEFAULT_FONT_TRIPLET
+            = new FontTriplet("any", Font.STYLE_NORMAL, Font.WEIGHT_NORMAL);
 
     /** serial version UID */
     private static final long serialVersionUID = 1168991106658033508L;

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/apps/TTFReader.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/apps/TTFReader.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/apps/TTFReader.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/apps/TTFReader.java Mon Jan 13 20:39:34 2014
@@ -39,7 +39,6 @@ import org.apache.fop.fonts.truetype.Fon
 import org.apache.fop.fonts.truetype.OFFontLoader;
 import org.apache.fop.fonts.truetype.TTFFile;
 
-// CSOFF: InnerAssignmentCheck
 // CSOFF: LineLengthCheck
 
 /**

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/truetype/OTFSubSetFile.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/truetype/OTFSubSetFile.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/truetype/OTFSubSetFile.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/truetype/OTFSubSetFile.java Mon Jan 13 20:39:34 2014
@@ -451,7 +451,8 @@ public class OTFSubSetFile extends OTFFi
                 localUniques = foundLocalUniquesB.get(subsetFDSelect.get(subsetGlyphs.get(gid)).getNewFDIndex());
                 byte[] data = charStringsIndex.getValue(gid);
                 subsetLocalIndexSubr = fdSubrs.get(subsetFDSelect.get(subsetGlyphs.get(gid)).getNewFDIndex());
-                subsetLocalSubrCount = foundLocalUniques.get(subsetFDSelect.get(subsetGlyphs.get(gid)).getNewFDIndex()).size();
+                subsetLocalSubrCount = foundLocalUniques.get(
+                        subsetFDSelect.get(subsetGlyphs.get(gid)).getNewFDIndex()).size();
                 data = readCharStringData(data, subsetLocalSubrCount);
                 subsetCharStringsIndex.add(data);
             }
@@ -561,8 +562,12 @@ public class OTFSubSetFile extends OTFFi
             int privateOffset = privateEntry.getOperands().get(1).intValue();
             Map<String, DICTEntry> privateDICT = cffReader.getPrivateDict(privateEntry);
 
-            int localSubrOffset = privateOffset + privateDICT.get("Subrs").getOperands().get(0).intValue();
-            localIndexSubr = cffReader.readIndex(localSubrOffset);
+            if (privateDICT.get("Subrs") != null) {
+                int localSubrOffset = privateOffset + privateDICT.get("Subrs").getOperands().get(0).intValue();
+                localIndexSubr = cffReader.readIndex(localSubrOffset);
+            } else {
+                localIndexSubr = cffReader.readIndex(null);
+            }
         }
 
         globalIndexSubr = cffReader.getGlobalIndexSubr();

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/type1/AFMFile.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/type1/AFMFile.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/type1/AFMFile.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/type1/AFMFile.java Mon Jan 13 20:39:34 2014
@@ -319,7 +319,7 @@ public class AFMFile {
      */
     public void addCharMetrics(AFMCharMetrics metrics) {
         String name = metrics.getCharName();
-        if (metrics.getUnicodeSequence() == null) {
+        if (metrics.getUnicodeSequence() == null && name.equals(".notdef")) {
             //Ignore as no Unicode assignment is possible
             return;
         }

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/type1/Type1FontLoader.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/type1/Type1FontLoader.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/type1/Type1FontLoader.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/fonts/type1/Type1FontLoader.java Mon Jan 13 20:39:34 2014
@@ -173,7 +173,21 @@ public class Type1FontLoader extends Fon
                 addUnencodedBasedOnAFM(afm);
             }
         } else {
-            if (pfm.getCharSet() >= 0 && pfm.getCharSet() <= 2) {
+            if (pfm.getCharSet() == 2 && !pfm.getCharSetName().equals("Symbol")) {
+                int[] table = new int[256];
+                String[] charNameMap = new String[256];
+                int j = 0;
+                for (int i = pfm.getFirstChar(); i < pfm.getLastChar(); i++) {
+                    if (j < table.length) {
+                        table[j] = i;
+                        table[j + 1] = i;
+                        j += 2;
+                    }
+                    charNameMap[i] = String.format("x%03o", i);
+                }
+                CodePointMapping mapping  = new CodePointMapping("custom", table, charNameMap);
+                singleFont.setEncoding(mapping);
+            } else if (pfm.getCharSet() >= 0 && pfm.getCharSet() <= 2) {
                 singleFont.setEncoding(pfm.getCharSetName() + "Encoding");
             } else {
                 log.warn("The PFM reports an unsupported encoding ("
@@ -393,10 +407,7 @@ public class Type1FontLoader extends Fon
         List<AFMCharMetrics> chars = afm.getCharMetrics();
         for (AFMCharMetrics charMetrics : chars) {
             if (charMetrics.getCharCode() >= 0) {
-                String u = charMetrics.getUnicodeSequence();
-                if (u != null && u.length() == 1) {
-                    mappingCount++;
-                }
+                mappingCount++;
             }
         }
         // ...and now build the table.
@@ -409,6 +420,10 @@ public class Type1FontLoader extends Fon
                 String unicodes = charMetrics.getUnicodeSequence();
                 if (unicodes == null) {
                     log.info("No Unicode mapping for glyph: " + charMetrics);
+                    table[idx] = charMetrics.getCharCode();
+                    idx++;
+                    table[idx] = charMetrics.getCharCode();
+                    idx++;
                 } else if (unicodes.length() == 1) {
                     table[idx] = charMetrics.getCharCode();
                     idx++;

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java Mon Jan 13 20:39:34 2014
@@ -867,6 +867,7 @@ public class BlockContainerLayoutManager
             transferForeignAttributes(viewportBlockArea);
 
             TraitSetter.setProducerID(viewportBlockArea, getBlockContainerFO().getId());
+            TraitSetter.setLayer(viewportBlockArea, getBlockContainerFO().getLayer());
             TraitSetter.addBorders(viewportBlockArea,
                     getBlockContainerFO().getCommonBorderPaddingBackground(),
                     discardBorderBefore, discardBorderAfter, false, false, this);

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java Mon Jan 13 20:39:34 2014
@@ -359,7 +359,7 @@ public class BlockLayoutManager extends 
 
             curBlockArea.setIPD(super.getContentAreaIPD());
 
-            curBlockArea.setBidiLevel(getBlockFO().getBidiLevel());
+            curBlockArea.setBidiLevel(getBlockFO().getBidiLevelRecursive());
 
             TraitSetter.addBreaks(curBlockArea,
                     getBlockFO().getBreakBefore(), getBlockFO().getBreakAfter());
@@ -380,6 +380,7 @@ public class BlockLayoutManager extends 
                     getBlockFO().getCommonBorderPaddingBackground(),
                     startIndent, endIndent,
                     this);
+            TraitSetter.setLayer(curBlockArea, getBlockFO().getLayer());
 
             curBlockArea.setLocale(getBlockFO().getCommonHyphenation().getLocale());
             curBlockArea.setLocation(FONode.getLocatorString(getBlockFO().getLocator()));

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/TraitSetter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/TraitSetter.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/TraitSetter.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/TraitSetter.java Mon Jan 13 20:39:34 2014
@@ -617,4 +617,15 @@ public final class TraitSetter {
             area.addTrait(Trait.PROD_ID, id);
         }
     }
+
+    /**
+     * Sets the optional content group layer as a trait on the area.
+     * @param area the area to set the traits on
+     * @param layer the layer ID to set
+     */
+    public static void setLayer(Area area, String layer) {
+        if (layer != null && layer.length() > 0) {
+            area.addTrait(Trait.LAYER, layer);
+        }
+    }
 }

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java Mon Jan 13 20:39:34 2014
@@ -213,6 +213,7 @@ public class InlineLayoutManager extends
         }
         if (fobj instanceof Inline || fobj instanceof BasicLink) {
             TraitSetter.setProducerID(area, fobj.getId());
+            TraitSetter.setLayer(area, fobj.getLayer());
         }
         return area;
     }

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java Mon Jan 13 20:39:34 2014
@@ -238,6 +238,8 @@ public class ListBlockLayoutManager exte
             int contentIPD = referenceIPD - getIPIndents();
             curBlockArea.setIPD(contentIPD);
 
+            curBlockArea.setBidiLevel(getListBlockFO().getBidiLevel());
+
             setCurrentArea(curBlockArea);
         }
         return curBlockArea;

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/list/ListItemContentLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/list/ListItemContentLayoutManager.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/list/ListItemContentLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/list/ListItemContentLayoutManager.java Mon Jan 13 20:39:34 2014
@@ -181,6 +181,7 @@ public class ListItemContentLayoutManage
             //TODO: Check - itemIPD never set?
             curBlockArea.setIPD(itemIPD);
             //curBlockArea.setHeight();
+            curBlockArea.setBidiLevel(getPartFO().getBidiLevel());
 
             TraitSetter.setProducerID(curBlockArea, getPartFO().getId());
 

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java Mon Jan 13 20:39:34 2014
@@ -628,6 +628,8 @@ public class ListItemLayoutManager exten
             int contentIPD = referenceIPD - getIPIndents();
             curBlockArea.setIPD(contentIPD);
 
+            curBlockArea.setBidiLevel(fo.getBidiLevel());
+
             setCurrentArea(curBlockArea);
         }
         return curBlockArea;

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/table/TableAndCaptionLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/table/TableAndCaptionLayoutManager.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/table/TableAndCaptionLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/table/TableAndCaptionLayoutManager.java Mon Jan 13 20:39:34 2014
@@ -184,6 +184,7 @@ public class TableAndCaptionLayoutManage
             Area parentArea = parentLayoutManager.getParentArea(curBlockArea);
             int referenceIPD = parentArea.getIPD();
             curBlockArea.setIPD(referenceIPD);
+            curBlockArea.setBidiLevel(getTableAndCaptionFO().getBidiLevel());
             // Get reference IPD from parentArea
             setCurrentArea(curBlockArea); // ??? for generic operations
         }

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/table/TableCaptionLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/table/TableCaptionLayoutManager.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/table/TableCaptionLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/table/TableCaptionLayoutManager.java Mon Jan 13 20:39:34 2014
@@ -180,6 +180,7 @@ public class TableCaptionLayoutManager e
             Area parentArea = parentLayoutManager.getParentArea(curBlockArea);
             int referenceIPD = parentArea.getIPD();
             curBlockArea.setIPD(referenceIPD);
+            curBlockArea.setBidiLevel(getTableCaptionFO().getBidiLevel());
             // Get reference IPD from parentArea
             setCurrentArea(curBlockArea); // ??? for generic operations
         }

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/table/TableCellLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/table/TableCellLayoutManager.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/table/TableCellLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/layoutmgr/table/TableCellLayoutManager.java Mon Jan 13 20:39:34 2014
@@ -442,12 +442,14 @@ public class TableCellLayoutManager exte
                 Block[][] blocks = new Block[getTableCell().getNumberRowsSpanned()][getTableCell()
                         .getNumberColumnsSpanned()];
                 GridUnit[] gridUnits = (GridUnit[]) primaryGridUnit.getRows().get(startRow);
+                int level = getTableCell().getBidiLevelRecursive();
                 for (int x = 0; x < getTableCell().getNumberColumnsSpanned(); x++) {
                     GridUnit gu = gridUnits[x];
                     BorderInfo border = gu.getBorderBefore(borderBeforeWhich);
                     int borderWidth = border.getRetainedWidth() / 2;
                     if (borderWidth > 0) {
-                        addBorder(blocks, startRow, x, Trait.BORDER_BEFORE, border, firstOnPage);
+                        addBorder(blocks, startRow, x, Trait.BORDER_BEFORE, border,
+                                  firstOnPage, level);
                         adjustYOffset(blocks[startRow][x], -borderWidth);
                         adjustBPD(blocks[startRow][x], -borderWidth);
                     }
@@ -458,7 +460,8 @@ public class TableCellLayoutManager exte
                     BorderInfo border = gu.getBorderAfter(borderAfterWhich);
                     int borderWidth = border.getRetainedWidth() / 2;
                     if (borderWidth > 0) {
-                        addBorder(blocks, endRow, x, Trait.BORDER_AFTER, border, lastOnPage);
+                        addBorder(blocks, endRow, x, Trait.BORDER_AFTER, border,
+                                  lastOnPage, level);
                         adjustBPD(blocks[endRow][x], -borderWidth);
                     }
                 }
@@ -467,7 +470,8 @@ public class TableCellLayoutManager exte
                     BorderInfo border = gridUnits[0].getBorderStart();
                     int borderWidth = border.getRetainedWidth() / 2;
                     if (borderWidth > 0) {
-                        addBorder(blocks, y, 0, Trait.BORDER_START, border, inFirstColumn);
+                        addBorder(blocks, y, 0, Trait.BORDER_START, border,
+                                  inFirstColumn, level);
                         adjustXOffset(blocks[y][0], borderWidth);
                         adjustIPD(blocks[y][0], -borderWidth);
                     }
@@ -475,7 +479,7 @@ public class TableCellLayoutManager exte
                     borderWidth = border.getRetainedWidth() / 2;
                     if (borderWidth > 0) {
                         addBorder(blocks, y, gridUnits.length - 1, Trait.BORDER_END, border,
-                                inLastColumn);
+                                  inLastColumn, level);
                         adjustIPD(blocks[y][gridUnits.length - 1], -borderWidth);
                     }
                 }
@@ -512,10 +516,12 @@ public class TableCellLayoutManager exte
             if (getTableCell().getDisplayAlign() == EN_CENTER) {
                 Block space = new Block();
                 space.setBPD((cellBPD - usedBPD) / 2);
+                space.setBidiLevel(getTableCell().getBidiLevelRecursive());
                 curBlockArea.addBlock(space);
             } else if (getTableCell().getDisplayAlign() == EN_AFTER) {
                 Block space = new Block();
                 space.setBPD(cellBPD - usedBPD);
+                space.setBidiLevel(getTableCell().getBidiLevelRecursive());
                 curBlockArea.addBlock(space);
             }
         }
@@ -591,11 +597,12 @@ public class TableCellLayoutManager exte
     }
 
     private void addBorder(Block[][] blocks, int i, int j, Integer side, BorderInfo border,
-            boolean outer) {
+                           boolean outer, int level) {
         if (blocks[i][j] == null) {
             blocks[i][j] = new Block();
             blocks[i][j].addTrait(Trait.IS_REFERENCE_AREA, Boolean.TRUE);
             blocks[i][j].setPositioning(Block.ABSOLUTE);
+            blocks[i][j].setBidiLevel(level);
         }
         blocks[i][j].addTrait(side, BorderProps.makeRectangular(border.getStyle(),
                 border.getRetainedWidth(), border.getColor(),
@@ -630,6 +637,7 @@ public class TableCellLayoutManager exte
         block.setBPD(bpd);
         block.setXOffset(xoffset + startIndent - paddingStart);
         block.setYOffset(yoffset + borderBeforeWidth);
+        block.setBidiLevel(getTableCell().getBidiLevelRecursive());
         return block;
     }
 
@@ -655,6 +663,7 @@ public class TableCellLayoutManager exte
             curBlockArea.setXOffset(xoffset + startIndent);
             curBlockArea.setYOffset(yoffset);
             curBlockArea.setIPD(cellIPD);
+            curBlockArea.setBidiLevel(getTableCell().getBidiLevelRecursive());
 
             /*Area parentArea =*/ parentLayoutManager.getParentArea(curBlockArea);
             // Get reference IPD from parentArea

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/pdf/AbstractPDFStream.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/pdf/AbstractPDFStream.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/pdf/AbstractPDFStream.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/pdf/AbstractPDFStream.java Mon Jan 13 20:39:34 2014
@@ -143,7 +143,7 @@ public abstract class AbstractPDFStream 
      */
     protected int outputStreamData(StreamCache encodedStream, OutputStream out) throws IOException {
         int length = 0;
-        byte[] p = encode("stream\n");
+        byte[] p = encode("\nstream\n");
         out.write(p);
         length += p.length;
 
@@ -186,7 +186,7 @@ public abstract class AbstractPDFStream 
                 throws IOException {
         int bytesWritten = 0;
         //Stream header
-        byte[] buf = encode("stream\n");
+        byte[] buf = encode("\nstream\n");
         out.write(buf);
         bytesWritten += buf.length;
 

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/pdf/PDFDictionary.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/pdf/PDFDictionary.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/pdf/PDFDictionary.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/pdf/PDFDictionary.java Mon Jan 13 20:39:34 2014
@@ -131,7 +131,7 @@ public class PDFDictionary extends PDFOb
         } else {
             textBuffer.append('\n');
         }
-        textBuffer.append(">>\n");
+        textBuffer.append(">>");
     }
 
 }

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/pdf/PDFDocument.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/pdf/PDFDocument.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/pdf/PDFDocument.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/pdf/PDFDocument.java Mon Jan 13 20:39:34 2014
@@ -155,6 +155,12 @@ public class PDFDocument {
 
     private List<PDFLaunch> launches = new ArrayList<PDFLaunch>();
 
+    private List<PDFLayer> layers;
+
+    private List<PDFNavigator> navigators;
+
+    private List<PDFNavigatorAction> navigatorActions;
+
     private PDFFactory factory;
 
     private FileIDGenerator fileIDGenerator;
@@ -477,6 +483,24 @@ public class PDFDocument {
         if (obj instanceof PDFGoToRemote) {
             this.gotoremotes.add((PDFGoToRemote) obj);
         }
+        if (obj instanceof PDFLayer) {
+            if (this.layers == null) {
+                this.layers = new ArrayList<PDFLayer>();
+            }
+            this.layers.add((PDFLayer) obj);
+        }
+        if (obj instanceof PDFNavigator) {
+            if (this.navigators == null) {
+                this.navigators = new ArrayList<PDFNavigator>();
+            }
+            this.navigators.add((PDFNavigator) obj);
+        }
+        if (obj instanceof PDFNavigatorAction) {
+            if (this.navigatorActions == null) {
+                this.navigatorActions = new ArrayList<PDFNavigatorAction>();
+            }
+            this.navigatorActions.add((PDFNavigatorAction) obj);
+        }
     }
 
     /**
@@ -890,6 +914,34 @@ public class PDFDocument {
     }
 
     /**
+     *
+     */
+    public PDFReference resolveExtensionReference(String id) {
+        if (layers != null) {
+            for (PDFLayer layer : layers) {
+                if (layer.hasId(id)) {
+                    return layer.makeReference();
+                }
+            }
+        }
+        if (navigators != null) {
+            for (PDFNavigator navigator : navigators) {
+                if (navigator.hasId(id)) {
+                    return navigator.makeReference();
+                }
+            }
+        }
+        if (navigatorActions != null) {
+            for (PDFNavigatorAction action : navigatorActions) {
+                if (action.hasId(id)) {
+                    return action.makeReference();
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
      * Writes out the entire document
      *
      * @param stream the OutputStream to output the document to
@@ -1009,7 +1061,7 @@ public class PDFDocument {
         streamIndirectObjects(trailerObjects, stream);
         TrailerDictionary trailerDictionary = createTrailerDictionary();
         long startxref = trailerOutputHelper.outputCrossReferenceObject(stream, trailerDictionary);
-        String trailer = "startxref\n" + startxref + "\n%%EOF\n";
+        String trailer = "\nstartxref\n" + startxref + "\n%%EOF\n";
         stream.write(encode(trailer));
     }
 

Modified: xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/pdf/PDFFactory.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/pdf/PDFFactory.java?rev=1557840&r1=1557839&r2=1557840&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/pdf/PDFFactory.java (original)
+++ xmlgraphics/fop/branches/Temp_InlineContainer/src/java/org/apache/fop/pdf/PDFFactory.java Mon Jan 13 20:39:34 2014
@@ -310,12 +310,7 @@ public class PDFFactory {
                                                theFunctionDataStream,
                                                theFilter);
 
-        PDFFunction oldfunc = getDocument().findFunction(function);
-        if (oldfunc == null) {
-            getDocument().registerObject(function);
-        } else {
-            function = oldfunc;
-        }
+        function = registerFunction(function);
         return (function);
     }
 
@@ -352,12 +347,7 @@ public class PDFFactory {
         PDFFunction function = new PDFFunction(theFunctionType, theDomain,
                                                theRange, theCZero, theCOne,
                                                theInterpolationExponentN);
-        PDFFunction oldfunc = getDocument().findFunction(function);
-        if (oldfunc == null) {
-            getDocument().registerObject(function);
-        } else {
-            function = oldfunc;
-        }
+        function = registerFunction(function);
         return (function);
     }
 
@@ -407,12 +397,7 @@ public class PDFFactory {
                                                theRange, theFunctions,
                                                theBounds, theEncode);
 
-        PDFFunction oldfunc = getDocument().findFunction(function);
-        if (oldfunc == null) {
-            getDocument().registerObject(function);
-        } else {
-            function = oldfunc;
-        }
+        function = registerFunction(function);
         return (function);
     }
 
@@ -434,14 +419,23 @@ public class PDFFactory {
                                                theRange,
                                                theFunctionDataStream);
 
+        function = registerFunction(function);
+        return (function);
+
+    }
+
+    /**
+     * Registers a function against the document
+     * @param function The function to register
+     */
+    public PDFFunction registerFunction(PDFFunction function) {
         PDFFunction oldfunc = getDocument().findFunction(function);
         if (oldfunc == null) {
             getDocument().registerObject(function);
         } else {
             function = oldfunc;
         }
-        return (function);
-
+        return function;
     }
 
     /* ========================= shadings ================================== */
@@ -481,20 +475,7 @@ public class PDFFactory {
                                             theBBox, theAntiAlias, theDomain,
                                             theMatrix, theFunction);
 
-        PDFShading oldshad = getDocument().findShading(shading);
-        if (oldshad == null) {
-            getDocument().registerObject(shading);
-        } else {
-            shading = oldshad;
-        }
-
-        // add this shading to resources
-        if (res != null) {
-            res.getPDFResources().addShading(shading);
-        } else {
-            getDocument().getResources().addShading(shading);
-        }
-
+        shading = registerShading(res, shading);
         return (shading);
     }
 
@@ -534,18 +515,7 @@ public class PDFFactory {
                                             theDomain, theFunction,
                                             theExtend);
 
-        PDFShading oldshad = getDocument().findShading(shading);
-        if (oldshad == null) {
-            getDocument().registerObject(shading);
-        } else {
-            shading = oldshad;
-        }
-
-        if (res != null) {
-            res.getPDFResources().addShading(shading);
-        } else {
-            getDocument().getResources().addShading(shading);
-        }
+        shading = registerShading(res, shading);
 
         return (shading);
     }
@@ -591,18 +561,7 @@ public class PDFFactory {
                                             theBitsPerFlag, theDecode,
                                             theFunction);
 
-        PDFShading oldshad = getDocument().findShading(shading);
-        if (oldshad == null) {
-            getDocument().registerObject(shading);
-        } else {
-            shading = oldshad;
-        }
-
-        if (res != null) {
-            res.getPDFResources().addShading(shading);
-        } else {
-            getDocument().getResources().addShading(shading);
-        }
+        shading = registerShading(res, shading);
 
         return (shading);
     }
@@ -645,6 +604,17 @@ public class PDFFactory {
                                             theBitsPerComponent, theDecode,
                                             theVerticesPerRow, theFunction);
 
+        shading = registerShading(res, shading);
+
+        return (shading);
+    }
+
+    /**
+     * Registers a shading object against the document
+     * @param res The PDF resource context
+     * @param shading The shading object to be registered
+     */
+    public PDFShading registerShading(PDFResourceContext res, PDFShading shading) {
         PDFShading oldshad = getDocument().findShading(shading);
         if (oldshad == null) {
             getDocument().registerObject(shading);
@@ -652,13 +622,13 @@ public class PDFFactory {
             shading = oldshad;
         }
 
+        // add this shading to resources
         if (res != null) {
             res.getPDFResources().addShading(shading);
         } else {
             getDocument().getResources().addShading(shading);
         }
-
-        return (shading);
+        return shading;
     }
 
     /* ========================= patterns ================================== */
@@ -707,6 +677,22 @@ public class PDFFactory {
         return (pattern);
     }
 
+    public PDFPattern registerPattern(PDFResourceContext res, PDFPattern pattern) {
+        PDFPattern oldpatt = getDocument().findPattern(pattern);
+        if (oldpatt == null) {
+            getDocument().registerObject(pattern);
+        } else {
+            pattern = oldpatt;
+        }
+
+        if (res != null) {
+            res.getPDFResources().addPattern(pattern);
+        } else {
+            getDocument().getResources().addPattern(pattern);
+        }
+        return pattern;
+    }
+
     /**
      * Make a smooth shading pattern
      *
@@ -1821,4 +1807,28 @@ public class PDFFactory {
         return obj;
     }
 
+    public PDFLayer makeLayer(String id) {
+        PDFLayer layer = new PDFLayer(id);
+        getDocument().registerObject(layer);
+        return layer;
+    }
+
+    public PDFSetOCGStateAction makeSetOCGStateAction(String id) {
+        PDFSetOCGStateAction action = new PDFSetOCGStateAction(id);
+        getDocument().registerObject(action);
+        return action;
+    }
+
+    public PDFTransitionAction makeTransitionAction(String id) {
+        PDFTransitionAction action = new PDFTransitionAction(id);
+        getDocument().registerObject(action);
+        return action;
+    }
+
+    public PDFNavigator makeNavigator(String id) {
+        PDFNavigator navigator = new PDFNavigator(id);
+        getDocument().registerObject(navigator);
+        return navigator;
+    }
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org