If you have a transform that in not identity for the canvas and
your ctx.hints.tranformType is >= RASTER_TRANSFORM_SUBPX,
your font is scaled by the outer transform but if you patch the
ctx.hints.tranformType to 0 as shown below the font is drawn at the correct
scale.
Not sure how to fix this issue as the path returned from font.getOutline(text,
tmpPath0) should not be scaled a second time.
err_t RasterPaintEngine::drawText(const PointI& pt_, const String& text, const
Font& font, const RectI* clip_)
{
RASTER_ENTER_PAINT_FUNC();
// TODO: Not optimal, no clip used.
// ctx.hints.transformType = 0 ; // Add to verify path was scaled twice not just once
if (ctx.hints.transformType >= RASTER_TRANSFORM_SUBPX || ctx.hints.forceOutlineText)
{
tmpPath0.clear();
FOG_RETURN_ON_ERROR(font.getOutline(text, tmpPath0));
tmpPath0.translate((double)pt_.x, (double)pt_.y + font.getAscent());
return _serializePaintPath(tmpPath0, false);
}
else
{
int tx = ctx.finalTranslate.x;
int ty = ctx.finalTranslate.y;
PointI pt(pt_.x + tx, pt_.y + ty);
RectI clip;
if (clip_)
{
clip.set(clip_->x + tx, clip_->y + ty, clip_->w, clip_->h);
clip_ = &clip;
}
tmpGlyphSet.clear();
FOG_RETURN_ON_ERROR(font.getGlyphSet(text.getData(), text.getLength(), tmpGlyphSet));
return _serializePaintGlyphSet(pt, tmpGlyphSet, clip_);
}
}
Original issue reported on code.google.com by marietta...@peernet.com on 1 Nov 2010 at 1:01
Original issue reported on code.google.com by
marietta...@peernet.com
on 1 Nov 2010 at 1:01