Author: jeremias
Date: Mon Dec 22 06:14:40 2008
New Revision: 728700
URL: http://svn.apache.org/viewvc?rev=728700&view=rev
Log:
Fixed another spacing issue in IFRenderer.
Checks for spacing (kerning, letter-space and word-space combinations).
Modified:
xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/intermediate/IFRenderer.java
xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pdf/PDFPainter.java
xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/block_letter-spacing.xml
xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/kerning_1_on.xml
Modified:
xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/intermediate/IFRenderer.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/intermediate/IFRenderer.java?rev=728700&r1=728699&r2=728700&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/intermediate/IFRenderer.java
(original)
+++
xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/intermediate/IFRenderer.java
Mon Dec 22 06:14:40 2008
@@ -1002,10 +1002,11 @@
protected void renderText(String s,
int[] letterAdjust,
Font font, AbstractTextArea parentArea) {
- //float fontSize = font.getFontSize() / 1000f;
-
int l = s.length();
+ if (letterAdjust != null) {
+ textUtil.adjust(letterAdjust[0]);
+ }
for (int i = 0; i < l; i++) {
char ch = s.charAt(i);
textUtil.addChar(ch);
@@ -1014,8 +1015,8 @@
int tls = (i < l - 1 ? parentArea.getTextLetterSpaceAdjust() :
0);
glyphAdjust += tls;
}
- if (letterAdjust != null && i < l) {
- glyphAdjust += letterAdjust[i];
+ if (letterAdjust != null && i < l - 1) {
+ glyphAdjust += letterAdjust[i + 1];
}
textUtil.adjust(glyphAdjust);
@@ -1035,7 +1036,7 @@
void adjust(int adjust) {
if (adjust != 0) {
- int idx = text.length() - 1;
+ int idx = text.length();
if (idx > dx.length - 1) {
int newSize = Math.max(dx.length, idx + 1) +
INITIAL_BUFFER_SIZE;
int[] newDX = new int[newSize];
Modified:
xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pdf/PDFPainter.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pdf/PDFPainter.java?rev=728700&r1=728699&r2=728700&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pdf/PDFPainter.java
(original)
+++
xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pdf/PDFPainter.java
Mon Dec 22 06:14:40 2008
@@ -283,7 +283,7 @@
int dxl = (dx != null ? dx.length : 0);
if (dx != null && dxl > 0 && dx[0] != 0) {
- textutil.adjustGlyphTJ(-dx[0] / 10f);
+ textutil.adjustGlyphTJ(-dx[0] / fontSize);
}
for (int i = 0; i < l; i++) {
char orgChar = text.charAt(i);
Modified:
xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/block_letter-spacing.xml
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/block_letter-spacing.xml?rev=728700&r1=728699&r2=728700&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/block_letter-spacing.xml
(original)
+++
xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/block_letter-spacing.xml
Mon Dec 22 06:14:40 2008
@@ -62,4 +62,20 @@
<eval expected="2000" xpath="//flow/block[8]/lineArea[3]/text/@tlsadjust"/>
<eval expected="2000" xpath="//flow/block[8]/lineArea[4]/text/@tlsadjust"/>
</checks>
+ <if-checks xmlns:if="http://xmlgraphics.apache.org/fop/intermediate">
+ <eval expected="Default space between characters is defined to be 0pt,
i.e.," xpath="//if:text[2]"/>
+ <eval expected="0" xpath="//if:text[2]/@x"/>
+ <eval expected="24666" xpath="//if:text[2]/@y"/>
+ <true xpath="not(//if:text[2]/@dx)"/>
+
+ <eval expected="Default space between characters is defined to"
xpath="//if:text[14]"/>
+ <eval expected="0" xpath="//if:text[14]/@x"/>
+ <eval expected="197466" xpath="//if:text[14]/@y"/>
+ <eval expected="0 2000 2000 2000 2000 2000 2000 0 4000 2000 2000 2000 2000
0 4000 2000 2000 2000 2000 2000 2000 0 4000 2000 2000 2000 2000 2000 2000 2000
2000 2000 0 4000 2000 0 4000 2000 2000 2000 2000 2000 2000 0 4000 2000"
xpath="//if:text[14]/@dx"/>
+
+ <eval expected="Default space between characters is defined to be"
xpath="//if:text[20]"/>
+ <eval expected="0" xpath="//if:text[20]/@x"/>
+ <eval expected="283866" xpath="//if:text[20]/@y"/>
+ <eval expected="0 1938 1938 1938 1938 1938 1938 0 3836 1938 1938 1938 1938
0 3836 1938 1938 1938 1938 1938 1938 0 3836 1938 1938 1938 1938 1938 1938 1938
1938 1938 0 3836 1938 0 3836 1938 1938 1938 1938 1938 1938 0 3836 1938 0 3836
1938" xpath="//if:text[20]/@dx"/>
+ </if-checks>
</testcase>
Modified:
xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/kerning_1_on.xml
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/kerning_1_on.xml?rev=728700&r1=728699&r2=728700&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/kerning_1_on.xml
(original)
+++
xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/kerning_1_on.xml
Mon Dec 22 06:14:40 2008
@@ -40,6 +40,12 @@
<fo:block letter-spacing="1pt">
<fo:block><fo:inline>VAVAV</fo:inline> text-text Hello
World.</fo:block>
</fo:block>
+ <fo:block word-spacing="5pt">
+ <fo:block><fo:inline>VAVAV</fo:inline> text-text Hello
World.</fo:block>
+ </fo:block>
+ <fo:block letter-spacing="1pt" word-spacing="5pt">
+ <fo:block><fo:inline>VAVAV</fo:inline> text-text Hello
World.</fo:block>
+ </fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
@@ -54,4 +60,46 @@
<eval expected="0"
xpath="//flow/block[2]/block[1]/lineArea/inlineparent/text/word/@offset"/>
<eval expected="0 -960 -840 -960 -840"
xpath="//flow/block[2]/block[1]/lineArea/inlineparent/text/word/@letter-adjust"/>
</checks>
+ <if-checks xmlns:if="http://xmlgraphics.apache.org/fop/intermediate">
+ <eval expected="VAVAV" xpath="//if:text[1]"/>
+ <eval expected="0" xpath="//if:text[1]/@x"/>
+ <eval expected="10266" xpath="//if:text[1]/@y"/>
+ <eval expected="0 -960 -840 -960 -840" xpath="//if:text[1]/@dx"/>
+
+ <eval expected=" text-text Hello World." xpath="//if:text[2]"/>
+ <eval expected="36420" xpath="//if:text[2]/@x"/>
+ <eval expected="10266" xpath="//if:text[2]/@y"/>
+ <eval expected="0 0 0 -360 0 0 0 0 -360 0 0 0 0 0 0 0 0 0 -360 0 180"
xpath="//if:text[2]/@dx"/>
+
+ <eval expected="VAVAV" xpath="//if:text[3]"/>
+ <eval expected="0" xpath="//if:text[3]/@x"/>
+ <eval expected="24666" xpath="//if:text[3]/@y"/>
+ <eval expected="0 40 160 40 160" xpath="//if:text[3]/@dx"/>
+
+ <eval expected=" text-text Hello World." xpath="//if:text[4]"/>
+ <eval expected="40420" xpath="//if:text[4]/@x"/>
+ <eval expected="24666" xpath="//if:text[4]/@y"/>
+ <eval expected="0 2000 1000 640 1000 1000 1000 1000 640 1000 0 2000 1000
1000 1000 1000 0 2000 640 1000 1180 1000 1000" xpath="//if:text[4]/@dx"/>
+
+ <eval expected="VAVAV" xpath="//if:text[5]"/>
+ <eval expected="0" xpath="//if:text[5]/@x"/>
+ <eval expected="39066" xpath="//if:text[5]/@y"/>
+ <eval expected="0 -960 -840 -960 -840" xpath="//if:text[5]/@dx"/>
+
+ <eval expected=" text-text Hello World." xpath="//if:text[6]"/>
+ <eval expected="36420" xpath="//if:text[6]/@x"/>
+ <eval expected="39066" xpath="//if:text[6]/@y"/>
+ <eval expected="0 5000 0 -360 0 0 0 0 -360 0 0 5000 0 0 0 0 0 5000 -360 0
180" xpath="//if:text[6]/@dx"/>
+
+ <eval expected="VAVAV" xpath="//if:text[7]"/>
+ <eval expected="0" xpath="//if:text[7]/@x"/>
+ <eval expected="53466" xpath="//if:text[7]/@y"/>
+ <eval expected="0 40 160 40 160" xpath="//if:text[7]/@dx"/>
+
+ <eval expected=" text-text Hello World." xpath="//if:text[8]"/>
+ <eval expected="40420" xpath="//if:text[8]/@x"/>
+ <eval expected="53466" xpath="//if:text[8]/@y"/>
+ <eval expected="0 5000 1000 640 1000 1000 1000 1000 640 1000 0 5000 1000
1000 1000 1000 0 5000 640 1000 1180 1000 1000" xpath="//if:text[8]/@dx"/>
+
+ </if-checks>
</testcase>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]