From 5bda482265a85b6d5556a1ac9b103809ef495173 Mon Sep 17 00:00:00 2001 From: Simon Steiner Date: Mon, 28 Apr 2014 15:06:33 +0000 Subject: FOP-2345 SVG to AFP text spacing wrong git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1590665 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/fop/svg/AbstractFOPTextPainter.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/java/org/apache/fop/svg/AbstractFOPTextPainter.java b/src/java/org/apache/fop/svg/AbstractFOPTextPainter.java index 7df127d3a..9cb868448 100644 --- a/src/java/org/apache/fop/svg/AbstractFOPTextPainter.java +++ b/src/java/org/apache/fop/svg/AbstractFOPTextPainter.java @@ -152,8 +152,21 @@ public abstract class AbstractFOPTextPainter implements TextPainter { double y = outputLocation.getY(); try { try { + AFPGraphics2D afpg2d = (AFPGraphics2D)g2d; + int fontSize = 0; + if (font != null) { + fontSize = (int) Math.round(afpg2d.convertToAbsoluteLength(font.getFontSize())); + } + if (fontSize < 6000) { + nativeTextHandler.drawString(g2d, txt, (float) (x + tx), (float) y); + } else { + double scaleX = g2d.getTransform().getScaleX(); + for (int i = 0; i < txt.length(); i++) { + double ad = run.getLayout().getGlyphAdvances()[i] * scaleX; + nativeTextHandler.drawString(g2d, txt.charAt(i) + "", (float) (x + tx + ad), (float) y); + } + } //TODO draw underline and overline if set - nativeTextHandler.drawString(g2d, txt, (float) (x + tx), (float) y); //TODO draw strikethrough if set } catch (IOException ioe) { if (g2d instanceof AFPGraphics2D) { -- cgit v1.2.3