http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2489

*** shadow/2489 Fri Jul  6 17:15:28 2001
--- shadow/2489.tmp.22002       Fri Jul  6 17:15:29 2001
***************
*** 0 ****
--- 1,85 ----
+ +============================================================================+
+ | leader CID font bug                                                        |
+ +----------------------------------------------------------------------------+
+ |        Bug #: 2489                        Product: Fop                     |
+ |       Status: NEW                         Version: all                     |
+ |   Resolution:                            Platform: All                     |
+ |     Severity: Major                    OS/Version: Other                   |
+ |     Priority: Other                     Component: pdf renderer            |
+ +----------------------------------------------------------------------------+
+ |  Assigned To: [EMAIL PROTECTED]                                       |
+ |  Reported By: [EMAIL PROTECTED]                                     |
+ |      CC list: Cc:                                                          |
+ +----------------------------------------------------------------------------+
+ |          URL:                                                              |
+ +============================================================================+
+ |                              DESCRIPTION                                   |
+ If the dots are typeset with a CID font, the result is unpredictable. Here is a
+ patch, which I posted to fop-dev earlier but nobody seems to want to commit 
+ it to CVS after two days...
+ ---------------------
+ Apply this patch to:
+ xml-fop/src/org/apache/fop/layout/LineArea.java
+ 
+ A bug was introduced between version 1.42 and 1.43 of LineArea 
+ which uses a lot of mapChar to cope with bug 1618 (CVS log has
+ a typo error instead to "1681"), and forgot to change the
+ leader calculation.
+ 
+ This bug should have caused FOP to crash with any XSL:FO input 
+ that has a leader with dots or space with non-pdf-standard 
+ fonts. I wonder why nobody spotted it in release 0.19? My 
+ last CVS build was May 16 and it worked fine - the fatal bug 
+ was introduced on 12 June and went into release 0.19 and 
+ went unreported for nearly a month... 
+ 
+ Somebody please patch this into the CVS tree?
+ 
+ =============================================================
+ *** LineArea.java-bad Tue Jun 12 12:37:42 2001
+ --- LineArea.java     Wed Jul  4 00:44:44 2001
+ ***************
+ *** 751,769 ****
+          * creates a leader as String out of the given char and the leader 
+ length
+          * and wraps it in an InlineArea which is returned
+          */
+ !     private InlineArea buildSimpleLeader(int charNumber, int leaderLength) {
+ !             int width = this.currentFontState.width(charNumber);
+               if (width == 0) {
+ -                     char c = (char) charNumber;
+                       MessageHandler.errorln("char " + c + " has width 0. 
+ Using width 100 instead.");
+                       width = 100;
+               }
+           int factor = (int) Math.floor (leaderLength /
+                                          width);
+           char [] leaderChars = new char [factor];
+ -         char fillChar = (char) charNumber;
+           for (int i = 0; i < factor; i ++) {
+ !             leaderChars[i] = fillChar;
+           }
+           WordArea leaderPatternArea =
+             new WordArea(currentFontState, this.red, this.green,
+ --- 751,767 ----
+          * creates a leader as String out of the given char and the leader 
+ length
+          * and wraps it in an InlineArea which is returned
+          */
+ !     private InlineArea buildSimpleLeader(char c, int leaderLength) {
+ !             int width = this.currentFontState.width
+ (currentFontState.mapChar(c));
+               if (width == 0) {
+                       MessageHandler.errorln("char " + c + " has width 0. 
+ Using width 100 instead.");
+                       width = 100;
+               }
+           int factor = (int) Math.floor (leaderLength /
+                                          width);
+           char [] leaderChars = new char [factor];
+           for (int i = 0; i < factor; i ++) {
+ !             leaderChars[i] = c;
+           }
+           WordArea leaderPatternArea =
+             new WordArea(currentFontState, this.red, this.green,
+ ==============================

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to