tkormann 01/11/09 07:33:27 Modified: sources/org/apache/batik/gvt/font AWTGVTGlyphVector.java Log: Apply Bella's workaround for text under jdk1.4 Revision Changes Path 1.13 +32 -1 xml-batik/sources/org/apache/batik/gvt/font/AWTGVTGlyphVector.java Index: AWTGVTGlyphVector.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/font/AWTGVTGlyphVector.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- AWTGVTGlyphVector.java 2001/11/06 18:48:17 1.12 +++ AWTGVTGlyphVector.java 2001/11/09 15:33:27 1.13 @@ -34,7 +34,7 @@ * This is a wrapper class for a java.awt.font.GlyphVector instance. * * @author <a href="mailto:[EMAIL PROTECTED]">Bella Robinson</a> - * @version $Id: AWTGVTGlyphVector.java,v 1.12 2001/11/06 18:48:17 deweese Exp $ + * @version $Id: AWTGVTGlyphVector.java,v 1.13 2001/11/09 15:33:27 tkormann Exp $ */ public class AWTGVTGlyphVector implements GVTGlyphVector { @@ -369,12 +369,43 @@ if (glyphTransform != null) { tr.concatenate(glyphTransform); } + // + // <!> HACK + // + // GlyphVector.getGlyphOutline behavior changes between 1.3 and 1.4 + // + // I've looked at this problem a bit more and the incorrect glyph + // positioning in Batik is definitely due to the change in + // behavior of GlyphVector.getGlyphOutline(glyphIndex). It used to + // return the outline of the glyph at position 0,0 which meant + // that we had to translate it to the actual glyph position before + // drawing it. Now, it returns the outline which has already been + // positioned. + // + // -- Bella + // + + if (isJDK1_4OrGreater()) { + Point2D glyphPos = awtGlyphVector.getGlyphPosition(glyphIndex); + tr.translate(-glyphPos.getX(), -glyphPos.getY()); + } tr.scale(scaleFactor, scaleFactor); glyphOutlines[glyphIndex] = tr.createTransformedShape(glyphOutline); } return glyphOutlines[glyphIndex]; + } + + private static final boolean is1_4OrGreater; + + static { + String s = System.getProperty("java.version"); + is1_4OrGreater = ("1.4".compareTo(s) < 0); + } + + private static boolean isJDK1_4OrGreater() { + return is1_4OrGreater; } /**
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]