
On 2013-10-09 11:59, Tavmjong Bah wrote:
On Wed, 2013-10-09 at 11:28 +0200, Guiu Rocafort wrote:
2013/10/9 Tavmjong Bah <tavmjong@...8...>
I see, I wasn't aware of that problems with the fonts. Is the problem related to the use of the SVGFreeSans font ? I saw this font in some tests so I'm guessing it's being used in all of them. I noticed this font is not in my system, so installing it in the machine is going to perform the tests should solve the problem ?
No. A search through the SVG files shows all kinds of different fonts being used. SVGFreeSans is required for some tests as is a number of other specially constructed fonts.
That's why I removed text from the tests: https://svn.code.sf.net/p/inkscape/code/gsoc-testsuite/tester/testcases/svgt... The whole test suite for running rendering tests is available at: https://svn.code.sf.net/p/inkscape/code/gsoc-testsuite/tester/ Note that this test suite allows explicit specification of reference images, and was made to especially detect regressions (so whenever something changes you need to decide whether or not this is a good change). It is best used with a "fuzzy" comparator, like described here: http://wiki.inkscape.org/wiki/index.php/Testing_Inkscape#Running_rendering_t...
Of course removing all text from the tests has its own issues, but the real problem is that even without text there turned out to be too many "small" changes that visibly (but not necessarily unacceptable) affect (Inkscape's) rendering, so a lot of upkeep is required to maintain the tests. Having a clearer definition (and an accompanying tool) of what an "acceptable" rendering is would help a lot, but it is quite difficult. For example, it might be acceptable to have a slight shift in the middle of a Bézier curve, but not at the endpoints, nor would you like a curve that is too thick or thin. Also, there is not really a generally agreed upon "best" way to antialias vector graphics, etc., etc.
In short: whatever method of testing you use, ultimately the best you can really hope for in terms of automation is something (very) forgiving, or something that simply compares to previous "known good" renders. The above improves a bit upon a basic implementation of the latter scheme by comparing both to good and bad renders when possible, and by allowing you to use a custom comparator. But in the end it still required quite a bit of upkeep.