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 ga...@apache.org on 2014/08/18 20:43:51 UTC
svn commit: r1618701 - in /xmlgraphics/fop/trunk/src/java/org/apache/fop:
fonts/GlyphMapping.java layoutmgr/inline/TextLayoutManager.java
svg/font/FOPGVTGlyphVector.java
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: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org