Closed Bug 649072 Opened 9 years ago Closed 6 years ago

Visual artifacts left behind with SVG Text & animateTransform, with certain fonts

Categories

(Core :: SVG, defect)

x86
Linux
defect
Not set

Tracking

()

RESOLVED FIXED

People

(Reporter: dr.o.hoffmann, Unassigned)

References

()

Details

Attachments

(3 files)

User-Agent:       Mozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20100101 Firefox/4.0
Build Identifier: Mozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20100101 Firefox/4.0

A translated, mirrored and scaled stroked text 's'
is scaled and mirrored from the right to the left within 10s
with repetition.

The letter is distorted in Gecko 2 (not related to the intended transformations).
The distortion depends strongly on font-size and the transformations applied to the letter.

Reproducible: Always

Steps to Reproduce:
1. Try the example given at the URI above
2. Compare with source code
3. Compare with behaviour of other viewers like Opera, Squiggle, Adobe plugin
Actual Results:  
Distorted stroke of 's'.
Additionally some of the distortions remain as rendering residuals.

Expected Results:  
The stroke should be only transformed due to the transformations provided in the
document, no extra distortions.
Can you post a screenshot or video showing the distortion, or explain a little more what the distortion is?

At first glance, my mozilla-central nightly & Firefox 4.0 both seem to match Opera.  (Maybe it's something very subtle that I'm missing?)

Mozilla/5.0 (X11; Linux x86_64; rv:2.0) Gecko/20100101 Firefox/4.0
Mozilla/5.0 (X11; Linux x86_64; rv:2.2a1pre) Gecko/20110411 Firefox/4.2a1pre
Opera/9.80 (X11; Linux x86_64; U; en) Presto/2.7.62 Version/11.01
(In reply to comment #1)
> At first glance, my mozilla-central nightly & Firefox 4.0 both seem to match Opera.

Just to illustrate that, here's a screencast of what I see on my Ubuntu 10.10 x86_64 machine (Firefox 4.0 on left, Opera 11.01 on right).  Does this show the distortion?
No, the video shows indeed the normal affine transformations.

Meanwhile I explored it a little bit more and of course, the fill is distorted
as well and the effect seems to depend on the font-family - for serif and
sans-serif for example it appears, for some more specific font names not.

I will see, if I can create a video or a screenshot today ...
Unfortunately, firefox has no buttons to pause, stop restart animations,
therefore maybe not easy to get a screenshot - how to create a video I have
to explore ...
Not sure, that I am able to force Opera to use the same font as firefox for
sans-serif and serif ...
The effect seems to be no simple affine transformation of the complete 's',
therefore maybe nothing, that can be only inside the glyph definition either.
(In reply to comment #3)
> Unfortunately, firefox has no buttons to pause, stop restart animations,

(The 'Esc' key pauses all animations, btw.)

> two screenshots of the distortion on slightly different times

Thanks -- that does indeed look busted.
Summary: SVG additional distortions of stroked and transformed text with animateTransform → Visual artifacts left behind with SVG Text & animateTransform
Summary: Visual artifacts left behind with SVG Text & animateTransform → Visual artifacts left behind with SVG Text & animateTransform, with certain fonts
It is around the moment, when the determinant of the transformation matrix is
zero. Rounding problems? Or does Gecko try to compute something from the inverse
matrix for display? This can pronounce accuracy problems too ...
I think, for example WebKit tries often to calculate the inverse - in one version
it crashed at determinant zero.
(In reply to comment #7)
> It is around the moment, when the determinant of the transformation matrix is
> zero. Rounding problems?

That's probably likely (possibly coupled with a font that lies about how large its characters are -- I recall at least one similar bug a year or so back where that ended up being involved).
Can someone check a nightly on Linux to see if this is fixed please?
(Note that I was never able to repro on Linux, per comment 1 through comment 3.)

Dr. Hoffmann, can you still reproduce?
I installed 25 a1 (Gecko/20130629 Firefox/25.0) and this looks like the bug is fixed for this
sample with transformed glyphs.
I tried other samples with paths (I think I reported with another bug number) and there are some
annoying residuals still available - presumable another effect.
If someone did something especially for this glyph problem, this looks fixed now.
We've reimplemented glyph rendering in the latest Firefox. Yes, you do have another path bug open which is still unsolved (bug 648266).
Status: UNCONFIRMED → RESOLVED
Closed: 6 years ago
Depends on: svgtext
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.