SVGGlyph SVGGlyphElement::buildGenericGlyphIdentifier(const SVGElement* element) { SVGGlyph identifier; buildPathFromString(element->fastGetAttribute(SVGNames::dAttr), identifier.pathData); // Spec: The horizontal advance after rendering the glyph in horizontal orientation. // If the attribute is not specified, the effect is as if the attribute were set to the // value of the font's horiz-adv-x attribute. Glyph widths are required to be non-negative, // even if the glyph is typically rendered right-to-left, as in Hebrew and Arabic scripts. identifier.horizontalAdvanceX = parseSVGGlyphAttribute(element, SVGNames::horiz_adv_xAttr); // Spec: The X-coordinate in the font coordinate system of the origin of the glyph to be // used when drawing vertically oriented text. If the attribute is not specified, the effect // is as if the attribute were set to the value of the font's vert-origin-x attribute. identifier.verticalOriginX = parseSVGGlyphAttribute(element, SVGNames::vert_origin_xAttr); // Spec: The Y-coordinate in the font coordinate system of the origin of a glyph to be // used when drawing vertically oriented text. If the attribute is not specified, the effect // is as if the attribute were set to the value of the font's vert-origin-y attribute. identifier.verticalOriginY = parseSVGGlyphAttribute(element, SVGNames::vert_origin_yAttr); // Spec: The vertical advance after rendering a glyph in vertical orientation. // If the attribute is not specified, the effect is as if the attribute were set to the // value of the font's vert-adv-y attribute. identifier.verticalAdvanceY = parseSVGGlyphAttribute(element, SVGNames::vert_adv_yAttr); return identifier; }
void SVGAnimateMotionElement::parseAttribute(const QualifiedName& name, const AtomicString& value) { if (name == SVGNames::pathAttr) { m_path = Path(); buildPathFromString(value, m_path); updateAnimationPath(); return; } SVGAnimationElement::parseAttribute(name, value); }