// get all of the glyph position attribute values
SVGTextPositioningElement te = (SVGTextPositioningElement) element;
try {
SVGLengthList xs = te.getX().getAnimVal();
SVGLengthList ys = te.getY().getAnimVal();
SVGLengthList dxs = te.getDx().getAnimVal();
SVGLengthList dys = te.getDy().getAnimVal();
SVGNumberList rs = te.getRotate().getAnimVal();
int len;
// process the x attribute
len = xs.getNumberOfItems();
for (int i = 0; i < len && firstChar + i <= lastChar; i++) {
as.addAttribute
(GVTAttributedCharacterIterator.TextAttribute.X,
new Float(xs.getItem(i).getValue()), firstChar + i,
firstChar + i + 1);
}
// process the y attribute
len = ys.getNumberOfItems();
for (int i = 0; i < len && firstChar + i <= lastChar; i++) {
as.addAttribute
(GVTAttributedCharacterIterator.TextAttribute.Y,
new Float(ys.getItem(i).getValue()), firstChar + i,
firstChar + i + 1);
}
// process dx attribute
len = dxs.getNumberOfItems();
for (int i = 0; i < len && firstChar + i <= lastChar; i++) {
as.addAttribute
(GVTAttributedCharacterIterator.TextAttribute.DX,
new Float(dxs.getItem(i).getValue()), firstChar + i,
firstChar + i + 1);
}
// process dy attribute
len = dys.getNumberOfItems();
for (int i = 0; i < len && firstChar + i <= lastChar; i++) {
as.addAttribute
(GVTAttributedCharacterIterator.TextAttribute.DY,
new Float(dys.getItem(i).getValue()), firstChar + i,
firstChar + i + 1);
}
// process rotate attribute
len = rs.getNumberOfItems();