Changeset 29031 in webkit
- Timestamp:
- Dec 29, 2007 8:06:23 AM (16 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r29029 r29031 1 2007-12-29 Nikolas Zimmermann <zimmermann@kde.org> 2 3 Reviewed by Alexey. 4 5 Respect horiz-origin-x / horiz-origin-y / vert-origin-x / vert-origin-y properties when drawing SVG Fonts. 6 (Fixes fonts-elem-05-t.svg in a --svg-fonts build) 7 8 * svg/SVGFont.cpp: 9 (WebCore::Font::drawGlyphsWithSVGFont): 10 1 11 2007-12-29 Nikolas Zimmermann <zimmermann@kde.org> 2 12 -
trunk/WebCore/svg/SVGFont.cpp
r29029 r29031 67 67 unsigned unitsPerEm = fontFace->unitsPerEm(); 68 68 bool isVerticalText = isVerticalWritingMode(style->svgStyle()); 69 float scale = SVGFontData::convertEmUnitToPixel(fontSize, unitsPerEm, 1.0f); 69 70 70 71 SVGPaintServer* fillPaintServer = SVGPaintServer::fillPaintServer(style, renderObject); … … 72 73 73 74 FloatPoint startPoint = point; 75 76 FloatPoint glyphOrigin; 77 if (!isVerticalText) { 78 glyphOrigin.setX(SVGFontData::convertEmUnitToPixel(fontSize, unitsPerEm, svgFontData->horizontalOriginX)); 79 glyphOrigin.setY(SVGFontData::convertEmUnitToPixel(fontSize, unitsPerEm, svgFontData->horizontalOriginY)); 80 } 81 74 82 for (int i = from; i < to; ++i) { 75 83 SVGGlyphIdentifier identifier = fontFace->glyphIdentifierForGlyphCode(glyphBuffer.glyphAt(i)); … … 77 85 // TODO: Support arbitary SVG content as glyph (currently limited to <glyph d="..."> situations) 78 86 if (!identifier.pathData.isEmpty()) { 79 float scale = SVGFontData::convertEmUnitToPixel(size(), fontFace->unitsPerEm(), 1.0f); 80 81 AffineTransform ctm; 82 ctm.translate(startPoint.x(), startPoint.y()); 83 ctm.scale(scale, -scale); 87 if (isVerticalText) { 88 glyphOrigin.setX(SVGFontData::convertEmUnitToPixel(fontSize, unitsPerEm, identifier.verticalOriginX)); 89 glyphOrigin.setY(SVGFontData::convertEmUnitToPixel(fontSize, unitsPerEm, identifier.verticalOriginY)); 90 } 84 91 85 92 context->save(); 86 context->concatCTM(ctm); 93 context->translate(startPoint.x() + glyphOrigin.x(), startPoint.y() + glyphOrigin.y()); 94 context->scale(FloatSize(scale, -scale)); 87 95 88 96 context->beginPath();
Note: See TracChangeset
for help on using the changeset viewer.