svn commit: r1901699 - in /xmlgraphics/fop/trunk/fop-core/src: main/java/org/apache/fop/complexscripts/scripts/ test/java/org/apache/fop/complexscripts/scripts/
[email protected] Mon, 06 Jun 2022 12:56:20 -0000
| Newsgroups | gmane.text.xml.fop.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: ssteiner
Date: Mon Jun 6 12:56:20 2022
New Revision: 1901699
URL: http://svn.apache.org/viewvc?rev=1901699&view=rev
Log:
FOP-3074: Reorder glyphs based on gpa value
Modified:
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/DefaultScriptProcessor.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/HebrewScriptProcessor.java
xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/ThaiScriptProcessor.java
xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/complexscripts/scripts/DefaultScriptTestCase.java
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/DefaultScriptProcessor.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/DefaultScriptProcessor.java?rev=1901699&r1=1901698&r2=1901699&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/DefaultScriptProcessor.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/DefaultScriptProcessor.java Mon Jun 6 12:56:20 2022
@@ -88,7 +88,8 @@ public class DefaultScriptProcessor exte
for (int i = 0; i < ng; i++) {
int gid = ga [ i ];
int gw = unscaledWidths [ i ];
- if (isReorderedMark(gdef, ga, unscaledWidths, i)) {
+ int[] pa = (gpa != null) ? gpa[i] : null;
+ if (isReorderedMark(gdef, ga, unscaledWidths, i, pa)) {
nm++;
}
}
@@ -106,7 +107,7 @@ public class DefaultScriptProcessor exte
int gid = ga [ i ];
int[] pa = (gpa != null) ? gpa [ i ] : null;
CharAssociation ca = aa [ i ];
- if (isReorderedMark(gdef, ga, unscaledWidths, i)) {
+ if (isReorderedMark(gdef, ga, unscaledWidths, i, pa)) {
nga [ k ] = gid;
naa [ k ] = ca;
if (npa != null) {
@@ -150,8 +151,9 @@ public class DefaultScriptProcessor exte
}
}
- protected boolean isReorderedMark(GlyphDefinitionTable gdef, int[] glyphs, int[] unscaledWidths, int index) {
- return gdef.isGlyphClass(glyphs[index], GlyphDefinitionTable.GLYPH_CLASS_MARK);
+ protected boolean isReorderedMark(GlyphDefinitionTable gdef, int[] glyphs, int[] unscaledWidths, int index, int[] pa) {
+ pa = (pa != null) ? pa : new int[1];
+ return gdef.isGlyphClass(glyphs[index], GlyphDefinitionTable.GLYPH_CLASS_MARK) && pa[0] != 0;
}
}
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/HebrewScriptProcessor.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/HebrewScriptProcessor.java?rev=1901699&r1=1901698&r2=1901699&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/HebrewScriptProcessor.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/HebrewScriptProcessor.java Mon Jun 6 12:56:20 2022
@@ -25,7 +25,9 @@ public class HebrewScriptProcessor exten
super(script);
}
- protected boolean isReorderedMark(GlyphDefinitionTable gdef, int[] glyphs, int[] unscaledWidths, int index) {
+ @Override
+ protected boolean isReorderedMark(
+ GlyphDefinitionTable gdef, int[] glyphs, int[] unscaledWidths, int index, int[] pa) {
return gdef.isGlyphClass(glyphs[index], GlyphDefinitionTable.GLYPH_CLASS_MARK) && (unscaledWidths[index] != 0);
}
}
Modified: xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/ThaiScriptProcessor.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/ThaiScriptProcessor.java?rev=1901699&r1=1901698&r2=1901699&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/ThaiScriptProcessor.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/ThaiScriptProcessor.java Mon Jun 6 12:56:20 2022
@@ -25,7 +25,9 @@ public class ThaiScriptProcessor extends
super(script);
}
- protected boolean isReorderedMark(GlyphDefinitionTable gdef, int[] glyphs, int[] unscaledWidths, int index) {
+ @Override
+ protected boolean isReorderedMark(
+ GlyphDefinitionTable gdef, int[] glyphs, int[] unscaledWidths, int index, int[] pa) {
return gdef.isGlyphClass(glyphs[index], GlyphDefinitionTable.GLYPH_CLASS_MARK);
}
}
Modified: xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/complexscripts/scripts/DefaultScriptTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/complexscripts/scripts/DefaultScriptTestCase.java?rev=1901699&r1=1901698&r2=1901699&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/complexscripts/scripts/DefaultScriptTestCase.java (original)
+++ xmlgraphics/fop/trunk/fop-core/src/test/java/org/apache/fop/complexscripts/scripts/DefaultScriptTestCase.java Mon Jun 6 12:56:20 2022
@@ -35,8 +35,24 @@ import org.apache.fop.fonts.MultiByteFon
public class DefaultScriptTestCase {
@Test
- public void testProcessor() {
+ public void testProcessorReorder() {
String in = "\u00F6\u0323";
+ int[][] gpa = new int[2][1];
+ gpa[0][0] = 1;
+ gpa[1][0] = 1;
+ String actual = getFont().reorderCombiningMarks(in, gpa, OTFScript.DEFAULT, null, null).toString();
+ Assert.assertEquals(actual.charAt(0), 803);
+ }
+
+ @Test
+ public void testProcessorNoReorder() {
+ String in = "\u00F6\u0323";
+ int[][] gpa = new int[2][1];
+ String actual = getFont().reorderCombiningMarks(in, gpa, OTFScript.DEFAULT, null, null).toString();
+ Assert.assertEquals(actual.charAt(0), 57344);
+ }
+
+ private MultiByteFont getFont() {
MultiByteFont font = new MultiByteFont(null, null);
font.setWidthArray(new int[0]);
font.setCMap(new CMapSegment[]{new CMapSegment('\u0323', '\u0323', 1)});
@@ -46,7 +62,6 @@ public class DefaultScriptTestCase {
GlyphClassTable.createClassTable(entries), null);
font.setGDEF(
new GlyphDefinitionTable(Collections.singletonList(table), new HashMap<String, ScriptProcessor>()));
- String actual = font.reorderCombiningMarks(in, null, OTFScript.DEFAULT, null, null).toString();
- Assert.assertEquals(actual.charAt(0), 803);
+ return font;
}
}