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 to...@apache.org on 2001/06/06 21:56:12 UTC
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
tore 01/06/06 12:56:12
Modified: src/org/apache/fop/layout LineArea.java
src/org/apache/fop/render/pdf PDFRenderer.java
Log:
PR: 1681
Moved mapping from character to cid from LineArea to PDFRenderer. This fixes bug no 1681
and other issues with wrong characters being displayed when using CID fonts.
Revision Changes Path
1.43 +39 -29 xml-fop/src/org/apache/fop/layout/LineArea.java
Index: LineArea.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/layout/LineArea.java,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- LineArea.java 2001/05/01 01:02:13 1.42
+++ LineArea.java 2001/06/06 19:56:05 1.43
@@ -1,4 +1,4 @@
-/*-- $Id: LineArea.java,v 1.42 2001/05/01 01:02:13 arved Exp $ --
+/*-- $Id: LineArea.java,v 1.43 2001/06/06 19:56:05 tore Exp $ --
*
* Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
* For details on use and redistribution please refer to the
@@ -185,8 +185,8 @@
char c = data[i];
if (!((c == ' ') || (c == '\n') || (c == '\r') ||
(c == '\t'))) {
- c = data[i] = currentFontState.mapChar(c);
- charWidth = currentFontState.width(c);
+ //c = data[i] = currentFontState.mapChar(c);
+ charWidth = currentFontState.width(currentFontState.mapChar(c));
isText = true;
if (charWidth <= 0)
charWidth = whitespaceWidth;
@@ -373,7 +373,7 @@
return wordStart;
}
} else if (this.wrapOption == WrapOption.WRAP) {
- if (this.hyphProps.hyphenate == Hyphenate.TRUE) {
+ if (hyphProps.hyphenate == Hyphenate.TRUE) {
return this.doHyphenation(dataCopy,i,wordStart,this.getContentWidth() - (finalWidth + spaceWidth + pendingWidth));
} else {
return wordStart;
@@ -445,10 +445,12 @@
int leaderAlignment) {
WordArea leaderPatternArea;
int leaderLength = 0;
- char dotIndex = currentFontState.mapChar('.');
- int dotWidth = currentFontState.width(dotIndex);
- char whitespaceIndex = currentFontState.mapChar(' ');
- int whitespaceWidth = currentFontState.width(whitespaceIndex);
+ char dotIndex = '.'; // currentFontState.mapChar('.');
+ int dotWidth =
+ currentFontState.width(currentFontState.mapChar(dotIndex));
+ char whitespaceIndex = ' ';//currentFontState.mapChar(' ');
+ int whitespaceWidth =
+ currentFontState.width(currentFontState.mapChar(whitespaceIndex));
int remainingWidth =
this.getContentWidth() - this.getCurrentXPosition();
@@ -888,7 +890,8 @@
//no hyphenation points, but a inword non-letter character
} else if (hyph == null && preString != null){
remainingString.append(preString);
- this.addMapWord(startChar,remainingString);
+ //is.addMapWord(startChar,remainingString);
+ this.addWord(startChar,remainingString);
return wordStart + remainingString.length();
//hyphenation points and no inword non-letter character
} else if (hyph != null && preString == null) {
@@ -896,7 +899,8 @@
if (index != -1) {
remainingString.append(hyph.getPreHyphenText(index));
remainingString.append(this.hyphProps.hyphenationChar);
- this.addMapWord(startChar,remainingString);
+ //is.addMapWord(startChar,remainingString);
+ this.addWord(startChar,remainingString);
return wordStart + remainingString.length()-1;
}
//hyphenation points and a inword non letter character
@@ -905,11 +909,13 @@
if (index != -1) {
remainingString.append(preString.append(hyph.getPreHyphenText(index)));
remainingString.append(this.hyphProps.hyphenationChar);
- this.addMapWord(startChar,remainingString);
+ //is.addMapWord(startChar,remainingString);
+ this.addWord(startChar,remainingString);
return wordStart + remainingString.length()-1;
} else {
remainingString.append(preString) ;
- this.addMapWord(startChar,remainingString);
+ //is.addMapWord(startChar,remainingString);
+ this.addWord(startChar,remainingString);
return wordStart + remainingString.length();
}
}
@@ -930,20 +936,22 @@
assume that it's already done.
*/
private int getWordWidth (String word, boolean doMap) {
- int wordLength = word.length();
- int width = 0;
- char [] characters = new char [wordLength];
- word.getChars(0,wordLength,characters,0);
- char currentChar;
- for (int i = 0; i < wordLength; i++) {
- if (doMap)
- currentChar = currentFontState.mapChar(characters[i]);
- else
- currentChar=characters[i];
-
- width += this.currentFontState.width(currentChar);
- }
- return width;
+ if (word == null)
+ return 0;
+ int wordLength = word.length();
+ int width = 0;
+ char [] characters = new char [wordLength];
+ word.getChars(0,wordLength,characters,0);
+ char currentChar;
+ for (int i = 0; i < wordLength; i++) {
+ if (doMap)
+ currentChar = currentFontState.mapChar(characters[i]);
+ else
+ currentChar=characters[i];
+
+ width += this.currentFontState.width(currentChar);
+ }
+ return width;
}
public int getRemainingWidth()
@@ -1018,9 +1026,11 @@
/** adds a InlineArea containing the String startChar+wordBuf to the line area children. */
private void addWord (char startChar, StringBuffer wordBuf) {
- String word = wordBuf.toString();
+ String word = (wordBuf != null) ? wordBuf.toString() : "";
WordArea hia;
- int startCharWidth = this.currentFontState.width(currentFontState.mapChar(startChar));
+ int startCharWidth =
+ this.currentFontState.width(currentFontState.mapChar(startChar));
+
if (startChar == ' ') {
this.addChild(new InlineSpace(startCharWidth));
} else {
@@ -1030,7 +1040,7 @@
hia.setYOffset(placementOffset);
this.addChild(hia);
}
- int wordWidth = this.getWordWidth(word, false);
+ int wordWidth = this.getWordWidth(word);
hia = new WordArea(currentFontState,
this.red, this.green, this.blue,
word,word.length());
1.68 +3 -3 xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java
Index: PDFRenderer.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -r1.67 -r1.68
--- PDFRenderer.java 2001/05/20 23:56:11 1.67
+++ PDFRenderer.java 2001/06/06 19:56:09 1.68
@@ -1,4 +1,4 @@
-/* $Id: PDFRenderer.java,v 1.67 2001/05/20 23:56:11 arved Exp $
+/* $Id: PDFRenderer.java,v 1.68 2001/06/06 19:56:09 tore Exp $
* Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
* For details on use and redistribution please refer to the
* LICENSE file included with these sources."
@@ -519,7 +519,7 @@
int l = s.length();
for (int i = 0; i < l; i++) {
- char ch = s.charAt(i);
+ char ch = area.getFontState().mapChar(s.charAt(i));
if (!useMultiByte) {
if (ch > 127) {
@@ -542,7 +542,7 @@
if (kerningAvailable && (i + 1) < l) {
addKerning(pdf, (new Integer((int) ch)),
- (new Integer((int) s.charAt(i + 1))),
+ (new Integer((int) area.getFontState().mapChar(s.charAt(i + 1)))),
kerning, startText, endText);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org