aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache/fop/render/java2d/Java2DFontMetrics.java
diff options
context:
space:
mode:
authorVincent Hennebert <vhennebert@apache.org>2013-07-29 21:45:20 +0000
committerVincent Hennebert <vhennebert@apache.org>2013-07-29 21:45:20 +0000
commitf8e822efe1de8bd8192dbb8ff035b9a79f876614 (patch)
tree8d38f873dd101e6ed0c2ba3b4dfa29e1eb0fdc60 /src/java/org/apache/fop/render/java2d/Java2DFontMetrics.java
parentc0b99ad44d0e1409008886e2f687c46f4ac05d9d (diff)
downloadxmlgraphics-fop-f8e822efe1de8bd8192dbb8ff035b9a79f876614.tar.gz
xmlgraphics-fop-f8e822efe1de8bd8192dbb8ff035b9a79f876614.zip
Directly use FOP fonts to lay out SVG images for PDF, PS and AFP outputs.
The metrics are now taken from FOP configured fonts and no longer from AWT equivalents. That avoids discrepancies in case AWT and FOP use slightly different fonts, or if the font is not installed on the system. That actually also avoids having to install the font on the system. FOP is also used for the primary layout of text (prior to SVG-specific transforms like translation or rotation) for consistency between SVG and XSL-FO. This is a joint work from Peter Hancock and myself. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/Temp_FopFontsForSVG@1508208 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache/fop/render/java2d/Java2DFontMetrics.java')
-rw-r--r--src/java/org/apache/fop/render/java2d/Java2DFontMetrics.java20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/java/org/apache/fop/render/java2d/Java2DFontMetrics.java b/src/java/org/apache/fop/render/java2d/Java2DFontMetrics.java
index fc4af3574..5e681e9e2 100644
--- a/src/java/org/apache/fop/render/java2d/Java2DFontMetrics.java
+++ b/src/java/org/apache/fop/render/java2d/Java2DFontMetrics.java
@@ -223,6 +223,26 @@ public class Java2DFontMetrics {
return xHeight * 1000;
}
+ public int getUnderlinePosition(String family, int style, int size) {
+ setFont(family, style, size);
+ return -Math.round(lineMetrics.getUnderlineOffset());
+ }
+
+ public int getUnderlineThickness(String family, int style, int size) {
+ setFont(family, style, size);
+ return Math.round(lineMetrics.getUnderlineThickness());
+ }
+
+ public int getStrikeoutPosition(String family, int style, int size) {
+ setFont(family, style, size);
+ return -Math.round(lineMetrics.getStrikethroughOffset());
+ }
+
+ public int getStrikeoutThickness(String family, int style, int size) {
+ setFont(family, style, size);
+ return Math.round(lineMetrics.getStrikethroughThickness());
+ }
+
/**
* Returns width (in 1/1000ths of point size) of character at
* code point i