Author: gadams
Date: Mon Aug 18 18:43:50 2014
New Revision: 1618701
URL: http://svn.apache.org/r1618701
Log:
FOP-2391: ensure mapping is non-null in CS SVG text
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/GlyphMapping.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/svg/font/FOPGVTGlyphVector.java
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/GlyphMapping.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/GlyphMapping.java?rev=1618701&r1=1618700&r2=1618701&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/GlyphMapping.java
(original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/fonts/GlyphMapping.java Mon
Aug 18 18:43:50 2014
@@ -83,22 +83,22 @@ public class GlyphMapping {
public static GlyphMapping doGlyphMapping(TextFragment text, int
startIndex, int endIndex,
Font font, MinOptMax letterSpaceIPD, MinOptMax[]
letterSpaceAdjustArray,
char precedingChar, char breakOpportunityChar, final boolean
endsWithHyphen, int level,
- boolean retainAssociations) {
+ boolean dontOptimizeForIdentityMapping, boolean
retainAssociations) {
GlyphMapping mapping;
if (font.performsSubstitution() || font.performsPositioning()) {
mapping = processWordMapping(text, startIndex, endIndex, font,
- breakOpportunityChar, endsWithHyphen, level,
retainAssociations);
+ breakOpportunityChar, endsWithHyphen, level,
dontOptimizeForIdentityMapping, retainAssociations);
} else {
mapping = processWordNoMapping(text, startIndex, endIndex, font,
- letterSpaceIPD, letterSpaceAdjustArray, precedingChar,
breakOpportunityChar, endsWithHyphen,
- level);
+ letterSpaceIPD, letterSpaceAdjustArray, precedingChar,
breakOpportunityChar, endsWithHyphen, level);
}
return mapping;
}
private static GlyphMapping processWordMapping(TextFragment text, int
startIndex,
int endIndex, final Font font, final char breakOpportunityChar,
- final boolean endsWithHyphen, int level, boolean
retainAssociations) {
+ final boolean endsWithHyphen, int level,
+ boolean dontOptimizeForIdentityMapping, boolean
retainAssociations) {
int e = endIndex; // end index of word in FOText character buffer
int nLS = 0; // # of letter spaces
String script = text.getScript();
@@ -163,7 +163,8 @@ public class GlyphMapping {
return new GlyphMapping(startIndex, e, 0, nLS, ipd, endsWithHyphen,
false,
breakOpportunityChar != 0, font, level, gpa,
- CharUtilities.isSameSequence(mcs, ics) ? null :
mcs.toString(), associations);
+ !dontOptimizeForIdentityMapping &&
CharUtilities.isSameSequence(mcs, ics) ? null : mcs.toString(),
+ associations);
}
/**
@@ -320,6 +321,9 @@ public class GlyphMapping {
}
public void reverse() {
+ if (mapping == null) {
+ return;
+ }
if (mapping.length() > 0) {
mapping = new StringBuffer(mapping).reverse().toString();
}
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java?rev=1618701&r1=1618700&r2=1618701&view=diff
==============================================================================
---
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java
(original)
+++
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java
Mon Aug 18 18:43:50 2014
@@ -934,7 +934,7 @@ public class TextLayoutManager extends L
&& prevMapping.endIndex > 0 ?
foText.charAt(prevMapping.endIndex - 1) : 0;
GlyphMapping mapping = GlyphMapping.doGlyphMapping(foText, thisStart,
lastIndex, font,
letterSpaceIPD, letterSpaceAdjustArray, precedingChar,
breakOpportunityChar,
- endsWithHyphen, level, false);
+ endsWithHyphen, level, false, false);
prevMapping = mapping;
addGlyphMapping(mapping);
tempStart = nextStart;
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/svg/font/FOPGVTGlyphVector.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/svg/font/FOPGVTGlyphVector.java?rev=1618701&r1=1618700&r2=1618701&view=diff
==============================================================================
---
xmlgraphics/fop/trunk/src/java/org/apache/fop/svg/font/FOPGVTGlyphVector.java
(original)
+++
xmlgraphics/fop/trunk/src/java/org/apache/fop/svg/font/FOPGVTGlyphVector.java
Mon Aug 18 18:43:50 2014
@@ -90,7 +90,7 @@ class FOPGVTGlyphVector implements GVTGl
MinOptMax letterSpaceIPD = MinOptMax.ZERO;
MinOptMax[] letterSpaceAdjustments = new
MinOptMax[charIter.getEndIndex() - charIter.getBeginIndex()];
GlyphMapping mapping = GlyphMapping.doGlyphMapping(text,
charIter.getBeginIndex(), charIter.getEndIndex(),
- f, letterSpaceIPD, letterSpaceAdjustments, '\0', '\0', false, 0,
true);
+ f, letterSpaceIPD, letterSpaceAdjustments, '\0', '\0', false, 0,
true, true);
maybeReverse(mapping);
CharacterIterator glyphAsCharIter =
mapping.mapping != null ? new
StringCharacterIterator(mapping.mapping) : charIter;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]