summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/kitfox/svg/FontFace.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/kitfox/svg/FontFace.java')
-rw-r--r--src/main/java/com/kitfox/svg/FontFace.java170
1 files changed, 91 insertions, 79 deletions
diff --git a/src/main/java/com/kitfox/svg/FontFace.java b/src/main/java/com/kitfox/svg/FontFace.java
index e5b2938..b9d8748 100644
--- a/src/main/java/com/kitfox/svg/FontFace.java
+++ b/src/main/java/com/kitfox/svg/FontFace.java
@@ -33,16 +33,9 @@
*
* Created on February 20, 2004, 10:00 PM
*/
-
package com.kitfox.svg;
import com.kitfox.svg.xml.StyleAttribute;
-import com.kitfox.svg.xml.*;
-import org.xml.sax.*;
-
-import java.awt.geom.*;
-import java.awt.*;
-
/**
* Implements an embedded font.
@@ -54,15 +47,16 @@ import java.awt.*;
*/
public class FontFace extends SVGElement
{
- String fontFamily;
- /** Em size of coordinate system font is defined in */
+ public static final String TAG_NAME = "fontface";
+ String fontFamily;
+ /**
+ * Em size of coordinate system font is defined in
+ */
int unitsPerEm = 1000;
-
int ascent = -1;
int descent = -1;
int accentHeight = -1;
-
int underlinePosition = -1;
int underlineThickness = -1;
int strikethroughPosition = -1;
@@ -70,149 +64,167 @@ public class FontFace extends SVGElement
int overlinePosition = -1;
int overlineThickness = -1;
- /** Creates a new instance of Font */
+ /**
+ * Creates a new instance of Font
+ */
public FontFace()
{
}
-/*
- public void loaderStartElement(SVGLoaderHelper helper, Attributes attrs, SVGElement parent)
- {
- //Load style string
- super.loaderStartElement(helper, attrs, parent);
-
- fontFamily = attrs.getValue("font-family");
-
- String unitsPerEm = attrs.getValue("units-per-em");
- String ascent = attrs.getValue("ascent");
- String descent = attrs.getValue("descent");
- String accentHeight = attrs.getValue("accent-height");
-
- String underlinePosition = attrs.getValue("underline-position");
- String underlineThickness = attrs.getValue("underline-thickness");
- String strikethroughPosition = attrs.getValue("strikethrough-position");
- String strikethroughThickness = attrs.getValue("strikethrough-thickness");
- String overlinePosition = attrs.getValue("overline-position");
- String overlineThickness = attrs.getValue("overline-thickness");
-
- if (unitsPerEm != null) this.unitsPerEm = XMLParseUtil.parseInt(unitsPerEm);
- if (ascent != null) this.ascent = XMLParseUtil.parseInt(ascent);
- if (descent != null) this.descent = XMLParseUtil.parseInt(descent);
- if (accentHeight != null) this.accentHeight = XMLParseUtil.parseInt(accentHeight);
-
- if (underlinePosition != null) this.underlinePosition = XMLParseUtil.parseInt(underlinePosition);
- if (underlineThickness != null) this.underlineThickness = XMLParseUtil.parseInt(underlineThickness);
- if (strikethroughPosition != null) this.strikethroughPosition = XMLParseUtil.parseInt(strikethroughPosition);
- if (strikethroughThickness != null) this.strikethroughThickness = XMLParseUtil.parseInt(strikethroughThickness);
- if (overlinePosition != null) this.overlinePosition = XMLParseUtil.parseInt(overlinePosition);
- if (overlineThickness != null) this.overlineThickness = XMLParseUtil.parseInt(overlineThickness);
-
-// unitFontXform.setToScale(1.0 / (double)unitsPerEm, 1.0 / (double)unitsPerEm);
- }
- */
- /*
- public void loaderEndElement(SVGLoaderHelper helper)
+ public String getTagName()
{
- super.loaderEndElement(helper);
-
- build();
-
-// unitFontXform.setToScale(1.0 / (double)unitsPerEm, 1.0 / (double)unitsPerEm);
+ return TAG_NAME;
}
- */
-
+
protected void build() throws SVGException
{
super.build();
-
+
StyleAttribute sty = new StyleAttribute();
-
- if (getPres(sty.setName("font-family"))) fontFamily = sty.getStringValue();
-
- if (getPres(sty.setName("units-per-em"))) unitsPerEm = sty.getIntValue();
- if (getPres(sty.setName("ascent"))) ascent = sty.getIntValue();
- if (getPres(sty.setName("descent"))) descent = sty.getIntValue();
- if (getPres(sty.setName("accent-height"))) accentHeight = sty.getIntValue();
-
- if (getPres(sty.setName("underline-position"))) underlinePosition = sty.getIntValue();
- if (getPres(sty.setName("underline-thickness"))) underlineThickness = sty.getIntValue();
- if (getPres(sty.setName("strikethrough-position"))) strikethroughPosition = sty.getIntValue();
- if (getPres(sty.setName("strikethrough-thickenss"))) strikethroughThickness = sty.getIntValue();
- if (getPres(sty.setName("overline-position"))) overlinePosition = sty.getIntValue();
- if (getPres(sty.setName("overline-thickness"))) overlineThickness = sty.getIntValue();
- }
+ if (getPres(sty.setName("font-family")))
+ {
+ fontFamily = sty.getStringValue();
+ }
+
+ if (getPres(sty.setName("units-per-em")))
+ {
+ unitsPerEm = sty.getIntValue();
+ }
+ if (getPres(sty.setName("ascent")))
+ {
+ ascent = sty.getIntValue();
+ }
+ if (getPres(sty.setName("descent")))
+ {
+ descent = sty.getIntValue();
+ }
+ if (getPres(sty.setName("accent-height")))
+ {
+ accentHeight = sty.getIntValue();
+ }
+
+ if (getPres(sty.setName("underline-position")))
+ {
+ underlinePosition = sty.getIntValue();
+ }
+ if (getPres(sty.setName("underline-thickness")))
+ {
+ underlineThickness = sty.getIntValue();
+ }
+ if (getPres(sty.setName("strikethrough-position")))
+ {
+ strikethroughPosition = sty.getIntValue();
+ }
+ if (getPres(sty.setName("strikethrough-thickenss")))
+ {
+ strikethroughThickness = sty.getIntValue();
+ }
+ if (getPres(sty.setName("overline-position")))
+ {
+ overlinePosition = sty.getIntValue();
+ }
+ if (getPres(sty.setName("overline-thickness")))
+ {
+ overlineThickness = sty.getIntValue();
+ }
+ }
- public String getFontFamily() { return fontFamily; }
+ public String getFontFamily()
+ {
+ return fontFamily;
+ }
- public int getUnitsPerEm() { return unitsPerEm; }
+ public int getUnitsPerEm()
+ {
+ return unitsPerEm;
+ }
public int getAscent()
{
if (ascent == -1)
- ascent = unitsPerEm - ((Font)parent).getVertOriginY();
+ {
+ ascent = unitsPerEm - ((Font) parent).getVertOriginY();
+ }
return ascent;
}
public int getDescent()
{
if (descent == -1)
- descent = ((Font)parent).getVertOriginY();
+ {
+ descent = ((Font) parent).getVertOriginY();
+ }
return descent;
}
public int getAccentHeight()
{
if (accentHeight == -1)
+ {
accentHeight = getAscent();
+ }
return accentHeight;
}
public int getUnderlinePosition()
{
if (underlinePosition == -1)
+ {
underlinePosition = unitsPerEm * 5 / 6;
+ }
return underlinePosition;
}
public int getUnderlineThickness()
{
if (underlineThickness == -1)
+ {
underlineThickness = unitsPerEm / 20;
+ }
return underlineThickness;
}
public int getStrikethroughPosition()
{
if (strikethroughPosition == -1)
+ {
strikethroughPosition = unitsPerEm * 3 / 6;
+ }
return strikethroughPosition;
}
public int getStrikethroughThickness()
{
if (strikethroughThickness == -1)
+ {
strikethroughThickness = unitsPerEm / 20;
+ }
return strikethroughThickness;
}
public int getOverlinePosition()
{
if (overlinePosition == -1)
+ {
overlinePosition = unitsPerEm * 5 / 6;
+ }
return overlinePosition;
}
public int getOverlineThickness()
{
if (overlineThickness == -1)
+ {
overlineThickness = unitsPerEm / 20;
+ }
return overlineThickness;
}
-
+
/**
- * Updates all attributes in this diagram associated with a time event.
- * Ie, all attributes with track information.
+ * Updates all attributes in this diagram associated with a time event. Ie,
+ * all attributes with track information.
+ *
* @return - true if this node has changed state as a result of the time
* update
*/