float SVGTextLayoutEngineSpacing::calculateSVGKerning(bool isVerticalText, const SVGTextMetrics::Glyph& currentGlyph) { #if ENABLE(SVG_FONTS) if (!m_font.isSVGFont()) { m_lastGlyph.isValid = false; return 0; } SVGFontElement* svgFont = m_font.svgFont(); ASSERT(svgFont); float kerning = 0; if (m_lastGlyph.isValid) { if (isVerticalText) kerning = svgFont->verticalKerningForPairOfStringsAndGlyphs(m_lastGlyph.unicodeString, m_lastGlyph.name, currentGlyph.unicodeString, currentGlyph.name); else kerning = svgFont->horizontalKerningForPairOfStringsAndGlyphs(m_lastGlyph.unicodeString, m_lastGlyph.name, currentGlyph.unicodeString, currentGlyph.name); } m_lastGlyph = currentGlyph; m_lastGlyph.isValid = true; kerning *= m_font.size() / m_font.primaryFont()->unitsPerEm(); return kerning; #else UNUSED_PARAM(isVerticalText); UNUSED_PARAM(currentGlyph); return false; #endif }
float SVGTextLayoutEngineSpacing::calculateSVGKerning(bool isVerticalText, const SVGTextMetrics::Glyph& currentGlyph) { #if ENABLE(SVG_FONTS) const SimpleFontData* fontData = m_font.primaryFont(); if (!fontData->isSVGFont()) { m_lastGlyph.isValid = false; return 0; } ASSERT(fontData->isCustomFont()); ASSERT(fontData->isSVGFont()); const SVGFontData* svgFontData = static_cast<const SVGFontData*>(fontData->fontData()); SVGFontFaceElement* svgFontFace = svgFontData->svgFontFaceElement(); ASSERT(svgFontFace); SVGFontElement* svgFont = svgFontFace->associatedFontElement(); if (!svgFont) { m_lastGlyph.isValid = false; return 0; } float kerning = 0; if (m_lastGlyph.isValid) { if (isVerticalText) kerning = svgFont->verticalKerningForPairOfStringsAndGlyphs(m_lastGlyph.unicodeString, m_lastGlyph.name, currentGlyph.unicodeString, currentGlyph.name); else kerning = svgFont->horizontalKerningForPairOfStringsAndGlyphs(m_lastGlyph.unicodeString, m_lastGlyph.name, currentGlyph.unicodeString, currentGlyph.name); } m_lastGlyph = currentGlyph; m_lastGlyph.isValid = true; kerning *= m_font.size() / m_font.fontMetrics().unitsPerEm(); return kerning; #else UNUSED_PARAM(isVerticalText); UNUSED_PARAM(currentGlyph); return false; #endif }