<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PeterMoulder</id>
	<title>Inkscape Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PeterMoulder"/>
	<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/Special:Contributions/PeterMoulder"/>
	<updated>2026-04-29T10:31:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Swatch_Book&amp;diff=28814</id>
		<title>Swatch Book</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Swatch_Book&amp;diff=28814"/>
		<updated>2008-05-15T07:05:02Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: /* Software Support */ partially fill in inkscape row&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
This page is for discussing the concepts around swatch books, for Inkscape and any other programs, and what things users might want.&lt;br /&gt;
&lt;br /&gt;
Feel free to contribute here, on the mailing lists, or in our Jabber/IRC chat rooms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is a Swatch Book? ==&lt;br /&gt;
&lt;br /&gt;
Basically a &amp;quot;Swatch Book&amp;quot; is a collection of swatches that an artist or designer might put together for reference during a project.&lt;br /&gt;
&lt;br /&gt;
Although a large number of people are familiar with various commercial spot color books, a swatch book is not limited to just colors. Decorators, designers and others often have books with more than simple color chips. That leads into the question of just what is a 'swatch' - [[JonCruz]]&lt;br /&gt;
&lt;br /&gt;
== What is a &amp;quot;Swatch&amp;quot;? ==&lt;br /&gt;
&lt;br /&gt;
In general artistic design work, I normally hit a different  &lt;br /&gt;
definition of &amp;quot;swatch&amp;quot;. It's not just a color, it's a &amp;quot;sample&amp;quot; or  &lt;br /&gt;
&amp;quot;material&amp;quot;. It could be a simple solid ink color, or it could be a  &lt;br /&gt;
heavy plaid cloth. Moving into software, &amp;quot;Gold&amp;quot; is another good  &lt;br /&gt;
example. &amp;quot;Gold&amp;quot; is a texture, not a color (just ask the Blender  &lt;br /&gt;
artists out there). From an artist/designer's viewpoint, they tend to  &lt;br /&gt;
think in terms of a swatch book as &amp;quot;a collection of things I've  &lt;br /&gt;
pulled together to use for this project&amp;quot;. I *think* some of the  &lt;br /&gt;
problem comes from saying &amp;quot;Pantone swatch book&amp;quot; and such but not  &lt;br /&gt;
keeping in mind that it is just a subset of general &amp;quot;swatch books&amp;quot;.  &lt;br /&gt;
That is, it is a &amp;quot;swatch book but with only solid paint swatches&amp;quot;.   &lt;br /&gt;
Then again... I have used foil Pantone books, so those definitely  &lt;br /&gt;
fall into the &amp;quot;material, not just color&amp;quot; category. - [[JonCruz]]&lt;br /&gt;
&lt;br /&gt;
Some examples I've seen in swatch books are&lt;br /&gt;
* Fabric&lt;br /&gt;
* Ribbon&lt;br /&gt;
* Paint&lt;br /&gt;
* Spot color samples (Pantone, Trumatch, Focoltone, Toyo, etc)&lt;br /&gt;
* Paper&lt;br /&gt;
* Wood&lt;br /&gt;
* Flooring&lt;br /&gt;
* Tile&lt;br /&gt;
* Counter material&lt;br /&gt;
&lt;br /&gt;
The key here might be to think &amp;quot;material&amp;quot; instead of just &amp;quot;color&amp;quot;. Although one might work with just colors, others might want to extend to a bit more.&lt;br /&gt;
&lt;br /&gt;
= Use Cases =&lt;br /&gt;
&lt;br /&gt;
And think of the use case. Say a comic artist is working on a  &lt;br /&gt;
project. He would probably want a &amp;quot;swatch book&amp;quot; for each of his  &lt;br /&gt;
characters, and perhaps one combining them. Then he might also want  &lt;br /&gt;
to add a book per character per lighting condition (&amp;quot;daytime&amp;quot;,  &lt;br /&gt;
&amp;quot;nighttime&amp;quot;, etc). When he went to use it, he might like to just  &lt;br /&gt;
select &amp;quot;Fred's skin&amp;quot; and apply it to an area. Then &amp;quot;Fred's shirt&amp;quot; for  &lt;br /&gt;
another. Those might just be simple RGB colors, or the skin might be  &lt;br /&gt;
a simple gradient and the shirt might be a checked pattern.&lt;br /&gt;
&lt;br /&gt;
However... the artist most definitely would benefit from being able  &lt;br /&gt;
to define those books once and then just reference them from each of  &lt;br /&gt;
the programs he uses to create things. - [[JonCruz]]&lt;br /&gt;
&lt;br /&gt;
I think it would also be good if we could educate the comic artists on SVG Blend modes work, this way there would be no need to have separate color swatches for time of day. You could easily overlay a colored/gradiated rectangle within a frame and use multiply or another blend mode. Then again, that's also a preference of workflow.- [[ScislaC]]&lt;br /&gt;
&lt;br /&gt;
= Swatches in SVG/Inkscape =&lt;br /&gt;
&lt;br /&gt;
For SVG work, we'd probably like to be able to include gradients and  &lt;br /&gt;
patterns also. &amp;quot;Brushes&amp;quot; might also be nice... but I think those are  &lt;br /&gt;
something a bit different. For the apps I've seen that differentiate  &lt;br /&gt;
brushes from patterns, brushes get to be more of blobs of complex  &lt;br /&gt;
procedural code. - [[JonCruz]]&lt;br /&gt;
&lt;br /&gt;
This involves more than just the swatches, but I found the brush weight profiles in Xara X[1|treme] quite intuitive. Basically it's now doable in 0.46 with LPE and an auxiliary shape that defines the variable brush weight, but Xara's simple dropdown of pre-defined profiles worked quite well. Just a thought. - [[jegHegy]]&lt;br /&gt;
&lt;br /&gt;
I think all mentioned uses of swatches are applicable. As for brushes, yes, I think those would be great as well. If we can have a standard cross-application compatible way to include those and then leave it up to the applications to implement how they want to utilize them, that would be optimal. In addition to brushes, having a symbols library implemented in a swatch book would also be greatly helpful. - [[ScislaC]]&lt;br /&gt;
&lt;br /&gt;
= Mockups =&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
= Software Support =&lt;br /&gt;
&lt;br /&gt;
The purpose of this table is first of all to find what apps support each feature, so that we can then look into each of those to make sure that we support everything that each app needs to be sharable in a swatchbook.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! App&lt;br /&gt;
! Color&lt;br /&gt;
! Gradient&lt;br /&gt;
! Pattern&lt;br /&gt;
! Filter&lt;br /&gt;
! Brush&lt;br /&gt;
! Shape&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.inkscape.org/ Inkscape]&lt;br /&gt;
| yes, rich&lt;br /&gt;
| linear and radial only&lt;br /&gt;
| yes, vector&lt;br /&gt;
| ?&lt;br /&gt;
| not really&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.blender.org/ Blender]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.cinepaint.org/ CinePaint]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.gimp.org/ GIMP]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [http://kolourpaint.org/ KolourPaint]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.koffice.org/krita/ Krita]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.scribus.net/ Scribus]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [http://lists.freedesktop.org/archives/create/2007-September/000994.html My post] to the CREATE list on Sep 27, 2007.&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Swatch_Book&amp;diff=28804</id>
		<title>Swatch Book</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Swatch_Book&amp;diff=28804"/>
		<updated>2008-05-15T06:44:05Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: /* Software Support */ explain purpose of table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
This page is for discussing the concepts around swatch books, for Inkscape and any other programs, and what things users might want.&lt;br /&gt;
&lt;br /&gt;
Feel free to contribute here, on the mailing lists, or in our Jabber/IRC chat rooms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is a Swatch Book? ==&lt;br /&gt;
&lt;br /&gt;
Basically a &amp;quot;Swatch Book&amp;quot; is a collection of swatches that an artist or designer might put together for reference during a project.&lt;br /&gt;
&lt;br /&gt;
Although a large number of people are familiar with various commercial spot color books, a swatch book is not limited to just colors. Decorators, designers and others often have books with more than simple color chips. That leads into the question of just what is a 'swatch' - [[JonCruz]]&lt;br /&gt;
&lt;br /&gt;
== What is a &amp;quot;Swatch&amp;quot;? ==&lt;br /&gt;
&lt;br /&gt;
In general artistic design work, I normally hit a different  &lt;br /&gt;
definition of &amp;quot;swatch&amp;quot;. It's not just a color, it's a &amp;quot;sample&amp;quot; or  &lt;br /&gt;
&amp;quot;material&amp;quot;. It could be a simple solid ink color, or it could be a  &lt;br /&gt;
heavy plaid cloth. Moving into software, &amp;quot;Gold&amp;quot; is another good  &lt;br /&gt;
example. &amp;quot;Gold&amp;quot; is a texture, not a color (just ask the Blender  &lt;br /&gt;
artists out there). From an artist/designer's viewpoint, they tend to  &lt;br /&gt;
think in terms of a swatch book as &amp;quot;a collection of things I've  &lt;br /&gt;
pulled together to use for this project&amp;quot;. I *think* some of the  &lt;br /&gt;
problem comes from saying &amp;quot;Pantone swatch book&amp;quot; and such but not  &lt;br /&gt;
keeping in mind that it is just a subset of general &amp;quot;swatch books&amp;quot;.  &lt;br /&gt;
That is, it is a &amp;quot;swatch book but with only solid paint swatches&amp;quot;.   &lt;br /&gt;
Then again... I have used foil Pantone books, so those definitely  &lt;br /&gt;
fall into the &amp;quot;material, not just color&amp;quot; category. - [[JonCruz]]&lt;br /&gt;
&lt;br /&gt;
Some examples I've seen in swatch books are&lt;br /&gt;
* Fabric&lt;br /&gt;
* Ribbon&lt;br /&gt;
* Paint&lt;br /&gt;
* Spot color samples (Pantone, Trumatch, Focoltone, Toyo, etc)&lt;br /&gt;
* Paper&lt;br /&gt;
* Wood&lt;br /&gt;
* Flooring&lt;br /&gt;
* Tile&lt;br /&gt;
* Counter material&lt;br /&gt;
&lt;br /&gt;
The key here might be to think &amp;quot;material&amp;quot; instead of just &amp;quot;color&amp;quot;. Although one might work with just colors, others might want to extend to a bit more.&lt;br /&gt;
&lt;br /&gt;
= Use Cases =&lt;br /&gt;
&lt;br /&gt;
And think of the use case. Say a comic artist is working on a  &lt;br /&gt;
project. He would probably want a &amp;quot;swatch book&amp;quot; for each of his  &lt;br /&gt;
characters, and perhaps one combining them. Then he might also want  &lt;br /&gt;
to add a book per character per lighting condition (&amp;quot;daytime&amp;quot;,  &lt;br /&gt;
&amp;quot;nighttime&amp;quot;, etc). When he went to use it, he might like to just  &lt;br /&gt;
select &amp;quot;Fred's skin&amp;quot; and apply it to an area. Then &amp;quot;Fred's shirt&amp;quot; for  &lt;br /&gt;
another. Those might just be simple RGB colors, or the skin might be  &lt;br /&gt;
a simple gradient and the shirt might be a checked pattern.&lt;br /&gt;
&lt;br /&gt;
However... the artist most definitely would benefit from being able  &lt;br /&gt;
to define those books once and then just reference them from each of  &lt;br /&gt;
the programs he uses to create things. - [[JonCruz]]&lt;br /&gt;
&lt;br /&gt;
I think it would also be good if we could educate the comic artists on SVG Blend modes work, this way there would be no need to have separate color swatches for time of day. You could easily overlay a colored/gradiated rectangle within a frame and use multiply or another blend mode. Then again, that's also a preference of workflow.- [[ScislaC]]&lt;br /&gt;
&lt;br /&gt;
= Swatches in SVG/Inkscape =&lt;br /&gt;
&lt;br /&gt;
For SVG work, we'd probably like to be able to include gradients and  &lt;br /&gt;
patterns also. &amp;quot;Brushes&amp;quot; might also be nice... but I think those are  &lt;br /&gt;
something a bit different. For the apps I've seen that differentiate  &lt;br /&gt;
brushes from patterns, brushes get to be more of blobs of complex  &lt;br /&gt;
procedural code. - [[JonCruz]]&lt;br /&gt;
&lt;br /&gt;
This involves more than just the swatches, but I found the brush weight profiles in Xara X[1|treme] quite intuitive. Basically it's now doable in 0.46 with LPE and an auxiliary shape that defines the variable brush weight, but Xara's simple dropdown of pre-defined profiles worked quite well. Just a thought. - [[jegHegy]]&lt;br /&gt;
&lt;br /&gt;
I think all mentioned uses of swatches are applicable. As for brushes, yes, I think those would be great as well. If we can have a standard cross-application compatible way to include those and then leave it up to the applications to implement how they want to utilize them, that would be optimal. In addition to brushes, having a symbols library implemented in a swatch book would also be greatly helpful. - [[ScislaC]]&lt;br /&gt;
&lt;br /&gt;
= Mockups =&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
= Software Support =&lt;br /&gt;
&lt;br /&gt;
The purpose of this table is first of all to find what apps support each feature, so that we can then look into each of those to make sure that we support everything that each app needs to be sharable in a swatchbook.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! App&lt;br /&gt;
! Color&lt;br /&gt;
! Gradient&lt;br /&gt;
! Pattern&lt;br /&gt;
! Filter&lt;br /&gt;
! Brush&lt;br /&gt;
! Shape&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.inkscape.org/ Inkscape]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.blender.org/ Blender]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.cinepaint.org/ CinePaint]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.gimp.org/ GIMP]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [http://kolourpaint.org/ KolourPaint]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.koffice.org/krita/ Krita]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.scribus.net/ Scribus]&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [http://lists.freedesktop.org/archives/create/2007-September/000994.html My post] to the CREATE list on Sep 27, 2007.&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=18794</id>
		<title>CSS Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=18794"/>
		<updated>2008-01-25T05:31:28Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: Add information about external stylesheets&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Current State ===&lt;br /&gt;
&lt;br /&gt;
An initial implementation is now in SVN.  Limitations:&lt;br /&gt;
&lt;br /&gt;
* Allows a single &amp;lt;style&amp;gt; element in the document.  Doesn't allow external stylesheets, doesn't allow more than one &amp;lt;style&amp;gt; element.&lt;br /&gt;
: (Or rather it ignores all but one of the &amp;lt;style&amp;gt; elements, possibly changing which one it respects based on which was most recently re-read.)&lt;br /&gt;
&lt;br /&gt;
* No editing interface other than the XML editor.&lt;br /&gt;
&lt;br /&gt;
: There are a number of aspects of editing:&lt;br /&gt;
&lt;br /&gt;
** The most basic level: allow editing using the XML editor.  (See Update section below.)&lt;br /&gt;
** Editing a stylesheet.&lt;br /&gt;
** Specifying what classes each object belongs to.&lt;br /&gt;
&lt;br /&gt;
* Doesn't respect media restrictions (e.g. ignores &amp;quot;this rule applies only to non-visual media&amp;quot; directives, and doesn't allow having one    style for print and another style for on-screen).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;@font-face&amp;lt;/tt&amp;gt; hints are ignored.&lt;br /&gt;
&lt;br /&gt;
* Doesn't handle any other at-rules (&amp;lt;tt&amp;gt;@media&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;@import&amp;lt;/tt&amp;gt;, @page, ...).&lt;br /&gt;
&lt;br /&gt;
==== An incomplete list of work needed: ====&lt;br /&gt;
&lt;br /&gt;
* Ensure that this single stylesheet is updated whenever any of the &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements change (or are deleted or created etc.).&lt;br /&gt;
&lt;br /&gt;
* Similarly, ensure that the picture is refreshed when the stylesheet is changed.&lt;br /&gt;
&lt;br /&gt;
* Convert the simple user agent style sheet given at http://www.w3.org/TR/SVG11/styling.html#UAStyleSheet to libcroco structures (perhaps by passing strings to libcroco parsing functions) and store in &amp;lt;tt&amp;gt;desktop-&amp;amp;gt;style_cascade&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Modify style.cpp to query the stylesheet.  (Done but not checked in.)&lt;br /&gt;
&lt;br /&gt;
* There may be some work needed for &amp;quot;shorthand properties&amp;quot;, e.g. `&amp;lt;tt&amp;gt;marker&amp;lt;/tt&amp;gt;' is shorthand for modifying &amp;lt;tt&amp;gt;marker-start&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;marker-mid&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;marker-end&amp;lt;/tt&amp;gt; properties (http://www.w3.org/TR/SVG11/painting.html#MarkerProperty).  A non-SVG CSS example is `&amp;lt;tt&amp;gt;margin&amp;lt;/tt&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
==== Updating for changes to &amp;amp;lt;style&amp;amp;gt; content ====&lt;br /&gt;
&lt;br /&gt;
State so far: Every keystroke in the xml editor in the content of the &amp;amp;lt;style&amp;amp;gt; element gets sp_style_elem_read_content to be re-read.&lt;br /&gt;
One can force an object to get the revised stylesheet info by e.g. &amp;amp;lt;Up&amp;amp;gt; &amp;amp;lt;Down&amp;amp;gt; (forcing an update) then deleting its style attribute.&lt;br /&gt;
So one change is that we shouldn't be so keen to put things in the &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; attribute.&lt;br /&gt;
Currently, the stylesheet info gets merged into &amp;lt;tt&amp;gt;SPStyle&amp;lt;/tt&amp;gt;, and set the &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; attribute to contain everything in &amp;lt;tt&amp;gt;SPStyle&amp;lt;/tt&amp;gt; (and clear any styling attributes like &amp;lt;tt&amp;gt;fill=...&amp;lt;/tt&amp;gt;).&lt;br /&gt;
One existing problem with this behaviour (other than how it interacts with stylesheets) is that we discard any &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; properties we don't know about.  Whereas we ought to remember the content of the style attribute and only replace the properties we've changed, and add to if necessary.&lt;br /&gt;
&lt;br /&gt;
One implementation would be to keep &amp;lt;tt&amp;gt;SPStyle&amp;lt;/tt&amp;gt; but indicate which properties came from where, and hence which ones need to be written to the style attribute and which ones don't.&lt;br /&gt;
Apart from not writing if src==stylesheet, we can also avoid writing if src==attribute: i.e. don't gratuitously break SVG Tiny conformance of a document (or more generally break compatibility with implementations that don't honour CSS &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; attributes).&lt;br /&gt;
Not to say that we can't choose to use the &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; attribute for properties that the user changes during an inkscape session, but currently we change from attributes to &amp;lt;tt&amp;gt;style=&amp;lt;/tt&amp;gt;... even for shapes that the user just changes the position of without changing any styling stuff.&lt;br /&gt;
&lt;br /&gt;
=== Why can't we use libcroco-0.6's existing libxml interface to cr-sel-eng.c ? ===&lt;br /&gt;
&lt;br /&gt;
Some CSS selectors (http://www.w3.org/TR/REC-CSS2/selector.html) can express &amp;quot;is preceded by X&amp;quot; or &amp;quot;is a descendent of X&amp;quot; (where X can itself be similarly constrained recursively), so we'd pretty much need to maintain the entire document in libxml form if we want to use libcroco for CSS selectors.&lt;br /&gt;
&lt;br /&gt;
Suppose we want to find the style of node N.  We pass libcroco a stylesheet and ask it what rules apply to N.&lt;br /&gt;
If the stylesheet says &amp;quot;nodes that are preceded by a node that is preceded by a node that's a descendent of (... etc. ...) have red stroking&amp;quot; then libcroco needs to be able to navigate through the tree.&lt;br /&gt;
So we can't pass libcroco just a libxml version of node N, we need to fill in its parent and sibling links, providing a libxml node for a significant proportion of all nodes in the tree.&lt;br /&gt;
(Short of using hardware watchpoints to check access to the sibling/parent links and supply them lazily.)&lt;br /&gt;
&lt;br /&gt;
=== Notes on how to implement external stylesheets ===&lt;br /&gt;
&lt;br /&gt;
External stylesheets are arguably easier to implement than internal ones: the reference to the stylesheet comes right at the beginning of the xml file before even the top-level &amp;amp;lt;svg&amp;amp;gt; element, so we already know all the styling stuff for &amp;amp;lt;svg&amp;amp;gt; as soon as we reach it.  Editing may also be a bit easier, in that external stylesheets usually exist for sharing the same style among many documents, so there's less expectation of being able to edit the stylesheet itself.&lt;br /&gt;
&lt;br /&gt;
The work of actually parsing the stylesheet once it's in memory is already done: see src/sp-style-elem.cpp:sp_style_elem_read_content.&lt;br /&gt;
&lt;br /&gt;
So for read-only support of a single external stylesheet, it may well be just a matter of looking at how we can get XML processing instructions from libxml2 (please add a reference to the relevant documentation or code here once you've looked it up, anyone), and parse the pseudo-xml-attributes (see http://www.w3.org/TR/xml-stylesheet/; note that these aren't real xml attributes that libxml2 handles, so we do the parsing ourselves — or pass the string to a separate libxml2 instance/session/parser).&lt;br /&gt;
&lt;br /&gt;
Then get the CSS from the specified URI (presumably using the same gnome vfs stuff that we currently use for accepting URIs on the commandline, though we could use libcurl instead: man curl, and see the --libcurl option for producing example code!).&lt;br /&gt;
&lt;br /&gt;
Then proceed as sp-style-elem.cpp:sp_style_elem_read_content does (presumably splitting off most of that function into a new function that takes the string as argument).&lt;br /&gt;
&lt;br /&gt;
==== Multiple stylesheets ====&lt;br /&gt;
&lt;br /&gt;
Initially, we would support only a single stylesheet, as libcroco currently doesn't support multiple stylesheets.&lt;br /&gt;
&lt;br /&gt;
If you don't want to change libcroco, then it suffices to concatenate all the stylesheets together; the only thing you lose with that approach is that any parsing errors won't have the right line number, but I believe it gives completely correct results in absence of errors in any of the stylesheets.&lt;br /&gt;
&lt;br /&gt;
The xml-stylesheet spec says that multiple external stylesheets interact the same way as in HTML; the relevant part of the HTML spec is http://www.w3.org/TR/html4/present/styles.html#h-14.3.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Discussion]]&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Animation-(Timeline)&amp;diff=39</id>
		<title>Animation-(Timeline)</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Animation-(Timeline)&amp;diff=39"/>
		<updated>2005-08-10T00:18:33Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Add link to Ambulant SMIL 2 viewer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== User interface for timeline-based animation ===&lt;br /&gt;
&lt;br /&gt;
==== Existing animation programs (Free &amp;amp;amp; non-Free) ====&lt;br /&gt;
&lt;br /&gt;
* MacromediaFlash is a good non-Free example. &lt;br /&gt;
* Macromedia Director prior to version MX had a different interface (http://www.rice.edu/fondren/erc/howto/director.html) which I prefer(ed) over Flash&lt;br /&gt;
* QFlash is a FUNCTIONAL free-software mock-up of the Flash 4 interface, which can import SVG files but not edit them. (http://qflash.sourceforge.net)&lt;br /&gt;
* F4l is a non-functional free-software mock-up of the Flash 4 interface.(http://f4l.sf.net/)&lt;br /&gt;
* [[Moho]] as a gratis-but-non-free example. (Written in Java.) &lt;br /&gt;
* LimSee2 (http://wam.inrialpes.fr/software/limsee2/) is an excellent almost-free basis. (The web site incorrectly claims open source, but it means only that the source code is visible: the actual license says in capital letters no commercial use or distribution.)&lt;br /&gt;
* Spalah Flash (http://spalah.sourceforge.net/?p=10) (not to be confused with Spalah CMS) &amp;quot;is a GTK2/GNOME2 based application for generating Macromedia SWF and W3C SVG animations.&amp;quot;  The GUI is today minimalist but the author is trying to integrate it with inkscape. See http://spalah.sourceforge.net/?p=19&lt;br /&gt;
* SMIL 2.1 player (GPL): http://www.cwi.nl/projects/Ambulant/distPlayer.html&lt;br /&gt;
==== Other thoughts ====&lt;br /&gt;
&lt;br /&gt;
Suggestion from someone else: working like CinePaint (compaired with Gimp), with each frame independently from each svg document (working like this or providing this feature) - providing vectorial edition quality we can't get on apps like MacromediaFlash or any other (maybe ToonBoom or Moho) - allowing us to make our work fast publish without further lack of quality.&lt;br /&gt;
(One more suggestion about it: being able to convert .swf to .svg sequence (or animated .sgv) and vice versa.)&lt;br /&gt;
&lt;br /&gt;
It is suggested that there be basically two modes: Local (Object) mode and Global mode. Below is a picture showing a very rough design of the local mode:&lt;br /&gt;
http://www.inkscape.org/wiki_uploads/anim_gui1.png&lt;br /&gt;
&lt;br /&gt;
In local modes, all properties of the object editing will be shown on a timeline, and one can create and edit frame within the timeline. Then one may assign different value of that properties on different timeline, or make it change linearly, or inlinearly :)&lt;br /&gt;
&lt;br /&gt;
==== Fantavision example ====&lt;br /&gt;
Back in the '80's there was a program on Apple IIE (Amiga and MS-DOS too) called &amp;quot;Fantavision&amp;quot;. It allowed one to create vector artwork (although I didn't understand at the time that that was what it was called) and animations. It allowed one to create frames of animation where you manually repositioned, recolored, scaled, rotated etc. the objects from one frame to the next. However, it then automatically interpolated frames between the 2 frames (the number of interpolated frames was configurable) such that it create a smooth transition of the object moving from one frame to the other. The effect was very similiar to the &amp;quot;Morphing&amp;quot; effect for raster graphics (popularized in a Michael Jackson video, I believe). That is, the system calculated the trajectory of &amp;quot;Key Points&amp;quot; of the objects from one frame to the next.  This process is often called &amp;quot;Tweening&amp;quot; (a term used by Macromedia Flash).  [[Sketch|Skencil]] (formerly known as [[Sketch]]) supports this functionality and describes it as &amp;quot;Blending&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
I guess what I'm saying is that I think a nice interface to create animations would be similiar. So to animate you would do the following:&lt;br /&gt;
&lt;br /&gt;
* Draw the initial SVG Image &lt;br /&gt;
&lt;br /&gt;
* Increment Frame (from say 1 to 20)&lt;br /&gt;
&lt;br /&gt;
* Reposition the elements in frame 20 (including scaling, color changes, adding removing objects, etc, etc, etc)&lt;br /&gt;
&lt;br /&gt;
* System would then calculate a trajectory for each key point from frame 1 to frame 20. Trajectories would be calculated for things like:&lt;br /&gt;
** Each &amp;quot;node&amp;quot; of an object&lt;br /&gt;
** Color &lt;br /&gt;
** Transformation Matrix&lt;br /&gt;
** etc&lt;br /&gt;
&lt;br /&gt;
* You could display/manipulate the trajectories (using the trajectory editor shown above by the original creator of this topic)&lt;br /&gt;
&lt;br /&gt;
* The system would then store the animations using SVG trajectories and the &amp;quot;Key Points&amp;quot; would be the frames you manually created&lt;br /&gt;
&lt;br /&gt;
:So, to create say a 100 frame animation, one might only need to manually create/modify 10 frames and the system would interpolate the additional frames as necessary.&lt;br /&gt;
&lt;br /&gt;
* Also, once the system interpolated frames it would allow you to manually modify the interpolated frames creating further &amp;quot;Key Points&amp;quot; and allow further refinement and interpolation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: 3D apps such as blender also use a technique like this, which I think is most widely known as &amp;quot;keyframe animation&amp;quot; or simply &amp;quot;keyframing&amp;quot;.  However, many such systems tie the keys too closely to actual animation frames, and this creates problems when the frames-per-second rate changes.  Particularly in the case of vector apps which are not so low-level as bitmaps and animation frames, I would suggest that frames should be as abstract as possible.&lt;br /&gt;
&lt;br /&gt;
Having key positions in simple percentages of the total animation time might be a better solution.  This would also need to be a global/local system, of course: animated objects would have their own animation time specified when inserted into a larger document.  A character's walkcycle would end at 100%, but in the larger animation, it would perhaps only be 5% of the total time, yet repeating as the object moves across the screen.&lt;br /&gt;
&lt;br /&gt;
One issue with this abstraction of frames might be that important animation effects do not occur exactly within frames: small things could be mistimed, or simply missed altogether.  If you set the frame rate too low, this would be an obvious side effect, so it's not necessarily a problem&lt;br /&gt;
that Inkscape should try to fix.  On the other hand, a few things could be done to ease this.  For instance, &amp;quot;snapping&amp;quot; animation events to frames when exporting (thereby slightly altering the timing), or perhaps just warning that certain animation events are not visible at such a low frame rate.&lt;br /&gt;
&lt;br /&gt;
Of course, on the web, with SVG and DHTML, where most Inkscape animations will hopefully be used one day, frames are not an issue at all, and we just worry about keys in time :)&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SVG_Test_Suite_Compliance&amp;diff=4371</id>
		<title>SVG Test Suite Compliance</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SVG_Test_Suite_Compliance&amp;diff=4371"/>
		<updated>2005-07-25T06:48:53Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Retract the &amp;quot;still crashes&amp;quot; claim, as that test appears to be from an old version of inkscape&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This table summarises the results of testing Inkscape against the [http://www.w3.org/Graphics/SVG/Test/ W3C SVG Test Suite].&lt;br /&gt;
&lt;br /&gt;
Last complete test was performed on Windows with pre-release version Inkscape-0.41+0.42pre2-1.win32.exe. See also&lt;br /&gt;
* [[SVG Test Suite Compliance V0.41]]&lt;br /&gt;
&lt;br /&gt;
== Key ==&lt;br /&gt;
; '''pass''' : the test passed fully (69 occurences)&lt;br /&gt;
; '''partial''' : the test partially failed but it may be easy to make it pass (25 occurences)&lt;br /&gt;
; '''fail''' : the test failed (86 occurences)&lt;br /&gt;
; '''crash''' : the test failed and Inkscape crashed (1 occurence)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
== Results ==&lt;br /&gt;
=== Animation (not yet supported) ===&lt;br /&gt;
; animate-elem-02-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-03-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-04-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-05-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-06-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-07-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-08-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-09-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-10-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-11-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-12-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-13-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-14-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-15-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-16-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-17-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-18-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-19-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-20-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-21-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-22-b.svg : '''fail'''&lt;br /&gt;
; animate-elem-23-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-24-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-25-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-26-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-27-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-28-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-29-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Colors ===&lt;br /&gt;
; color-prof-01-f.svg   : '''fail'''&lt;br /&gt;
: &amp;lt;i&amp;gt;Tests color profile support.  Hopefully the Little CMS work should address this: see InkscapeColor.&amp;lt;/i&amp;gt;&lt;br /&gt;
; color-prop-01-b.svg   : '''fail'''&lt;br /&gt;
: &amp;lt;i&amp;gt;there are bugs for variations of this test: see comment in sp_object_get_style_property.&amp;lt;/i&amp;gt;&lt;br /&gt;
; color-prop-02-f.svg   : '''pass'''&lt;br /&gt;
; color-prop-03-t.svg   : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Coordinates ===&lt;br /&gt;
; coords-trans-01-b.svg : '''pass'''&lt;br /&gt;
; coords-trans-02-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-03-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-04-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-05-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-06-t.svg : '''pass'''&lt;br /&gt;
; coords-units-01-b.svg : '''partial''' - incorrect clipping&lt;br /&gt;
; coords-units-02-b.svg : '''partial'''&lt;br /&gt;
; coords-units-03-b.svg : '''partial''' - the red background is not clipped correctly&lt;br /&gt;
; coords-viewattr-01-b.svg   : '''fail'''&lt;br /&gt;
; coords-viewattr-02-b.svg   : '''partial''' - viewport boxes not styled correctly&lt;br /&gt;
; extend-namespace-01-f.svg  : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Filters (not yet supported) ===&lt;br /&gt;
; filters-blend-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-color-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-composite-02-b.svg : '''fail'''&lt;br /&gt;
; filters-comptran-01-b.svg  : '''fail'''&lt;br /&gt;
; filters-conv-01-f.svg      : '''fail'''&lt;br /&gt;
; filters-diffuse-01-f.svg   : '''fail'''&lt;br /&gt;
; filters-displace-01-f.svg  : '''fail'''&lt;br /&gt;
; filters-example-01-b.svg   : '''fail'''&lt;br /&gt;
; filters-gauss-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-image-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-light-01-f.svg     : '''fail'''&lt;br /&gt;
; filters-morph-01-f.svg     : '''fail'''&lt;br /&gt;
; filters-offset-01-b.svg    : '''fail'''&lt;br /&gt;
; filters-specular-01-f.svg  : '''fail'''&lt;br /&gt;
; filters-tile-01-b.svg      : '''fail'''&lt;br /&gt;
; filters-turb-01-f.svg      : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Fonts ===&lt;br /&gt;
; fonts-elem-01-t.svg : '''fail'''&lt;br /&gt;
; fonts-elem-02-t.svg : '''fail'''&lt;br /&gt;
; fonts-elem-03-b.svg : '''fail'''&lt;br /&gt;
; fonts-elem-04-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Interaction (not supported) ===&lt;br /&gt;
; interact-cursor-01-f.svg : '''crash''' (on Windows when attempting the interaction)&lt;br /&gt;
: &amp;lt;i&amp;gt;Crash now fixed in CVS.  (Windows user please confirm, and update counts accordingly.)  Thanks to ACSpike for backtrace.&amp;lt;/i&amp;gt;&lt;br /&gt;
:::does not crash on linux, pre2 - bb&lt;br /&gt;
; interact-dom-01-b.svg    : '''fail'''&lt;br /&gt;
; interact-events-01-b.svg : '''fail'''&lt;br /&gt;
; interact-order-01-b.svg  : '''fail'''&lt;br /&gt;
; interact-order-02-b.svg  : '''fail'''&lt;br /&gt;
; interact-order-03-b.svg  : '''fail'''&lt;br /&gt;
; interact-zoom-01-t.svg   : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Linking ===&lt;br /&gt;
; linking-a-01-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-02-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-03-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-04-t.svg   : '''fail'''&lt;br /&gt;
; linking-uri-01-b.svg : '''fail'''&lt;br /&gt;
; linking-uri-02-b.svg : '''fail'''&lt;br /&gt;
; linking-uri-03-t.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Masking ===&lt;br /&gt;
; masking-mask-01-b.svg    : '''partial''' - the string is incorrectly rendered (see Fonts above)&lt;br /&gt;
; masking-opacity-01-b.svg : '''pass'''&lt;br /&gt;
; masking-path-01-b.svg    : '''pass'''&lt;br /&gt;
; masking-path-02-b.svg    : '''partial'''&lt;br /&gt;
; masking-path-03-b.svg    : '''fail'''&lt;br /&gt;
; masking-path-04-b.svg    : '''pass'''&lt;br /&gt;
; masking-path-05-f.svg    : '''partial''' - clip-rule=evenodd not functioning&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
; metadata-example-01-b.svg : '''pass''' (I think)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Painting ===&lt;br /&gt;
; painting-fill-01-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-02-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-03-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-04-t.svg   : '''pass'''&lt;br /&gt;
; painting-marker-01-f.svg : '''pass'''&lt;br /&gt;
; painting-marker-02-f.svg : '''partial''' - mishandling of marker strokes&lt;br /&gt;
; painting-render-01-b.svg : '''pass'''&lt;br /&gt;
; painting-stroke-01-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-02-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-03-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-04-t.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Paths ===&lt;br /&gt;
; paths-data-01-t.svg : '''pass'''&lt;br /&gt;
; paths-data-02-t.svg : '''pass'''&lt;br /&gt;
; paths-data-03-f.svg : '''pass'''&lt;br /&gt;
; paths-data-04-t.svg : '''pass'''&lt;br /&gt;
; paths-data-05-t.svg : '''pass'''&lt;br /&gt;
; paths-data-06-t.svg : '''pass'''&lt;br /&gt;
; paths-data-07-t.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Color Gradients ===&lt;br /&gt;
; pservers-grad-01-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-02-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-03-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-04-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-05-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-06-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-07-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-08-b.svg : '''partial''' - gradient is ok; font is incorrect (see Fonts above)&lt;br /&gt;
; pservers-grad-09-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-10-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-11-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-12-b.svg : '''pass'''&lt;br /&gt;
; pservers-pattern-01-b.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Rendering ===&lt;br /&gt;
; render-elems-01-t.svg : '''pass'''&lt;br /&gt;
; render-elems-02-t.svg : '''pass'''&lt;br /&gt;
; render-elems-03-t.svg : '''fail''' - not rendered&lt;br /&gt;
; render-elems-06-t.svg : '''partial''' - rendering is ok; font is incorrect (see Fonts above)&lt;br /&gt;
; render-elems-07-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-elems-08-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-groups-01-b.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-groups-03-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scripting (not supported) ===&lt;br /&gt;
; script-handle-01-b.svg : '''fail'''&lt;br /&gt;
; script-handle-02-b.svg : '''fail'''&lt;br /&gt;
; script-handle-03-b.svg : '''fail'''&lt;br /&gt;
; script-handle-04-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Shapes ===&lt;br /&gt;
; shapes-circle-01-t.svg   : '''pass'''&lt;br /&gt;
; shapes-ellipse-01-t.svg  : '''pass'''&lt;br /&gt;
; shapes-line-01-t.svg     : '''pass'''&lt;br /&gt;
; shapes-polygon-01-t.svg  : '''pass'''&lt;br /&gt;
; shapes-polyline-01-t.svg : '''partial''' - the pentagon ends are incorrect&lt;br /&gt;
; shapes-rect-01-t.svg     : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Structure ===&lt;br /&gt;
; struct-cond-01-t.svg  : '''fail'''&lt;br /&gt;
; struct-cond-02-t.svg  : '''fail'''&lt;br /&gt;
; struct-defs-01-t.svg  : '''pass'''&lt;br /&gt;
; struct-dom-01-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-02-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-03-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-04-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-05-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-06-b.svg   : '''fail'''&lt;br /&gt;
; struct-frag-01-t.svg  : '''pass'''&lt;br /&gt;
; struct-group-01-t.svg : '''pass'''&lt;br /&gt;
; struct-group-02-b.svg : '''pass'''&lt;br /&gt;
; struct-image-01-t.svg : '''pass'''&lt;br /&gt;
; struct-image-02-b.svg : '''partial''' - problem with use element&lt;br /&gt;
; struct-image-03-t.svg : '''fail'''&lt;br /&gt;
; struct-image-04-t.svg : '''pass'''&lt;br /&gt;
; struct-image-05-b.svg : '''fail''' - Prints the message: error loading pixbuf at close&lt;br /&gt;
; struct-symbol-01-b.svg : '''partial''' - the topleft image is not resized correctly&lt;br /&gt;
&lt;br /&gt;
=== CSS ===&lt;br /&gt;
; styling-css-01-b.svg     : '''pass'''&lt;br /&gt;
; styling-css-02-b.svg     : '''pass'''&lt;br /&gt;
; styling-css-03-b.svg     : '''pass'''&lt;br /&gt;
; styling-inherit-01-b.svg : '''pass'''&lt;br /&gt;
; styling-pres-01-t.svg    : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
; text-align-01-b.svg    : '''pass'''&lt;br /&gt;
; text-align-02-b.svg    : '''fail''' - baseline-shift not functioning&lt;br /&gt;
; text-align-03-b.svg    : '''pass'''&lt;br /&gt;
; text-align-04-b.svg    : '''partial''' - tref/t.o.a.p. not supported&lt;br /&gt;
; text-align-05-b.svg    : '''pass'''&lt;br /&gt;
; text-align-06-b.svg    : '''fail'''&lt;br /&gt;
; text-altglyph-01-b.svg : '''fail'''&lt;br /&gt;
; text-deco-01-b.svg     : '''partial''' - underline and strikethrough not functioning; whitespace problem&lt;br /&gt;
; text-fonts-01-t.svg    : '''partial''' - monospaced font is incorrect&lt;br /&gt;
; text-fonts-02-t.svg    : '''partial''' - font-weight=&amp;quot;lighter&amp;quot; not functioning&lt;br /&gt;
; text-intro-01-t.svg    : '''pass'''&lt;br /&gt;
; text-intro-02-b.svg    : '''partial''' - right-to-left text not functioning&lt;br /&gt;
; text-intro-03-b.svg    : '''partial''' - text is vertical but oriented incorrectly&lt;br /&gt;
; text-intro-04-t.svg    : '''pass'''&lt;br /&gt;
; text-path-01-b.svg     : '''pass'''&lt;br /&gt;
; text-spacing-01-b.svg  : '''pass'''&lt;br /&gt;
; text-text-01-b.svg     : '''fail''' - 'textLength' and 'lengthAdjust' not functioning &lt;br /&gt;
; text-text-03-b.svg     : '''partial''' - underline and strikethrough not functioning&lt;br /&gt;
; text-tref-01-b.svg     : '''fail''' - tref not functioning&lt;br /&gt;
; text-tselect-01-b.svg  : '''pass''' &lt;br /&gt;
; text-tspan-01-b.svg    : '''partial''' - the red &amp;quot;are&amp;quot; positioned incorrecly&lt;br /&gt;
; text-ws-01-t.svg       : '''pass'''&lt;br /&gt;
; text-ws-02-t.svg       : '''pass'''&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Creating_Inkscape_distributions&amp;diff=472</id>
		<title>Creating Inkscape distributions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Creating_Inkscape_distributions&amp;diff=472"/>
		<updated>2005-07-16T00:26:49Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: *Merge the two mentions of doc/keys.html.  Typographical: curly quotes for command disambiguation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Creating Dists of Inkscape ==&lt;br /&gt;
&lt;br /&gt;
Those who wish to produce packaged releases of inkscape are welcome to do so.&lt;br /&gt;
If it is packages changes that you've made to the official release, please select a&lt;br /&gt;
version name that distinguishes it from the official version, to avoid confusion.  For&lt;br /&gt;
example, “inkscape-0.35-johndoe.tar.gz”.  Please consider distributing your changes&lt;br /&gt;
as a patch rather than as a full distribution, as patches tend to be easier to &lt;br /&gt;
maintain.&lt;br /&gt;
&lt;br /&gt;
Inkscape's release process works like this:&lt;br /&gt;
&lt;br /&gt;
# Start of release process - Finish up work on features.&lt;br /&gt;
# Feature Freeze Mode - Shift focus from feature implementation to bug fixing&lt;br /&gt;
# Hard Freeze - Two freeze wardens are named.  All development must be done as patches submitted to the freeze wardens for review and integration.&lt;br /&gt;
# Branch - The codebase is tagged and branched.  Final release tarball is posted.  The codebase is returned to regular open development.&lt;br /&gt;
# Packaging - Three days are allowed for creating release dists (rpm's, deb's, exe's, and autopackages).&lt;br /&gt;
# Release Announcement - A Release Announcement and a Press Release are written and circulated to relevant online news sites.  Our Freshmeat record is updated.  &lt;br /&gt;
&lt;br /&gt;
=== Feature Freeze Mode ===&lt;br /&gt;
&lt;br /&gt;
In the run-up to CreatingDists, for a short time preceding the tagging of the release it's a good idea to hold off on adding new features or doing other major changes like architectural changes to the code that might decrease its stability.  Whether a change is minor enough to be “ok” is left to the developer's judgement, and they're trusted to be conservative and careful.&lt;br /&gt;
&lt;br /&gt;
The most useful activity to do during a feature freeze is to locate and/or fix bugs that produce crashes, and to do so with the smallest amount of change to the codebase possible.  If a “proper” fix requires architectural changes or redesign of the code, consider writing that up as a post-release task.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
It might be useful to branch off a release branch a week before making the release.  Hopefully most people using CVS would switch to this branch at this time.  Then only bug fixes can go into that branch.  --[[Ted]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Branching the release candidate ===&lt;br /&gt;
&lt;br /&gt;
Before release, a branch should have been be created for that release in the form RELEASE_&amp;lt;major&amp;gt;_&amp;lt;minor&amp;gt;_BRANCH.  For example, 0.38 should have a branch called RELEASE_0_38_BRANCH.&lt;br /&gt;
&lt;br /&gt;
Minor fixes and code review can then be performed on that branch before the final release; it also permits making future point releases easily (if necessary).&lt;br /&gt;
&lt;br /&gt;
To check out the release branch into a fresh working copy, you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cvs co -r RELEASE_0_38_BRANCH -d inkscape-0.38-branch inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or, if you have a checked out tree handy, it is quicker to use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp -a inkscape inkscape-0.38-branch&lt;br /&gt;
cd inkscape-0.38-branch&lt;br /&gt;
cvs up -PAd -r RELEASE_0_38_BRANCH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the release is deemed ready a distribution tarball should be created as below.&lt;br /&gt;
&lt;br /&gt;
=== Creating a distribution source tarball package ===&lt;br /&gt;
&lt;br /&gt;
On the release branch (NOT ON HEAD):&lt;br /&gt;
&lt;br /&gt;
* Set the version name via the file configure.ac in the AC_INIT() macro, Makefile.mingw.common, inkscape.nsi, and in debian/changelog&lt;br /&gt;
* Add the release notes into the NEWS file in the release branch &lt;br /&gt;
* Run ./autogen.sh &amp;amp;&amp;amp; ./configure (with any flags, e.g. CXXFLAGS=).&lt;br /&gt;
* Run “cd src &amp;amp;&amp;amp; make helper/sp-marshal.h helper/sp-marshal.cpp inkscape_version.h &amp;amp;&amp;amp; perl mkfiles.pl &amp;amp;&amp;amp; perl mkdep.pl”, then do “cvs -q diff -du make.*|less” to check for anything strange (e.g. source files accidentally added or removed), and finally “cvs commit -m '' make.*”.&lt;br /&gt;
* Make sure the code passes a “make distcheck”&lt;br /&gt;
* This should produce inkscape-VERSION.tar.gz&lt;br /&gt;
* Commit the changed configure.ac and other files to the branch&lt;br /&gt;
* Tag the release in CVS&lt;br /&gt;
&lt;br /&gt;
Release tags should be in the form RELEASE_&amp;lt;major&amp;gt;_&amp;lt;minor&amp;gt;_&amp;lt;point&amp;gt;. A non-point-release like 0.38 would get the tag RELEASE_0_38_0, 0.38.1 would get the tag RELEASE_0_38_1, and so on.&lt;br /&gt;
&lt;br /&gt;
On HEAD:&lt;br /&gt;
&lt;br /&gt;
* Add the release notes into the NEWS file in the release branch &lt;br /&gt;
* Change configure.ac and inkscape_version.h.mingw to reflect the new future version&lt;br /&gt;
&lt;br /&gt;
=== GPG signing Tarballs === &lt;br /&gt;
&lt;br /&gt;
Downstream packagers are asking for and may soon demand gpg signed tarballs. For Fedora, this is not a requirement, but does ease acceptance of packages. It also shows we are doing “The Right Thing”. md5sums are not foolproof.&lt;br /&gt;
 &lt;br /&gt;
* To create a gpg signed tarball:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$gpg -u packager@foo.net --armor --output tarball.sig --detach-sig tarball.tar.gz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To verify :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$gpg --verify ./tarball.asc ./tarball.tar.gz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course, this step doesn't mean much in practice unless people have a trust path to your key.  Packagers are encouraged to attend key signing parties and take other measures to establish important trust paths to their keys (particularly with downstream packagers).&lt;br /&gt;
&lt;br /&gt;
:Where are the public keys matching these sig's posted?&lt;br /&gt;
&lt;br /&gt;
=== Creating a Windows Distro ===&lt;br /&gt;
Inkscape/sodipodi has always been&lt;br /&gt;
buildable on Win32.  The problem with the sodipodi and original inkscape build, though,&lt;br /&gt;
was that the Win32 builder had to download and configure&lt;br /&gt;
a lot of things to make it to work.    Mingw, MSYS, automake,&lt;br /&gt;
autoconf, pkg-config, the codepages, etc.  He would spend more&lt;br /&gt;
time on THAT than the actual code.&lt;br /&gt;
&lt;br /&gt;
What a pain for the average developer/user who merely wants&lt;br /&gt;
to make Inkscape do what he wants it to do.  Why waste&lt;br /&gt;
days and days getting it to compile, when the developer&lt;br /&gt;
would rather be working on the program itself?&lt;br /&gt;
&lt;br /&gt;
So we spent several weeks collecting libraries, building others,&lt;br /&gt;
installing the codepages into the source (which we can delete soon&lt;br /&gt;
because of Pango) and creating a set of clean makefiles&lt;br /&gt;
that work on Win9x, NT, XP, and the cross-compiler.&lt;br /&gt;
It is a bit more work for people like me, but hopefully it&lt;br /&gt;
attains its goal of saving a lot of work for other people.&lt;br /&gt;
&lt;br /&gt;
Also, remember that on Unix/Linux,  $PREFIX is commonly&lt;br /&gt;
/usr/local  or  /usr  or something like that.   On M$, all of&lt;br /&gt;
a program's files are typically located in their own directory.  So all&lt;br /&gt;
of the files are located relative to “.”.  Actually, relative to&lt;br /&gt;
the .exe that is currently running.&lt;br /&gt;
&lt;br /&gt;
.....anyway, just wanted to explain that there is a reason&lt;br /&gt;
for the Win32 build to be constructed in such a manner,&lt;br /&gt;
and that we haven't just been arbitrary.&lt;br /&gt;
&lt;br /&gt;
Once the tree is built (“make -f Makefile.mingw” and “make -f Makefile.mingw dist”) into the “inkscape” directory, the [http://nsis.sourceforge.net/ NSIS] installer script “inkscape.nsi” can be run to create the self-extracting installer.&lt;br /&gt;
&lt;br /&gt;
The Windows download package should be named according to the following scheme:&lt;br /&gt;
&lt;br /&gt;
    inkscape-$RELEASE-$PKG.$WINVER.exe&lt;br /&gt;
&lt;br /&gt;
Where $WINVER is the required Windows version, e.g. “win32”.  For example:&lt;br /&gt;
&lt;br /&gt;
    inkscape-0.37-1.win32.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating a Debian .deb ===&lt;br /&gt;
&lt;br /&gt;
The article [[CompilingDebian]] provides a makefile to download a tarball and build a debian package therefrom.&lt;br /&gt;
&lt;br /&gt;
=== Creating a distribution RPM ===&lt;br /&gt;
&lt;br /&gt;
Method A:&lt;br /&gt;
# do as above for tarball, or download the release tarball&lt;br /&gt;
# login as root&lt;br /&gt;
# rpmbuild -tb inkscape-x.x.tar.gz&lt;br /&gt;
# Your RPMs will be in /usr/src/rpm/RPMS (/usr/src/redhat on RH systems)&lt;br /&gt;
# RPMs should be GPG signed&lt;br /&gt;
&lt;br /&gt;
Method B:&lt;br /&gt;
# do as above for tarball, or download the release tarball&lt;br /&gt;
# mkdir ~/rpm&lt;br /&gt;
# Copy the tarball to ~/rpm/SOURCES/&lt;br /&gt;
# Copy the inkscape.spec from the tarball to ~/rpm/SPECS/inkscape.spec&lt;br /&gt;
# rpmbuild -ba ~/rpm/SPECS/inkscape.spec&lt;br /&gt;
# Your RPMs will be in ~/rpm/RPMS and ~/rpm/SRPMS&lt;br /&gt;
# RPMs should be GPG signed&lt;br /&gt;
&lt;br /&gt;
The rpm should be named according to the following pattern:&lt;br /&gt;
&lt;br /&gt;
   inkscape-$RELEASE-$PKG.$DISTRO.$ARCH.rpm&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
&lt;br /&gt;
$RELEASE: the Inkscape release number, such as “0.37”, “0.36.2”, etc.  &lt;br /&gt;
The third number should be omitted if it is 0.  (I.e., 0.37 instead of 0.37.0)&lt;br /&gt;
&lt;br /&gt;
$PKG:  A version number for your package.  Use a value of 1 for your package, and increment it if you&lt;br /&gt;
need to update the released package for some reason.&lt;br /&gt;
&lt;br /&gt;
$DISTRO:  The name and an indicator of the version number for the distro.  E.g.,&lt;br /&gt;
rh71, rh90, mdk91, suse90, fc1, etc.  No need to be too exhaustive with the distro versions;&lt;br /&gt;
for a given brand of distro it's probably enough to have a reasonably “modern” release&lt;br /&gt;
and an older one for legacy support.  For instance, rh71 and rh90.&lt;br /&gt;
&lt;br /&gt;
$ARCH:  The architecture that the package was built on.  E.g., i686, i386, athlon, ppc, etc.&lt;br /&gt;
Don't bother with i586 - either i386 or i686 is preferred.  The i386 packages will run on Cyrix &lt;br /&gt;
and K-6.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
   inkscape-0.37-1.mdk80.i386.rpm&lt;br /&gt;
   inkscape-0.37-1.mdk80.i686.rpm&lt;br /&gt;
   inkscape-0.37-1.mdk91.i386.rpm&lt;br /&gt;
   inkscape-0.37-1.mdk91.i686.rpm&lt;br /&gt;
&lt;br /&gt;
   inkscape-0.37-1.fc1.i386.rpm&lt;br /&gt;
   inkscape-0.37-1.fc1.i686.rpm&lt;br /&gt;
   inkscape-0.37-1.fc1.athlon.rpm&lt;br /&gt;
   inkscape-0.37-1.fc1.ppc.rpm&lt;br /&gt;
&lt;br /&gt;
For creating spec files, feel free to list yourself as the packager, but please use &lt;br /&gt;
inkscape-devel@lists.sourceforge.net as the contact email address, to ensure that&lt;br /&gt;
questions/complaints about the RPM go to the official support channel.&lt;br /&gt;
&lt;br /&gt;
==== Patching RPMs ====&lt;br /&gt;
&lt;br /&gt;
Occasionally, the RPM will not build without some modifications.  If the problem is serious enough that it affects every packaging format, this could signal a need to do a point release, but usually you can just add a patch specifically for the RPM.  This is what RPM is for, after all.  :-)&lt;br /&gt;
&lt;br /&gt;
Here's how to do it:&lt;br /&gt;
&lt;br /&gt;
1.  Create a copy of the source tree, with the modifications needed to correct the issue.&lt;br /&gt;
2.  Generate a patch like this:&lt;br /&gt;
&lt;br /&gt;
   $ diff -uNr package-1.0/ package-1.0p/ &amp;gt; ../SOURCES/package-1.0-my.patch&lt;br /&gt;
&lt;br /&gt;
3.  Next add the patch to the RPM.  In the specfile at %_topdir/SPECS/package.spec, add a line like this at the top of the file:&lt;br /&gt;
&lt;br /&gt;
   Patch0: package-1.0-my.patch&lt;br /&gt;
&lt;br /&gt;
Then further down add a line after the %setup section, like this:&lt;br /&gt;
&lt;br /&gt;
   %prep&lt;br /&gt;
   %setup ...&lt;br /&gt;
   %patch0 -p1&lt;br /&gt;
&lt;br /&gt;
It's a very good idea to split up changes into discrete patches, giving each a different number (they don't have to be consecutively numbered).  Also, be sure to upload the patch(es) to the patch tracker so they'll get into the codebase for the next release.&lt;br /&gt;
&lt;br /&gt;
Then rebuild the package like this:&lt;br /&gt;
&lt;br /&gt;
   rpmbuild -ba SPECS/package.spec&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Signing your package ===&lt;br /&gt;
&lt;br /&gt;
First, you need to have a public/private keypair. This can be generated with gpg using 'gpg --gen-key'.&lt;br /&gt;
&lt;br /&gt;
To add a signature to an extisting package, use the command rpm --addsign /path/to/package.rpm To sign in the process of building a package, use rpmbuild -bb --sign&lt;br /&gt;
&lt;br /&gt;
To check the signature on a package, use rpm --checksig.&lt;br /&gt;
&lt;br /&gt;
=== Releasing Dists on the SourceForge File Release Tool ===&lt;br /&gt;
&lt;br /&gt;
To release a file:  (You need Release Tech permission for your Inkscape account)&lt;br /&gt;
&lt;br /&gt;
* ftp upload.sf.net  (anonymous/anonymous)&lt;br /&gt;
* cd incoming&lt;br /&gt;
* mput filename&lt;br /&gt;
* go to Admin -&amp;gt; File Releases&lt;br /&gt;
* scroll to the bottom and click [Add Release] to the inkscape item&lt;br /&gt;
* Enter 0.35 in the box &amp;amp; click “Create this Release”&lt;br /&gt;
* Fill in the form, checkbox the file you uploaded in (c)&lt;br /&gt;
* It won't give you a clear “success” message, but you can check it got in right by going to the Files list.  You can then edit any of the info you entered, to make it more correct.&lt;br /&gt;
&lt;br /&gt;
Also see CVSNamingConventions if you are making a release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Announcing Releases ===&lt;br /&gt;
&lt;br /&gt;
When you cut a release, send a copy of the release notes as an announcement to inkscape-announce@lists.sourceforge.net.&lt;br /&gt;
If you find other mailing lists or websites that should receive the announcements, add their email address to the inkscape-announce list.  This is done by a list admin such as Bryce Harrington.&lt;br /&gt;
&lt;br /&gt;
'''[AnnouncingReleases Places to Submit Release Announcements]''' - Keep an eye out for other places we could announce such as distros or graphics-related sites (not only Linux-centric!).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Updating Website Collateral ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When a new release is cut, there are several pieces of info that need to be added to the website:&lt;br /&gt;
&lt;br /&gt;
* Add a news item on front page&lt;br /&gt;
* Review/revise FAQ&lt;br /&gt;
* Review/revise Roadmap&lt;br /&gt;
* Add or revise Screenshots (if appropriate)&lt;br /&gt;
* doc directory: Add the manpage for the release, update doc/keys.html file, and change the corresponding version number(s) in doc/index.php.&lt;br /&gt;
** From shell.sf.net, cd to the inkscape_web directory and run the command “(cd ../inkscape; cvs update;chmod g+w -R * 2&amp;gt;/dev/null); pod2html --cachedir=/tmp --infile=../inkscape/inkscape.pod --outfile=doc/inkscape-man.html”.&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Creating_Inkscape_distributions&amp;diff=471</id>
		<title>Creating Inkscape distributions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Creating_Inkscape_distributions&amp;diff=471"/>
		<updated>2005-07-16T00:16:22Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Mention that keys.html needs to be updated to the new version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Creating Dists of Inkscape ==&lt;br /&gt;
&lt;br /&gt;
Those who wish to produce packaged releases of inkscape are welcome to do so.&lt;br /&gt;
If it is packages changes that you've made to the official release, please select a&lt;br /&gt;
version name that distinguishes it from the official version, to avoid confusion.  For&lt;br /&gt;
example, &amp;quot;inkscape-0.35-johndoe.tar.gz&amp;quot;.  Please consider distributing your changes&lt;br /&gt;
as a patch rather than as a full distribution, as patches tend to be easier to &lt;br /&gt;
maintain.&lt;br /&gt;
&lt;br /&gt;
Inkscape's release process works like this:&lt;br /&gt;
&lt;br /&gt;
# Start of release process - Finish up work on features.&lt;br /&gt;
# Feature Freeze Mode - Shift focus from feature implementation to bug fixing&lt;br /&gt;
# Hard Freeze - Two freeze wardens are named.  All development must be done as patches submitted to the freeze wardens for review and integration.&lt;br /&gt;
# Branch - The codebase is tagged and branched.  Final release tarball is posted.  The codebase is returned to regular open development.&lt;br /&gt;
# Packaging - Three days are allowed for creating release dists (rpm's, deb's, exe's, and autopackages).&lt;br /&gt;
# Release Announcement - A Release Announcement and a Press Release are written and circulated to relevant online news sites.  Our Freshmeat record is updated.  &lt;br /&gt;
&lt;br /&gt;
=== Feature Freeze Mode ===&lt;br /&gt;
&lt;br /&gt;
In the run-up to CreatingDists, for a short time preceding the tagging of the release it's a good idea to hold off on adding new features or doing other major changes like architectural changes to the code that might decrease its stability.  Whether a change is minor enough to be &amp;quot;ok&amp;quot; is left to the developer's judgement, and they're trusted to be conservative and careful.&lt;br /&gt;
&lt;br /&gt;
The most useful activity to do during a feature freeze is to locate and/or fix bugs that produce crashes, and to do so with the smallest amount of change to the codebase possible.  If a &amp;quot;proper&amp;quot; fix requires architectural changes or redesign of the code, consider writing that up as a post-release task.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
It might be useful to branch off a release branch a week before making the release.  Hopefully most people using CVS would switch to this branch at this time.  Then only bug fixes can go into that branch.  --[[Ted]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Branching the release candidate ===&lt;br /&gt;
&lt;br /&gt;
Before release, a branch should have been be created for that release in the form RELEASE_&amp;lt;major&amp;gt;_&amp;lt;minor&amp;gt;_BRANCH.  For example, 0.38 should have a branch called RELEASE_0_38_BRANCH.&lt;br /&gt;
&lt;br /&gt;
Minor fixes and code review can then be performed on that branch before the final release; it also permits making future point releases easily (if necessary).&lt;br /&gt;
&lt;br /&gt;
To check out the release branch into a fresh working copy, you can use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cvs co -r RELEASE_0_38_BRANCH -d inkscape-0.38-branch inkscape&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or, if you have a checked out tree handy, it is quicker to use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp -a inkscape inkscape-0.38-branch&lt;br /&gt;
cd inkscape-0.38-branch&lt;br /&gt;
cvs up -PAd -r RELEASE_0_38_BRANCH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the release is deemed ready a distribution tarball should be created as below.&lt;br /&gt;
&lt;br /&gt;
=== Creating a distribution source tarball package ===&lt;br /&gt;
&lt;br /&gt;
On the release branch (NOT ON HEAD):&lt;br /&gt;
&lt;br /&gt;
* Set the version name via the file configure.ac in the AC_INIT() macro, Makefile.mingw.common, inkscape.nsi, and in debian/changelog&lt;br /&gt;
* Add the release notes into the NEWS file in the release branch &lt;br /&gt;
* Run ./autogen.sh &amp;amp;&amp;amp; ./configure (with any flags, e.g. CXXFLAGS=).&lt;br /&gt;
* Run &amp;quot;cd src &amp;amp;&amp;amp; make helper/sp-marshal.h helper/sp-marshal.cpp inkscape_version.h &amp;amp;&amp;amp; perl mkfiles.pl &amp;amp;&amp;amp; perl mkdep.pl&amp;quot;, then do &amp;quot;cvs -q diff -du make.*|less&amp;quot; to check for anything strange (e.g. source files accidentally added or removed), and finally &amp;quot;cvs commit -m '' make.*&amp;quot;&lt;br /&gt;
* Make sure the code passes a &amp;quot;make distcheck&amp;quot;&lt;br /&gt;
* This should produce inkscape-VERSION.tar.gz&lt;br /&gt;
* Commit the changed configure.ac and other files to the branch&lt;br /&gt;
* Tag the release in CVS&lt;br /&gt;
&lt;br /&gt;
Release tags should be in the form RELEASE_&amp;lt;major&amp;gt;_&amp;lt;minor&amp;gt;_&amp;lt;point&amp;gt;. A non-point-release like 0.38 would get the tag RELEASE_0_38_0, 0.38.1 would get the tag RELEASE_0_38_1, and so on.&lt;br /&gt;
&lt;br /&gt;
On HEAD:&lt;br /&gt;
&lt;br /&gt;
* Add the release notes into the NEWS file in the release branch &lt;br /&gt;
* Change configure.ac and inkscape_version.h.mingw to reflect the new future version&lt;br /&gt;
&lt;br /&gt;
=== GPG signing Tarballs === &lt;br /&gt;
&lt;br /&gt;
Downstream packagers are asking for and may soon demand gpg signed tarballs. For Fedora, this is not a requirement, but does ease acceptance of packages. It also shows we are doing &amp;quot;The Right Thing&amp;quot;. md5sums are not foolproof.&lt;br /&gt;
 &lt;br /&gt;
* To create a gpg signed tarball:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$gpg -u packager@foo.net --armor --output tarball.sig --detach-sig tarball.tar.gz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To verify :  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$gpg --verify ./tarball.asc ./tarball.tar.gz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course, this step doesn't mean much in practice unless people have a trust path to your key.  Packagers are encouraged to attend key signing parties and take other measures to establish important trust paths to their keys (particularly with downstream packagers).&lt;br /&gt;
&lt;br /&gt;
:Where are the public keys matching these sig's posted?&lt;br /&gt;
&lt;br /&gt;
=== Creating a Windows Distro ===&lt;br /&gt;
Inkscape/sodipodi has always been&lt;br /&gt;
buildable on Win32.  The problem with the sodipodi and original inkscape build, though,&lt;br /&gt;
was that the Win32 builder had to download and configure&lt;br /&gt;
a lot of things to make it to work.    Mingw, MSYS, automake,&lt;br /&gt;
autoconf, pkg-config, the codepages, etc.  He would spend more&lt;br /&gt;
time on THAT than the actual code.&lt;br /&gt;
&lt;br /&gt;
What a pain for the average developer/user who merely wants&lt;br /&gt;
to make Inkscape do what he wants it to do.  Why waste&lt;br /&gt;
days and days getting it to compile, when the developer&lt;br /&gt;
would rather be working on the program itself?&lt;br /&gt;
&lt;br /&gt;
So we spent several weeks collecting libraries, building others,&lt;br /&gt;
installing the codepages into the source (which we can delete soon&lt;br /&gt;
because of Pango) and creating a set of clean makefiles&lt;br /&gt;
that work on Win9x, NT, XP, and the cross-compiler.&lt;br /&gt;
It is a bit more work for people like me, but hopefully it&lt;br /&gt;
attains its goal of saving a lot of work for other people.&lt;br /&gt;
&lt;br /&gt;
Also, remember that on Unix/Linux,  $PREFIX is commonly&lt;br /&gt;
/usr/local  or  /usr  or something like that.   On M$, all of&lt;br /&gt;
a program's files are typically located in their own directory.  So all&lt;br /&gt;
of the files are located relative to &amp;quot;.&amp;quot;.  Actually, relative to&lt;br /&gt;
the .exe that is currently running.&lt;br /&gt;
&lt;br /&gt;
.....anyway, just wanted to explain that there is a reason&lt;br /&gt;
for the Win32 build to be constructed in such a manner,&lt;br /&gt;
and that we haven't just been arbitrary.&lt;br /&gt;
&lt;br /&gt;
Once the tree is built (&amp;quot;make -f Makefile.mingw&amp;quot; and &amp;quot;make -f Makefile.mingw dist&amp;quot;) into the &amp;quot;inkscape&amp;quot; directory, the [http://nsis.sourceforge.net/ NSIS] installer script &amp;quot;inkscape.nsi&amp;quot; can be run to create the self-extracting installer.&lt;br /&gt;
&lt;br /&gt;
The Windows download package should be named according to the following scheme:&lt;br /&gt;
&lt;br /&gt;
    inkscape-$RELEASE-$PKG.$WINVER.exe&lt;br /&gt;
&lt;br /&gt;
Where $WINVER is the required Windows version, e.g. &amp;quot;win32&amp;quot;.  For example:&lt;br /&gt;
&lt;br /&gt;
    inkscape-0.37-1.win32.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating a Debian .deb ===&lt;br /&gt;
&lt;br /&gt;
The article [[CompilingDebian]] provides a makefile to download a tarball and build a debian package therefrom.&lt;br /&gt;
&lt;br /&gt;
=== Creating a distribution RPM ===&lt;br /&gt;
&lt;br /&gt;
Method A:&lt;br /&gt;
# do as above for tarball, or download the release tarball&lt;br /&gt;
# login as root&lt;br /&gt;
# rpmbuild -tb inkscape-x.x.tar.gz&lt;br /&gt;
# Your RPMs will be in /usr/src/rpm/RPMS (/usr/src/redhat on RH systems)&lt;br /&gt;
# RPMs should be GPG signed&lt;br /&gt;
&lt;br /&gt;
Method B:&lt;br /&gt;
# do as above for tarball, or download the release tarball&lt;br /&gt;
# mkdir ~/rpm&lt;br /&gt;
# Copy the tarball to ~/rpm/SOURCES/&lt;br /&gt;
# Copy the inkscape.spec from the tarball to ~/rpm/SPECS/inkscape.spec&lt;br /&gt;
# rpmbuild -ba ~/rpm/SPECS/inkscape.spec&lt;br /&gt;
# Your RPMs will be in ~/rpm/RPMS and ~/rpm/SRPMS&lt;br /&gt;
# RPMs should be GPG signed&lt;br /&gt;
&lt;br /&gt;
The rpm should be named according to the following pattern:&lt;br /&gt;
&lt;br /&gt;
   inkscape-$RELEASE-$PKG.$DISTRO.$ARCH.rpm&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
&lt;br /&gt;
$RELEASE: the Inkscape release number, such as &amp;quot;0.37&amp;quot;, &amp;quot;0.36.2&amp;quot;, etc.  &lt;br /&gt;
The third number should be omitted if it is 0.  (I.e., 0.37 instead of 0.37.0)&lt;br /&gt;
&lt;br /&gt;
$PKG:  A version number for your package.  Use a value of 1 for your package, and increment it if you&lt;br /&gt;
need to update the released package for some reason.&lt;br /&gt;
&lt;br /&gt;
$DISTRO:  The name and an indicator of the version number for the distro.  E.g.,&lt;br /&gt;
rh71, rh90, mdk91, suse90, fc1, etc.  No need to be too exhaustive with the distro versions;&lt;br /&gt;
for a given brand of distro it's probably enough to have a reasonably &amp;quot;modern&amp;quot; release&lt;br /&gt;
and an older one for legacy support.  For instance, rh71 and rh90.&lt;br /&gt;
&lt;br /&gt;
$ARCH:  The architecture that the package was built on.  E.g., i686, i386, athlon, ppc, etc.&lt;br /&gt;
Don't bother with i586 - either i386 or i686 is preferred.  The i386 packages will run on Cyrix &lt;br /&gt;
and K-6.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
   inkscape-0.37-1.mdk80.i386.rpm&lt;br /&gt;
   inkscape-0.37-1.mdk80.i686.rpm&lt;br /&gt;
   inkscape-0.37-1.mdk91.i386.rpm&lt;br /&gt;
   inkscape-0.37-1.mdk91.i686.rpm&lt;br /&gt;
&lt;br /&gt;
   inkscape-0.37-1.fc1.i386.rpm&lt;br /&gt;
   inkscape-0.37-1.fc1.i686.rpm&lt;br /&gt;
   inkscape-0.37-1.fc1.athlon.rpm&lt;br /&gt;
   inkscape-0.37-1.fc1.ppc.rpm&lt;br /&gt;
&lt;br /&gt;
For creating spec files, feel free to list yourself as the packager, but please use &lt;br /&gt;
inkscape-devel@lists.sourceforge.net as the contact email address, to ensure that&lt;br /&gt;
questions/complaints about the RPM go to the official support channel.&lt;br /&gt;
&lt;br /&gt;
==== Patching RPMs ====&lt;br /&gt;
&lt;br /&gt;
Occasionally, the RPM will not build without some modifications.  If the problem is serious enough that it affects every packaging format, this could signal a need to do a point release, but usually you can just add a patch specifically for the RPM.  This is what RPM is for, after all.  :-)&lt;br /&gt;
&lt;br /&gt;
Here's how to do it:&lt;br /&gt;
&lt;br /&gt;
1.  Create a copy of the source tree, with the modifications needed to correct the issue.&lt;br /&gt;
2.  Generate a patch like this:&lt;br /&gt;
&lt;br /&gt;
   $ diff -uNr package-1.0/ package-1.0p/ &amp;gt; ../SOURCES/package-1.0-my.patch&lt;br /&gt;
&lt;br /&gt;
3.  Next add the patch to the RPM.  In the specfile at %_topdir/SPECS/package.spec, add a line like this at the top of the file:&lt;br /&gt;
&lt;br /&gt;
   Patch0: package-1.0-my.patch&lt;br /&gt;
&lt;br /&gt;
Then further down add a line after the %setup section, like this:&lt;br /&gt;
&lt;br /&gt;
   %prep&lt;br /&gt;
   %setup ...&lt;br /&gt;
   %patch0 -p1&lt;br /&gt;
&lt;br /&gt;
It's a very good idea to split up changes into discrete patches, giving each a different number (they don't have to be consecutively numbered).  Also, be sure to upload the patch(es) to the patch tracker so they'll get into the codebase for the next release.&lt;br /&gt;
&lt;br /&gt;
Then rebuild the package like this:&lt;br /&gt;
&lt;br /&gt;
   rpmbuild -ba SPECS/package.spec&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Signing your package ===&lt;br /&gt;
&lt;br /&gt;
First, you need to have a public/private keypair. This can be generated with gpg using 'gpg --gen-key'.&lt;br /&gt;
&lt;br /&gt;
To add a signature to an extisting package, use the command rpm --addsign /path/to/package.rpm To sign in the process of building a package, use rpmbuild -bb --sign&lt;br /&gt;
&lt;br /&gt;
To check the signature on a package, use rpm --checksig.&lt;br /&gt;
&lt;br /&gt;
=== Releasing Dists on the SourceForge File Release Tool ===&lt;br /&gt;
&lt;br /&gt;
To release a file:  (You need Release Tech permission for your Inkscape account)&lt;br /&gt;
&lt;br /&gt;
* ftp upload.sf.net  (anonymous/anonymous)&lt;br /&gt;
* cd incoming&lt;br /&gt;
* mput filename&lt;br /&gt;
* go to Admin -&amp;gt; File Releases&lt;br /&gt;
* scroll to the bottom and click [Add Release] to the inkscape item&lt;br /&gt;
* Enter 0.35 in the box &amp;amp; click &amp;quot;Create this Release&amp;quot;&lt;br /&gt;
* Fill in the form, checkbox the file you uploaded in (c)&lt;br /&gt;
* It won't give you a clear &amp;quot;success&amp;quot; message, but you can check it got in right by going to the Files list.  You can then edit any of the info you entered, to make it more correct.&lt;br /&gt;
&lt;br /&gt;
Also see CVSNamingConventions if you are making a release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Announcing Releases ===&lt;br /&gt;
&lt;br /&gt;
When you cut a release, send a copy of the release notes as an announcement to inkscape-announce@lists.sourceforge.net.&lt;br /&gt;
If you find other mailing lists or websites that should receive the announcements, add their email address to the inkscape-announce list.  This is done by a list admin such as Bryce Harrington.&lt;br /&gt;
&lt;br /&gt;
'''[AnnouncingReleases Places to Submit Release Announcements]''' - Keep an eye out for other places we could announce such as distros or graphics-related sites (not only Linux-centric!).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Updating Website Collateral ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When a new release is cut, there are several pieces of info that need to be added to the website:&lt;br /&gt;
&lt;br /&gt;
* Add a news item on front page&lt;br /&gt;
* Review/revise FAQ&lt;br /&gt;
* Review/revise Roadmap&lt;br /&gt;
* Add or revise Screenshots (if appropriate)&lt;br /&gt;
* doc directory: Add the manpage for the release, update keys.html file, and update doc/index.php descriptions.&lt;br /&gt;
** From shell.sf.net, cd to the inkscape_web directory and run the command &amp;quot;(cd ../inkscape; cvs update;chmod g+w -R * 2&amp;gt;/dev/null); pod2html --cachedir=/tmp --infile=../inkscape/inkscape.pod --outfile=doc/inkscape-man.html&amp;quot;.&lt;br /&gt;
* Update doc/keys.html on the website, change the corresponding version number in doc/index.php&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SVG_Test_Suite_Compliance&amp;diff=4366</id>
		<title>SVG Test Suite Compliance</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SVG_Test_Suite_Compliance&amp;diff=4366"/>
		<updated>2005-07-04T15:30:42Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * styling-pres-01-t now passes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This table summarises the results of testing Inkscape against the [http://www.w3.org/Graphics/SVG/Test/ W3C SVG Test Suite].&lt;br /&gt;
&lt;br /&gt;
Last complete test was performed on Windows with development version CVS-0507040247. See also&lt;br /&gt;
* [[SVG Test Suite Compliance V0.41]]&lt;br /&gt;
&lt;br /&gt;
== Key ==&lt;br /&gt;
; '''pass''' : the test passed fully (73 occurences)&lt;br /&gt;
; '''partial''' : the test partially failed but it may be easy to make it pass (24 occurences)&lt;br /&gt;
; '''fail''' : the test failed (85 occurences)&lt;br /&gt;
; '''crash''' : the test failed and Inkscape crashed (1 occurence)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
== Results ==&lt;br /&gt;
=== Animation (not yet supported) ===&lt;br /&gt;
; animate-elem-02-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-03-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-04-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-05-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-06-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-07-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-08-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-09-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-10-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-11-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-12-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-13-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-14-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-15-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-16-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-17-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-18-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-19-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-20-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-21-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-22-b.svg : '''fail'''&lt;br /&gt;
; animate-elem-23-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-24-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-25-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-26-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-27-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-28-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-29-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Colors ===&lt;br /&gt;
; color-prof-01-f.svg   : '''fail'''&lt;br /&gt;
: &amp;lt;i&amp;gt;Tests color profile support.  Hopefully the Little CMS work should address this: see InkscapeColor.&amp;lt;/i&amp;gt;&lt;br /&gt;
; color-prop-01-b.svg   : '''pass'''&lt;br /&gt;
: &amp;lt;i&amp;gt;there are bugs for variations of this test: see comment in sp_object_get_style_property.&amp;lt;/i&amp;gt;&lt;br /&gt;
; color-prop-02-f.svg   : '''pass'''&lt;br /&gt;
; color-prop-03-t.svg   : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Coordinates ===&lt;br /&gt;
; coords-trans-01-b.svg : '''pass'''&lt;br /&gt;
; coords-trans-02-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-03-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-04-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-05-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-06-t.svg : '''pass'''&lt;br /&gt;
; coords-units-01-b.svg : '''partial''' - incorrect clipping&lt;br /&gt;
; coords-units-02-b.svg : '''partial'''&lt;br /&gt;
; coords-units-03-b.svg : '''partial''' - the red background is not clipped correctly&lt;br /&gt;
; coords-viewattr-01-b.svg   : '''fail'''&lt;br /&gt;
; coords-viewattr-02-b.svg   : '''partial''' - viewport boxes not styled correctly&lt;br /&gt;
; extend-namespace-01-f.svg  : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Filters (not yet supported) ===&lt;br /&gt;
; filters-blend-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-color-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-composite-02-b.svg : '''fail'''&lt;br /&gt;
; filters-comptran-01-b.svg  : '''fail'''&lt;br /&gt;
; filters-conv-01-f.svg      : '''fail'''&lt;br /&gt;
; filters-diffuse-01-f.svg   : '''fail'''&lt;br /&gt;
; filters-displace-01-f.svg  : '''fail'''&lt;br /&gt;
; filters-example-01-b.svg   : '''fail'''&lt;br /&gt;
; filters-gauss-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-image-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-light-01-f.svg     : '''fail'''&lt;br /&gt;
; filters-morph-01-f.svg     : '''fail'''&lt;br /&gt;
; filters-offset-01-b.svg    : '''fail'''&lt;br /&gt;
; filters-specular-01-f.svg  : '''fail'''&lt;br /&gt;
; filters-tile-01-b.svg      : '''fail'''&lt;br /&gt;
; filters-turb-01-f.svg      : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Fonts ===&lt;br /&gt;
; fonts-elem-01-t.svg : '''pass'''&lt;br /&gt;
; fonts-elem-02-t.svg : '''fail''' (but close to what's requried)&lt;br /&gt;
; fonts-elem-03-b.svg : '''fail'''&lt;br /&gt;
; fonts-elem-04-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Interaction (not supported) ===&lt;br /&gt;
; interact-cursor-01-f.svg : '''crash''' (on Windows when attempting the interaction)&lt;br /&gt;
: &amp;lt;i&amp;gt;Crash now fixed in CVS.  (Windows user please confirm, and update counts accordingly.)  Thanks to ACSpike for backtrace.&amp;lt;/i&amp;gt;&lt;br /&gt;
; interact-dom-01-b.svg    : '''fail'''&lt;br /&gt;
; interact-events-01-b.svg : '''fail'''&lt;br /&gt;
; interact-order-01-b.svg  : '''fail'''&lt;br /&gt;
; interact-order-02-b.svg  : '''fail'''&lt;br /&gt;
; interact-order-03-b.svg  : '''fail'''&lt;br /&gt;
; interact-zoom-01-t.svg   : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Linking ===&lt;br /&gt;
; linking-a-01-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-02-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-03-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-04-t.svg   : '''fail'''&lt;br /&gt;
; linking-uri-01-b.svg : '''fail'''&lt;br /&gt;
; linking-uri-02-b.svg : '''fail'''&lt;br /&gt;
; linking-uri-03-t.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Masking ===&lt;br /&gt;
; masking-mask-01-b.svg    : '''partial''' - the string is incorrectly rendered&lt;br /&gt;
; masking-opacity-01-b.svg : '''pass'''&lt;br /&gt;
; masking-path-01-b.svg    : '''pass'''&lt;br /&gt;
; masking-path-02-b.svg    : '''partial'''&lt;br /&gt;
; masking-path-03-b.svg    : '''fail'''&lt;br /&gt;
; masking-path-04-b.svg    : '''pass'''&lt;br /&gt;
; masking-path-05-f.svg    : '''partial''' - clip-rule=evenodd not functioning&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
; metadata-example-01-b.svg : '''pass''' (I think)&lt;br /&gt;
&lt;br /&gt;
=== Painting ===&lt;br /&gt;
; painting-fill-01-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-02-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-03-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-04-t.svg   : '''pass'''&lt;br /&gt;
; painting-marker-01-f.svg : '''pass'''&lt;br /&gt;
; painting-marker-02-f.svg : '''partial''' - mishandling of marker strokes&lt;br /&gt;
; painting-render-01-b.svg : '''pass'''&lt;br /&gt;
; painting-stroke-01-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-02-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-03-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-04-t.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Paths ===&lt;br /&gt;
; paths-data-01-t.svg : '''pass'''&lt;br /&gt;
; paths-data-02-t.svg : '''pass'''&lt;br /&gt;
; paths-data-03-f.svg : '''pass'''&lt;br /&gt;
; paths-data-04-t.svg : '''pass'''&lt;br /&gt;
; paths-data-05-t.svg : '''pass'''&lt;br /&gt;
; paths-data-06-t.svg : '''pass'''&lt;br /&gt;
; paths-data-07-t.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Color Gradients ===&lt;br /&gt;
; pservers-grad-01-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-02-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-03-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-04-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-05-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-06-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-07-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-08-b.svg : '''partial''' - gradient is ok; font is incorrect&lt;br /&gt;
; pservers-grad-09-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-10-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-11-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-12-b.svg : '''pass'''&lt;br /&gt;
; pservers-pattern-01-b.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Rendering ===&lt;br /&gt;
; render-elems-01-t.svg : '''pass'''&lt;br /&gt;
; render-elems-02-t.svg : '''pass'''&lt;br /&gt;
; render-elems-03-t.svg : '''fail'''&lt;br /&gt;
; render-elems-06-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-elems-07-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-elems-08-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-groups-01-b.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-groups-03-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scripting (not supported) ===&lt;br /&gt;
; script-handle-01-b.svg : '''fail'''&lt;br /&gt;
; script-handle-02-b.svg : '''fail'''&lt;br /&gt;
; script-handle-03-b.svg : '''fail'''&lt;br /&gt;
; script-handle-04-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Shapes ===&lt;br /&gt;
; shapes-circle-01-t.svg   : '''pass'''&lt;br /&gt;
; shapes-ellipse-01-t.svg  : '''pass'''&lt;br /&gt;
; shapes-line-01-t.svg     : '''pass'''&lt;br /&gt;
; shapes-polygon-01-t.svg  : '''pass'''&lt;br /&gt;
; shapes-polyline-01-t.svg : '''partial''' - the pentagon ends are incorrect&lt;br /&gt;
; shapes-rect-01-t.svg     : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Structure ===&lt;br /&gt;
; struct-cond-01-t.svg  : '''fail'''&lt;br /&gt;
; struct-cond-02-t.svg  : '''fail'''&lt;br /&gt;
; struct-defs-01-t.svg  : '''pass'''&lt;br /&gt;
; struct-dom-01-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-02-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-03-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-04-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-05-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-06-b.svg   : '''fail'''&lt;br /&gt;
; struct-frag-01-t.svg  : '''pass'''&lt;br /&gt;
; struct-group-01-t.svg : '''pass'''&lt;br /&gt;
; struct-group-02-b.svg : '''pass'''&lt;br /&gt;
; struct-image-01-t.svg : '''pass'''&lt;br /&gt;
; struct-image-02-b.svg : '''partial''' - problem with use element&lt;br /&gt;
; struct-image-03-t.svg : '''fail'''&lt;br /&gt;
; struct-image-04-t.svg : '''pass'''&lt;br /&gt;
; struct-image-05-b.svg : '''fail''' - Message: error loading pixbuf at close&lt;br /&gt;
; struct-symbol-01-b.svg : '''partial''' - the topleft image is not resized correctly&lt;br /&gt;
&lt;br /&gt;
=== CSS ===&lt;br /&gt;
&amp;lt;i&amp;gt;Inkscape has limited support for CSS stylesheets.&amp;lt;/i&amp;gt;&lt;br /&gt;
; styling-css-01-b.svg     : '''pass'''&lt;br /&gt;
; styling-css-02-b.svg     : '''pass'''&lt;br /&gt;
; styling-css-03-b.svg     : '''pass'''&lt;br /&gt;
; styling-inherit-01-b.svg : '''pass'''&lt;br /&gt;
; styling-pres-01-t.svg    : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
; text-align-01-b.svg    : '''pass'''&lt;br /&gt;
; text-align-02-b.svg    : '''fail''' - baseline-shift not functioning&lt;br /&gt;
; text-align-03-b.svg    : '''fail'''&lt;br /&gt;
; text-align-04-b.svg    : '''partial''' - tref not supported&lt;br /&gt;
; text-align-05-b.svg    : '''pass'''&lt;br /&gt;
; text-align-06-b.svg    : '''fail'''&lt;br /&gt;
; text-altglyph-01-b.svg : '''fail'''&lt;br /&gt;
; text-deco-01-b.svg     : '''partial''' - underline and strikethrough not functioning; whitespace problem&lt;br /&gt;
; text-fonts-01-t.svg    : '''pass'''&lt;br /&gt;
; text-fonts-02-t.svg    : '''partial''' - font-weight=&amp;quot;lighter&amp;quot; not functioning&lt;br /&gt;
; text-intro-01-t.svg    : '''pass'''&lt;br /&gt;
; text-intro-02-b.svg    : '''partial''' - right-to-left text not functioning&lt;br /&gt;
; text-intro-03-b.svg    : '''partial''' - text is vertical but oriented incorrectly&lt;br /&gt;
; text-intro-04-t.svg    : '''pass'''&lt;br /&gt;
; text-path-01-b.svg     : '''pass'''&lt;br /&gt;
; text-spacing-01-b.svg  : '''pass'''&lt;br /&gt;
; text-text-01-b.svg     : '''fail''' - 'textLength' and 'lengthAdjust' not functioning &lt;br /&gt;
; text-text-03-b.svg     : '''partial''' - underline and strikethrough not functioning&lt;br /&gt;
; text-tref-01-b.svg     : '''fail''' - tref not functioning&lt;br /&gt;
; text-tselect-01-b.svg  : '''pass''' &lt;br /&gt;
; text-tspan-01-b.svg    : '''partial''' - improved but still not quite correct&lt;br /&gt;
; text-ws-01-t.svg       : '''pass'''&lt;br /&gt;
; text-ws-02-t.svg       : '''pass'''&lt;br /&gt;
----&lt;br /&gt;
Further discussion is on the [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1224751&amp;amp;group_id=93438&amp;amp;atid=604306 Bug Tracker].&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SVG_Test_Suite_Compliance&amp;diff=4362</id>
		<title>SVG Test Suite Compliance</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SVG_Test_Suite_Compliance&amp;diff=4362"/>
		<updated>2005-07-04T13:56:49Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * styling-inherit-01-b now passes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This table summarises the results of testing Inkscape against the [http://www.w3.org/Graphics/SVG/Test/ W3C SVG Test Suite].&lt;br /&gt;
&lt;br /&gt;
This test was performed on Windows with development version CVS-0507040247. See also&lt;br /&gt;
* [[SVG Test Suite Compliance V0.41]]&lt;br /&gt;
&lt;br /&gt;
== Key ==&lt;br /&gt;
; '''pass''' : the test passed fully (70 occurences)&lt;br /&gt;
; '''partial''' : the test partially failed but it may be easy to make it pass (25 occurences)&lt;br /&gt;
; '''fail''' : the test failed (87 occurences)&lt;br /&gt;
; '''crash''' : the test failed and Inkscape crashed (1 occurence)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
== Results ==&lt;br /&gt;
=== Animation (not yet supported) ===&lt;br /&gt;
; animate-elem-02-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-03-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-04-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-05-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-06-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-07-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-08-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-09-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-10-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-11-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-12-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-13-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-14-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-15-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-16-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-17-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-18-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-19-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-20-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-21-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-22-b.svg : '''fail'''&lt;br /&gt;
; animate-elem-23-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-24-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-25-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-26-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-27-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-28-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-29-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Colors ===&lt;br /&gt;
; color-prof-01-f.svg   : '''fail'''&lt;br /&gt;
: &amp;lt;i&amp;gt;Tests color profile support.  Hopefully the Little CMS work should address this: see InkscapeColor.&amp;lt;/i&amp;gt;&lt;br /&gt;
; color-prop-01-b.svg   : '''pass'''&lt;br /&gt;
: &amp;lt;i&amp;gt;there are bugs for variations of this test: see comment in sp_object_get_style_property.&amp;lt;/i&amp;gt;&lt;br /&gt;
; color-prop-02-f.svg   : '''pass'''&lt;br /&gt;
; color-prop-03-t.svg   : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Coordinates ===&lt;br /&gt;
; coords-trans-01-b.svg : '''pass'''&lt;br /&gt;
; coords-trans-02-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-03-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-04-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-05-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-06-t.svg : '''pass'''&lt;br /&gt;
; coords-units-01-b.svg : '''partial''' - incorrect clipping&lt;br /&gt;
; coords-units-02-b.svg : '''partial'''&lt;br /&gt;
; coords-units-03-b.svg : '''partial''' - the red background is not clipped correctly&lt;br /&gt;
; coords-viewattr-01-b.svg   : '''fail'''&lt;br /&gt;
; coords-viewattr-02-b.svg   : '''partial''' - viewport boxes not styled correctly&lt;br /&gt;
; extend-namespace-01-f.svg  : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Filters (not yet supported) ===&lt;br /&gt;
; filters-blend-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-color-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-composite-02-b.svg : '''fail'''&lt;br /&gt;
; filters-comptran-01-b.svg  : '''fail'''&lt;br /&gt;
; filters-conv-01-f.svg      : '''fail'''&lt;br /&gt;
; filters-diffuse-01-f.svg   : '''fail'''&lt;br /&gt;
; filters-displace-01-f.svg  : '''fail'''&lt;br /&gt;
; filters-example-01-b.svg   : '''fail'''&lt;br /&gt;
; filters-gauss-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-image-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-light-01-f.svg     : '''fail'''&lt;br /&gt;
; filters-morph-01-f.svg     : '''fail'''&lt;br /&gt;
; filters-offset-01-b.svg    : '''fail'''&lt;br /&gt;
; filters-specular-01-f.svg  : '''fail'''&lt;br /&gt;
; filters-tile-01-b.svg      : '''fail'''&lt;br /&gt;
; filters-turb-01-f.svg      : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Fonts ===&lt;br /&gt;
; fonts-elem-01-t.svg : '''pass'''&lt;br /&gt;
; fonts-elem-02-t.svg : '''fail''' (but close to what's requried)&lt;br /&gt;
; fonts-elem-03-b.svg : '''fail'''&lt;br /&gt;
; fonts-elem-04-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Interaction (not supported) ===&lt;br /&gt;
; interact-cursor-01-f.svg : '''crash''' (on Windows when attempting the interaction)&lt;br /&gt;
: &amp;lt;i&amp;gt;Crash now fixed in CVS.  (Windows user please confirm, and update counts accordingly.)  Thanks to ACSpike for backtrace.&amp;lt;/i&amp;gt;&lt;br /&gt;
; interact-dom-01-b.svg    : '''fail'''&lt;br /&gt;
; interact-events-01-b.svg : '''fail'''&lt;br /&gt;
; interact-order-01-b.svg  : '''fail'''&lt;br /&gt;
; interact-order-02-b.svg  : '''fail'''&lt;br /&gt;
; interact-order-03-b.svg  : '''fail'''&lt;br /&gt;
; interact-zoom-01-t.svg   : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Linking ===&lt;br /&gt;
; linking-a-01-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-02-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-03-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-04-t.svg   : '''fail'''&lt;br /&gt;
; linking-uri-01-b.svg : '''fail'''&lt;br /&gt;
; linking-uri-02-b.svg : '''fail'''&lt;br /&gt;
; linking-uri-03-t.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Masking ===&lt;br /&gt;
; masking-mask-01-b.svg    : '''partial''' - the string is incorrectly rendered&lt;br /&gt;
; masking-opacity-01-b.svg : '''pass'''&lt;br /&gt;
; masking-path-01-b.svg    : '''pass'''&lt;br /&gt;
; masking-path-02-b.svg    : '''partial'''&lt;br /&gt;
; masking-path-03-b.svg    : '''fail'''&lt;br /&gt;
; masking-path-04-b.svg    : '''pass'''&lt;br /&gt;
; masking-path-05-f.svg    : '''partial''' - clip-rule=evenodd not functioning&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
; metadata-example-01-b.svg : '''pass''' (I think)&lt;br /&gt;
&lt;br /&gt;
=== Painting ===&lt;br /&gt;
; painting-fill-01-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-02-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-03-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-04-t.svg   : '''pass'''&lt;br /&gt;
; painting-marker-01-f.svg : '''pass'''&lt;br /&gt;
; painting-marker-02-f.svg : '''partial''' - mishandling of marker strokes&lt;br /&gt;
; painting-render-01-b.svg : '''pass'''&lt;br /&gt;
; painting-stroke-01-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-02-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-03-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-04-t.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Paths ===&lt;br /&gt;
; paths-data-01-t.svg : '''pass'''&lt;br /&gt;
; paths-data-02-t.svg : '''pass'''&lt;br /&gt;
; paths-data-03-f.svg : '''pass'''&lt;br /&gt;
; paths-data-04-t.svg : '''pass'''&lt;br /&gt;
; paths-data-05-t.svg : '''pass'''&lt;br /&gt;
; paths-data-06-t.svg : '''pass'''&lt;br /&gt;
; paths-data-07-t.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Color Gradients ===&lt;br /&gt;
; pservers-grad-01-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-02-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-03-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-04-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-05-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-06-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-07-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-08-b.svg : '''partial''' - gradient is ok; font is incorrect&lt;br /&gt;
; pservers-grad-09-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-10-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-11-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-12-b.svg : '''pass'''&lt;br /&gt;
; pservers-pattern-01-b.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Rendering ===&lt;br /&gt;
; render-elems-01-t.svg : '''pass'''&lt;br /&gt;
; render-elems-02-t.svg : '''pass'''&lt;br /&gt;
; render-elems-03-t.svg : '''fail'''&lt;br /&gt;
; render-elems-06-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-elems-07-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-elems-08-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-groups-01-b.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-groups-03-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
&lt;br /&gt;
=== Scripting (not supported) ===&lt;br /&gt;
; script-handle-01-b.svg : '''fail'''&lt;br /&gt;
; script-handle-02-b.svg : '''fail'''&lt;br /&gt;
; script-handle-03-b.svg : '''fail'''&lt;br /&gt;
; script-handle-04-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Shapes ===&lt;br /&gt;
; shapes-circle-01-t.svg   : '''pass'''&lt;br /&gt;
; shapes-ellipse-01-t.svg  : '''pass'''&lt;br /&gt;
; shapes-line-01-t.svg     : '''pass'''&lt;br /&gt;
; shapes-polygon-01-t.svg  : '''pass'''&lt;br /&gt;
; shapes-polyline-01-t.svg : '''partial''' - the pentagon ends are incorrect&lt;br /&gt;
; shapes-rect-01-t.svg     : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Structure ===&lt;br /&gt;
; struct-cond-01-t.svg  : '''fail'''&lt;br /&gt;
; struct-cond-02-t.svg  : '''fail'''&lt;br /&gt;
; struct-defs-01-t.svg  : '''pass'''&lt;br /&gt;
; struct-dom-01-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-02-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-03-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-04-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-05-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-06-b.svg   : '''fail'''&lt;br /&gt;
; struct-frag-01-t.svg  : '''pass'''&lt;br /&gt;
; struct-group-01-t.svg : '''pass'''&lt;br /&gt;
; struct-group-02-b.svg : '''pass'''&lt;br /&gt;
; struct-image-01-t.svg : '''pass'''&lt;br /&gt;
; struct-image-02-b.svg : '''partial''' - problem with use element&lt;br /&gt;
; struct-image-03-t.svg : '''fail'''&lt;br /&gt;
; struct-image-04-t.svg : '''pass'''&lt;br /&gt;
; struct-image-05-b.svg : '''fail''' - Message: error loading pixbuf at close&lt;br /&gt;
; struct-symbol-01-b.svg : '''partial''' - the topleft image is not resized correctly&lt;br /&gt;
&lt;br /&gt;
=== CSS ===&lt;br /&gt;
&amp;lt;i&amp;gt;Inkscape has limited support for CSS stylesheets.&amp;lt;/i&amp;gt;&lt;br /&gt;
; styling-css-01-b.svg     : '''pass'''&lt;br /&gt;
; styling-css-02-b.svg     : '''pass'''&lt;br /&gt;
; styling-css-03-b.svg     : '''pass'''&lt;br /&gt;
; styling-inherit-01-b.svg : '''pass'''&lt;br /&gt;
; styling-pres-01-t.svg    : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
; text-align-01-b.svg    : '''pass'''&lt;br /&gt;
; text-align-02-b.svg    : '''fail''' - baseline-shift not functioning&lt;br /&gt;
; text-align-03-b.svg    : '''fail'''&lt;br /&gt;
; text-align-04-b.svg    : '''partial''' - tref not supported&lt;br /&gt;
; text-align-05-b.svg    : '''pass'''&lt;br /&gt;
; text-align-06-b.svg    : '''fail'''&lt;br /&gt;
; text-altglyph-01-b.svg : '''fail'''&lt;br /&gt;
; text-deco-01-b.svg     : '''partial''' - underline and strikethrough not functioning; whitespace problem&lt;br /&gt;
; text-fonts-01-t.svg    : '''pass'''&lt;br /&gt;
; text-fonts-02-t.svg    : '''partial''' - font-weight=&amp;quot;lighter&amp;quot; not functioning&lt;br /&gt;
; text-intro-01-t.svg    : '''pass'''&lt;br /&gt;
; text-intro-02-b.svg    : '''partial''' - right-to-left text not functioning&lt;br /&gt;
; text-intro-03-b.svg    : '''partial''' - text is vertical but oriented incorrectly&lt;br /&gt;
; text-intro-04-t.svg    : '''pass'''&lt;br /&gt;
; text-path-01-b.svg     : '''pass'''&lt;br /&gt;
; text-spacing-01-b.svg  : '''pass'''&lt;br /&gt;
; text-text-01-b.svg     : '''fail''' - 'textLength' and 'lengthAdjust' not functioning &lt;br /&gt;
; text-text-03-b.svg     : '''partial''' - underline and strikethrough not functioning&lt;br /&gt;
; text-tref-01-b.svg     : '''fail''' - tref not functioning&lt;br /&gt;
; text-tselect-01-b.svg  : '''partial''' - Inkscape's text selection mechanism is quite similar to the standard, but using a dialog (this could therefore be considered a '''pass''')&lt;br /&gt;
; text-tspan-01-b.svg    : '''partial''' - improved but still not quite correct&lt;br /&gt;
; text-ws-01-t.svg       : '''pass'''&lt;br /&gt;
; text-ws-02-t.svg       : '''fail''' - xml:space=&amp;quot;preserve&amp;quot; not functioning; non-printing glyphs now displayed&lt;br /&gt;
----&lt;br /&gt;
Further discussion is on the [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1224751&amp;amp;group_id=93438&amp;amp;atid=604306 Bug Tracker].&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SVG_Test_Suite_Compliance&amp;diff=4361</id>
		<title>SVG Test Suite Compliance</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SVG_Test_Suite_Compliance&amp;diff=4361"/>
		<updated>2005-07-04T13:25:03Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Update for interact-cursor-01-f: crash now believed fixed in CVS.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This table summarises the results of testing Inkscape against the [http://www.w3.org/Graphics/SVG/Test/ W3C SVG Test Suite].&lt;br /&gt;
&lt;br /&gt;
This test was performed on Windows with development version CVS-0507040247. See also&lt;br /&gt;
* [[SVG Test Suite Compliance V0.41]]&lt;br /&gt;
&lt;br /&gt;
== Key ==&lt;br /&gt;
; '''pass''' : the test passed fully (69 occurences)&lt;br /&gt;
; '''partial''' : the test partially failed but it may be easy to make it pass (25 occurences)&lt;br /&gt;
; '''fail''' : the test failed (88 occurences)&lt;br /&gt;
; '''crash''' : the test failed and Inkscape crashed (1 occurence)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
== Results ==&lt;br /&gt;
=== Animation (not yet supported) ===&lt;br /&gt;
; animate-elem-02-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-03-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-04-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-05-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-06-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-07-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-08-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-09-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-10-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-11-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-12-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-13-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-14-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-15-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-16-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-17-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-18-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-19-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-20-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-21-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-22-b.svg : '''fail'''&lt;br /&gt;
; animate-elem-23-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-24-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-25-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-26-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-27-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-28-t.svg : '''fail'''&lt;br /&gt;
; animate-elem-29-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Colors ===&lt;br /&gt;
; color-prof-01-f.svg   : '''fail'''&lt;br /&gt;
: &amp;lt;i&amp;gt;Tests color profile support.  Hopefully the Little CMS work should address this: see InkscapeColor.&amp;lt;/i&amp;gt;&lt;br /&gt;
; color-prop-01-b.svg   : '''pass'''&lt;br /&gt;
: &amp;lt;i&amp;gt;there are bugs for variations of this test: see comment in sp_object_get_style_property.&amp;lt;/i&amp;gt;&lt;br /&gt;
; color-prop-02-f.svg   : '''pass'''&lt;br /&gt;
; color-prop-03-t.svg   : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Coordinates ===&lt;br /&gt;
; coords-trans-01-b.svg : '''pass'''&lt;br /&gt;
; coords-trans-02-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-03-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-04-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-05-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-06-t.svg : '''pass'''&lt;br /&gt;
; coords-units-01-b.svg : '''partial''' - incorrect clipping&lt;br /&gt;
; coords-units-02-b.svg : '''partial'''&lt;br /&gt;
; coords-units-03-b.svg : '''partial''' - the red background is not clipped correctly&lt;br /&gt;
; coords-viewattr-01-b.svg   : '''fail'''&lt;br /&gt;
; coords-viewattr-02-b.svg   : '''partial''' - viewport boxes not styled correctly&lt;br /&gt;
; extend-namespace-01-f.svg  : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Filters (not yet supported) ===&lt;br /&gt;
; filters-blend-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-color-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-composite-02-b.svg : '''fail'''&lt;br /&gt;
; filters-comptran-01-b.svg  : '''fail'''&lt;br /&gt;
; filters-conv-01-f.svg      : '''fail'''&lt;br /&gt;
; filters-diffuse-01-f.svg   : '''fail'''&lt;br /&gt;
; filters-displace-01-f.svg  : '''fail'''&lt;br /&gt;
; filters-example-01-b.svg   : '''fail'''&lt;br /&gt;
; filters-gauss-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-image-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-light-01-f.svg     : '''fail'''&lt;br /&gt;
; filters-morph-01-f.svg     : '''fail'''&lt;br /&gt;
; filters-offset-01-b.svg    : '''fail'''&lt;br /&gt;
; filters-specular-01-f.svg  : '''fail'''&lt;br /&gt;
; filters-tile-01-b.svg      : '''fail'''&lt;br /&gt;
; filters-turb-01-f.svg      : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Fonts ===&lt;br /&gt;
; fonts-elem-01-t.svg : '''pass'''&lt;br /&gt;
; fonts-elem-02-t.svg : '''fail''' (but close to what's requried)&lt;br /&gt;
; fonts-elem-03-b.svg : '''fail'''&lt;br /&gt;
; fonts-elem-04-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Interaction (not supported) ===&lt;br /&gt;
; interact-cursor-01-f.svg : '''crash''' (on Windows when attempting the interaction)&lt;br /&gt;
: &amp;lt;i&amp;gt;Crash now fixed in CVS.  (Windows user please confirm.)  Thanks to ACSpike for backtrace.&amp;lt;/i&amp;gt;&lt;br /&gt;
; interact-dom-01-b.svg    : '''fail'''&lt;br /&gt;
; interact-events-01-b.svg : '''fail'''&lt;br /&gt;
; interact-order-01-b.svg  : '''fail'''&lt;br /&gt;
; interact-order-02-b.svg  : '''fail'''&lt;br /&gt;
; interact-order-03-b.svg  : '''fail'''&lt;br /&gt;
; interact-zoom-01-t.svg   : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Linking ===&lt;br /&gt;
; linking-a-01-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-02-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-03-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-04-t.svg   : '''fail'''&lt;br /&gt;
; linking-uri-01-b.svg : '''fail'''&lt;br /&gt;
; linking-uri-02-b.svg : '''fail'''&lt;br /&gt;
; linking-uri-03-t.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Masking ===&lt;br /&gt;
; masking-mask-01-b.svg    : '''partial''' - the string is incorrectly rendered&lt;br /&gt;
; masking-opacity-01-b.svg : '''pass'''&lt;br /&gt;
; masking-path-01-b.svg    : '''pass'''&lt;br /&gt;
; masking-path-02-b.svg    : '''partial'''&lt;br /&gt;
; masking-path-03-b.svg    : '''fail'''&lt;br /&gt;
; masking-path-04-b.svg    : '''pass'''&lt;br /&gt;
; masking-path-05-f.svg    : '''partial''' - clip-rule=evenodd not functioning&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
; metadata-example-01-b.svg : '''pass''' (I think)&lt;br /&gt;
&lt;br /&gt;
=== Painting ===&lt;br /&gt;
; painting-fill-01-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-02-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-03-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-04-t.svg   : '''pass'''&lt;br /&gt;
; painting-marker-01-f.svg : '''pass'''&lt;br /&gt;
; painting-marker-02-f.svg : '''partial''' - mishandling of marker strokes&lt;br /&gt;
; painting-render-01-b.svg : '''pass'''&lt;br /&gt;
; painting-stroke-01-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-02-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-03-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-04-t.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Paths ===&lt;br /&gt;
; paths-data-01-t.svg : '''pass'''&lt;br /&gt;
; paths-data-02-t.svg : '''pass'''&lt;br /&gt;
; paths-data-03-f.svg : '''pass'''&lt;br /&gt;
; paths-data-04-t.svg : '''pass'''&lt;br /&gt;
; paths-data-05-t.svg : '''pass'''&lt;br /&gt;
; paths-data-06-t.svg : '''pass'''&lt;br /&gt;
; paths-data-07-t.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Color Gradients ===&lt;br /&gt;
; pservers-grad-01-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-02-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-03-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-04-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-05-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-06-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-07-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-08-b.svg : '''partial''' - gradient is ok; font is incorrect&lt;br /&gt;
; pservers-grad-09-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-10-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-11-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-12-b.svg : '''pass'''&lt;br /&gt;
; pservers-pattern-01-b.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Rendering ===&lt;br /&gt;
; render-elems-01-t.svg : '''pass'''&lt;br /&gt;
; render-elems-02-t.svg : '''pass'''&lt;br /&gt;
; render-elems-03-t.svg : '''fail'''&lt;br /&gt;
; render-elems-06-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-elems-07-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-elems-08-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-groups-01-b.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-groups-03-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
&lt;br /&gt;
=== Scripting (not supported) ===&lt;br /&gt;
; script-handle-01-b.svg : '''fail'''&lt;br /&gt;
; script-handle-02-b.svg : '''fail'''&lt;br /&gt;
; script-handle-03-b.svg : '''fail'''&lt;br /&gt;
; script-handle-04-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Shapes ===&lt;br /&gt;
; shapes-circle-01-t.svg   : '''pass'''&lt;br /&gt;
; shapes-ellipse-01-t.svg  : '''pass'''&lt;br /&gt;
; shapes-line-01-t.svg     : '''pass'''&lt;br /&gt;
; shapes-polygon-01-t.svg  : '''pass'''&lt;br /&gt;
; shapes-polyline-01-t.svg : '''partial''' - the pentagon ends are incorrect&lt;br /&gt;
; shapes-rect-01-t.svg     : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Structure ===&lt;br /&gt;
; struct-cond-01-t.svg  : '''fail'''&lt;br /&gt;
; struct-cond-02-t.svg  : '''fail'''&lt;br /&gt;
; struct-defs-01-t.svg  : '''pass'''&lt;br /&gt;
; struct-dom-01-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-02-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-03-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-04-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-05-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-06-b.svg   : '''fail'''&lt;br /&gt;
; struct-frag-01-t.svg  : '''pass'''&lt;br /&gt;
; struct-group-01-t.svg : '''pass'''&lt;br /&gt;
; struct-group-02-b.svg : '''pass'''&lt;br /&gt;
; struct-image-01-t.svg : '''pass'''&lt;br /&gt;
; struct-image-02-b.svg : '''partial''' - problem with use element&lt;br /&gt;
; struct-image-03-t.svg : '''fail'''&lt;br /&gt;
; struct-image-04-t.svg : '''pass'''&lt;br /&gt;
; struct-image-05-b.svg : '''fail''' - Message: error loading pixbuf at close&lt;br /&gt;
; struct-symbol-01-b.svg : '''partial''' - the topleft image is not resized correctly&lt;br /&gt;
&lt;br /&gt;
=== CSS ===&lt;br /&gt;
&amp;lt;i&amp;gt;Inkscape has limited support for CSS stylesheets.&amp;lt;/i&amp;gt;&lt;br /&gt;
; styling-css-01-b.svg     : '''pass'''&lt;br /&gt;
; styling-css-02-b.svg     : '''pass'''&lt;br /&gt;
; styling-css-03-b.svg     : '''pass'''&lt;br /&gt;
; styling-inherit-01-b.svg : '''fail'''&lt;br /&gt;
; styling-pres-01-t.svg    : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
; text-align-01-b.svg    : '''pass'''&lt;br /&gt;
; text-align-02-b.svg    : '''fail''' - baseline-shift not functioning&lt;br /&gt;
; text-align-03-b.svg    : '''fail'''&lt;br /&gt;
; text-align-04-b.svg    : '''partial''' - tref not supported&lt;br /&gt;
; text-align-05-b.svg    : '''pass'''&lt;br /&gt;
; text-align-06-b.svg    : '''fail'''&lt;br /&gt;
; text-altglyph-01-b.svg : '''fail'''&lt;br /&gt;
; text-deco-01-b.svg     : '''partial''' - underline and strikethrough not functioning; whitespace problem&lt;br /&gt;
; text-fonts-01-t.svg    : '''pass'''&lt;br /&gt;
; text-fonts-02-t.svg    : '''partial''' - font-weight=&amp;quot;lighter&amp;quot; not functioning&lt;br /&gt;
; text-intro-01-t.svg    : '''pass'''&lt;br /&gt;
; text-intro-02-b.svg    : '''partial''' - right-to-left text not functioning&lt;br /&gt;
; text-intro-03-b.svg    : '''partial''' - text is vertical but oriented incorrectly&lt;br /&gt;
; text-intro-04-t.svg    : '''pass'''&lt;br /&gt;
; text-path-01-b.svg     : '''pass'''&lt;br /&gt;
; text-spacing-01-b.svg  : '''pass'''&lt;br /&gt;
; text-text-01-b.svg     : '''fail''' - 'textLength' and 'lengthAdjust' not functioning &lt;br /&gt;
; text-text-03-b.svg     : '''partial''' - underline and strikethrough not functioning&lt;br /&gt;
; text-tref-01-b.svg     : '''fail''' - tref not functioning&lt;br /&gt;
; text-tselect-01-b.svg  : '''partial''' - Inkscape's text selection mechanism is quite similar to the standard, but using a dialog (this could therefore be considered a '''pass''')&lt;br /&gt;
; text-tspan-01-b.svg    : '''partial''' - improved but still not quite correct&lt;br /&gt;
; text-ws-01-t.svg       : '''pass'''&lt;br /&gt;
; text-ws-02-t.svg       : '''fail''' - xml:space=&amp;quot;preserve&amp;quot; not functioning; non-printing glyphs now displayed&lt;br /&gt;
----&lt;br /&gt;
Further discussion is on the [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1224751&amp;amp;group_id=93438&amp;amp;atid=604306 Bug Tracker].&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SVG_Test_Suite_Compliance&amp;diff=4350</id>
		<title>SVG Test Suite Compliance</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SVG_Test_Suite_Compliance&amp;diff=4350"/>
		<updated>2005-07-04T10:45:05Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Update information in Color, Interation and CSS sections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This table summarises the results of testing Inkscape against the [http://www.w3.org/Graphics/SVG/Test/ W3C SVG Test Suite].&lt;br /&gt;
&lt;br /&gt;
This test was performed on Windows with v0.41.&lt;br /&gt;
&lt;br /&gt;
== Key ==&lt;br /&gt;
; '''pass''' : the test passed fully (60 occurences)&lt;br /&gt;
; '''partial''' : the test partially failed but it may be easy to make it pass (28 occurences)&lt;br /&gt;
; '''fail''' : the test failed (72 occurences)&lt;br /&gt;
; '''crash''' : the test failed and Inkscape crashed (22 occurences)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
== Results ==&lt;br /&gt;
=== Animation (not yet supported) ===&lt;br /&gt;
&amp;lt;i&amp;gt;A crash with the &amp;lt;tt&amp;gt;&amp;amp;lt;animate&amp;amp;gt;&amp;lt;/tt&amp;gt; element has been corrected in CVS already.&lt;br /&gt;
This may fix some or all of the crash items in this section.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; animate-elem-02-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-03-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-04-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-05-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-06-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-07-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-08-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-09-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-10-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-11-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-12-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-13-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-14-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-15-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-16-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-17-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-18-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-19-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-20-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-21-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-22-b.svg : '''crash'''&lt;br /&gt;
; animate-elem-23-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-24-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-25-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-26-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-27-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-28-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-29-b.svg : '''crash'''&lt;br /&gt;
&lt;br /&gt;
=== Colors ===&lt;br /&gt;
; color-prof-01-f.svg   : '''fail'''&lt;br /&gt;
: &amp;lt;i&amp;gt;Tests color profile support.  Hopefully the lcms work should address this: see InkscapeColor.&amp;lt;/i&amp;gt;&lt;br /&gt;
; color-prop-01-b.svg   : '''partial''' - red color stop not functioning&lt;br /&gt;
: &amp;lt;i&amp;gt;Current CVS now passes this, though there are bugs for variations of this test: see comment in sp_object_get_style_property.&amp;lt;/i&amp;gt;&lt;br /&gt;
; color-prop-02-f.svg   : '''pass'''&lt;br /&gt;
; color-prop-03-t.svg   : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Coordinates ===&lt;br /&gt;
; coords-trans-01-b.svg : '''pass'''&lt;br /&gt;
; coords-trans-02-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-03-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-04-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-05-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-06-t.svg : '''pass'''&lt;br /&gt;
; coords-units-01-b.svg : '''partial'''&lt;br /&gt;
; coords-units-02-b.svg : '''partial'''&lt;br /&gt;
; coords-units-03-b.svg : '''partial''' - the red background is not clipped correctly&lt;br /&gt;
; coords-viewattr-01-b.svg   : '''fail'''&lt;br /&gt;
; coords-viewattr-02-b.svg   : '''fail'''&lt;br /&gt;
; extend-namespace-01-f.svg  : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Filters (not yet supported) ===&lt;br /&gt;
; filters-blend-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-color-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-composite-02-b.svg : '''fail'''&lt;br /&gt;
; filters-comptran-01-b.svg  : '''fail'''&lt;br /&gt;
; filters-conv-01-f.svg      : '''fail'''&lt;br /&gt;
; filters-diffuse-01-f.svg   : '''fail'''&lt;br /&gt;
; filters-displace-01-f.svg  : '''fail'''&lt;br /&gt;
; filters-example-01-b.svg   : '''fail'''&lt;br /&gt;
; filters-gauss-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-image-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-light-01-f.svg     : '''fail'''&lt;br /&gt;
; filters-morph-01-f.svg     : '''fail'''&lt;br /&gt;
; filters-offset-01-b.svg    : '''fail'''&lt;br /&gt;
; filters-specular-01-f.svg  : '''fail'''&lt;br /&gt;
; filters-tile-01-b.svg      : '''fail'''&lt;br /&gt;
; filters-turb-01-f.svg      : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Fonts ===&lt;br /&gt;
; fonts-elem-01-t.svg : '''pass'''&lt;br /&gt;
; fonts-elem-02-t.svg : '''fail''' (but close to what's requried)&lt;br /&gt;
; fonts-elem-03-b.svg : '''fail'''&lt;br /&gt;
; fonts-elem-04-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Interaction (not supported) ===&lt;br /&gt;
; interact-cursor-01-f.svg : '''crash'''&lt;br /&gt;
: &amp;lt;i&amp;gt;Doesn't crash for me with either 0.41 or current CVS, on Debian Gnu/Linux  -- pjrm&amp;lt;/i&amp;gt;&lt;br /&gt;
: &amp;lt;i&amp;gt;Update: ScislaC has reproduced on windows with current CVS.  I haven't yet created a corresponding bug report.&amp;lt;/i&amp;gt;&lt;br /&gt;
; interact-dom-01-b.svg    : '''fail'''&lt;br /&gt;
; interact-events-01-b.svg : '''fail'''&lt;br /&gt;
; interact-order-01-b.svg  : '''fail'''&lt;br /&gt;
; interact-order-02-b.svg  : '''fail'''&lt;br /&gt;
; interact-order-03-b.svg  : '''fail'''&lt;br /&gt;
; interact-zoom-01-t.svg   : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Linking ===&lt;br /&gt;
; linking-a-01-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-02-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-03-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-04-t.svg   : '''fail'''&lt;br /&gt;
; linking-uri-01-b.svg : '''fail'''&lt;br /&gt;
; linking-uri-02-b.svg : '''fail'''&lt;br /&gt;
; linking-uri-03-t.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Masking ===&lt;br /&gt;
; masking-mask-01-b.svg    : '''partial''' - the string is incorrectly rendered&lt;br /&gt;
; masking-opacity-01-b.svg : '''pass'''&lt;br /&gt;
; masking-path-01-b.svg    : '''pass'''&lt;br /&gt;
; masking-path-02-b.svg    : '''partial'''&lt;br /&gt;
; masking-path-03-b.svg    : '''fail'''&lt;br /&gt;
; masking-path-04-b.svg    : '''pass'''&lt;br /&gt;
; masking-path-05-f.svg    : '''partial''' - clip-rule=evenodd not functioning&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
; metadata-example-01-b.svg : '''pass''' (I think)&lt;br /&gt;
&lt;br /&gt;
=== Painting ===&lt;br /&gt;
; painting-fill-01-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-02-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-03-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-04-t.svg   : '''pass'''&lt;br /&gt;
; painting-marker-01-f.svg : '''pass'''&lt;br /&gt;
; painting-marker-02-f.svg : '''partial''' - mishandling of marker strokes&lt;br /&gt;
; painting-render-01-b.svg : '''pass'''&lt;br /&gt;
; painting-stroke-01-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-02-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-03-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-04-t.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Paths ===&lt;br /&gt;
; paths-data-01-t.svg : '''pass'''&lt;br /&gt;
; paths-data-02-t.svg : '''partial''' - mqzmqz fails, all others are ok&lt;br /&gt;
; paths-data-03-f.svg : '''partial''' - MaZmAZmaz fails, all others are ok&lt;br /&gt;
; paths-data-04-t.svg : '''pass'''&lt;br /&gt;
; paths-data-05-t.svg : '''pass'''&lt;br /&gt;
; paths-data-06-t.svg : '''pass'''&lt;br /&gt;
; paths-data-07-t.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Color Gradients ===&lt;br /&gt;
; pservers-grad-01-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-02-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-03-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-04-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-05-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-06-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-07-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-08-b.svg : '''partial''' - gradient is ok; font is incorrect&lt;br /&gt;
; pservers-grad-09-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-10-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-11-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-12-b.svg : '''pass'''&lt;br /&gt;
; pservers-pattern-01-b.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Rendering ===&lt;br /&gt;
; render-elems-01-t.svg : '''pass'''&lt;br /&gt;
; render-elems-02-t.svg : '''pass'''&lt;br /&gt;
; render-elems-03-t.svg : '''fail'''&lt;br /&gt;
; render-elems-06-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-elems-07-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-elems-08-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-groups-01-b.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-groups-03-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
&lt;br /&gt;
=== Scripting (not supported) ===&lt;br /&gt;
; script-handle-01-b.svg : '''fail'''&lt;br /&gt;
; script-handle-02-b.svg : '''fail'''&lt;br /&gt;
; script-handle-03-b.svg : '''fail'''&lt;br /&gt;
; script-handle-04-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Shapes ===&lt;br /&gt;
; shapes-circle-01-t.svg   : '''pass'''&lt;br /&gt;
; shapes-ellipse-01-t.svg  : '''pass'''&lt;br /&gt;
; shapes-line-01-t.svg     : '''pass'''&lt;br /&gt;
; shapes-polygon-01-t.svg  : '''pass'''&lt;br /&gt;
; shapes-polyline-01-t.svg : '''partial''' - the pentagon ends are incorrect&lt;br /&gt;
; shapes-rect-01-t.svg     : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Structure ===&lt;br /&gt;
; struct-cond-01-t.svg  : '''fail'''&lt;br /&gt;
; struct-cond-02-t.svg  : '''fail'''&lt;br /&gt;
; struct-defs-01-t.svg  : '''pass'''&lt;br /&gt;
; struct-dom-01-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-02-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-03-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-04-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-05-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-06-b.svg   : '''fail'''&lt;br /&gt;
; struct-frag-01-t.svg  : '''pass'''&lt;br /&gt;
; struct-group-01-t.svg : '''pass'''&lt;br /&gt;
; struct-group-02-b.svg : '''pass'''&lt;br /&gt;
; struct-image-01-t.svg : '''pass'''&lt;br /&gt;
; struct-image-02-b.svg : '''partial''' - problem with use element&lt;br /&gt;
; struct-image-03-t.svg : '''fail'''&lt;br /&gt;
; struct-image-04-t.svg : '''pass'''&lt;br /&gt;
; struct-image-05-b.svg : '''fail''' - Message: error loading pixbuf at close&lt;br /&gt;
; struct-symbol-01-b.svg : '''partial''' - the topleft image is not resized correctly&lt;br /&gt;
&lt;br /&gt;
=== CSS (not yet supported) ===&lt;br /&gt;
&amp;lt;i&amp;gt;Current CVS has basic support for CSS stylesheets, which might be enough to make some or all of these pass; I haven't yet checked.&amp;lt;/i&amp;gt;&lt;br /&gt;
; styling-css-01-b.svg     : '''fail'''&lt;br /&gt;
; styling-css-02-b.svg     : '''fail'''&lt;br /&gt;
; styling-css-03-b.svg     : '''fail'''&lt;br /&gt;
; styling-inherit-01-b.svg : '''fail'''&lt;br /&gt;
; styling-pres-01-t.svg    : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
; text-align-01-b.svg    : '''pass'''&lt;br /&gt;
; text-align-02-b.svg    : '''fail''' - baseline-shift not functioning&lt;br /&gt;
; text-align-03-b.svg    : '''pass'''&lt;br /&gt;
; text-align-04-b.svg    : '''partial'''&lt;br /&gt;
; text-align-05-b.svg    : '''fail'''&lt;br /&gt;
; text-align-06-b.svg    : '''fail'''&lt;br /&gt;
; text-altglyph-01-b.svg : '''fail'''&lt;br /&gt;
; text-deco-01-b.svg     : '''partial''' - underline and strikethrough not functioning&lt;br /&gt;
; text-fonts-01-t.svg    : '''pass'''&lt;br /&gt;
; text-fonts-02-t.svg    : '''partial''' - font-weight=&amp;quot;lighter&amp;quot; not functioning&lt;br /&gt;
; text-intro-01-t.svg    : '''pass'''&lt;br /&gt;
; text-intro-02-b.svg    : '''partial''' - right-to-left text not functioning&lt;br /&gt;
; text-intro-03-b.svg    : '''partial''' - text is vertical but oriented incorrectly&lt;br /&gt;
; text-intro-04-t.svg    : '''pass'''&lt;br /&gt;
; text-path-01-b.svg     : '''partial''' - startOffset attribute of textPath not functioning&lt;br /&gt;
; text-spacing-01-b.svg  : '''fail'''&lt;br /&gt;
; text-text-01-b.svg     : '''fail''' - 'textLength' and 'lengthAdjust' not functioning &lt;br /&gt;
; text-text-03-b.svg     : '''partial''' - underline and strikethrough not functioning&lt;br /&gt;
; text-tref-01-b.svg     : '''fail''' - tref not functioning&lt;br /&gt;
; text-tselect-01-b.svg  : '''partial''' - Inkscape's text selection mechanism is quite similar to the standard, but using a dialog (this could therefore be considered a '''pass''')&lt;br /&gt;
; text-tspan-01-b.svg    : '''partial''' - char-by-char placement not functioning&lt;br /&gt;
; text-ws-01-t.svg       : '''pass'''&lt;br /&gt;
; text-ws-02-t.svg       : '''fail''' - xml:space=&amp;quot;preserve&amp;quot; not functioning&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SVG_Test_Suite_Compliance&amp;diff=4349</id>
		<title>SVG Test Suite Compliance</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SVG_Test_Suite_Compliance&amp;diff=4349"/>
		<updated>2005-07-03T13:48:53Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * add note about color-prop-01-b failure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This table summarises the results of testing Inkscape against the [http://www.w3.org/Graphics/SVG/Test/ W3C SVG Test Suite].&lt;br /&gt;
&lt;br /&gt;
This test was performed on Windows with v0.41.&lt;br /&gt;
&lt;br /&gt;
== Key ==&lt;br /&gt;
; '''pass''' : the test passed fully (60 occurences)&lt;br /&gt;
; '''partial''' : the test partially failed but it may be easy to make it pass (28 occurences)&lt;br /&gt;
; '''fail''' : the test failed (72 occurences)&lt;br /&gt;
; '''crash''' : the test failed and Inkscape crashed (22 occurences)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
== Results ==&lt;br /&gt;
=== Animation (not yet supported) ===&lt;br /&gt;
&amp;lt;i&amp;gt;A crash with the &amp;lt;tt&amp;gt;&amp;amp;lt;animate&amp;amp;gt;&amp;lt;/tt&amp;gt; element has been corrected in CVS already.&lt;br /&gt;
This may fix some or all of the crash items in this section.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; animate-elem-02-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-03-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-04-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-05-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-06-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-07-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-08-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-09-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-10-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-11-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-12-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-13-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-14-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-15-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-16-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-17-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-18-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-19-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-20-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-21-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-22-b.svg : '''crash'''&lt;br /&gt;
; animate-elem-23-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-24-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-25-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-26-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-27-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-28-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-29-b.svg : '''crash'''&lt;br /&gt;
&lt;br /&gt;
=== Colors ===&lt;br /&gt;
; color-prof-01-f.svg   : '''fail'''&lt;br /&gt;
; color-prop-01-b.svg   : '''partial''' - red color stop not functioning&lt;br /&gt;
: &amp;lt;i&amp;gt;The failing stop is specified as &amp;lt;tt&amp;gt;currentColor&amp;lt;/tt&amp;gt;.  Getting this right requires correct inheritance of the &amp;lt;tt&amp;gt;color&amp;lt;/tt&amp;gt; property, even though neither &amp;lt;tt&amp;gt;&amp;amp;lt;stop&amp;amp;gt;&amp;lt;/tt&amp;gt; nor &amp;lt;tt&amp;gt;&amp;amp;lt;gradient&amp;amp;gt;&amp;lt;/tt&amp;gt; is an &amp;lt;tt&amp;gt;SPItem&amp;lt;/tt&amp;gt;.  I believe we are expected to inherit &amp;lt;tt&amp;gt;color&amp;lt;/tt&amp;gt; even from the &amp;lt;tt&amp;gt;&amp;amp;lt;defs&amp;amp;gt;&amp;lt;/tt&amp;gt; element if necessary, and that we should be using &amp;lt;tt&amp;gt;CRSelEng&amp;lt;/tt&amp;gt; stuff as style.cpp does.  -- pjrm&amp;lt;/i&amp;gt;&lt;br /&gt;
; color-prop-02-f.svg   : '''pass'''&lt;br /&gt;
; color-prop-03-t.svg   : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Coordinates ===&lt;br /&gt;
; coords-trans-01-b.svg : '''pass'''&lt;br /&gt;
; coords-trans-02-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-03-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-04-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-05-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-06-t.svg : '''pass'''&lt;br /&gt;
; coords-units-01-b.svg : '''partial'''&lt;br /&gt;
; coords-units-02-b.svg : '''partial'''&lt;br /&gt;
; coords-units-03-b.svg : '''partial''' - the red background is not clipped correctly&lt;br /&gt;
; coords-viewattr-01-b.svg   : '''fail'''&lt;br /&gt;
; coords-viewattr-02-b.svg   : '''fail'''&lt;br /&gt;
; extend-namespace-01-f.svg  : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Filters (not yet supported) ===&lt;br /&gt;
; filters-blend-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-color-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-composite-02-b.svg : '''fail'''&lt;br /&gt;
; filters-comptran-01-b.svg  : '''fail'''&lt;br /&gt;
; filters-conv-01-f.svg      : '''fail'''&lt;br /&gt;
; filters-diffuse-01-f.svg   : '''fail'''&lt;br /&gt;
; filters-displace-01-f.svg  : '''fail'''&lt;br /&gt;
; filters-example-01-b.svg   : '''fail'''&lt;br /&gt;
; filters-gauss-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-image-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-light-01-f.svg     : '''fail'''&lt;br /&gt;
; filters-morph-01-f.svg     : '''fail'''&lt;br /&gt;
; filters-offset-01-b.svg    : '''fail'''&lt;br /&gt;
; filters-specular-01-f.svg  : '''fail'''&lt;br /&gt;
; filters-tile-01-b.svg      : '''fail'''&lt;br /&gt;
; filters-turb-01-f.svg      : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Fonts ===&lt;br /&gt;
; fonts-elem-01-t.svg : '''pass'''&lt;br /&gt;
; fonts-elem-02-t.svg : '''fail''' (but close to what's requried)&lt;br /&gt;
; fonts-elem-03-b.svg : '''fail'''&lt;br /&gt;
; fonts-elem-04-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Interaction (not supported) ===&lt;br /&gt;
; interact-cursor-01-f.svg : '''crash'''&lt;br /&gt;
: &amp;lt;i&amp;gt;Doesn't crash for me with either 0.41 or current CVS, on Debian Gnu/Linux  -- pjrm&amp;lt;/i&amp;gt;&lt;br /&gt;
; interact-dom-01-b.svg    : '''fail'''&lt;br /&gt;
; interact-events-01-b.svg : '''fail'''&lt;br /&gt;
; interact-order-01-b.svg  : '''fail'''&lt;br /&gt;
; interact-order-02-b.svg  : '''fail'''&lt;br /&gt;
; interact-order-03-b.svg  : '''fail'''&lt;br /&gt;
; interact-zoom-01-t.svg   : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Linking ===&lt;br /&gt;
; linking-a-01-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-02-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-03-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-04-t.svg   : '''fail'''&lt;br /&gt;
; linking-uri-01-b.svg : '''fail'''&lt;br /&gt;
; linking-uri-02-b.svg : '''fail'''&lt;br /&gt;
; linking-uri-03-t.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Masking ===&lt;br /&gt;
; masking-mask-01-b.svg    : '''partial''' - the string is incorrectly rendered&lt;br /&gt;
; masking-opacity-01-b.svg : '''pass'''&lt;br /&gt;
; masking-path-01-b.svg    : '''pass'''&lt;br /&gt;
; masking-path-02-b.svg    : '''partial'''&lt;br /&gt;
; masking-path-03-b.svg    : '''fail'''&lt;br /&gt;
; masking-path-04-b.svg    : '''pass'''&lt;br /&gt;
; masking-path-05-f.svg    : '''partial''' - clip-rule=evenodd not functioning&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
; metadata-example-01-b.svg : '''pass''' (I think)&lt;br /&gt;
&lt;br /&gt;
=== Painting ===&lt;br /&gt;
; painting-fill-01-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-02-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-03-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-04-t.svg   : '''pass'''&lt;br /&gt;
; painting-marker-01-f.svg : '''pass'''&lt;br /&gt;
; painting-marker-02-f.svg : '''partial''' - mishandling of marker strokes&lt;br /&gt;
; painting-render-01-b.svg : '''pass'''&lt;br /&gt;
; painting-stroke-01-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-02-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-03-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-04-t.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Paths ===&lt;br /&gt;
; paths-data-01-t.svg : '''pass'''&lt;br /&gt;
; paths-data-02-t.svg : '''partial''' - mqzmqz fails, all others are ok&lt;br /&gt;
; paths-data-03-f.svg : '''partial''' - MaZmAZmaz fails, all others are ok&lt;br /&gt;
; paths-data-04-t.svg : '''pass'''&lt;br /&gt;
; paths-data-05-t.svg : '''pass'''&lt;br /&gt;
; paths-data-06-t.svg : '''pass'''&lt;br /&gt;
; paths-data-07-t.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Color Gradients ===&lt;br /&gt;
; pservers-grad-01-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-02-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-03-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-04-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-05-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-06-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-07-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-08-b.svg : '''partial''' - gradient is ok; font is incorrect&lt;br /&gt;
; pservers-grad-09-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-10-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-11-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-12-b.svg : '''pass'''&lt;br /&gt;
; pservers-pattern-01-b.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Rendering ===&lt;br /&gt;
; render-elems-01-t.svg : '''pass'''&lt;br /&gt;
; render-elems-02-t.svg : '''pass'''&lt;br /&gt;
; render-elems-03-t.svg : '''fail'''&lt;br /&gt;
; render-elems-06-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-elems-07-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-elems-08-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-groups-01-b.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-groups-03-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
&lt;br /&gt;
=== Scripting (not supported) ===&lt;br /&gt;
; script-handle-01-b.svg : '''fail'''&lt;br /&gt;
; script-handle-02-b.svg : '''fail'''&lt;br /&gt;
; script-handle-03-b.svg : '''fail'''&lt;br /&gt;
; script-handle-04-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Shapes ===&lt;br /&gt;
; shapes-circle-01-t.svg   : '''pass'''&lt;br /&gt;
; shapes-ellipse-01-t.svg  : '''pass'''&lt;br /&gt;
; shapes-line-01-t.svg     : '''pass'''&lt;br /&gt;
; shapes-polygon-01-t.svg  : '''pass'''&lt;br /&gt;
; shapes-polyline-01-t.svg : '''partial''' - the pentagon ends are incorrect&lt;br /&gt;
; shapes-rect-01-t.svg     : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Structure ===&lt;br /&gt;
; struct-cond-01-t.svg  : '''fail'''&lt;br /&gt;
; struct-cond-02-t.svg  : '''fail'''&lt;br /&gt;
; struct-defs-01-t.svg  : '''pass'''&lt;br /&gt;
; struct-dom-01-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-02-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-03-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-04-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-05-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-06-b.svg   : '''fail'''&lt;br /&gt;
; struct-frag-01-t.svg  : '''pass'''&lt;br /&gt;
; struct-group-01-t.svg : '''pass'''&lt;br /&gt;
; struct-group-02-b.svg : '''pass'''&lt;br /&gt;
; struct-image-01-t.svg : '''pass'''&lt;br /&gt;
; struct-image-02-b.svg : '''partial''' - problem with use element&lt;br /&gt;
; struct-image-03-t.svg : '''fail'''&lt;br /&gt;
; struct-image-04-t.svg : '''pass'''&lt;br /&gt;
; struct-image-05-b.svg : '''fail''' - Message: error loading pixbuf at close&lt;br /&gt;
; struct-symbol-01-b.svg : '''partial''' - the topleft image is not resized correctly&lt;br /&gt;
&lt;br /&gt;
=== CSS (not yet supported) ===&lt;br /&gt;
; styling-css-01-b.svg     : '''fail'''&lt;br /&gt;
; styling-css-02-b.svg     : '''fail'''&lt;br /&gt;
; styling-css-03-b.svg     : '''fail'''&lt;br /&gt;
; styling-inherit-01-b.svg : '''fail'''&lt;br /&gt;
; styling-pres-01-t.svg    : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
; text-align-01-b.svg    : '''pass'''&lt;br /&gt;
; text-align-02-b.svg    : '''fail''' - baseline-shift not functioning&lt;br /&gt;
; text-align-03-b.svg    : '''pass'''&lt;br /&gt;
; text-align-04-b.svg    : '''partial'''&lt;br /&gt;
; text-align-05-b.svg    : '''fail'''&lt;br /&gt;
; text-align-06-b.svg    : '''fail'''&lt;br /&gt;
; text-altglyph-01-b.svg : '''fail'''&lt;br /&gt;
; text-deco-01-b.svg     : '''partial''' - underline and strikethrough not functioning&lt;br /&gt;
; text-fonts-01-t.svg    : '''pass'''&lt;br /&gt;
; text-fonts-02-t.svg    : '''partial''' - font-weight=&amp;quot;lighter&amp;quot; not functioning&lt;br /&gt;
; text-intro-01-t.svg    : '''pass'''&lt;br /&gt;
; text-intro-02-b.svg    : '''partial''' - right-to-left text not functioning&lt;br /&gt;
; text-intro-03-b.svg    : '''partial''' - text is vertical but oriented incorrectly&lt;br /&gt;
; text-intro-04-t.svg    : '''pass'''&lt;br /&gt;
; text-path-01-b.svg     : '''partial''' - startOffset attribute of textPath not functioning&lt;br /&gt;
; text-spacing-01-b.svg  : '''fail'''&lt;br /&gt;
; text-text-01-b.svg     : '''fail''' - 'textLength' and 'lengthAdjust' not functioning &lt;br /&gt;
; text-text-03-b.svg     : '''partial''' - underline and strikethrough not functioning&lt;br /&gt;
; text-tref-01-b.svg     : '''fail''' - tref not functioning&lt;br /&gt;
; text-tselect-01-b.svg  : '''partial''' - Inkscape's text selection mechanism is quite similar to the standard, but using a dialog (this could therefore be considered a '''pass''')&lt;br /&gt;
; text-tspan-01-b.svg    : '''partial''' - char-by-char placement not functioning&lt;br /&gt;
; text-ws-01-t.svg       : '''pass'''&lt;br /&gt;
; text-ws-02-t.svg       : '''fail''' - xml:space=&amp;quot;preserve&amp;quot; not functioning&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SVG_Test_Suite_Compliance&amp;diff=4348</id>
		<title>SVG Test Suite Compliance</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SVG_Test_Suite_Compliance&amp;diff=4348"/>
		<updated>2005-07-02T02:14:22Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * interact-cursor-01-f.svg doesn't crash for me&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This table summarises the results of testing Inkscape against the [http://www.w3.org/Graphics/SVG/Test/ W3C SVG Test Suite].&lt;br /&gt;
&lt;br /&gt;
This test was performed on Windows with v0.41.&lt;br /&gt;
&lt;br /&gt;
== Key ==&lt;br /&gt;
; '''pass''' : the test passed fully (60 occurences)&lt;br /&gt;
; '''partial''' : the test partially failed but it may be easy to make it pass (28 occurences)&lt;br /&gt;
; '''fail''' : the test failed (72 occurences)&lt;br /&gt;
; '''crash''' : the test failed and Inkscape crashed (22 occurences)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
== Results ==&lt;br /&gt;
=== Animation (not yet supported) ===&lt;br /&gt;
&amp;lt;i&amp;gt;A crash with the &amp;lt;tt&amp;gt;&amp;amp;lt;animate&amp;amp;gt;&amp;lt;/tt&amp;gt; element has been corrected in CVS already.&lt;br /&gt;
This may fix some or all of the crash items in this section.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; animate-elem-02-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-03-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-04-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-05-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-06-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-07-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-08-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-09-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-10-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-11-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-12-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-13-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-14-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-15-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-16-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-17-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-18-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-19-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-20-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-21-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-22-b.svg : '''crash'''&lt;br /&gt;
; animate-elem-23-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-24-t.svg : '''fail''' (animation not supported)&lt;br /&gt;
; animate-elem-25-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-26-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-27-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-28-t.svg : '''crash'''&lt;br /&gt;
; animate-elem-29-b.svg : '''crash'''&lt;br /&gt;
&lt;br /&gt;
=== Colors ===&lt;br /&gt;
; color-prof-01-f.svg   : '''fail'''&lt;br /&gt;
; color-prop-01-b.svg   : '''partial''' - red color stop not functioning&lt;br /&gt;
; color-prop-02-f.svg   : '''pass'''&lt;br /&gt;
; color-prop-03-t.svg   : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Coordinates ===&lt;br /&gt;
; coords-trans-01-b.svg : '''pass'''&lt;br /&gt;
; coords-trans-02-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-03-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-04-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-05-t.svg : '''pass'''&lt;br /&gt;
; coords-trans-06-t.svg : '''pass'''&lt;br /&gt;
; coords-units-01-b.svg : '''partial'''&lt;br /&gt;
; coords-units-02-b.svg : '''partial'''&lt;br /&gt;
; coords-units-03-b.svg : '''partial''' - the red background is not clipped correctly&lt;br /&gt;
; coords-viewattr-01-b.svg   : '''fail'''&lt;br /&gt;
; coords-viewattr-02-b.svg   : '''fail'''&lt;br /&gt;
; extend-namespace-01-f.svg  : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Filters (not yet supported) ===&lt;br /&gt;
; filters-blend-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-color-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-composite-02-b.svg : '''fail'''&lt;br /&gt;
; filters-comptran-01-b.svg  : '''fail'''&lt;br /&gt;
; filters-conv-01-f.svg      : '''fail'''&lt;br /&gt;
; filters-diffuse-01-f.svg   : '''fail'''&lt;br /&gt;
; filters-displace-01-f.svg  : '''fail'''&lt;br /&gt;
; filters-example-01-b.svg   : '''fail'''&lt;br /&gt;
; filters-gauss-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-image-01-b.svg     : '''fail'''&lt;br /&gt;
; filters-light-01-f.svg     : '''fail'''&lt;br /&gt;
; filters-morph-01-f.svg     : '''fail'''&lt;br /&gt;
; filters-offset-01-b.svg    : '''fail'''&lt;br /&gt;
; filters-specular-01-f.svg  : '''fail'''&lt;br /&gt;
; filters-tile-01-b.svg      : '''fail'''&lt;br /&gt;
; filters-turb-01-f.svg      : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Fonts ===&lt;br /&gt;
; fonts-elem-01-t.svg : '''pass'''&lt;br /&gt;
; fonts-elem-02-t.svg : '''fail''' (but close to what's requried)&lt;br /&gt;
; fonts-elem-03-b.svg : '''fail'''&lt;br /&gt;
; fonts-elem-04-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Interaction (not supported) ===&lt;br /&gt;
; interact-cursor-01-f.svg : '''crash'''&lt;br /&gt;
: &amp;lt;i&amp;gt;Doesn't crash for me with either 0.41 or current CVS, on Debian Gnu/Linux  -- pjrm&amp;lt;/i&amp;gt;&lt;br /&gt;
; interact-dom-01-b.svg    : '''fail'''&lt;br /&gt;
; interact-events-01-b.svg : '''fail'''&lt;br /&gt;
; interact-order-01-b.svg  : '''fail'''&lt;br /&gt;
; interact-order-02-b.svg  : '''fail'''&lt;br /&gt;
; interact-order-03-b.svg  : '''fail'''&lt;br /&gt;
; interact-zoom-01-t.svg   : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Linking ===&lt;br /&gt;
; linking-a-01-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-02-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-03-b.svg   : '''fail'''&lt;br /&gt;
; linking-a-04-t.svg   : '''fail'''&lt;br /&gt;
; linking-uri-01-b.svg : '''fail'''&lt;br /&gt;
; linking-uri-02-b.svg : '''fail'''&lt;br /&gt;
; linking-uri-03-t.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Masking ===&lt;br /&gt;
; masking-mask-01-b.svg    : '''partial''' - the string is incorrectly rendered&lt;br /&gt;
; masking-opacity-01-b.svg : '''pass'''&lt;br /&gt;
; masking-path-01-b.svg    : '''pass'''&lt;br /&gt;
; masking-path-02-b.svg    : '''partial'''&lt;br /&gt;
; masking-path-03-b.svg    : '''fail'''&lt;br /&gt;
; masking-path-04-b.svg    : '''pass'''&lt;br /&gt;
; masking-path-05-f.svg    : '''partial''' - clip-rule=evenodd not functioning&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
; metadata-example-01-b.svg : '''pass''' (I think)&lt;br /&gt;
&lt;br /&gt;
=== Painting ===&lt;br /&gt;
; painting-fill-01-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-02-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-03-t.svg   : '''pass'''&lt;br /&gt;
; painting-fill-04-t.svg   : '''pass'''&lt;br /&gt;
; painting-marker-01-f.svg : '''pass'''&lt;br /&gt;
; painting-marker-02-f.svg : '''partial''' - mishandling of marker strokes&lt;br /&gt;
; painting-render-01-b.svg : '''pass'''&lt;br /&gt;
; painting-stroke-01-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-02-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-03-t.svg : '''pass'''&lt;br /&gt;
; painting-stroke-04-t.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Paths ===&lt;br /&gt;
; paths-data-01-t.svg : '''pass'''&lt;br /&gt;
; paths-data-02-t.svg : '''partial''' - mqzmqz fails, all others are ok&lt;br /&gt;
; paths-data-03-f.svg : '''partial''' - MaZmAZmaz fails, all others are ok&lt;br /&gt;
; paths-data-04-t.svg : '''pass'''&lt;br /&gt;
; paths-data-05-t.svg : '''pass'''&lt;br /&gt;
; paths-data-06-t.svg : '''pass'''&lt;br /&gt;
; paths-data-07-t.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Color Gradients ===&lt;br /&gt;
; pservers-grad-01-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-02-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-03-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-04-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-05-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-06-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-07-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-08-b.svg : '''partial''' - gradient is ok; font is incorrect&lt;br /&gt;
; pservers-grad-09-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-10-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-11-b.svg : '''pass'''&lt;br /&gt;
; pservers-grad-12-b.svg : '''pass'''&lt;br /&gt;
; pservers-pattern-01-b.svg : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Rendering ===&lt;br /&gt;
; render-elems-01-t.svg : '''pass'''&lt;br /&gt;
; render-elems-02-t.svg : '''pass'''&lt;br /&gt;
; render-elems-03-t.svg : '''fail'''&lt;br /&gt;
; render-elems-06-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-elems-07-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-elems-08-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-groups-01-b.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
; render-groups-03-t.svg : '''partial''' - rendering is ok; font is incorrect&lt;br /&gt;
&lt;br /&gt;
=== Scripting (not supported) ===&lt;br /&gt;
; script-handle-01-b.svg : '''fail'''&lt;br /&gt;
; script-handle-02-b.svg : '''fail'''&lt;br /&gt;
; script-handle-03-b.svg : '''fail'''&lt;br /&gt;
; script-handle-04-b.svg : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Shapes ===&lt;br /&gt;
; shapes-circle-01-t.svg   : '''pass'''&lt;br /&gt;
; shapes-ellipse-01-t.svg  : '''pass'''&lt;br /&gt;
; shapes-line-01-t.svg     : '''pass'''&lt;br /&gt;
; shapes-polygon-01-t.svg  : '''pass'''&lt;br /&gt;
; shapes-polyline-01-t.svg : '''partial''' - the pentagon ends are incorrect&lt;br /&gt;
; shapes-rect-01-t.svg     : '''pass'''&lt;br /&gt;
&lt;br /&gt;
=== Structure ===&lt;br /&gt;
; struct-cond-01-t.svg  : '''fail'''&lt;br /&gt;
; struct-cond-02-t.svg  : '''fail'''&lt;br /&gt;
; struct-defs-01-t.svg  : '''pass'''&lt;br /&gt;
; struct-dom-01-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-02-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-03-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-04-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-05-b.svg   : '''fail'''&lt;br /&gt;
; struct-dom-06-b.svg   : '''fail'''&lt;br /&gt;
; struct-frag-01-t.svg  : '''pass'''&lt;br /&gt;
; struct-group-01-t.svg : '''pass'''&lt;br /&gt;
; struct-group-02-b.svg : '''pass'''&lt;br /&gt;
; struct-image-01-t.svg : '''pass'''&lt;br /&gt;
; struct-image-02-b.svg : '''partial''' - problem with use element&lt;br /&gt;
; struct-image-03-t.svg : '''fail'''&lt;br /&gt;
; struct-image-04-t.svg : '''pass'''&lt;br /&gt;
; struct-image-05-b.svg : '''fail''' - Message: error loading pixbuf at close&lt;br /&gt;
; struct-symbol-01-b.svg : '''partial''' - the topleft image is not resized correctly&lt;br /&gt;
&lt;br /&gt;
=== CSS (not yet supported) ===&lt;br /&gt;
; styling-css-01-b.svg     : '''fail'''&lt;br /&gt;
; styling-css-02-b.svg     : '''fail'''&lt;br /&gt;
; styling-css-03-b.svg     : '''fail'''&lt;br /&gt;
; styling-inherit-01-b.svg : '''fail'''&lt;br /&gt;
; styling-pres-01-t.svg    : '''fail'''&lt;br /&gt;
&lt;br /&gt;
=== Text ===&lt;br /&gt;
; text-align-01-b.svg    : '''pass'''&lt;br /&gt;
; text-align-02-b.svg    : '''fail''' - baseline-shift not functioning&lt;br /&gt;
; text-align-03-b.svg    : '''pass'''&lt;br /&gt;
; text-align-04-b.svg    : '''partial'''&lt;br /&gt;
; text-align-05-b.svg    : '''fail'''&lt;br /&gt;
; text-align-06-b.svg    : '''fail'''&lt;br /&gt;
; text-altglyph-01-b.svg : '''fail'''&lt;br /&gt;
; text-deco-01-b.svg     : '''partial''' - underline and strikethrough not functioning&lt;br /&gt;
; text-fonts-01-t.svg    : '''pass'''&lt;br /&gt;
; text-fonts-02-t.svg    : '''partial''' - font-weight=&amp;quot;lighter&amp;quot; not functioning&lt;br /&gt;
; text-intro-01-t.svg    : '''pass'''&lt;br /&gt;
; text-intro-02-b.svg    : '''partial''' - right-to-left text not functioning&lt;br /&gt;
; text-intro-03-b.svg    : '''partial''' - text is vertical but oriented incorrectly&lt;br /&gt;
; text-intro-04-t.svg    : '''pass'''&lt;br /&gt;
; text-path-01-b.svg     : '''partial''' - startOffset attribute of textPath not functioning&lt;br /&gt;
; text-spacing-01-b.svg  : '''fail'''&lt;br /&gt;
; text-text-01-b.svg     : '''fail''' - 'textLength' and 'lengthAdjust' not functioning &lt;br /&gt;
; text-text-03-b.svg     : '''partial''' - underline and strikethrough not functioning&lt;br /&gt;
; text-tref-01-b.svg     : '''fail''' - tref not functioning&lt;br /&gt;
; text-tselect-01-b.svg  : '''partial''' - Inkscape's text selection mechanism is quite similar to the standard, but using a dialog (this could therefore be considered a '''pass''')&lt;br /&gt;
; text-tspan-01-b.svg    : '''partial''' - char-by-char placement not functioning&lt;br /&gt;
; text-ws-01-t.svg       : '''pass'''&lt;br /&gt;
; text-ws-02-t.svg       : '''fail''' - xml:space=&amp;quot;preserve&amp;quot; not functioning&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CorelDraw&amp;diff=856</id>
		<title>CorelDraw</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CorelDraw&amp;diff=856"/>
		<updated>2005-06-30T07:44:33Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Add link to a comparison betw CorelDraw,Illustrator,iGrafxDesigner&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please post links to screenshots and/or insights of this vector app. We must learn from others.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.ex-astris-scientia.org/misc/software_test.htm Comparison] (from the point of view of technical drawing) of Corel Draw 9, iGrafx Designer and Adobe Illustrator 8.  Fairly detailed.  The comparison criteria paragraphs are also interesting in showing the features that the writer finds useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Screenshots ===&lt;br /&gt;
&lt;br /&gt;
None yet...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
[http://www.coreldraw.com/ official site]&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=SVG_Tiny_Compliance&amp;diff=4519</id>
		<title>SVG Tiny Compliance</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=SVG_Tiny_Compliance&amp;diff=4519"/>
		<updated>2005-06-21T12:12:10Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Give info on accessibility issues for SVG&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It'd be a nice feather in the cap to be able to declare full compliance to one of the SVG specs.  SVG Tiny is a good thing to aim for.  A number of developers have voiced support for trying to achieve this.&lt;br /&gt;
&lt;br /&gt;
As a first glance without looking much at either the spec or inkscape&lt;br /&gt;
source, I believe we need the following: don't rely on style attributes&lt;br /&gt;
working (use fill=... attributes); switch; SVG fonts; animation.&lt;br /&gt;
&lt;br /&gt;
In more detail:&lt;br /&gt;
&lt;br /&gt;
Styling:&lt;br /&gt;
* We must write `fill=&amp;quot;...&amp;quot; etc. attributes instead of using style=&amp;quot;fill:...&amp;quot;.  (I.e. when writing SVG Tiny documents, we must not use style attributes -- or at least use only &amp;quot;redundant&amp;quot; style attributes if that's easier to implement.)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;switch&amp;amp;gt;:&lt;br /&gt;
* Minimum requirement is that we render it correctly (e.g. as a viewer would, showing just one child).  Interface for viewing other branches would be nice (perhaps a non-modal dialog box listing the children named by their requiredFeatures, requiredExtensions and systemLanguage attributes.  The layers dialog box may be a good base.&lt;br /&gt;
&lt;br /&gt;
SVG fonts: font, font-face, font-face-src, font-face-name, missing-glyph, glyph:&lt;br /&gt;
* massifr has started work on this.  He's still new to inkscape source code, so could use guidance.&lt;br /&gt;
&lt;br /&gt;
Anchors (&amp;amp;lt;a&amp;amp;gt;):&lt;br /&gt;
* Especially relevant to Inkview.  Inkscape can create &amp;lt;a&amp;gt; elements with right-click on an existing item, and has a textual dialog box for filling in attribute values (object-attributes.cpp).  We have a &amp;quot;follow link&amp;quot; item in the contextual menu, but it does nothing (object-ui.cpp:sp_anchor_link_follow).&lt;br /&gt;
&lt;br /&gt;
Animation: animate, animateColor, animateMotion, animateTransform, mpath, set:&lt;br /&gt;
* My reading is that we can't claim to support all of SVG Tiny without supporting animation.&lt;br /&gt;
* See [[Animation-(Timeline)]] for implementation notes.&lt;br /&gt;
&lt;br /&gt;
(&amp;amp;lt;foreignObject&amp;amp;gt;: I believe we don't need to do anything to support the foreignObject element.  We already have the property of not discarding unrecognized elements like foreignObject and its children.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking back at the full SVG (1.1) spec, is Inkscape already able to claim to be a &amp;quot;[http://www.w3.org/TR/SVG11/conform.html#ConformingSVGGenerators Conforming SVG Generator]&amp;quot;, for which I think lack of animation/filtering features would not be a problem (it seems to me that it doesn't matter what features you support, as long the generated file is valid SVG) but compliance with the Priority 1 accessibility guidelines from the &amp;quot;[http://www.w3.org/TR/ATAG10/ Authoring Tool Accessibility Guidelines 1.0]&amp;quot; would be necessary.  http://www.w3.org/TR/SVG11/access.html outlines how accessibility applies to SVG.  Some low-hanging fruit would be better support for [http://www.w3.org/TR/SVG11/struct.html#TitleElement &amp;lt;tt&amp;gt;title&amp;lt;/tt&amp;gt;] and [http://www.w3.org/TR/SVG11/struct.html#DescElement &amp;lt;tt&amp;gt;desc&amp;lt;/tt&amp;gt;] elements (e.g. from the Object Properties dialog box) and the [http://www.w3.org/TR/REC-xml/#sec-lang-tag &amp;lt;tt&amp;gt;xml:lang&amp;lt;/tt&amp;gt;] attribute for text spans (whose initial implementation could be as simple as a textbox in the Text&amp;amp;amp;Font dialog box).&lt;br /&gt;
&lt;br /&gt;
We would not, however, be able to claim to be a &amp;quot;[http://www.w3.org/TR/SVG11/conform.html#ConformingSVGInterpreters Conforming Static SVG Interpreter]&amp;quot; or &amp;quot;[http://www.w3.org/TR/SVG11/conform.html#ConformingSVGViewers Conforming Static SVG Viewer]&amp;quot; until [http://www.w3.org/TR/SVG11/feature.html#SVG-static more features] were supported, e.g. filters and SVG fonts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Research ===&lt;br /&gt;
&lt;br /&gt;
* Check out all these [http://svg.org/special/svg_phones phones] that use svg now!!!&lt;br /&gt;
* Check out [[Beatware Mobile Designer]]&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Animation-(Timeline)&amp;diff=34</id>
		<title>Animation-(Timeline)</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Animation-(Timeline)&amp;diff=34"/>
		<updated>2005-05-25T06:25:07Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Reinstate the claim that LimSee2 is not open-source.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== User interface for timeline-based animation ===&lt;br /&gt;
&lt;br /&gt;
==== Existing animation programs (Free &amp;amp;amp; non-Free) ====&lt;br /&gt;
&lt;br /&gt;
* MacromediaFlash is a good non-Free example. &lt;br /&gt;
* Macromedia Director prior to version MX had a different interface (http://www.rice.edu/fondren/erc/howto/director.html) which I prefer(ed) over Flash&lt;br /&gt;
* F4L is a non-functional free-software mock-up of the Flash 4 interface.&lt;br /&gt;
* [[Moho]] as a gratis-but-non-free example. (Written in Java.) &lt;br /&gt;
* LimSee2 (http://wam.inrialpes.fr/software/limsee2/) is an excellent almost-free basis. (The web site incorrectly claims open source, but it means only that the source code is visible: the actual license says in capital letters no commercial use or distribution.)&lt;br /&gt;
* Spalah Flash (http://spalah.sourceforge.net/?p=10) (not to be confused with Spalah CMS) &amp;quot;is a GTK2/GNOME2 based application for generating Macromedia SWF and W3C SVG animations.&amp;quot;  The GUI is today minimalist but the author is trying to integrate it with inkscape. See http://spalah.sourceforge.net/?p=19&lt;br /&gt;
&lt;br /&gt;
==== Other thoughts ====&lt;br /&gt;
&lt;br /&gt;
Suggestion from someone else: working like CinePaint (compaired with Gimp), with each frame independently from each svg document (working like this or providing this feature) - providing vectorial edition quality we can't get on apps like MacromediaFlash or any other (maybe ToonBoom or Moho) - allowing us to make our work fast publish without further lack of quality.&lt;br /&gt;
(One more suggestion about it: being able to convert .swf to .svg sequence (or animated .sgv) and vice versa.)&lt;br /&gt;
&lt;br /&gt;
It is suggested that there be basically two modes: Local (Object) mode and Global mode. Below is a picture showing a very rough design of the local mode:&lt;br /&gt;
http://www.inkscape.org/wiki_uploads/anim_gui1.png&lt;br /&gt;
&lt;br /&gt;
In local modes, all properties of the object editing will be shown on a timeline, and one can create and edit frame within the timeline. Then one may assign different value of that properties on different timeline, or make it change linearly, or inlinearly :)&lt;br /&gt;
&lt;br /&gt;
==== Fantavision example ====&lt;br /&gt;
Back in the '80's there was a program on Apple IIE (Amiga and MS-DOS too) called &amp;quot;Fantavision&amp;quot;. It allowed one to create vector artwork (although I didn't understand at the time that that was what it was called) and animations. It allowed one to create frames of animation where you manually repositioned, recolored, scaled, rotated etc. the objects from one frame to the next. However, it then automatically interpolated frames between the 2 frames (the number of interpolated frames was configurable) such that it create a smooth transition of the object moving from one frame to the other. The effect was very similiar to the &amp;quot;Morphing&amp;quot; effect for raster graphics (popularized in a Michael Jackson video, I believe). That is, the system calculated the trajectory of &amp;quot;Key Points&amp;quot; of the objects from one frame to the next.  This process is often called &amp;quot;Tweening&amp;quot; (a term used by Macromedia Flash).  [[Sketch|Skencil]] (formerly known as [[Sketch]]) supports this functionality and describes it as &amp;quot;Blending&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
I guess what I'm saying is that I think a nice interface to create animations would be similiar. So to animate you would do the following:&lt;br /&gt;
&lt;br /&gt;
* Draw the initial SVG Image &lt;br /&gt;
&lt;br /&gt;
* Increment Frame (from say 1 to 20)&lt;br /&gt;
&lt;br /&gt;
* Reposition the elements in frame 20 (including scaling, color changes, adding removing objects, etc, etc, etc)&lt;br /&gt;
&lt;br /&gt;
* System would then calculate a trajectory for each key point from frame 1 to frame 20. Trajectories would be calculated for things like:&lt;br /&gt;
** Each &amp;quot;node&amp;quot; of an object&lt;br /&gt;
** Color &lt;br /&gt;
** Transformation Matrix&lt;br /&gt;
** etc&lt;br /&gt;
&lt;br /&gt;
* You could display/manipulate the trajectories (using the trajectory editor shown above by the original creator of this topic)&lt;br /&gt;
&lt;br /&gt;
* The system would then store the animations using SVG trajectories and the &amp;quot;Key Points&amp;quot; would be the frames you manually created&lt;br /&gt;
&lt;br /&gt;
:So, to create say a 100 frame animation, one might only need to manually create/modify 10 frames and the system would interpolate the additional frames as necessary.&lt;br /&gt;
&lt;br /&gt;
* Also, once the system interpolated frames it would allow you to manually modify the interpolated frames creating further &amp;quot;Key Points&amp;quot; and allow further refinement and interpolation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: 3D apps such as blender also use a technique like this, which I think is most widely known as &amp;quot;keyframe animation&amp;quot; or simply &amp;quot;keyframing&amp;quot;.  However, many such systems tie the keys too closely to actual animation frames, and this creates problems when the frames-per-second rate changes.  Particularly in the case of vector apps which are not so low-level as bitmaps and animation frames, I would suggest that frames should be as abstract as possible.&lt;br /&gt;
&lt;br /&gt;
Having key positions in simple percentages of the total animation time might be a better solution.  This would also need to be a global/local system, of course: animated objects would have their own animation time specified when inserted into a larger document.  A character's walkcycle would end at 100%, but in the larger animation, it would perhaps only be 5% of the total time, yet repeating as the object moves across the screen.&lt;br /&gt;
&lt;br /&gt;
One issue with this abstraction of frames might be that important animation effects do not occur exactly within frames: small things could be mistimed, or simply missed altogether.  If you set the frame rate too low, this would be an obvious side effect, so it's not necessarily a problem&lt;br /&gt;
that Inkscape should try to fix.  On the other hand, a few things could be done to ease this.  For instance, &amp;quot;snapping&amp;quot; animation events to frames when exporting (thereby slightly altering the timing), or perhaps just warning that certain animation events are not visible at such a low frame rate.&lt;br /&gt;
&lt;br /&gt;
Of course, on the web, with SVG and DHTML, where most Inkscape animations will hopefully be used one day, frames are not an issue at all, and we just worry about keys in time :)&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=653</id>
		<title>CSS Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=653"/>
		<updated>2005-05-16T07:32:11Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Update status of @font-face support.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Current State ===&lt;br /&gt;
&lt;br /&gt;
An initial implementation is now in CVS.  Limitations:&lt;br /&gt;
&lt;br /&gt;
* Allows a single &amp;lt;style&amp;gt; element in the document.  Doesn't allow external stylesheets, doesn't allow more than one &amp;lt;style&amp;gt; element.&lt;br /&gt;
: (Or rather it ignores all but one of the &amp;lt;style&amp;gt; elements, possibly changing which one it respects based on which was most recently re-read.)&lt;br /&gt;
&lt;br /&gt;
* No editing interface other than the XML editor.&lt;br /&gt;
&lt;br /&gt;
: There are a number of aspects of editing:&lt;br /&gt;
&lt;br /&gt;
** The most basic level: allow editing using the XML editor.  (See Update section below.)&lt;br /&gt;
** Editing a stylesheet.&lt;br /&gt;
** Specifying what classes each object belongs to.&lt;br /&gt;
&lt;br /&gt;
* Doesn't respect media restrictions (e.g. ignores &amp;quot;this rule applies only to non-visual media&amp;quot; directives, and doesn't allow having one    style for print and another style for on-screen).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;@font-face&amp;lt;/tt&amp;gt; hints are ignored.&lt;br /&gt;
&lt;br /&gt;
* Doesn't handle any other at-rules (&amp;lt;tt&amp;gt;@media&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;@import&amp;lt;/tt&amp;gt;, @page, ...).&lt;br /&gt;
&lt;br /&gt;
==== An incomplete list of work needed: ====&lt;br /&gt;
&lt;br /&gt;
* Ensure that this single stylesheet is updated whenever any of the &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements change (or are deleted or created etc.).&lt;br /&gt;
&lt;br /&gt;
* Similarly, ensure that the picture is refreshed when the stylesheet is changed.&lt;br /&gt;
&lt;br /&gt;
* Convert the simple user agent style sheet given at http://www.w3.org/TR/SVG11/styling.html#UAStyleSheet to libcroco structures (perhaps by passing strings to libcroco parsing functions) and store in &amp;lt;tt&amp;gt;desktop-&amp;amp;gt;style_cascade&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Modify style.cpp to query the stylesheet.  (Done but not checked in.)&lt;br /&gt;
&lt;br /&gt;
* There may be some work needed for &amp;quot;shorthand properties&amp;quot;, e.g. `&amp;lt;tt&amp;gt;marker&amp;lt;/tt&amp;gt;' is shorthand for modifying &amp;lt;tt&amp;gt;marker-start&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;marker-mid&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;marker-end&amp;lt;/tt&amp;gt; properties (http://www.w3.org/TR/SVG11/painting.html#MarkerProperty).  A non-SVG CSS example is `&amp;lt;tt&amp;gt;margin&amp;lt;/tt&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
==== Updating for changes to &amp;amp;lt;style&amp;amp;gt; content ====&lt;br /&gt;
&lt;br /&gt;
State so far: Every keystroke in the xml editor in the content of the &amp;amp;lt;style&amp;amp;gt; element gets sp_style_elem_read_content to be re-read.&lt;br /&gt;
One can force an object to get the revised stylesheet info by e.g. &amp;amp;lt;Up&amp;amp;gt; &amp;amp;lt;Down&amp;amp;gt; (forcing an update) then deleting its style attribute.&lt;br /&gt;
So one change is that we shouldn't be so keen to put things in the &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; attribute.&lt;br /&gt;
Currently, the stylesheet info gets merged into &amp;lt;tt&amp;gt;SPStyle&amp;lt;/tt&amp;gt;, and set the &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; attribute to contain everything in &amp;lt;tt&amp;gt;SPStyle&amp;lt;/tt&amp;gt; (and clear any styling attributes like &amp;lt;tt&amp;gt;fill=...&amp;lt;/tt&amp;gt;).&lt;br /&gt;
One existing problem with this behaviour (other than how it interacts with stylesheets) is that we discard any &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; properties we don't know about.  Whereas we ought to remember the content of the style attribute and only replace the properties we've changed, and add to if necessary.&lt;br /&gt;
&lt;br /&gt;
One implementation would be to keep &amp;lt;tt&amp;gt;SPStyle&amp;lt;/tt&amp;gt; but indicate which properties came from where, and hence which ones need to be written to the style attribute and which ones don't.&lt;br /&gt;
Apart from not writing if src==stylesheet, we can also avoid writing if src==attribute: i.e. don't gratuitously break SVG Tiny conformance of a document (or more generally break compatibility with implementations that don't honour CSS &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; attributes).&lt;br /&gt;
Not to say that we can't choose to use the &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; attribute for properties that the user changes during an inkscape session, but currently we change from attributes to &amp;lt;tt&amp;gt;style=&amp;lt;/tt&amp;gt;... even for shapes that the user just changes the position of without changing any styling stuff.&lt;br /&gt;
&lt;br /&gt;
==== Why can't we use libcroco-0.6's existing libxml interface to cr-sel-eng.c ? ====&lt;br /&gt;
&lt;br /&gt;
Some CSS selectors (http://www.w3.org/TR/REC-CSS2/selector.html) can express &amp;quot;is preceded by X&amp;quot; or &amp;quot;is a descendent of X&amp;quot; (where X can itself be similarly constrained recursively), so we'd pretty much need to maintain the entire document in libxml form if we want to use libcroco for CSS selectors.&lt;br /&gt;
&lt;br /&gt;
Suppose we want to find the style of node N.  We pass libcroco a stylesheet and ask it what rules apply to N.&lt;br /&gt;
If the stylesheet says &amp;quot;nodes that are preceded by a node that is preceded by a node that's a descendent of (... etc. ...) have red stroking&amp;quot; then libcroco needs to be able to navigate through the tree.&lt;br /&gt;
So we can't pass libcroco just a libxml version of node N, we need to fill in its parent and sibling links, providing a libxml node for a significant proportion of all nodes in the tree.&lt;br /&gt;
(Short of using hardware watchpoints to check access to the sibling/parent links and supply them lazily.)&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=666</id>
		<title>CSS Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=666"/>
		<updated>2005-05-13T00:18:55Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Mention lack of at-rules.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Current State ===&lt;br /&gt;
&lt;br /&gt;
An initial implementation is now in CVS.  Limitations:&lt;br /&gt;
&lt;br /&gt;
* Allows a single &amp;lt;style&amp;gt; element in the document.  Doesn't allow external stylesheets, doesn't allow more than one &amp;lt;style&amp;gt; element.&lt;br /&gt;
: (Or rather it ignores all but one of the &amp;lt;style&amp;gt; elements, possibly changing which one it respects based on which was most recently re-read.)&lt;br /&gt;
&lt;br /&gt;
* No editing interface other than the XML editor.&lt;br /&gt;
&lt;br /&gt;
: There are a number of aspects of editing:&lt;br /&gt;
&lt;br /&gt;
** The most basic level: allow editing using the XML editor.  (See Update section below.)&lt;br /&gt;
** Editing a stylesheet.&lt;br /&gt;
** Specifying what classes each object belongs to.&lt;br /&gt;
&lt;br /&gt;
* Doesn't respect media restrictions (e.g. ignores &amp;quot;this rule applies only to non-visual media&amp;quot; directives, and doesn't allow having one    style for print and another style for on-screen).&lt;br /&gt;
&lt;br /&gt;
* Doesn't handle any at-rules (&amp;lt;tt&amp;gt;@font-face&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;@media&amp;lt;/tt&amp;gt;, ...).&lt;br /&gt;
&lt;br /&gt;
==== An incomplete list of work needed: ====&lt;br /&gt;
&lt;br /&gt;
* Ensure that this single stylesheet is updated whenever any of the &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements change (or are deleted or created etc.).&lt;br /&gt;
&lt;br /&gt;
* Similarly, ensure that the picture is refreshed when the stylesheet is changed.&lt;br /&gt;
&lt;br /&gt;
* Convert the simple user agent style sheet given at http://www.w3.org/TR/SVG11/styling.html#UAStyleSheet to libcroco structures (perhaps by passing strings to libcroco parsing functions) and store in &amp;lt;tt&amp;gt;desktop-&amp;amp;gt;style_cascade&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Modify style.cpp to query the stylesheet.  (Done but not checked in.)&lt;br /&gt;
&lt;br /&gt;
* There may be some work needed for &amp;quot;shorthand properties&amp;quot;, e.g. `&amp;lt;tt&amp;gt;marker&amp;lt;/tt&amp;gt;' is shorthand for modifying &amp;lt;tt&amp;gt;marker-start&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;marker-mid&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;marker-end&amp;lt;/tt&amp;gt; properties (http://www.w3.org/TR/SVG11/painting.html#MarkerProperty).  A non-SVG CSS example is `&amp;lt;tt&amp;gt;margin&amp;lt;/tt&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
==== Updating for changes to &amp;amp;lt;style&amp;amp;gt; content ====&lt;br /&gt;
&lt;br /&gt;
State so far: Every keystroke in the xml editor in the content of the &amp;amp;lt;style&amp;amp;gt; element gets sp_style_elem_read_content to be re-read.&lt;br /&gt;
One can force an object to get the revised stylesheet info by e.g. &amp;amp;lt;Up&amp;amp;gt; &amp;amp;lt;Down&amp;amp;gt; (forcing an update) then deleting its style attribute.&lt;br /&gt;
So one change is that we shouldn't be so keen to put things in the &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; attribute.&lt;br /&gt;
Currently, the stylesheet info gets merged into &amp;lt;tt&amp;gt;SPStyle&amp;lt;/tt&amp;gt;, and set the &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; attribute to contain everything in &amp;lt;tt&amp;gt;SPStyle&amp;lt;/tt&amp;gt; (and clear any styling attributes like &amp;lt;tt&amp;gt;fill=...&amp;lt;/tt&amp;gt;).&lt;br /&gt;
One existing problem with this behaviour (other than how it interacts with stylesheets) is that we discard any &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; properties we don't know about.  Whereas we ought to remember the content of the style attribute and only replace the properties we've changed, and add to if necessary.&lt;br /&gt;
&lt;br /&gt;
One implementation would be to keep &amp;lt;tt&amp;gt;SPStyle&amp;lt;/tt&amp;gt; but indicate which properties came from where, and hence which ones need to be written to the style attribute and which ones don't.&lt;br /&gt;
Apart from not writing if src==stylesheet, we can also avoid writing if src==attribute: i.e. don't gratuitously break SVG Tiny conformance of a document (or more generally break compatibility with implementations that don't honour CSS &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; attributes).&lt;br /&gt;
Not to say that we can't choose to use the &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; attribute for properties that the user changes during an inkscape session, but currently we change from attributes to &amp;lt;tt&amp;gt;style=&amp;lt;/tt&amp;gt;... even for shapes that the user just changes the position of without changing any styling stuff.&lt;br /&gt;
&lt;br /&gt;
==== Why can't we use libcroco-0.6's existing libxml interface to cr-sel-eng.c ? ====&lt;br /&gt;
&lt;br /&gt;
Some CSS selectors (http://www.w3.org/TR/REC-CSS2/selector.html) can express &amp;quot;is preceded by X&amp;quot; or &amp;quot;is a descendent of X&amp;quot; (where X can itself be similarly constrained recursively), so we'd pretty much need to maintain the entire document in libxml form if we want to use libcroco for CSS selectors.&lt;br /&gt;
&lt;br /&gt;
Suppose we want to find the style of node N.  We pass libcroco a stylesheet and ask it what rules apply to N.&lt;br /&gt;
If the stylesheet says &amp;quot;nodes that are preceded by a node that is preceded by a node that's a descendent of (... etc. ...) have red stroking&amp;quot; then libcroco needs to be able to navigate through the tree.&lt;br /&gt;
So we can't pass libcroco just a libxml version of node N, we need to fill in its parent and sibling links, providing a libxml node for a significant proportion of all nodes in the tree.&lt;br /&gt;
(Short of using hardware watchpoints to check access to the sibling/parent links and supply them lazily.)&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=665</id>
		<title>CSS Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=665"/>
		<updated>2005-05-13T00:16:35Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Add section: updating for changes to &amp;lt;style&amp;gt; content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Current State ===&lt;br /&gt;
&lt;br /&gt;
An initial implementation is now in CVS.  Limitations:&lt;br /&gt;
&lt;br /&gt;
* Allows a single &amp;lt;style&amp;gt; element in the document.  Doesn't allow external stylesheets, doesn't allow more than one &amp;lt;style&amp;gt; element.&lt;br /&gt;
: (Or rather it ignores all but one of the &amp;lt;style&amp;gt; elements, possibly changing which one it respects based on which was most recently re-read.)&lt;br /&gt;
&lt;br /&gt;
* No editing interface other than the XML editor.&lt;br /&gt;
&lt;br /&gt;
: There are a number of aspects of editing:&lt;br /&gt;
&lt;br /&gt;
** The most basic level: allow editing using the XML editor.&lt;br /&gt;
** Editing a stylesheet.&lt;br /&gt;
** Specifying what classes each object belongs to.&lt;br /&gt;
&lt;br /&gt;
* Doesn't respect media restrictions (e.g. ignores &amp;quot;this rule applies only to non-visual media&amp;quot; directives, and doesn't allow having one    style for print and another style for on-screen).&lt;br /&gt;
&lt;br /&gt;
==== An incomplete list of work needed: ====&lt;br /&gt;
&lt;br /&gt;
* Ensure that this single stylesheet is updated whenever any of the &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements change (or are deleted or created etc.).&lt;br /&gt;
&lt;br /&gt;
* Similarly, ensure that the picture is refreshed when the stylesheet is changed.&lt;br /&gt;
&lt;br /&gt;
* Convert the simple user agent style sheet given at http://www.w3.org/TR/SVG11/styling.html#UAStyleSheet to libcroco structures (perhaps by passing strings to libcroco parsing functions) and store in &amp;lt;tt&amp;gt;desktop-&amp;amp;gt;style_cascade&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Modify style.cpp to query the stylesheet.  (Done but not checked in.)&lt;br /&gt;
&lt;br /&gt;
* There may be some work needed for &amp;quot;shorthand properties&amp;quot;, e.g. `&amp;lt;tt&amp;gt;marker&amp;lt;/tt&amp;gt;' is shorthand for modifying &amp;lt;tt&amp;gt;marker-start&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;marker-mid&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;marker-end&amp;lt;/tt&amp;gt; properties (http://www.w3.org/TR/SVG11/painting.html#MarkerProperty).  A non-SVG CSS example is `&amp;lt;tt&amp;gt;margin&amp;lt;/tt&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
==== Updating for changes to &amp;amp;lt;style&amp;amp;gt; content ====&lt;br /&gt;
&lt;br /&gt;
State so far: Every keystroke in the xml editor in the content of the &amp;amp;lt;style&amp;amp;gt; element gets sp_style_elem_read_content to be re-read.&lt;br /&gt;
One can force an object to get the revised stylesheet info by e.g. &amp;amp;lt;Up&amp;amp;gt; &amp;amp;lt;Down&amp;amp;gt; (forcing an update) then deleting its style attribute.&lt;br /&gt;
So one change is that we shouldn't be so keen to put things in the &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; attribute.&lt;br /&gt;
Currently, the stylesheet info gets merged into &amp;lt;tt&amp;gt;SPStyle&amp;lt;/tt&amp;gt;, and set the &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; attribute to contain everything in &amp;lt;tt&amp;gt;SPStyle&amp;lt;/tt&amp;gt; (and clear any styling attributes like &amp;lt;tt&amp;gt;fill=...&amp;lt;/tt&amp;gt;).&lt;br /&gt;
One existing problem with this behaviour (other than how it interacts with stylesheets) is that we discard any &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; properties we don't know about.  Whereas we ought to remember the content of the style attribute and only replace the properties we've changed, and add to if necessary.&lt;br /&gt;
&lt;br /&gt;
One implementation would be to keep &amp;lt;tt&amp;gt;SPStyle&amp;lt;/tt&amp;gt; but indicate which properties came from where, and hence which ones need to be written to the style attribute and which ones don't.&lt;br /&gt;
Apart from not writing if src==stylesheet, we can also avoid writing if src==attribute: i.e. don't gratuitously break SVG Tiny conformance of a document (or more generally break compatibility with implementations that don't honour CSS &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; attributes).&lt;br /&gt;
Not to say that we can't choose to use the &amp;lt;tt&amp;gt;style&amp;lt;/tt&amp;gt; attribute for properties that the user changes during an inkscape session, but currently we change from attributes to &amp;lt;tt&amp;gt;style=&amp;lt;/tt&amp;gt;... even for shapes that the user just changes the position of without changing any styling stuff.&lt;br /&gt;
&lt;br /&gt;
==== Why can't we use libcroco-0.6's existing libxml interface to cr-sel-eng.c ? ====&lt;br /&gt;
&lt;br /&gt;
Some CSS selectors (http://www.w3.org/TR/REC-CSS2/selector.html) can express &amp;quot;is preceded by X&amp;quot; or &amp;quot;is a descendent of X&amp;quot; (where X can itself be similarly constrained recursively), so we'd pretty much need to maintain the entire document in libxml form if we want to use libcroco for CSS selectors.&lt;br /&gt;
&lt;br /&gt;
Suppose we want to find the style of node N.  We pass libcroco a stylesheet and ask it what rules apply to N.&lt;br /&gt;
If the stylesheet says &amp;quot;nodes that are preceded by a node that is preceded by a node that's a descendent of (... etc. ...) have red stroking&amp;quot; then libcroco needs to be able to navigate through the tree.&lt;br /&gt;
So we can't pass libcroco just a libxml version of node N, we need to fill in its parent and sibling links, providing a libxml node for a significant proportion of all nodes in the tree.&lt;br /&gt;
(Short of using hardware watchpoints to check access to the sibling/parent links and supply them lazily.)&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=664</id>
		<title>CSS Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=664"/>
		<updated>2005-05-11T08:29:37Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Update now that an initial implementation is checked in.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Current State ===&lt;br /&gt;
&lt;br /&gt;
An initial implementation is now in CVS.  Limitations:&lt;br /&gt;
&lt;br /&gt;
* Allows a single &amp;lt;style&amp;gt; element in the document.  Doesn't allow external stylesheets, doesn't allow more than one &amp;lt;style&amp;gt; element.&lt;br /&gt;
: (Or rather it ignores all but one of the &amp;lt;style&amp;gt; elements, possibly changing which one it respects based on which was most recently re-read.)&lt;br /&gt;
&lt;br /&gt;
* No editing interface other than the XML editor.&lt;br /&gt;
&lt;br /&gt;
: There are a number of aspects of editing:&lt;br /&gt;
&lt;br /&gt;
** The most basic level: allow editing using the XML editor.&lt;br /&gt;
** Editing a stylesheet.&lt;br /&gt;
** Specifying what classes each object belongs to.&lt;br /&gt;
&lt;br /&gt;
* Doesn't respect media restrictions (e.g. ignores &amp;quot;this rule applies only to non-visual media&amp;quot; directives, and doesn't allow having one    style for print and another style for on-screen).&lt;br /&gt;
&lt;br /&gt;
An incomplete list of work needed:&lt;br /&gt;
&lt;br /&gt;
* Ensure that this single stylesheet is updated whenever any of the &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements change (or are deleted or created etc.).&lt;br /&gt;
&lt;br /&gt;
* Similarly, ensure that the picture is refreshed when the stylesheet is changed.&lt;br /&gt;
&lt;br /&gt;
* Convert the simple user agent style sheet given at http://www.w3.org/TR/SVG11/styling.html#UAStyleSheet to libcroco structures (perhaps by passing strings to libcroco parsing functions) and store in &amp;lt;tt&amp;gt;desktop-&amp;amp;gt;style_cascade&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Modify style.cpp to query the stylesheet.  (Done but not checked in.)&lt;br /&gt;
&lt;br /&gt;
* There may be some work needed for &amp;quot;shorthand properties&amp;quot;, e.g. `&amp;lt;tt&amp;gt;marker&amp;lt;/tt&amp;gt;' is shorthand for modifying &amp;lt;tt&amp;gt;marker-start&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;marker-mid&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;marker-end&amp;lt;/tt&amp;gt; properties (http://www.w3.org/TR/SVG11/painting.html#MarkerProperty).  A non-SVG CSS example is `&amp;lt;tt&amp;gt;margin&amp;lt;/tt&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
==== Why can't we use libcroco-0.6's existing libxml interface to cr-sel-eng.c ? ====&lt;br /&gt;
&lt;br /&gt;
Some CSS selectors (http://www.w3.org/TR/REC-CSS2/selector.html) can express &amp;quot;is preceded by X&amp;quot; or &amp;quot;is a descendent of X&amp;quot; (where X can itself be similarly constrained recursively), so we'd pretty much need to maintain the entire document in libxml form if we want to use libcroco for CSS selectors.&lt;br /&gt;
&lt;br /&gt;
Suppose we want to find the style of node N.  We pass libcroco a stylesheet and ask it what rules apply to N.&lt;br /&gt;
If the stylesheet says &amp;quot;nodes that are preceded by a node that is preceded by a node that's a descendent of (... etc. ...) have red stroking&amp;quot; then libcroco needs to be able to navigate through the tree.&lt;br /&gt;
So we can't pass libcroco just a libxml version of node N, we need to fill in its parent and sibling links, providing a libxml node for a significant proportion of all nodes in the tree.&lt;br /&gt;
(Short of using hardware watchpoints to check access to the sibling/parent links and supply them lazily.)&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Coding_Style&amp;diff=952</id>
		<title>Coding Style</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Coding_Style&amp;diff=952"/>
		<updated>2005-05-05T21:39:39Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Add to advantages of marking local names with `static'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Inkscape Coding Style Discussion ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;a href=&amp;quot;/doc/coding_style.php&amp;quot;&amp;gt;official code style documentation&amp;lt;/a&amp;gt; is on the main website.&lt;br /&gt;
&lt;br /&gt;
This page is for discussing and working out changes and improvements to that document.  When concensus&lt;br /&gt;
is reached, the document can be updated in CVS int he inkscape_web module.&lt;br /&gt;
&lt;br /&gt;
=== Editor support ===&lt;br /&gt;
&lt;br /&gt;
Place the following at the end of source files to help emacsen &amp;amp;amp; vim users follow some of our guidelines automatically:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
  Local Variables:&lt;br /&gt;
  mode:c++&lt;br /&gt;
  c-file-style:&amp;quot;stroustrup&amp;quot;&lt;br /&gt;
  c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))&lt;br /&gt;
  indent-tabs-mode:nil&lt;br /&gt;
  fill-column:99&lt;br /&gt;
  End:&lt;br /&gt;
*/&lt;br /&gt;
// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you've added those lines, close the file and re-open it for it to take effect.&lt;br /&gt;
&lt;br /&gt;
Then (for emacsen users), one can re-indent a region with C-M-\.&lt;br /&gt;
&lt;br /&gt;
=== crazyCamelCase v. Underscores ===&lt;br /&gt;
* The new coding standards require non-static member functions to be in pseudoCamelCase, and every other type of function to use underscores.&lt;br /&gt;
* The current codebase has very few real C++ objects, half of these objects (or more) seem to use underscores for their member functions, the other half seem to use pseudoCamelCase.&lt;br /&gt;
** Over-all, 95% of Inkscape's codebase uses underscores in function names (of coures, 90% of the code is still C).&lt;br /&gt;
*** It seems underscores are what Inkscape developers are already used to.&lt;br /&gt;
&lt;br /&gt;
* I prefer CamelCase for type names (classes), exceptions, namespaces, and the like.  But pseudoCamelCase in member functions clutters the visual space; making types, exceptions, and namescapes stand out much less.   And it makes the code much harder (for me) to read.&lt;br /&gt;
** Why is there this inconsistency with regard to function names in the new coding standard?&lt;br /&gt;
*** (I.e., why a few functions pseudoCamelCase, and everything else underscores?)&lt;br /&gt;
** Could all functions just use underscores?  (Like the current codebase, like Gtkmm, like Linux, like the C &amp;amp; C++ standard libraries, and like almost every other project out there?)&lt;br /&gt;
** Is static vs. non-static member functions really that big of an issue to warrant a change to pseudoCamelCase?&lt;br /&gt;
&lt;br /&gt;
* Hey, we're not programming in Java (or Qt) here!  This is C++, where underscore reigns supreme.&lt;br /&gt;
&lt;br /&gt;
=== Tabs and Alignment ===&lt;br /&gt;
&lt;br /&gt;
* Something else to consider is developer culture -- most of our developers at this point will likely be accustomed to either GNU coding standards (2/4-space indent), or GNOME/Linux-kernel coding standards (8-space indention quantum).  [What does KDE recommend?]&lt;br /&gt;
&lt;br /&gt;
* Objective studies have found that indentions between 2 and 6 columns are optimal.&lt;br /&gt;
::Reference: [ProgramIndentation Miara, J. R., J. A. Musselman, J. A. Navarro, and B. Shneiderman. Program&lt;br /&gt;
Indentation and Comprehensibility. Comm. ACM 26, 11 (Nov. 1983), 861-867.]&lt;br /&gt;
&lt;br /&gt;
* No tabs in files.&lt;br /&gt;
** By default many editors (and pagers as used for viewing diffs, and &amp;quot;diff -t&amp;quot;) set tab stops to 8.&lt;br /&gt;
:: If files end up with mixed space &amp;amp; tab alignment (other than the &amp;quot;structural indentation&amp;quot; approach discussed below), then it breaks formatting to use anything but 8 as one's editor's tab stop size.&lt;br /&gt;
&lt;br /&gt;
** Suggesting that people change their tab stop size is only practical if all source code uses spaces &amp;amp;amp; tabs the same way.&lt;br /&gt;
&lt;br /&gt;
:: This may be possible with mode lines if all Inkscape developers stick to editors with appropriate modeline support (emacsen, vim/gvim; anything else?).&lt;br /&gt;
:: Do any popular Windows/MacOS editors (other than the above) support mode lines?&lt;br /&gt;
:: What about KDevelop/anjuta/other IDE's on Un*x?&lt;br /&gt;
&lt;br /&gt;
::It's fairly easy to define this behavior for Emacs and VIM. Having it explicit might be enough.&lt;br /&gt;
&lt;br /&gt;
::It's possible to add checkin scripts to CVS to warn/prevent checkins with tabs, etc.&lt;br /&gt;
&lt;br /&gt;
** A minor disadvantage of using spaces for indentation is that some text editors (not emacsen or vim) would require using the space key a lot.  On the other hand, code written in such an editor probably requires reformatting anyway.&lt;br /&gt;
&lt;br /&gt;
** Observing a rule of using tabs for structural indentation, and spaces for cosmetic (e.g. continuation) indentation, works fine regardless of a particular user's tab stops.&lt;br /&gt;
&lt;br /&gt;
::Somewhat contrived example (as seen with an 8-character tab stop):&lt;br /&gt;
 &lt;br /&gt;
           if (gromzalon) {&lt;br /&gt;
                     imagine_that_this_is_very_long(some, arguments,&lt;br /&gt;
                                                    go, here);&lt;br /&gt;
           }&lt;br /&gt;
&lt;br /&gt;
::The breakdown:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;=Tab====&amp;amp;gt;if (gromzalon) {&lt;br /&gt;
 &amp;amp;lt;=Tab====&amp;amp;gt;&amp;amp;lt;=Tab====&amp;amp;gt;imagine_that_this_is_very_long(some, arguments,&lt;br /&gt;
 &amp;amp;lt;=Tab====&amp;amp;gt;&amp;amp;lt;=Tab====&amp;amp;gt;&amp;amp;lt;=Spaces======================&amp;amp;gt;go, here);&lt;br /&gt;
 &amp;amp;lt;=Tab====&amp;amp;gt;}&lt;br /&gt;
&lt;br /&gt;
::What this looks like with a tab stop of 3:&lt;br /&gt;
&lt;br /&gt;
    if (gromzalon) {&lt;br /&gt;
       imagine_that_this_is_very_long(some, arguments,&lt;br /&gt;
                                      go, here);&lt;br /&gt;
    }&lt;br /&gt;
::-- MenTaLguY&lt;br /&gt;
&lt;br /&gt;
:: (By the way, anyone submitting code with identifiers like &amp;quot;gromzalon&amp;quot; or &amp;quot;sprunklefrink&amp;quot; will be summarily shot.)&lt;br /&gt;
&lt;br /&gt;
:: However, such an indentation rule would only be a feasible recommendataion if it had automated support from at least one of {vim, emacsen, a standalone indenter like astyle}.  We don't know of any software to support this.  Indeed, most editors (including vim and emacsen) tend to &amp;quot;normalize&amp;quot; spacing when indenting or out-denting a block of code.&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;=Spaces======================&amp;amp;gt;go, here&lt;br /&gt;
will get mangled by most editors. Often like this:&lt;br /&gt;
 &amp;amp;lt;=Tab=Tab=Tab=Tab=Spaces=&amp;amp;gt;go, here&lt;br /&gt;
&lt;br /&gt;
** Can anyone give a specification for common editors or astyle/indent to give this behaviour, or suggest a script to check where this hasn't been done?&lt;br /&gt;
:: Without such automation, this approach won't be used by many developers.&lt;br /&gt;
&lt;br /&gt;
=== Brace Placement ===&lt;br /&gt;
&lt;br /&gt;
Arguments against &amp;quot;disco&amp;quot;/compact braces:&lt;br /&gt;
&lt;br /&gt;
* Make it hard to match braces visually.&lt;br /&gt;
&lt;br /&gt;
:Partial counter-argument: emacsen &amp;amp; vim each have brace-locating commands.  (Emacsen: C-M-u, C-M-n, C-M-p, C-M-d (up/next/prev/down); vim: `[ {', `] }'.)&lt;br /&gt;
&lt;br /&gt;
* The brace closes a block, not an if &amp;quot;statement&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:However, the block is intimately related to the if/for/while in ways that a normal block is not.&lt;br /&gt;
&lt;br /&gt;
=== Functions vs methods, i.e. member vs non-member functions ===&lt;br /&gt;
&lt;br /&gt;
* Information-hiding principle suggests that if a function doesn't need access to private variables then it's better not to make it a member function.&lt;br /&gt;
&lt;br /&gt;
** In more detail: when one wants to change some detain about a private variable, then one must look through everything that has access to that variable.  This is easier if there's less code that has access to the variable, e.g. if one uses non-member functions in preference to member-functions.&lt;br /&gt;
&lt;br /&gt;
* Virtual functions must of course be member functions.&lt;br /&gt;
&lt;br /&gt;
* Trivial getter/setter functions seem most natural as member functions.  (This is mostly a matter of style or tradition rather than technical reasons.)&lt;br /&gt;
** &amp;quot;barType getBar() const { return _bar; }&amp;quot; / &amp;quot;void setBar(barType x) { _bar = x; }&amp;quot; are trivial.  It's not clear how much else is to be considered trivial.&lt;br /&gt;
&lt;br /&gt;
* For things needing access to private variables, the requirement of the `friend' declaration for non-member functions is a cost: extra clutter in the class definition, requires updating for changes in the signature; and many of the arguments for non-member functions disappear.&lt;br /&gt;
&lt;br /&gt;
* Member functions must be declared in the class definition, which tends to require more recompilation because one can't use a separate header file.&lt;br /&gt;
&lt;br /&gt;
** Sometimes one can break the class into smaller, simpler classes if there are lots of member functions.&lt;br /&gt;
&lt;br /&gt;
* A related issue is that it's harder (impossible) to write private specializations (same name but subclass arguments): any specialization must be declared in the class definition too, so it isn't private other than through comments.&lt;br /&gt;
&lt;br /&gt;
* The shorter names typical of member functions are harder to search for.&lt;br /&gt;
&lt;br /&gt;
** (Counter-argument: this is a matter of custom, there's no technical reason why one can't use long names for member functions, or even short names for non-member functions.)&lt;br /&gt;
&lt;br /&gt;
** Someone has claimed that some tools do relatively well at finding the right version of a given name.  Can someone give examples of such a tool (and some comment as to how widely used that tool is or can be by our developers) ?&lt;br /&gt;
&lt;br /&gt;
* Pointers to member functions aren't as easily used as pointers to non-member functions.  (&amp;quot;unwieldy&amp;quot;, &amp;quot;heavy-weight&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
* Member functions can't be given static linkage.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;static&amp;lt;/tt&amp;gt; vs anonymous namespaces for file-local functions/objects ===&lt;br /&gt;
&lt;br /&gt;
The current C++ standard marks this type of `&amp;lt;tt&amp;gt;static&amp;lt;/tt&amp;gt;' as deprecated, meaning &amp;quot;Normative for the current edition of the Standard, but not guaranteed to be part of the Standard in future revisions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
(Reference: Final Draft of the C++ standard, Annex D &amp;quot;Compatibility features&amp;quot;; and §7.3.1.1 &amp;quot;Unnamed namespaces&amp;quot;, ¶2.)&lt;br /&gt;
&lt;br /&gt;
However, g++ up to 3.4 (and possibly later) don't give anonymous-namespace names the same advantages given to static names:&lt;br /&gt;
&lt;br /&gt;
* Warning if the name isn't referenced (and hence unused).&lt;br /&gt;
* Optimizations when the function/object can't be used from other object files.&lt;br /&gt;
* Static linkage (relevant to analysis using nm).&lt;br /&gt;
&lt;br /&gt;
In addition, having a &amp;lt;tt&amp;gt;static&amp;lt;/tt&amp;gt; tag in the declaration itself makes it easier for the programmer to see that the name isn't referenced outside of this translation unit.&lt;br /&gt;
&lt;br /&gt;
Consequently, it is recommended that we use &amp;lt;tt&amp;gt;static&amp;lt;/tt&amp;gt; for names not referenced from other translation units.&lt;br /&gt;
&lt;br /&gt;
If and when we encounter a compiler that rejects `static' for objects in namespace scope, we can easily replace `&amp;lt;tt&amp;gt;static&amp;lt;/tt&amp;gt;' with `&amp;lt;tt&amp;gt;namespace {&amp;lt;/tt&amp;gt; ... &amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
=== What to put in what header file ===&lt;br /&gt;
&lt;br /&gt;
Reasons for change:&lt;br /&gt;
* Reduce compilation times (most important)&lt;br /&gt;
* Fix the mess of NR::Point, NR::Matrix etc. header files.  Less confusion as to what needs to be #included, or where to look for the definition of something (especially in the cases where tags-like programs don't help, e.g. if looking for something helpful for a known task rather than having a known name).&lt;br /&gt;
&lt;br /&gt;
What won't change:&lt;br /&gt;
* foo.h will still provide the same things it always has (unless you count things &amp;quot;accidentally&amp;quot; provided, which we hope to become less).  It's just that some content may be physically moved to a file that foo.h #includes.&lt;br /&gt;
&lt;br /&gt;
The issues are:&lt;br /&gt;
&lt;br /&gt;
* Ease for callers (what file/s to #include).  This is largely taken care of by having files that #include other header files, and in particular having the foo.h file as at present.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;I need to change the blah declaration/definition; what file do I edit?&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Information we want ppl to be aware of.&lt;br /&gt;
&lt;br /&gt;
Definitions are handled by tags/idutils/global etc (though all of these tools have limitations in their ability to find the _right_ definition).&lt;br /&gt;
Declarations that are separate from the definition: [non-member] function declarations are the main case.  member functions (obviously kept in same physical file as their class definition); non-member functions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some types of things to be found in header files.  Whatever rules you hypothesize, check that the rules cover each of these cases.&lt;br /&gt;
&lt;br /&gt;
* class foo definition&lt;br /&gt;
* &amp;quot;class foo;&amp;quot; forward declarations&lt;br /&gt;
* struct foo_class (i.e. GObject &amp;quot;class&amp;quot;/vtable type)&lt;br /&gt;
* IS_FOO, FOO cast etc. macros&lt;br /&gt;
* ancilliary types (e.g. struct StopOnTrue for marshalling)&lt;br /&gt;
* enums&lt;br /&gt;
* relevant instantiations (traits etc.)&lt;br /&gt;
* foo_do_blah (declaration of function defined in .cpp file)&lt;br /&gt;
* inline function definitions&lt;br /&gt;
* should declaration &amp;amp; definition of inline functions go in different files (there are pros &amp;amp; cons)&lt;br /&gt;
* other constants, including #defines&lt;br /&gt;
* other macros.  Where is the line between &amp;quot;other macro&amp;quot; and &amp;quot;inline function&amp;quot; and IS_FOO macros?&lt;br /&gt;
&lt;br /&gt;
The physical placement of the IS_FOO etc. macros (as distinct from what header files &amp;quot;provide&amp;quot; them) isn't important: we never need to edit them, and they're relatively easy to find by either primitive tags-like programs or by grep.&lt;br /&gt;
* This unimportance-of-physical-location is reflected in the inconsistency of current practice, sometimes placing them with foo.h and sometimes in blah-forward.h.&lt;br /&gt;
* Exception to unimportance-of-physical-location: IS_FOO etc. should not be physically in the same header file as something that's &amp;quot;expensive&amp;quot; and unneeded by one or more translation units that need IS_FOO etc.  (&amp;quot;Expensive&amp;quot; in same sense as `amount' defined below in `Reducing compile times'.)&lt;br /&gt;
&lt;br /&gt;
The main thing for IS_FOO etc. is what header file(s) provide the macro.  Thankfully, this is easy in the common case: usually any function that needs the definition of IS_FOO also needs lots of other things relevant to the foo type, so would simply #include foo.h.&lt;br /&gt;
&lt;br /&gt;
Relevant properties of function declarations:&lt;br /&gt;
&lt;br /&gt;
* It is common to add or remove functions, or change the arguments.&lt;br /&gt;
&lt;br /&gt;
* Typically not found by tags-like programs.  E.g. neither `tags' nor `TAGS' files store the location of declarations (other than the definition).&lt;br /&gt;
&lt;br /&gt;
* Programmers want to know what functions (including methods, macros, inline things) are available (or rather &amp;quot;is there something that does blah&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
** Probably doxygen or the like is the best task for this, though we'd need to make it convenient to use.&lt;br /&gt;
&lt;br /&gt;
* Needed in advance of function definitions (whether in .cpp file or inline function definitions).  Not needed in advance by macro definitions per se (but needed in advance of function definitions where the macro is expanded).&lt;br /&gt;
&lt;br /&gt;
Inline function definitions:&lt;br /&gt;
&lt;br /&gt;
* Relatively expensive in compile time for translation units that don't use that inline function definition.&lt;br /&gt;
* Must come after (in the translation unit) all referenced declarations.  Sometimes this requires that it be outside of the class definition or in a separate file from related declarations.  (E.g. if foo.h and bar.h each provide an inline function definition that requires declarations provided by the other file.)&lt;br /&gt;
&lt;br /&gt;
Operator overloading:&lt;br /&gt;
&lt;br /&gt;
* Can be unclear whether to associate with the type of the left operand or the type of the right operand.&lt;br /&gt;
* We can simplify things for users of the function by having both left.h and right.h provide it (i.e. have both left.h and right.h #include it).  This suggests that it should be physically neither in left.h nor right.h (unless it's OK for left.h to pull in all of right.h or vice versa).&lt;br /&gt;
&lt;br /&gt;
Reducing compile times&lt;br /&gt;
&lt;br /&gt;
* For each translation unit U, reduce the amount of material that gets included by U and isn't needed by U.&lt;br /&gt;
** &amp;quot;Amount&amp;quot; is measured by cost: how often that material changes (causing a recompile), and how expensive it is to compile (e.g. inline function definitions).&lt;br /&gt;
&lt;br /&gt;
* In what circumstances does a translation unit include things that it doesn't need?&lt;br /&gt;
** Inline function definitions.&lt;br /&gt;
** Needs a function declaration but doesn't need the type definition.&lt;br /&gt;
*** A special [non-] case of this is needing a member function declaration.  Member function declarations can't be separated from their class definition.  See also `methods vs functions' above.&lt;br /&gt;
** Suppose that struct Foo has a `Bar _bar' member.  The translation unit may need to create Foo objects (and thus need the type definition of Bar to know its size), but not need to access _bar (so not needing anything from bar.h other than the type definition of Bar).&lt;br /&gt;
*** This is very common.  Common examples of Bar: SPShape, NR::Point/NR::Matrix.&lt;br /&gt;
** Needs some function declarations but not others.&lt;br /&gt;
** Needs some type forward declarations but not others.&lt;br /&gt;
** Comments are never needed for compilation.&lt;br /&gt;
** Definition of a marshaller is needed only by emitters.  However, it's difficult to separate the marshaller from the signal, and difficult to separate the signal from the definition of the containing type (SPDesktop, SPItem).&lt;br /&gt;
** Including the definition of a type when its declaration would suffice.&lt;br /&gt;
** Copy&amp;amp;paste of #include lines.&lt;br /&gt;
&lt;br /&gt;
* Ways of reducing the need for type definitions:&lt;br /&gt;
** Store just a pointer instead of the whole type.&lt;br /&gt;
** Provide a wrapper function (not inlined) for `new Foo'.&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=663</id>
		<title>CSS Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=663"/>
		<updated>2005-03-08T00:38:34Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Draw attention to &amp;quot;Duplicating libcroco code&amp;quot; on inkscape-devel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Hack: Convert to style-less SVG ===&lt;br /&gt;
A short-term solution (hack) for style support would be an input filter that converts stylesheet-using documents to non-stylesheet-using documents.  cssanno.c (http://lists.w3.org/Archives/Public/www-archive/2004Jun/att-0001/cssanno.c or see google) does most of the work for this (for a generic XML document); the remainder of the work is to feed it a stylesheet by parsing the SVG document looking for &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements and fetching external stylesheets, and to change the outputted namespace from css: to svg:.&lt;br /&gt;
&lt;br /&gt;
Ideally change &amp;lt;tt&amp;gt;add_single_property&amp;lt;/tt&amp;gt; to ignore properties other than SVG ones.  I.e. add an array of names of SVG properties, and check whether &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; is in this list.  A linear search should be fine, I'd guess, and it's not too difficult to change it to a hash table or use a pre-coded binary search routine (whether glib or STL).&lt;br /&gt;
&lt;br /&gt;
=== libcroco ===&lt;br /&gt;
&lt;br /&gt;
Peter Moulder is looking at using libcroco from Inkscape.&lt;br /&gt;
&lt;br /&gt;
There are a number of aspects of the work, some of which Peter will need help with:&lt;br /&gt;
&lt;br /&gt;
* Modify libcroco selection stuff (cr-sel-eng.c) to allow us to use &amp;lt;tt&amp;gt;SPRepr&amp;lt;/tt&amp;gt; rather than maintaining a libxml copy of the entire tree.&lt;br /&gt;
: Done (not checked in).  The implementation is to provide a generic interface to nodes in a struct of function pointers (with names influenced by DOM).&lt;br /&gt;
: If we wish to, we could keep a copy of this modified cr-sel-eng.c in Inkscape, so that we can use current libcroco.&lt;br /&gt;
: Message posted to inkscape-devel of subject &amp;quot;Duplicating libcroco code in Inkscape tree&amp;quot; seeking concensus on how much of libcroco to put in inkscape source tree; once this has been decided, Peter will modify his local sources accordingly and then check in the current state of most or all files (so long as this doesn't break anything).  So reply to that message if you're keen to have the current work checked in as soon as possible.&lt;br /&gt;
&lt;br /&gt;
* Parse &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; element content, gathering all rules (across possibly many &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements) into a single stylesheet.&lt;br /&gt;
: Progress so far: have a skeletal implementation of sp-style-elem.{cpp,h} that doesn't actually parse the CSS.  (Not checked in.)&lt;br /&gt;
&lt;br /&gt;
* Ensure that this single stylesheet is updated whenever any of the &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements change (or are deleted or created etc.).&lt;br /&gt;
&lt;br /&gt;
* Similarly, ensure that the picture is refreshed when the stylesheet is changed.&lt;br /&gt;
&lt;br /&gt;
* Convert the simple user agent style sheet given at http://www.w3.org/TR/SVG11/styling.html#UAStyleSheet to libcroco structures (perhaps by passing strings to libcroco parsing functions) and store in &amp;lt;tt&amp;gt;desktop-&amp;amp;gt;style_cascade&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Modify style.cpp to query the stylesheet.  (Done but not checked in.)&lt;br /&gt;
&lt;br /&gt;
* There may be some work needed for &amp;quot;shorthand properties&amp;quot;, e.g. `&amp;lt;tt&amp;gt;marker&amp;lt;/tt&amp;gt;' is shorthand for modifying &amp;lt;tt&amp;gt;marker-start&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;marker-mid&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;marker-end&amp;lt;/tt&amp;gt; properties (http://www.w3.org/TR/SVG11/painting.html#MarkerProperty).  A non-SVG CSS example is `&amp;lt;tt&amp;gt;margin&amp;lt;/tt&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
==== Why can't we use the existing libxml interface to cr-sel-eng.c ? ====&lt;br /&gt;
&lt;br /&gt;
Some CSS selectors (http://www.w3.org/TR/REC-CSS2/selector.html) can express &amp;quot;is preceded by X&amp;quot; or &amp;quot;is a descendent of X&amp;quot; (where X can itself be similarly constrained recursively), so we'd pretty much need to maintain the entire document in libxml form if we want to use libcroco for CSS selectors.&lt;br /&gt;
&lt;br /&gt;
Suppose we want to find the style of node N.  We pass libcroco a stylesheet and ask it what rules apply to N.&lt;br /&gt;
If the stylesheet says &amp;quot;nodes that are preceded by a node that is preceded by a node that's a descendent of (... etc. ...) have red stroking&amp;quot; then libcroco needs to be able to navigate through the tree.&lt;br /&gt;
So we can't pass libcroco just a libxml version of node N, we need to fill in its parent and sibling links, providing a libxml node for a significant proportion of all nodes in the tree.&lt;br /&gt;
(Short of using hardware watchpoints to check access to the sibling/parent links and supply them lazily.)&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=ReleaseAnnounce041&amp;diff=4027</id>
		<title>ReleaseAnnounce041</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=ReleaseAnnounce041&amp;diff=4027"/>
		<updated>2005-02-09T11:37:45Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Try not to give the false impression that we've fixed all known crashes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;subject line for email:  Announcing Inkscape 0.41 Release . www.inkscape.org&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Announcing Inkscape 0.41 Release . www.inkscape.org =&lt;br /&gt;
&lt;br /&gt;
February 8, 2005 UTC &amp;amp;mdash; The Inkscape community announced the release 0.41 of Inkscape, &amp;quot;A Cross-platform Open Source Vector Graphics (SVG) Drawing Tool&amp;quot; today. Inkscape continues to develop at a rapid pace by focusing on bug fixes, stability, color bitmap-to-vector tracing capabilities, Internationalization, pattern tiling, and translation refinements.&lt;br /&gt;
&lt;br /&gt;
Inkscape developers fixed many bugs and worked on overall stability for the 0.41 release. This significantly strengthened Inkscape on Windows and overall improved Internationalization in the program.  Inkscape developer Bryce Harrington stated that &amp;quot;we owe deep thanks to the many users who have worked patiently with us to report the problems and validate these fixes.&amp;quot; Several serious crashes, memory leaks and mis-features are now corrected and certain areas are noticeably snappier thanks to user submitted bug reports. Please see Inkscape's Known Issues section for noted problems that have work arounds and were not fixed for this release.&lt;br /&gt;
&lt;br /&gt;
In addition to stability improvements, developers added several new features. First, Inkscape 0.41 builds on the black and white tracing functionality introduced in release 0.40. This functionality converts a bitmap (raster) image into an editable vector graphic. Now, Inkscape converts color and grayscale images with ease and the results are quite astounding. Second, is the addition of a new clone tiler facility which creates patterns, tesselations, and other sorts of geometric tiling arrangements with an easy-to-use dialog.&lt;br /&gt;
&lt;br /&gt;
In addition, user requests and comments stimulated a number of improvements to units handling, extensions, the Invert Selection command, layers selector, and icon theming. Translations have&lt;br /&gt;
also received an amazing amount of attention this release, including several new translations of the ever-growing tutorials. All this and more is available in explicit detail in the 0.41 Release Notes, accessible at www.inkscape.org.&lt;br /&gt;
&lt;br /&gt;
Inkscape 0.41 avoided the addition of new dependencies and developers pushed back implementing ambitious new features originally planned in order to make 0.41 especially stable. The only dependency change is a minor version update for the Boehm garbage collector, libgc, which increased to version 6.4 due to freezes that occurred in some circumstances on Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
However, for the upcoming Inkscape 0.42 release, the developers are going to make aggressive changes that have been worked on experimentally behind the scenes for several months.  These changes are going to destabilize the codebase considerably during this development cycle; it may be a while before the next release.  The first of these changes is a complete re-implementation of the graphical user interface using Gtkmm. The second is the incorporation of a new Document Object Model (DOM) which will provide a core that the developers can finally build a scripting system on.  Both of these features are major requests and have been commented on heavily by reviewers. &lt;br /&gt;
&lt;br /&gt;
As always, Inkscape is open to contributors and developers of all levels of experience. The Inkscape development community encourages people to join the development team by submitting bug reports, making feature requests and by contributing code. For more information, visit www.inkscape.org. &lt;br /&gt;
&lt;br /&gt;
Inkscape. Draw Freely.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download Linux, Windows, and Mac OSX packages:&lt;br /&gt;
 &lt;br /&gt;
     http://sourceforge.net/project/showfiles.php?group_id=93438&lt;br /&gt;
&lt;br /&gt;
For many more details, see the Release Notes for 0.41:&lt;br /&gt;
 &lt;br /&gt;
     http://www.inkscape.org/cgi-bin/wiki.pl?ReleaseNotes041&lt;br /&gt;
&lt;br /&gt;
Community submitted screenshots:&lt;br /&gt;
 &lt;br /&gt;
     http://www.inkscape.org/screenshots/&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3292</id>
		<title>OpenDocument SVG Correspondence</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3292"/>
		<updated>2005-02-01T04:48:06Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * 9.2.15: subsection `View Box'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Section 9.2 (pp275-) of the OpenDocument specification (available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office) is the most obviously related to SVG.&lt;br /&gt;
&lt;br /&gt;
=== 9.2 Drawing Shapes ===&lt;br /&gt;
==== 9.2.1 Rectangle ====&lt;br /&gt;
&lt;br /&gt;
draw:rect element: svg:rect (http://www.w3.org/TR/SVG11/shapes.html#RectElement)&lt;br /&gt;
&lt;br /&gt;
draw:corner-radius attribute: rx.  (OpenDocument has no equivalent of specifying both rx and ry, so we may forbid specifying ry in OpenDocument SVG fragments.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.2 Line ====&lt;br /&gt;
&lt;br /&gt;
draw:line element: svg:line (http://www.w3.org/TR/SVG11/shapes.html#LineElement)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.3 Polyline ====&lt;br /&gt;
&lt;br /&gt;
draw:polyline element: svg:polyline (http://www.w3.org/TR/SVG11/shapes.html#PolylineElement)&lt;br /&gt;
&lt;br /&gt;
svg:points attribute: points.  The OpenDocument specification is (at first glance at least) ambiguous as to whether coordinates can contain units, whereas the SVG spec disallows units.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.4 Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:polygon element: svg:polygon&lt;br /&gt;
&lt;br /&gt;
==== 9.2.5 Regular Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:regular-polygon element: svg:path supplemented by draw:blah attributes used as hints to editing programs (similar to the star tool in inkscape).&lt;br /&gt;
&lt;br /&gt;
(Note that svg:polygon doesn't in general suffice, because of the draw:sharpness attribute.)&lt;br /&gt;
&lt;br /&gt;
Consider hinting only what cannot be inferred from the path data, to reduce problems from conflicts between the path data and hints.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.6 Path ====&lt;br /&gt;
&lt;br /&gt;
draw:path element: svg:path.&lt;br /&gt;
&lt;br /&gt;
svg:d attribute: d.  (Though note the OpenDocument comment &amp;quot;Some implementations may only supports a subset of the SVG path specification, for instance no mixtures of open and closed curves for one shape, or no elliptical arc command.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.7 Circle ====&lt;br /&gt;
&lt;br /&gt;
draw:circle element: can use svg:circle if draw:kind=&amp;quot;full&amp;quot;; all kinds can be represented with svg:path.  (http://www.w3.org/TR/SVG11/paths.html#PathDataEllipticalArcCommands for the curved part).&lt;br /&gt;
&lt;br /&gt;
Note that in OpenDocument, its svg:cx and svg:cy attributes may be inferred from the position &amp;amp;amp; size attributes (see section 9.2.15 below), whereas in SVG 1.1 cx and cy each default to 0 if unspecified.&lt;br /&gt;
&lt;br /&gt;
In OpenDocument, absence of svg:r attribute means that the radius is to be calculated from the size attribute[*1], whereas SVG 1.1 requires an r attribute.&lt;br /&gt;
&lt;br /&gt;
[*1]: The specification actually says calculated from both size and position attributes, though I think position is irrelevant, whereas I'd guess that the svg:start-angle and svg:end-angle attributes are relevant.&lt;br /&gt;
The OpenDocument specification gives no further information about how to calculate radius.&lt;br /&gt;
&lt;br /&gt;
For converting between OpenDocument's start-angle,end-angle format to SVG's endpoint representation, see http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes, principally sections [http://www.w3.org/TR/SVG11/implnote.html#ArcConversionCenterToEndpoint F.6.4] and [http://www.w3.org/TR/SVG11/implnote.html#ArcConversionEndpointToCenter F.6.5].&lt;br /&gt;
&lt;br /&gt;
==== 9.2.8 Ellipse ====&lt;br /&gt;
&lt;br /&gt;
draw:ellipse element: Can use svg:ellipse if draw:kind=&amp;quot;full&amp;quot;; the more general case is as for draw:circle (see above) except for its svg:rx and svg:ry attributes instead of svg:r.&lt;br /&gt;
&lt;br /&gt;
OpenDocument allows svg:rx and svg:ry to be inferred from position &amp;amp;amp; size attributes, whereas the rx and ry attributes of svg:ellipse are required.&lt;br /&gt;
&lt;br /&gt;
(The OpenDocument spec has a typo saying svg:rx twice instead of &amp;quot;svg:rx and svg:ry&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.9 Connector ====&lt;br /&gt;
&lt;br /&gt;
draw:connector element: svg:path supplemented with hints for editor programs.&lt;br /&gt;
&lt;br /&gt;
The OpenDocument spec doesn't seem very specific about how draw:connector elements are rendered.  I didn't understand its &amp;quot;escapes&amp;quot; terminology.&lt;br /&gt;
&lt;br /&gt;
draw:{start,end}-{shape,glue-point} may be retained as editing hints.  (They should not affect positions of connectors, which would be fully specified in the path's d attribute.  This allows plain (OpenDocument-unaware) SVG renderers to render the document correctly.)&lt;br /&gt;
&lt;br /&gt;
draw:line-skew attribute: fully encoded in the path's d attribute.  (The behaviour of draw:line-skew isn't fully specified in the OpenDocument specification.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.10 Caption ====&lt;br /&gt;
&lt;br /&gt;
draw:caption: svg:g.&lt;br /&gt;
&lt;br /&gt;
Editing hints that may be useful:&lt;br /&gt;
* Make the children of the group editable without explicitly entering/opening the group: allow typing directly into the text element, and allow changing the radius of the caption box.&lt;br /&gt;
* Use connector facility to manage the lines between the &amp;quot;caption point&amp;quot; and the text &amp;amp;amp; frame.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.13 Page Thumbnail ====&lt;br /&gt;
&lt;br /&gt;
draw:page-thumbnail element: svg:use (http://www.w3.org/TR/SVG11/struct.html#UseElement).&lt;br /&gt;
&lt;br /&gt;
draw:page-number attribute: appears to be subsumed by svg:use's xlink:href attribute.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.14 Grouping ====&lt;br /&gt;
&lt;br /&gt;
draw:g element: svg:g&lt;br /&gt;
&lt;br /&gt;
svg:y attribute: Relevant to how the draw:g is embedded inside for example textual data.  This information would go on the embedding element.&lt;br /&gt;
&lt;br /&gt;
If the intent of the svg:y attribute is to tie the positioning to the picture instead of the embedder (e.g. if the picture is glyph-like, in which the &amp;quot;baseline&amp;quot; is an inherent property of the glyph), then this can be achieved either by making the reference point the (0,0) of the &amp;lt;svg:svg&amp;gt; element, or perhaps using the svg:view element (http://www.w3.org/TR/SVG11/linking.html#ViewElement).&lt;br /&gt;
&lt;br /&gt;
==== 9.2.15 Common Drawing Shape Attributes ====&lt;br /&gt;
&lt;br /&gt;
===== Name =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument specification doesn't mention the interpretation or use of its draw:name attribute.&lt;br /&gt;
Probably it's a human-readable name used only in dialog boxes of editors for OpenDocument documents.&lt;br /&gt;
If so, then it can stay as draw:name, and can safely be ignored by most SVG user agents.&lt;br /&gt;
&lt;br /&gt;
===== Position =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying svg:x and svg:y attributes (though in some cases doesn't mention their interpretation; probably ignored); whereas the SVG 1.1 spec allows x and y attributes on only a few elements (typically those that don't otherwise specify their position).&lt;br /&gt;
&lt;br /&gt;
===== Size =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying a svg:width and/or svg:height attribute for many shapes, typically saying that these attributes &amp;quot;may&amp;quot; be ignored.  The SVG 1.1 standard does not allow specifying width or height attributes other than for rect, image, foreignObject, and a few other things (see http://www.w3.org/TR/SVG11/attindex.html).&lt;br /&gt;
&lt;br /&gt;
===== Transformation =====&lt;br /&gt;
&lt;br /&gt;
draw:transform attribute: transform.&lt;br /&gt;
&lt;br /&gt;
SVG 1.1 says that individual transforms are separated by &amp;quot;whitespace and/or a comma&amp;quot; whereas OpenDocument spec says they are separated by &amp;quot;a white space and/or a comma&amp;quot;, which may mean that OpenDocument format allows only one whitespace character, or possibly only a literal space character (ASCII 0x20); though this may simply be a typing mistake in the OpenDocument spec.&lt;br /&gt;
&lt;br /&gt;
Both specifications say [a minor rearrangement of] &amp;quot;The available types of transform definitions &amp;lt;b&amp;gt;include&amp;lt;/b&amp;gt;&amp;quot; (emphasis not in original), which might be interpreted as indicating an incomplete list of possibilities.  The SVG 1.1 spec uses &amp;quot;includes&amp;quot; elsewhere in contexts that suggest it is to be interpreted as meaning &amp;quot;consists of&amp;quot; (i.e. a complete list).&lt;br /&gt;
&lt;br /&gt;
The set of allowable transforms (and their syntax) is the same, with the following exception:&lt;br /&gt;
&lt;br /&gt;
rotate in OpenDocument does not allow the cx,cy arguments (which are optional in SVG1.1).  The behaviour in SVG 1.1 in their absence is identical to the OpenDocument behaviour, so the revised OpenDocument format could forbid them.&lt;br /&gt;
&lt;br /&gt;
===== View Box =====&lt;br /&gt;
&lt;br /&gt;
svg:viewBox attribute: N.B. this differs markedly in semantics from SVG's viewBox attribute, despite sharing the same syntax.  In OpenDocument, svg:viewBox is required (I believe) on the draw:path element and on elements that allow an svg:points attribute (draw:polyline, draw:polygon, and some similar things outside of section 9.2).&lt;br /&gt;
&lt;br /&gt;
Further, the OpenDocument spec says &amp;quot;Some implementations may ignore the view box attribute. The implied coordinate system then has its origin at the left, top corner of the shape, without any scaling relative to the shape.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The OpenDocument spec doesn't say much about the interpretation of the svg:viewBox attribute: in particular, it doesn't specify how to convert the svg:points or svg:d data into the coordinate system of the corresponding polyline/path element.  Possibly the corners of the specified svg:viewBox are to be mapped to the size &amp;amp;amp; position attributes of the corresponding shape.&lt;br /&gt;
&lt;br /&gt;
In SVG 1.1, the viewBox attribute (http://www.w3.org/TR/SVG11/coords.html#ViewBoxAttribute) isn't allowed on any &amp;quot;normal shapes&amp;quot;, but on &amp;quot;container&amp;quot;-like elements (like svg, symbol, image, foreignObject; not g) and view.&lt;br /&gt;
&lt;br /&gt;
When translating OpenDocument svg:viewBox use to SVG, one could wrap the path/polyline with a new svg:svg element with a viewBox attribute; alternatively, one might just apply the transformation to the point list (if the transformation is known in advance; this may not be the case when mixing units).&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3291</id>
		<title>OpenDocument SVG Correspondence</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3291"/>
		<updated>2005-02-01T04:07:47Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * 9.2.15: subsection `Transformation'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Section 9.2 (pp275-) of the OpenDocument specification (available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office) is the most obviously related to SVG.&lt;br /&gt;
&lt;br /&gt;
=== 9.2 Drawing Shapes ===&lt;br /&gt;
==== 9.2.1 Rectangle ====&lt;br /&gt;
&lt;br /&gt;
draw:rect element: svg:rect (http://www.w3.org/TR/SVG11/shapes.html#RectElement)&lt;br /&gt;
&lt;br /&gt;
draw:corner-radius attribute: rx.  (OpenDocument has no equivalent of specifying both rx and ry, so we may forbid specifying ry in OpenDocument SVG fragments.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.2 Line ====&lt;br /&gt;
&lt;br /&gt;
draw:line element: svg:line (http://www.w3.org/TR/SVG11/shapes.html#LineElement)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.3 Polyline ====&lt;br /&gt;
&lt;br /&gt;
draw:polyline element: svg:polyline (http://www.w3.org/TR/SVG11/shapes.html#PolylineElement)&lt;br /&gt;
&lt;br /&gt;
svg:points attribute: points.  The OpenDocument specification is (at first glance at least) ambiguous as to whether coordinates can contain units, whereas the SVG spec disallows units.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.4 Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:polygon element: svg:polygon&lt;br /&gt;
&lt;br /&gt;
==== 9.2.5 Regular Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:regular-polygon element: svg:path supplemented by draw:blah attributes used as hints to editing programs (similar to the star tool in inkscape).&lt;br /&gt;
&lt;br /&gt;
(Note that svg:polygon doesn't in general suffice, because of the draw:sharpness attribute.)&lt;br /&gt;
&lt;br /&gt;
Consider hinting only what cannot be inferred from the path data, to reduce problems from conflicts between the path data and hints.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.6 Path ====&lt;br /&gt;
&lt;br /&gt;
draw:path element: svg:path.&lt;br /&gt;
&lt;br /&gt;
svg:d attribute: d.  (Though note the OpenDocument comment &amp;quot;Some implementations may only supports a subset of the SVG path specification, for instance no mixtures of open and closed curves for one shape, or no elliptical arc command.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.7 Circle ====&lt;br /&gt;
&lt;br /&gt;
draw:circle element: can use svg:circle if draw:kind=&amp;quot;full&amp;quot;; all kinds can be represented with svg:path.  (http://www.w3.org/TR/SVG11/paths.html#PathDataEllipticalArcCommands for the curved part).&lt;br /&gt;
&lt;br /&gt;
Note that in OpenDocument, its svg:cx and svg:cy attributes may be inferred from the position &amp;amp;amp; size attributes (see section 9.2.15 below), whereas in SVG 1.1 cx and cy each default to 0 if unspecified.&lt;br /&gt;
&lt;br /&gt;
In OpenDocument, absence of svg:r attribute means that the radius is to be calculated from the size attribute[*1], whereas SVG 1.1 requires an r attribute.&lt;br /&gt;
&lt;br /&gt;
[*1]: The specification actually says calculated from both size and position attributes, though I think position is irrelevant, whereas I'd guess that the svg:start-angle and svg:end-angle attributes are relevant.&lt;br /&gt;
The OpenDocument specification gives no further information about how to calculate radius.&lt;br /&gt;
&lt;br /&gt;
For converting between OpenDocument's start-angle,end-angle format to SVG's endpoint representation, see http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes, principally sections [http://www.w3.org/TR/SVG11/implnote.html#ArcConversionCenterToEndpoint F.6.4] and [http://www.w3.org/TR/SVG11/implnote.html#ArcConversionEndpointToCenter F.6.5].&lt;br /&gt;
&lt;br /&gt;
==== 9.2.8 Ellipse ====&lt;br /&gt;
&lt;br /&gt;
draw:ellipse element: Can use svg:ellipse if draw:kind=&amp;quot;full&amp;quot;; the more general case is as for draw:circle (see above) except for its svg:rx and svg:ry attributes instead of svg:r.&lt;br /&gt;
&lt;br /&gt;
OpenDocument allows svg:rx and svg:ry to be inferred from position &amp;amp;amp; size attributes, whereas the rx and ry attributes of svg:ellipse are required.&lt;br /&gt;
&lt;br /&gt;
(The OpenDocument spec has a typo saying svg:rx twice instead of &amp;quot;svg:rx and svg:ry&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.9 Connector ====&lt;br /&gt;
&lt;br /&gt;
draw:connector element: svg:path supplemented with hints for editor programs.&lt;br /&gt;
&lt;br /&gt;
The OpenDocument spec doesn't seem very specific about how draw:connector elements are rendered.  I didn't understand its &amp;quot;escapes&amp;quot; terminology.&lt;br /&gt;
&lt;br /&gt;
draw:{start,end}-{shape,glue-point} may be retained as editing hints.  (They should not affect positions of connectors, which would be fully specified in the path's d attribute.  This allows plain (OpenDocument-unaware) SVG renderers to render the document correctly.)&lt;br /&gt;
&lt;br /&gt;
draw:line-skew attribute: fully encoded in the path's d attribute.  (The behaviour of draw:line-skew isn't fully specified in the OpenDocument specification.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.10 Caption ====&lt;br /&gt;
&lt;br /&gt;
draw:caption: svg:g.&lt;br /&gt;
&lt;br /&gt;
Editing hints that may be useful:&lt;br /&gt;
* Make the children of the group editable without explicitly entering/opening the group: allow typing directly into the text element, and allow changing the radius of the caption box.&lt;br /&gt;
* Use connector facility to manage the lines between the &amp;quot;caption point&amp;quot; and the text &amp;amp;amp; frame.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.13 Page Thumbnail ====&lt;br /&gt;
&lt;br /&gt;
draw:page-thumbnail element: svg:use (http://www.w3.org/TR/SVG11/struct.html#UseElement).&lt;br /&gt;
&lt;br /&gt;
draw:page-number attribute: appears to be subsumed by svg:use's xlink:href attribute.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.14 Grouping ====&lt;br /&gt;
&lt;br /&gt;
draw:g element: svg:g&lt;br /&gt;
&lt;br /&gt;
svg:y attribute: Relevant to how the draw:g is embedded inside for example textual data.  This information would go on the embedding element.&lt;br /&gt;
&lt;br /&gt;
If the intent of the svg:y attribute is to tie the positioning to the picture instead of the embedder (e.g. if the picture is glyph-like, in which the &amp;quot;baseline&amp;quot; is an inherent property of the glyph), then this can be achieved either by making the reference point the (0,0) of the &amp;lt;svg:svg&amp;gt; element, or perhaps using the svg:view element (http://www.w3.org/TR/SVG11/linking.html#ViewElement).&lt;br /&gt;
&lt;br /&gt;
==== 9.2.15 Common Drawing Shape Attributes ====&lt;br /&gt;
&lt;br /&gt;
===== Name =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument specification doesn't mention the interpretation or use of its draw:name attribute.&lt;br /&gt;
Probably it's a human-readable name used only in dialog boxes of editors for OpenDocument documents.&lt;br /&gt;
If so, then it can stay as draw:name, and can safely be ignored by most SVG user agents.&lt;br /&gt;
&lt;br /&gt;
===== Position =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying svg:x and svg:y attributes (though in some cases doesn't mention their interpretation; probably ignored); whereas the SVG 1.1 spec allows x and y attributes on only a few elements (typically those that don't otherwise specify their position).&lt;br /&gt;
&lt;br /&gt;
===== Size =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying a svg:width and/or svg:height attribute for many shapes, typically saying that these attributes &amp;quot;may&amp;quot; be ignored.  The SVG 1.1 standard does not allow specifying width or height attributes other than for rect, image, foreignObject, and a few other things (see http://www.w3.org/TR/SVG11/attindex.html).&lt;br /&gt;
&lt;br /&gt;
===== Transformation =====&lt;br /&gt;
&lt;br /&gt;
draw:transform attribute: transform.&lt;br /&gt;
&lt;br /&gt;
SVG 1.1 says that individual transforms are separated by &amp;quot;whitespace and/or a comma&amp;quot; whereas OpenDocument spec says they are separated by &amp;quot;a white space and/or a comma&amp;quot;, which may mean that OpenDocument format allows only one whitespace character, or possibly only a literal space character (ASCII 0x20); though this may simply be a typing mistake in the OpenDocument spec.&lt;br /&gt;
&lt;br /&gt;
Both specifications say [a minor rearrangement of] &amp;quot;The available types of transform definitions &amp;lt;b&amp;gt;include&amp;lt;/b&amp;gt;&amp;quot; (emphasis not in original), which might be interpreted as indicating an incomplete list of possibilities.  The SVG 1.1 spec uses &amp;quot;includes&amp;quot; elsewhere in contexts that suggest it is to be interpreted as meaning &amp;quot;consists of&amp;quot; (i.e. a complete list).&lt;br /&gt;
&lt;br /&gt;
The set of allowable transforms (and their syntax) is the same, with the following exception:&lt;br /&gt;
&lt;br /&gt;
rotate in OpenDocument does not allow the cx,cy arguments (which are optional in SVG1.1).  The behaviour in SVG 1.1 in their absence is identical to the OpenDocument behaviour, so the revised OpenDocument format could forbid them.&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3290</id>
		<title>OpenDocument SVG Correspondence</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3290"/>
		<updated>2005-02-01T03:51:47Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * 9.2.14 Grouping&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Section 9.2 (pp275-) of the OpenDocument specification (available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office) is the most obviously related to SVG.&lt;br /&gt;
&lt;br /&gt;
=== 9.2 Drawing Shapes ===&lt;br /&gt;
==== 9.2.1 Rectangle ====&lt;br /&gt;
&lt;br /&gt;
draw:rect element: svg:rect (http://www.w3.org/TR/SVG11/shapes.html#RectElement)&lt;br /&gt;
&lt;br /&gt;
draw:corner-radius attribute: rx.  (OpenDocument has no equivalent of specifying both rx and ry, so we may forbid specifying ry in OpenDocument SVG fragments.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.2 Line ====&lt;br /&gt;
&lt;br /&gt;
draw:line element: svg:line (http://www.w3.org/TR/SVG11/shapes.html#LineElement)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.3 Polyline ====&lt;br /&gt;
&lt;br /&gt;
draw:polyline element: svg:polyline (http://www.w3.org/TR/SVG11/shapes.html#PolylineElement)&lt;br /&gt;
&lt;br /&gt;
svg:points attribute: points.  The OpenDocument specification is (at first glance at least) ambiguous as to whether coordinates can contain units, whereas the SVG spec disallows units.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.4 Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:polygon element: svg:polygon&lt;br /&gt;
&lt;br /&gt;
==== 9.2.5 Regular Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:regular-polygon element: svg:path supplemented by draw:blah attributes used as hints to editing programs (similar to the star tool in inkscape).&lt;br /&gt;
&lt;br /&gt;
(Note that svg:polygon doesn't in general suffice, because of the draw:sharpness attribute.)&lt;br /&gt;
&lt;br /&gt;
Consider hinting only what cannot be inferred from the path data, to reduce problems from conflicts between the path data and hints.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.6 Path ====&lt;br /&gt;
&lt;br /&gt;
draw:path element: svg:path.&lt;br /&gt;
&lt;br /&gt;
svg:d attribute: d.  (Though note the OpenDocument comment &amp;quot;Some implementations may only supports a subset of the SVG path specification, for instance no mixtures of open and closed curves for one shape, or no elliptical arc command.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.7 Circle ====&lt;br /&gt;
&lt;br /&gt;
draw:circle element: can use svg:circle if draw:kind=&amp;quot;full&amp;quot;; all kinds can be represented with svg:path.  (http://www.w3.org/TR/SVG11/paths.html#PathDataEllipticalArcCommands for the curved part).&lt;br /&gt;
&lt;br /&gt;
Note that in OpenDocument, its svg:cx and svg:cy attributes may be inferred from the position &amp;amp;amp; size attributes (see section 9.2.15 below), whereas in SVG 1.1 cx and cy each default to 0 if unspecified.&lt;br /&gt;
&lt;br /&gt;
In OpenDocument, absence of svg:r attribute means that the radius is to be calculated from the size attribute[*1], whereas SVG 1.1 requires an r attribute.&lt;br /&gt;
&lt;br /&gt;
[*1]: The specification actually says calculated from both size and position attributes, though I think position is irrelevant, whereas I'd guess that the svg:start-angle and svg:end-angle attributes are relevant.&lt;br /&gt;
The OpenDocument specification gives no further information about how to calculate radius.&lt;br /&gt;
&lt;br /&gt;
For converting between OpenDocument's start-angle,end-angle format to SVG's endpoint representation, see http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes, principally sections [http://www.w3.org/TR/SVG11/implnote.html#ArcConversionCenterToEndpoint F.6.4] and [http://www.w3.org/TR/SVG11/implnote.html#ArcConversionEndpointToCenter F.6.5].&lt;br /&gt;
&lt;br /&gt;
==== 9.2.8 Ellipse ====&lt;br /&gt;
&lt;br /&gt;
draw:ellipse element: Can use svg:ellipse if draw:kind=&amp;quot;full&amp;quot;; the more general case is as for draw:circle (see above) except for its svg:rx and svg:ry attributes instead of svg:r.&lt;br /&gt;
&lt;br /&gt;
OpenDocument allows svg:rx and svg:ry to be inferred from position &amp;amp;amp; size attributes, whereas the rx and ry attributes of svg:ellipse are required.&lt;br /&gt;
&lt;br /&gt;
(The OpenDocument spec has a typo saying svg:rx twice instead of &amp;quot;svg:rx and svg:ry&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.9 Connector ====&lt;br /&gt;
&lt;br /&gt;
draw:connector element: svg:path supplemented with hints for editor programs.&lt;br /&gt;
&lt;br /&gt;
The OpenDocument spec doesn't seem very specific about how draw:connector elements are rendered.  I didn't understand its &amp;quot;escapes&amp;quot; terminology.&lt;br /&gt;
&lt;br /&gt;
draw:{start,end}-{shape,glue-point} may be retained as editing hints.  (They should not affect positions of connectors, which would be fully specified in the path's d attribute.  This allows plain (OpenDocument-unaware) SVG renderers to render the document correctly.)&lt;br /&gt;
&lt;br /&gt;
draw:line-skew attribute: fully encoded in the path's d attribute.  (The behaviour of draw:line-skew isn't fully specified in the OpenDocument specification.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.10 Caption ====&lt;br /&gt;
&lt;br /&gt;
draw:caption: svg:g.&lt;br /&gt;
&lt;br /&gt;
Editing hints that may be useful:&lt;br /&gt;
* Make the children of the group editable without explicitly entering/opening the group: allow typing directly into the text element, and allow changing the radius of the caption box.&lt;br /&gt;
* Use connector facility to manage the lines between the &amp;quot;caption point&amp;quot; and the text &amp;amp;amp; frame.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.13 Page Thumbnail ====&lt;br /&gt;
&lt;br /&gt;
draw:page-thumbnail element: svg:use (http://www.w3.org/TR/SVG11/struct.html#UseElement).&lt;br /&gt;
&lt;br /&gt;
draw:page-number attribute: appears to be subsumed by svg:use's xlink:href attribute.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.14 Grouping ====&lt;br /&gt;
&lt;br /&gt;
draw:g element: svg:g&lt;br /&gt;
&lt;br /&gt;
svg:y attribute: Relevant to how the draw:g is embedded inside for example textual data.  This information would go on the embedding element.&lt;br /&gt;
&lt;br /&gt;
If the intent of the svg:y attribute is to tie the positioning to the picture instead of the embedder (e.g. if the picture is glyph-like, in which the &amp;quot;baseline&amp;quot; is an inherent property of the glyph), then this can be achieved either by making the reference point the (0,0) of the &amp;lt;svg:svg&amp;gt; element, or perhaps using the svg:view element (http://www.w3.org/TR/SVG11/linking.html#ViewElement).&lt;br /&gt;
&lt;br /&gt;
==== 9.2.15 Common Drawing Shape Attributes ====&lt;br /&gt;
&lt;br /&gt;
===== Name =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument specification doesn't mention the interpretation or use of its draw:name attribute.&lt;br /&gt;
Probably it's a human-readable name used only in dialog boxes of editors for OpenDocument documents.&lt;br /&gt;
If so, then it can stay as draw:name, and can safely be ignored by most SVG user agents.&lt;br /&gt;
&lt;br /&gt;
===== Position =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying svg:x and svg:y attributes (though in some cases doesn't mention their interpretation; probably ignored); whereas the SVG 1.1 spec allows x and y attributes on only a few elements (typically those that don't otherwise specify their position).&lt;br /&gt;
&lt;br /&gt;
===== Size =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying a svg:width and/or svg:height attribute for many shapes, typically saying that these attributes &amp;quot;may&amp;quot; be ignored.  The SVG 1.1 standard does not allow specifying width or height attributes other than for rect, image, foreignObject, and a few other things (see http://www.w3.org/TR/SVG11/attindex.html).&lt;br /&gt;
&lt;br /&gt;
===== Unfinished: Transformation onwards =====&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3289</id>
		<title>OpenDocument SVG Correspondence</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3289"/>
		<updated>2005-02-01T03:43:17Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * 9.2.13 Page Thumbnail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Section 9.2 (pp275-) of the OpenDocument specification (available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office) is the most obviously related to SVG.&lt;br /&gt;
&lt;br /&gt;
=== 9.2 Drawing Shapes ===&lt;br /&gt;
==== 9.2.1 Rectangle ====&lt;br /&gt;
&lt;br /&gt;
draw:rect element: svg:rect (http://www.w3.org/TR/SVG11/shapes.html#RectElement)&lt;br /&gt;
&lt;br /&gt;
draw:corner-radius attribute: rx.  (OpenDocument has no equivalent of specifying both rx and ry, so we may forbid specifying ry in OpenDocument SVG fragments.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.2 Line ====&lt;br /&gt;
&lt;br /&gt;
draw:line element: svg:line (http://www.w3.org/TR/SVG11/shapes.html#LineElement)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.3 Polyline ====&lt;br /&gt;
&lt;br /&gt;
draw:polyline element: svg:polyline (http://www.w3.org/TR/SVG11/shapes.html#PolylineElement)&lt;br /&gt;
&lt;br /&gt;
svg:points attribute: points.  The OpenDocument specification is (at first glance at least) ambiguous as to whether coordinates can contain units, whereas the SVG spec disallows units.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.4 Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:polygon element: svg:polygon&lt;br /&gt;
&lt;br /&gt;
==== 9.2.5 Regular Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:regular-polygon element: svg:path supplemented by draw:blah attributes used as hints to editing programs (similar to the star tool in inkscape).&lt;br /&gt;
&lt;br /&gt;
(Note that svg:polygon doesn't in general suffice, because of the draw:sharpness attribute.)&lt;br /&gt;
&lt;br /&gt;
Consider hinting only what cannot be inferred from the path data, to reduce problems from conflicts between the path data and hints.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.6 Path ====&lt;br /&gt;
&lt;br /&gt;
draw:path element: svg:path.&lt;br /&gt;
&lt;br /&gt;
svg:d attribute: d.  (Though note the OpenDocument comment &amp;quot;Some implementations may only supports a subset of the SVG path specification, for instance no mixtures of open and closed curves for one shape, or no elliptical arc command.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.7 Circle ====&lt;br /&gt;
&lt;br /&gt;
draw:circle element: can use svg:circle if draw:kind=&amp;quot;full&amp;quot;; all kinds can be represented with svg:path.  (http://www.w3.org/TR/SVG11/paths.html#PathDataEllipticalArcCommands for the curved part).&lt;br /&gt;
&lt;br /&gt;
Note that in OpenDocument, its svg:cx and svg:cy attributes may be inferred from the position &amp;amp;amp; size attributes (see section 9.2.15 below), whereas in SVG 1.1 cx and cy each default to 0 if unspecified.&lt;br /&gt;
&lt;br /&gt;
In OpenDocument, absence of svg:r attribute means that the radius is to be calculated from the size attribute[*1], whereas SVG 1.1 requires an r attribute.&lt;br /&gt;
&lt;br /&gt;
[*1]: The specification actually says calculated from both size and position attributes, though I think position is irrelevant, whereas I'd guess that the svg:start-angle and svg:end-angle attributes are relevant.&lt;br /&gt;
The OpenDocument specification gives no further information about how to calculate radius.&lt;br /&gt;
&lt;br /&gt;
For converting between OpenDocument's start-angle,end-angle format to SVG's endpoint representation, see http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes, principally sections [http://www.w3.org/TR/SVG11/implnote.html#ArcConversionCenterToEndpoint F.6.4] and [http://www.w3.org/TR/SVG11/implnote.html#ArcConversionEndpointToCenter F.6.5].&lt;br /&gt;
&lt;br /&gt;
==== 9.2.8 Ellipse ====&lt;br /&gt;
&lt;br /&gt;
draw:ellipse element: Can use svg:ellipse if draw:kind=&amp;quot;full&amp;quot;; the more general case is as for draw:circle (see above) except for its svg:rx and svg:ry attributes instead of svg:r.&lt;br /&gt;
&lt;br /&gt;
OpenDocument allows svg:rx and svg:ry to be inferred from position &amp;amp;amp; size attributes, whereas the rx and ry attributes of svg:ellipse are required.&lt;br /&gt;
&lt;br /&gt;
(The OpenDocument spec has a typo saying svg:rx twice instead of &amp;quot;svg:rx and svg:ry&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.9 Connector ====&lt;br /&gt;
&lt;br /&gt;
draw:connector element: svg:path supplemented with hints for editor programs.&lt;br /&gt;
&lt;br /&gt;
The OpenDocument spec doesn't seem very specific about how draw:connector elements are rendered.  I didn't understand its &amp;quot;escapes&amp;quot; terminology.&lt;br /&gt;
&lt;br /&gt;
draw:{start,end}-{shape,glue-point} may be retained as editing hints.  (They should not affect positions of connectors, which would be fully specified in the path's d attribute.  This allows plain (OpenDocument-unaware) SVG renderers to render the document correctly.)&lt;br /&gt;
&lt;br /&gt;
draw:line-skew attribute: fully encoded in the path's d attribute.  (The behaviour of draw:line-skew isn't fully specified in the OpenDocument specification.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.10 Caption ====&lt;br /&gt;
&lt;br /&gt;
draw:caption: svg:g.&lt;br /&gt;
&lt;br /&gt;
Editing hints that may be useful:&lt;br /&gt;
* Make the children of the group editable without explicitly entering/opening the group: allow typing directly into the text element, and allow changing the radius of the caption box.&lt;br /&gt;
* Use connector facility to manage the lines between the &amp;quot;caption point&amp;quot; and the text &amp;amp;amp; frame.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.13 Page Thumbnail ====&lt;br /&gt;
&lt;br /&gt;
draw:page-thumbnail element: svg:use (http://www.w3.org/TR/SVG11/struct.html#UseElement).&lt;br /&gt;
&lt;br /&gt;
draw:page-number: appears to be subsumed by svg:use's xlink:href attribute.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.15 Common Drawing Shape Attributes ====&lt;br /&gt;
&lt;br /&gt;
===== Name =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument specification doesn't mention the interpretation or use of its draw:name attribute.&lt;br /&gt;
Probably it's a human-readable name used only in dialog boxes of editors for OpenDocument documents.&lt;br /&gt;
If so, then it can stay as draw:name, and can safely be ignored by most SVG user agents.&lt;br /&gt;
&lt;br /&gt;
===== Position =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying svg:x and svg:y attributes (though in some cases doesn't mention their interpretation; probably ignored); whereas the SVG 1.1 spec allows x and y attributes on only a few elements (typically those that don't otherwise specify their position).&lt;br /&gt;
&lt;br /&gt;
===== Size =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying a svg:width and/or svg:height attribute for many shapes, typically saying that these attributes &amp;quot;may&amp;quot; be ignored.  The SVG 1.1 standard does not allow specifying width or height attributes other than for rect, image, foreignObject, and a few other things (see http://www.w3.org/TR/SVG11/attindex.html).&lt;br /&gt;
&lt;br /&gt;
===== Unfinished: Transformation onwards =====&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3288</id>
		<title>OpenDocument SVG Correspondence</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3288"/>
		<updated>2005-02-01T03:38:12Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * 9.2.10 Caption&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Section 9.2 (pp275-) of the OpenDocument specification (available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office) is the most obviously related to SVG.&lt;br /&gt;
&lt;br /&gt;
=== 9.2 Drawing Shapes ===&lt;br /&gt;
==== 9.2.1 Rectangle ====&lt;br /&gt;
&lt;br /&gt;
draw:rect element: svg:rect (http://www.w3.org/TR/SVG11/shapes.html#RectElement)&lt;br /&gt;
&lt;br /&gt;
draw:corner-radius attribute: rx.  (OpenDocument has no equivalent of specifying both rx and ry, so we may forbid specifying ry in OpenDocument SVG fragments.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.2 Line ====&lt;br /&gt;
&lt;br /&gt;
draw:line element: svg:line (http://www.w3.org/TR/SVG11/shapes.html#LineElement)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.3 Polyline ====&lt;br /&gt;
&lt;br /&gt;
draw:polyline element: svg:polyline (http://www.w3.org/TR/SVG11/shapes.html#PolylineElement)&lt;br /&gt;
&lt;br /&gt;
svg:points attribute: points.  The OpenDocument specification is (at first glance at least) ambiguous as to whether coordinates can contain units, whereas the SVG spec disallows units.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.4 Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:polygon element: svg:polygon&lt;br /&gt;
&lt;br /&gt;
==== 9.2.5 Regular Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:regular-polygon element: svg:path supplemented by draw:blah attributes used as hints to editing programs (similar to the star tool in inkscape).&lt;br /&gt;
&lt;br /&gt;
(Note that svg:polygon doesn't in general suffice, because of the draw:sharpness attribute.)&lt;br /&gt;
&lt;br /&gt;
Consider hinting only what cannot be inferred from the path data, to reduce problems from conflicts between the path data and hints.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.6 Path ====&lt;br /&gt;
&lt;br /&gt;
draw:path element: svg:path.&lt;br /&gt;
&lt;br /&gt;
svg:d attribute: d.  (Though note the OpenDocument comment &amp;quot;Some implementations may only supports a subset of the SVG path specification, for instance no mixtures of open and closed curves for one shape, or no elliptical arc command.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.7 Circle ====&lt;br /&gt;
&lt;br /&gt;
draw:circle element: can use svg:circle if draw:kind=&amp;quot;full&amp;quot;; all kinds can be represented with svg:path.  (http://www.w3.org/TR/SVG11/paths.html#PathDataEllipticalArcCommands for the curved part).&lt;br /&gt;
&lt;br /&gt;
Note that in OpenDocument, its svg:cx and svg:cy attributes may be inferred from the position &amp;amp;amp; size attributes (see section 9.2.15 below), whereas in SVG 1.1 cx and cy each default to 0 if unspecified.&lt;br /&gt;
&lt;br /&gt;
In OpenDocument, absence of svg:r attribute means that the radius is to be calculated from the size attribute[*1], whereas SVG 1.1 requires an r attribute.&lt;br /&gt;
&lt;br /&gt;
[*1]: The specification actually says calculated from both size and position attributes, though I think position is irrelevant, whereas I'd guess that the svg:start-angle and svg:end-angle attributes are relevant.&lt;br /&gt;
The OpenDocument specification gives no further information about how to calculate radius.&lt;br /&gt;
&lt;br /&gt;
For converting between OpenDocument's start-angle,end-angle format to SVG's endpoint representation, see http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes, principally sections [http://www.w3.org/TR/SVG11/implnote.html#ArcConversionCenterToEndpoint F.6.4] and [http://www.w3.org/TR/SVG11/implnote.html#ArcConversionEndpointToCenter F.6.5].&lt;br /&gt;
&lt;br /&gt;
==== 9.2.8 Ellipse ====&lt;br /&gt;
&lt;br /&gt;
draw:ellipse element: Can use svg:ellipse if draw:kind=&amp;quot;full&amp;quot;; the more general case is as for draw:circle (see above) except for its svg:rx and svg:ry attributes instead of svg:r.&lt;br /&gt;
&lt;br /&gt;
OpenDocument allows svg:rx and svg:ry to be inferred from position &amp;amp;amp; size attributes, whereas the rx and ry attributes of svg:ellipse are required.&lt;br /&gt;
&lt;br /&gt;
(The OpenDocument spec has a typo saying svg:rx twice instead of &amp;quot;svg:rx and svg:ry&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.9 Connector ====&lt;br /&gt;
&lt;br /&gt;
draw:connector element: svg:path supplemented with hints for editor programs.&lt;br /&gt;
&lt;br /&gt;
The OpenDocument spec doesn't seem very specific about how draw:connector elements are rendered.  I didn't understand its &amp;quot;escapes&amp;quot; terminology.&lt;br /&gt;
&lt;br /&gt;
draw:{start,end}-{shape,glue-point} may be retained as editing hints.  (They should not affect positions of connectors, which would be fully specified in the path's d attribute.  This allows plain (OpenDocument-unaware) SVG renderers to render the document correctly.)&lt;br /&gt;
&lt;br /&gt;
draw:line-skew attribute: fully encoded in the path's d attribute.  (The behaviour of draw:line-skew isn't fully specified in the OpenDocument specification.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.10 Caption ====&lt;br /&gt;
&lt;br /&gt;
draw:caption: svg:g.&lt;br /&gt;
&lt;br /&gt;
Editing hints that may be useful:&lt;br /&gt;
* Make the children of the group editable without explicitly entering/opening the group: allow typing directly into the text element, and allow changing the radius of the caption box.&lt;br /&gt;
* Use connector facility to manage the lines between the &amp;quot;caption point&amp;quot; and the text &amp;amp;amp; frame.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.15 Common Drawing Shape Attributes ====&lt;br /&gt;
&lt;br /&gt;
===== Name =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument specification doesn't mention the interpretation or use of its draw:name attribute.&lt;br /&gt;
Probably it's a human-readable name used only in dialog boxes of editors for OpenDocument documents.&lt;br /&gt;
If so, then it can stay as draw:name, and can safely be ignored by most SVG user agents.&lt;br /&gt;
&lt;br /&gt;
===== Position =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying svg:x and svg:y attributes (though in some cases doesn't mention their interpretation; probably ignored); whereas the SVG 1.1 spec allows x and y attributes on only a few elements (typically those that don't otherwise specify their position).&lt;br /&gt;
&lt;br /&gt;
===== Size =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying a svg:width and/or svg:height attribute for many shapes, typically saying that these attributes &amp;quot;may&amp;quot; be ignored.  The SVG 1.1 standard does not allow specifying width or height attributes other than for rect, image, foreignObject, and a few other things (see http://www.w3.org/TR/SVG11/attindex.html).&lt;br /&gt;
&lt;br /&gt;
===== Unfinished: Transformation onwards =====&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3287</id>
		<title>OpenDocument SVG Correspondence</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3287"/>
		<updated>2005-02-01T03:17:58Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * 9.2.9 Connector&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Section 9.2 (pp275-) of the OpenDocument specification (available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office) is the most obviously related to SVG.&lt;br /&gt;
&lt;br /&gt;
=== 9.2 Drawing Shapes ===&lt;br /&gt;
==== 9.2.1 Rectangle ====&lt;br /&gt;
&lt;br /&gt;
draw:rect element: svg:rect (http://www.w3.org/TR/SVG11/shapes.html#RectElement)&lt;br /&gt;
&lt;br /&gt;
draw:corner-radius attribute: rx.  (OpenDocument has no equivalent of specifying both rx and ry, so we may forbid specifying ry in OpenDocument SVG fragments.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.2 Line ====&lt;br /&gt;
&lt;br /&gt;
draw:line element: svg:line (http://www.w3.org/TR/SVG11/shapes.html#LineElement)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.3 Polyline ====&lt;br /&gt;
&lt;br /&gt;
draw:polyline element: svg:polyline (http://www.w3.org/TR/SVG11/shapes.html#PolylineElement)&lt;br /&gt;
&lt;br /&gt;
svg:points attribute: points.  The OpenDocument specification is (at first glance at least) ambiguous as to whether coordinates can contain units, whereas the SVG spec disallows units.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.4 Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:polygon element: svg:polygon&lt;br /&gt;
&lt;br /&gt;
==== 9.2.5 Regular Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:regular-polygon element: svg:path supplemented by draw:blah attributes used as hints to editing programs (similar to the star tool in inkscape).&lt;br /&gt;
&lt;br /&gt;
(Note that svg:polygon doesn't in general suffice, because of the draw:sharpness attribute.)&lt;br /&gt;
&lt;br /&gt;
Consider hinting only what cannot be inferred from the path data, to reduce problems from conflicts between the path data and hints.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.6 Path ====&lt;br /&gt;
&lt;br /&gt;
draw:path element: svg:path.&lt;br /&gt;
&lt;br /&gt;
svg:d attribute: d.  (Though note the OpenDocument comment &amp;quot;Some implementations may only supports a subset of the SVG path specification, for instance no mixtures of open and closed curves for one shape, or no elliptical arc command.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.7 Circle ====&lt;br /&gt;
&lt;br /&gt;
draw:circle element: can use svg:circle if draw:kind=&amp;quot;full&amp;quot;; all kinds can be represented with svg:path.  (http://www.w3.org/TR/SVG11/paths.html#PathDataEllipticalArcCommands for the curved part).&lt;br /&gt;
&lt;br /&gt;
Note that in OpenDocument, its svg:cx and svg:cy attributes may be inferred from the position &amp;amp;amp; size attributes (see section 9.2.15 below), whereas in SVG 1.1 cx and cy each default to 0 if unspecified.&lt;br /&gt;
&lt;br /&gt;
In OpenDocument, absence of svg:r attribute means that the radius is to be calculated from the size attribute[*1], whereas SVG 1.1 requires an r attribute.&lt;br /&gt;
&lt;br /&gt;
[*1]: The specification actually says calculated from both size and position attributes, though I think position is irrelevant, whereas I'd guess that the svg:start-angle and svg:end-angle attributes are relevant.&lt;br /&gt;
The OpenDocument specification gives no further information about how to calculate radius.&lt;br /&gt;
&lt;br /&gt;
For converting between OpenDocument's start-angle,end-angle format to SVG's endpoint representation, see http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes, principally sections [http://www.w3.org/TR/SVG11/implnote.html#ArcConversionCenterToEndpoint F.6.4] and [http://www.w3.org/TR/SVG11/implnote.html#ArcConversionEndpointToCenter F.6.5].&lt;br /&gt;
&lt;br /&gt;
==== 9.2.8 Ellipse ====&lt;br /&gt;
&lt;br /&gt;
draw:ellipse element: Can use svg:ellipse if draw:kind=&amp;quot;full&amp;quot;; the more general case is as for draw:circle (see above) except for its svg:rx and svg:ry attributes instead of svg:r.&lt;br /&gt;
&lt;br /&gt;
OpenDocument allows svg:rx and svg:ry to be inferred from position &amp;amp;amp; size attributes, whereas the rx and ry attributes of svg:ellipse are required.&lt;br /&gt;
&lt;br /&gt;
(The OpenDocument spec has a typo saying svg:rx twice instead of &amp;quot;svg:rx and svg:ry&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.9 Connector ====&lt;br /&gt;
&lt;br /&gt;
draw:connector element: svg:path supplemented with hints for editor programs.&lt;br /&gt;
&lt;br /&gt;
The OpenDocument spec doesn't seem very specific about how draw:connector elements are rendered.  I didn't understand its &amp;quot;escapes&amp;quot; terminology.&lt;br /&gt;
&lt;br /&gt;
draw:{start,end}-{shape,glue-point} may be retained as editing hints.  (They should not affect positions of connectors, which would be fully specified in the path's d attribute.  This allows plain (OpenDocument-unaware) SVG renderers to render the document correctly.)&lt;br /&gt;
&lt;br /&gt;
draw:line-skew attribute: fully encoded in the path's d attribute.  (The behaviour of draw:line-skew isn't fully specified in the OpenDocument specification.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.15 Common Drawing Shape Attributes ====&lt;br /&gt;
&lt;br /&gt;
===== Name =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument specification doesn't mention the interpretation or use of its draw:name attribute.&lt;br /&gt;
Probably it's a human-readable name used only in dialog boxes of editors for OpenDocument documents.&lt;br /&gt;
If so, then it can stay as draw:name, and can safely be ignored by most SVG user agents.&lt;br /&gt;
&lt;br /&gt;
===== Position =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying svg:x and svg:y attributes (though in some cases doesn't mention their interpretation; probably ignored); whereas the SVG 1.1 spec allows x and y attributes on only a few elements (typically those that don't otherwise specify their position).&lt;br /&gt;
&lt;br /&gt;
===== Size =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying a svg:width and/or svg:height attribute for many shapes, typically saying that these attributes &amp;quot;may&amp;quot; be ignored.  The SVG 1.1 standard does not allow specifying width or height attributes other than for rect, image, foreignObject, and a few other things (see http://www.w3.org/TR/SVG11/attindex.html).&lt;br /&gt;
&lt;br /&gt;
===== Unfinished: Transformation onwards =====&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3286</id>
		<title>OpenDocument SVG Correspondence</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3286"/>
		<updated>2005-02-01T02:05:20Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * 9.8 ellipse&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Section 9.2 (pp275-) of the OpenDocument specification (available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office) is the most obviously related to SVG.&lt;br /&gt;
&lt;br /&gt;
=== 9.2 Drawing Shapes ===&lt;br /&gt;
==== 9.2.1 Rectangle ====&lt;br /&gt;
&lt;br /&gt;
draw:rect element: svg:rect (http://www.w3.org/TR/SVG11/shapes.html#RectElement)&lt;br /&gt;
&lt;br /&gt;
draw:corner-radius attribute: rx.  (OpenDocument has no equivalent of specifying both rx and ry, so we may forbid specifying ry in OpenDocument SVG fragments.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.2 Line ====&lt;br /&gt;
&lt;br /&gt;
draw:line element: svg:line (http://www.w3.org/TR/SVG11/shapes.html#LineElement)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.3 Polyline ====&lt;br /&gt;
&lt;br /&gt;
draw:polyline element: svg:polyline (http://www.w3.org/TR/SVG11/shapes.html#PolylineElement)&lt;br /&gt;
&lt;br /&gt;
svg:points attribute: points.  The OpenDocument specification is (at first glance at least) ambiguous as to whether coordinates can contain units, whereas the SVG spec disallows units.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.4 Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:polygon element: svg:polygon&lt;br /&gt;
&lt;br /&gt;
==== 9.2.5 Regular Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:regular-polygon element: svg:path supplemented by draw:blah attributes used as hints to editing programs (similar to the star tool in inkscape).&lt;br /&gt;
&lt;br /&gt;
(Note that svg:polygon doesn't in general suffice, because of the draw:sharpness attribute.)&lt;br /&gt;
&lt;br /&gt;
Consider hinting only what cannot be inferred from the path data, to reduce problems from conflicts between the path data and hints.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.6 Path ====&lt;br /&gt;
&lt;br /&gt;
draw:path element: svg:path.&lt;br /&gt;
&lt;br /&gt;
svg:d attribute: d.  (Though note the OpenDocument comment &amp;quot;Some implementations may only supports a subset of the SVG path specification, for instance no mixtures of open and closed curves for one shape, or no elliptical arc command.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.7 Circle ====&lt;br /&gt;
&lt;br /&gt;
draw:circle element: can use svg:circle if draw:kind=&amp;quot;full&amp;quot;; all kinds can be represented with svg:path.  (http://www.w3.org/TR/SVG11/paths.html#PathDataEllipticalArcCommands for the curved part).&lt;br /&gt;
&lt;br /&gt;
Note that in OpenDocument, its svg:cx and svg:cy attributes may be inferred from the position &amp;amp;amp; size attributes (see section 9.2.15 below), whereas in SVG 1.1 cx and cy each default to 0 if unspecified.&lt;br /&gt;
&lt;br /&gt;
In OpenDocument, absence of svg:r attribute means that the radius is to be calculated from the size attribute[*1], whereas SVG 1.1 requires an r attribute.&lt;br /&gt;
&lt;br /&gt;
[*1]: The specification actually says calculated from both size and position attributes, though I think position is irrelevant, whereas I'd guess that the svg:start-angle and svg:end-angle attributes are relevant.&lt;br /&gt;
The OpenDocument specification gives no further information about how to calculate radius.&lt;br /&gt;
&lt;br /&gt;
For converting between OpenDocument's start-angle,end-angle format to SVG's endpoint representation, see http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes, principally sections [http://www.w3.org/TR/SVG11/implnote.html#ArcConversionCenterToEndpoint F.6.4] and [http://www.w3.org/TR/SVG11/implnote.html#ArcConversionEndpointToCenter F.6.5].&lt;br /&gt;
&lt;br /&gt;
==== 9.8 Ellipse ====&lt;br /&gt;
&lt;br /&gt;
draw:ellipse element: Can use svg:ellipse if draw:kind=&amp;quot;full&amp;quot;; the more general case is as for draw:circle (see above) except for its svg:rx and svg:ry attributes instead of svg:r.&lt;br /&gt;
&lt;br /&gt;
OpenDocument allows svg:rx and svg:ry to be inferred from position &amp;amp;amp; size attributes, whereas the rx and ry attributes of svg:ellipse are required.&lt;br /&gt;
&lt;br /&gt;
(The OpenDocument spec has a typo saying svg:rx twice instead of &amp;quot;svg:rx and svg:ry&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.15 Common Drawing Shape Attributes ====&lt;br /&gt;
&lt;br /&gt;
===== Name =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument specification doesn't mention the interpretation or use of its draw:name attribute.&lt;br /&gt;
Probably it's a human-readable name used only in dialog boxes of editors for OpenDocument documents.&lt;br /&gt;
If so, then it can stay as draw:name, and can safely be ignored by most SVG user agents.&lt;br /&gt;
&lt;br /&gt;
===== Position =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying svg:x and svg:y attributes (though in some cases doesn't mention their interpretation; probably ignored); whereas the SVG 1.1 spec allows x and y attributes on only a few elements (typically those that don't otherwise specify their position).&lt;br /&gt;
&lt;br /&gt;
===== Size =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying a svg:width and/or svg:height attribute for many shapes, typically saying that these attributes &amp;quot;may&amp;quot; be ignored.  The SVG 1.1 standard does not allow specifying width or height attributes other than for rect, image, foreignObject, and a few other things (see http://www.w3.org/TR/SVG11/attindex.html).&lt;br /&gt;
&lt;br /&gt;
===== Unfinished: Transformation onwards =====&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3285</id>
		<title>OpenDocument SVG Correspondence</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3285"/>
		<updated>2005-02-01T01:58:19Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Circle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Section 9.2 (pp275-) of the OpenDocument specification (available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office) is the most obviously related to SVG.&lt;br /&gt;
&lt;br /&gt;
=== 9.2 Drawing Shapes ===&lt;br /&gt;
==== 9.2.1 Rectangle ====&lt;br /&gt;
&lt;br /&gt;
draw:rect element: svg:rect (http://www.w3.org/TR/SVG11/shapes.html#RectElement)&lt;br /&gt;
&lt;br /&gt;
draw:corner-radius attribute: rx.  (OpenDocument has no equivalent of specifying both rx and ry, so we may forbid specifying ry in OpenDocument SVG fragments.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.2 Line ====&lt;br /&gt;
&lt;br /&gt;
draw:line element: svg:line (http://www.w3.org/TR/SVG11/shapes.html#LineElement)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.3 Polyline ====&lt;br /&gt;
&lt;br /&gt;
draw:polyline element: svg:polyline (http://www.w3.org/TR/SVG11/shapes.html#PolylineElement)&lt;br /&gt;
&lt;br /&gt;
svg:points attribute: points.  The OpenDocument specification is (at first glance at least) ambiguous as to whether coordinates can contain units, whereas the SVG spec disallows units.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.4 Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:polygon element: svg:polygon&lt;br /&gt;
&lt;br /&gt;
==== 9.2.5 Regular Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:regular-polygon element: svg:path supplemented by draw:blah attributes used as hints to editing programs (similar to the star tool in inkscape).&lt;br /&gt;
&lt;br /&gt;
(Note that svg:polygon doesn't in general suffice, because of the draw:sharpness attribute.)&lt;br /&gt;
&lt;br /&gt;
Consider hinting only what cannot be inferred from the path data, to reduce problems from conflicts between the path data and hints.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.6 Path ====&lt;br /&gt;
&lt;br /&gt;
draw:path element: svg:path.&lt;br /&gt;
&lt;br /&gt;
svg:d attribute: d.  (Though note the OpenDocument comment &amp;quot;Some implementations may only supports a subset of the SVG path specification, for instance no mixtures of open and closed curves for one shape, or no elliptical arc command.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.7 Circle ====&lt;br /&gt;
&lt;br /&gt;
draw:circle element: can use svg:circle if draw:kind=&amp;quot;full&amp;quot;; all kinds can be represented with svg:path.  (http://www.w3.org/TR/SVG11/paths.html#PathDataEllipticalArcCommands for the curved part).&lt;br /&gt;
&lt;br /&gt;
Note that in OpenDocument, its svg:cx and svg:cy attributes may be inferred from the position &amp;amp;amp; size attributes (see section 9.2.15 below), whereas in SVG 1.1 cx and cy each default to 0 if unspecified.&lt;br /&gt;
&lt;br /&gt;
In OpenDocument, absence of svg:r attribute means that the radius is to be calculated from the size attribute[*1], whereas SVG 1.1 requires an r attribute.&lt;br /&gt;
&lt;br /&gt;
[*1]: The specification actually says calculated from both size and position attributes, though I think position is irrelevant, whereas I'd guess that the svg:start-angle and svg:end-angle attributes are relevant.&lt;br /&gt;
The OpenDocument specification gives no further information about how to calculate radius.&lt;br /&gt;
&lt;br /&gt;
For converting between OpenDocument's start-angle,end-angle format to SVG's endpoint representation, see http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes, principally sections [http://www.w3.org/TR/SVG11/implnote.html#ArcConversionCenterToEndpoint F.6.4] and [http://www.w3.org/TR/SVG11/implnote.html#ArcConversionEndpointToCenter F.6.5].&lt;br /&gt;
&lt;br /&gt;
==== 9.2.15 Common Drawing Shape Attributes ====&lt;br /&gt;
&lt;br /&gt;
===== Name =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument specification doesn't mention the interpretation or use of its draw:name attribute.&lt;br /&gt;
Probably it's a human-readable name used only in dialog boxes of editors for OpenDocument documents.&lt;br /&gt;
If so, then it can stay as draw:name, and can safely be ignored by most SVG user agents.&lt;br /&gt;
&lt;br /&gt;
===== Position =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying svg:x and svg:y attributes (though in some cases doesn't mention their interpretation; probably ignored); whereas the SVG 1.1 spec allows x and y attributes on only a few elements (typically those that don't otherwise specify their position).&lt;br /&gt;
&lt;br /&gt;
===== Size =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying a svg:width and/or svg:height attribute for many shapes, typically saying that these attributes &amp;quot;may&amp;quot; be ignored.  The SVG 1.1 standard does not allow specifying width or height attributes other than for rect, image, foreignObject, and a few other things (see http://www.w3.org/TR/SVG11/attindex.html).&lt;br /&gt;
&lt;br /&gt;
===== Unfinished: Transformation onwards =====&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3284</id>
		<title>OpenDocument SVG Correspondence</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3284"/>
		<updated>2005-02-01T01:36:38Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Path&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Section 9.2 (pp275-) of the OpenDocument specification (available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office) is the most obviously related to SVG.&lt;br /&gt;
&lt;br /&gt;
=== 9.2 Drawing Shapes ===&lt;br /&gt;
==== 9.2.1 Rectangle ====&lt;br /&gt;
&lt;br /&gt;
draw:rect element: svg:rect (http://www.w3.org/TR/SVG11/shapes.html#RectElement)&lt;br /&gt;
&lt;br /&gt;
draw:corner-radius attribute: rx.  (OpenDocument has no equivalent of specifying both rx and ry, so we may forbid specifying ry in OpenDocument SVG fragments.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.2 Line ====&lt;br /&gt;
&lt;br /&gt;
draw:line element: svg:line (http://www.w3.org/TR/SVG11/shapes.html#LineElement)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.3 Polyline ====&lt;br /&gt;
&lt;br /&gt;
draw:polyline element: svg:polyline (http://www.w3.org/TR/SVG11/shapes.html#PolylineElement)&lt;br /&gt;
&lt;br /&gt;
svg:points attribute: points.  The OpenDocument specification is (at first glance at least) ambiguous as to whether coordinates can contain units, whereas the SVG spec disallows units.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.4 Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:polygon element: svg:polygon&lt;br /&gt;
&lt;br /&gt;
==== 9.2.5 Regular Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:regular-polygon element: svg:path supplemented by draw:blah attributes used as hints to editing programs (similar to the star tool in inkscape).&lt;br /&gt;
&lt;br /&gt;
(Note that svg:polygon doesn't in general suffice, because of the draw:sharpness attribute.)&lt;br /&gt;
&lt;br /&gt;
Consider hinting only what cannot be inferred from the path data, to reduce problems from conflicts between the path data and hints.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.6 Path ====&lt;br /&gt;
&lt;br /&gt;
draw:path element: svg:path.&lt;br /&gt;
&lt;br /&gt;
svg:d attribute: d.  (Though note the OpenDocument comment &amp;quot;Some implementations may only supports a subset of the SVG path specification, for instance no mixtures of open and closed curves for one shape, or no elliptical arc command.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.15 Common Drawing Shape Attributes ====&lt;br /&gt;
&lt;br /&gt;
===== Name =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument specification doesn't mention the interpretation or use of its draw:name attribute.&lt;br /&gt;
Probably it's a human-readable name used only in dialog boxes of editors for OpenDocument documents.&lt;br /&gt;
If so, then it can stay as draw:name, and can safely be ignored by most SVG user agents.&lt;br /&gt;
&lt;br /&gt;
===== Position =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying svg:x and svg:y attributes (though in some cases doesn't mention their interpretation; probably ignored); whereas the SVG 1.1 spec allows x and y attributes on only a few elements (typically those that don't otherwise specify their position).&lt;br /&gt;
&lt;br /&gt;
===== Size =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying a svg:width and/or svg:height attribute for many shapes, typically saying that these attributes &amp;quot;may&amp;quot; be ignored.  The SVG 1.1 standard does not allow specifying width or height attributes other than for rect, image, foreignObject, and a few other things (see http://www.w3.org/TR/SVG11/attindex.html).&lt;br /&gt;
&lt;br /&gt;
===== Unfinished: Transformation onwards =====&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3283</id>
		<title>OpenDocument SVG Correspondence</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3283"/>
		<updated>2005-02-01T01:30:48Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * polygons.  Some work on Common Drawing Shape Attributes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Section 9.2 (pp275-) of the OpenDocument specification (available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office) is the most obviously related to SVG.&lt;br /&gt;
&lt;br /&gt;
=== 9.2 Drawing Shapes ===&lt;br /&gt;
==== 9.2.1 Rectangle ====&lt;br /&gt;
&lt;br /&gt;
draw:rect element: svg:rect (http://www.w3.org/TR/SVG11/shapes.html#RectElement)&lt;br /&gt;
&lt;br /&gt;
draw:corner-radius attribute: rx.  (OpenDocument has no equivalent of specifying both rx and ry, so we may forbid specifying ry in OpenDocument SVG fragments.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.2 Line ====&lt;br /&gt;
&lt;br /&gt;
draw:line element: svg:line (http://www.w3.org/TR/SVG11/shapes.html#LineElement)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.3 Polyline ====&lt;br /&gt;
&lt;br /&gt;
draw:polyline element: svg:polyline (http://www.w3.org/TR/SVG11/shapes.html#PolylineElement)&lt;br /&gt;
&lt;br /&gt;
svg:points attribute: points.  The OpenDocument specification is (at first glance at least) ambiguous as to whether coordinates can contain units, whereas the SVG spec disallows units.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.4 Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:polygon element: svg:polygon&lt;br /&gt;
&lt;br /&gt;
==== 9.2.5 Regular Polygon ====&lt;br /&gt;
&lt;br /&gt;
draw:regular-polygon element: svg:path supplemented by draw:blah attributes used as hints to editing programs (similar to the star tool in inkscape).&lt;br /&gt;
&lt;br /&gt;
Consider hinting only what cannot be inferred from the path data, to reduce problems from conflicts between the path data and hints.&lt;br /&gt;
&lt;br /&gt;
==== 9.2.15 Common Drawing Shape Attributes ====&lt;br /&gt;
&lt;br /&gt;
===== Name =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument specification doesn't mention the interpretation or use of its draw:name attribute.&lt;br /&gt;
Probably it's a human-readable name used only in dialog boxes of editors for OpenDocument documents.&lt;br /&gt;
If so, then it can stay as draw:name, and can safely be ignored by most SVG user agents.&lt;br /&gt;
&lt;br /&gt;
===== Position =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying svg:x and svg:y attributes (though in some cases doesn't mention their interpretation; probably ignored); whereas the SVG 1.1 spec allows x and y attributes on only a few elements (typically those that don't otherwise specify their position).&lt;br /&gt;
&lt;br /&gt;
===== Size =====&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying a svg:width and/or svg:height attribute for many shapes, typically saying that these attributes &amp;quot;may&amp;quot; be ignored.  The SVG 1.1 standard does not allow specifying width or height attributes other than for rect, image, foreignObject, and a few other things (see http://www.w3.org/TR/SVG11/attindex.html).&lt;br /&gt;
&lt;br /&gt;
===== Unfinished: Transformation onwards =====&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3282</id>
		<title>OpenDocument SVG Correspondence</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3282"/>
		<updated>2005-02-01T01:16:06Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Comment on width,height,x,y attributes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Section 9.2 (pp275-) of the OpenDocument specification (available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office) is the most obviously related to SVG.&lt;br /&gt;
&lt;br /&gt;
=== 9.2 Drawing Shapes ===&lt;br /&gt;
==== 9.2.1 Rectangle ====&lt;br /&gt;
&lt;br /&gt;
draw:rect element: svg:rect (http://www.w3.org/TR/SVG11/shapes.html#RectElement)&lt;br /&gt;
&lt;br /&gt;
draw:corner-radius attribute: rx.  (OpenDocument has no equivalent of specifying both rx and ry, so we may forbid specifying ry in OpenDocument SVG fragments.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.2 Line ====&lt;br /&gt;
&lt;br /&gt;
draw:line element: svg:line (http://www.w3.org/TR/SVG11/shapes.html#LineElement)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.3 Polyline ====&lt;br /&gt;
&lt;br /&gt;
draw:polyline element: svg:polyline (http://www.w3.org/TR/SVG11/shapes.html#PolylineElement)&lt;br /&gt;
&lt;br /&gt;
svg:points attribute: points.  The OpenDocument specification is (at first glance at least) ambiguous as to whether coordinates can contain units, whereas the SVG spec disallows units.&lt;br /&gt;
&lt;br /&gt;
The OpenDocument standard allows specifying a svg:width and/or svg:height attribute, but says that these &amp;quot;may&amp;quot; be ignored.  The SVG 1.1 standard does not allow specifying width or height attributes other than for rect, image, foreignObject, and a few other things (see http://www.w3.org/TR/SVG11/attindex.html).&lt;br /&gt;
&lt;br /&gt;
Similarly, the OpenDocument standard allows specifying svg:x and svg:y attributes (though doesn't mention their interpretation; probably ignored); whereas the SVG 1.1 spec allows x and y attributes on only a few elements (typically those that don't otherwise specify their position).&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3281</id>
		<title>OpenDocument SVG Correspondence</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3281"/>
		<updated>2005-02-01T01:05:42Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Line, Polyline&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Section 9.2 (pp275-) of the OpenDocument specification (available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office) is the most obviously related to SVG.&lt;br /&gt;
&lt;br /&gt;
=== 9.2 Drawing Shapes ===&lt;br /&gt;
==== 9.2.1 Rectangle ====&lt;br /&gt;
&lt;br /&gt;
draw:rect element: svg:rect (http://www.w3.org/TR/SVG11/shapes.html#RectElement)&lt;br /&gt;
&lt;br /&gt;
draw:corner-radius attribute: rx.  (OpenDocument has no equivalent of specifying both rx and ry, so we may forbid specifying ry in OpenDocument SVG fragments.)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.2 Line ====&lt;br /&gt;
&lt;br /&gt;
draw:line element: svg:line (http://www.w3.org/TR/SVG11/shapes.html#LineElement)&lt;br /&gt;
&lt;br /&gt;
==== 9.2.3 Polyline ====&lt;br /&gt;
&lt;br /&gt;
draw:polyline element: svg:polyline (http://www.w3.org/TR/SVG11/shapes.html#PolylineElement)&lt;br /&gt;
&lt;br /&gt;
svg:points attribute: points.  The OpenDocument specification is (at first glance at least) ambiguous as to whether coordinates can contain units, whereas the SVG spec disallows units.&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3280</id>
		<title>OpenDocument SVG Correspondence</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3280"/>
		<updated>2005-02-01T00:57:11Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Comment on ry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Section 9.2 (pp275-) of the OpenDocument specification (available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office) is the most obviously related to SVG.&lt;br /&gt;
&lt;br /&gt;
=== 9.2 Drawing Shapes ===&lt;br /&gt;
==== 9.2.1 Rectangle ====&lt;br /&gt;
&lt;br /&gt;
draw:rect element: svg:rect (http://www.w3.org/TR/SVG11/shapes.html#RectElement)&lt;br /&gt;
&lt;br /&gt;
draw:corner-radius attribute: rx.  (OpenDocument has no equivalent of specifying both rx and ry, so we may forbid specifying ry in OpenDocument SVG fragments.)&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3279</id>
		<title>OpenDocument SVG Correspondence</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_SVG_Correspondence&amp;diff=3279"/>
		<updated>2005-02-01T00:54:18Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * 9.2.1 correspondence&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Section 9.2 (pp275-) of the OpenDocument specification (available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office) is the most obviously related to SVG.&lt;br /&gt;
&lt;br /&gt;
9.2.1 Rectangle&lt;br /&gt;
&lt;br /&gt;
draw:rect element: svg:rect (http://www.w3.org/TR/SVG11/shapes.html#RectElement)&lt;br /&gt;
&lt;br /&gt;
draw:corner-radius attribute: rx&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_Proposal&amp;diff=3272</id>
		<title>OpenDocument Proposal</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_Proposal&amp;diff=3272"/>
		<updated>2005-02-01T00:24:28Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * archives of mailing list discussion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenDocument is a proposed standard office-type document format for use in the EU etc.; see http://www.groklaw.net/article.php?story=20050130002908154 for more detail.&lt;br /&gt;
&lt;br /&gt;
Currently it has its own custom format for graphics elements, similar to OpenOffice.org's Draw format, and also somewhat similar to SVG in some areas.&lt;br /&gt;
&lt;br /&gt;
Clearly it would be good both for SVG, Inkscape, and the success of the OpenDocument standard, if OpenDocument were to use SVG to the extent possible, such that any SVG-compliant renderer could render the &amp;lt;svg&amp;gt; parts of the document.&lt;br /&gt;
&lt;br /&gt;
(See also the inkscape-devel mailing list, subject &amp;quot;filter for inkscape and OpenDocument&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
The current OpenDocument specification is available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office .&lt;br /&gt;
&lt;br /&gt;
To send comments, either click the &amp;quot;Send a comment&amp;quot; button on the above-referenced web-page, or use the office-comment@lists.oasis-open.org mailing list.  Subscribe by sending the word &amp;quot;subscribe&amp;quot; in the body of mail to office-comment-request@lists.oasis-open.org.&lt;br /&gt;
&lt;br /&gt;
Archives are at http://lists.oasis-open.org/archives/office-comments/ ; similarly, archives of discussions between committee members are at http://lists.oasis-open.org/archives/office/ .&lt;br /&gt;
&lt;br /&gt;
From Daniel Carrera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
It is very important to get representation in the OASIS TC from multiple&lt;br /&gt;
interested parties. The goal is to make a format acceptable to everyone,&lt;br /&gt;
and that can only be done if people participate in the discussion.&lt;br /&gt;
&lt;br /&gt;
Also, right now they wer working on the next version of the format. The&lt;br /&gt;
one that'll meet all of the EU's requirements. And they are in the&lt;br /&gt;
official &amp;quot;request for public comentary&amp;quot; period until Friday. So, the best&lt;br /&gt;
time to raise a concern is right now. Send them a comment.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No-one has yet done so; please edit this wiki page to indicate your progress in seeing/joining this discussion.&lt;br /&gt;
&lt;br /&gt;
Something that may be helpful in getting greater SVG interoperability in the OpenDocument standard is to document what bits of the OpenDocument specification correspond to &amp;amp;amp; differ from SVG.  For example, this helps in changing any existing implementations of that part of the standard to use a more SVG-friendly replacement.  See [[OpenDocument SVG correspondence]].&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_Proposal&amp;diff=3276</id>
		<title>OpenDocument Proposal</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_Proposal&amp;diff=3276"/>
		<updated>2005-02-01T00:19:56Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Refer to new page OpenDocument SVG correspondence.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenDocument is a proposed standard office-type document format for use in the EU etc.; see http://www.groklaw.net/article.php?story=20050130002908154 for more detail.&lt;br /&gt;
&lt;br /&gt;
Currently it has its own custom format for graphics elements, similar to OpenOffice.org's Draw format, and also somewhat similar to SVG in some areas.&lt;br /&gt;
&lt;br /&gt;
Clearly it would be good both for SVG, Inkscape, and the success of the OpenDocument standard, if OpenDocument were to use SVG to the extent possible, such that any SVG-compliant renderer could render the &amp;lt;svg&amp;gt; parts of the document.&lt;br /&gt;
&lt;br /&gt;
(See also the inkscape-devel mailing list, subject &amp;quot;filter for inkscape and OpenDocument&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
The current OpenDocument specification is available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office .&lt;br /&gt;
&lt;br /&gt;
The discussion list for committee members is office@lists.oasis-open.org, though I don't yet know how to see archives of this list.&lt;br /&gt;
&lt;br /&gt;
To send comments, either click the &amp;quot;Send a comment&amp;quot; button on the above-referenced web-page, or use the office-comment@lists.oasis-open.org mailing list.  Subscribe by sending the word &amp;quot;subscribe&amp;quot; in the body of mail to office-comment-request@lists.oasis-open.org.&lt;br /&gt;
&lt;br /&gt;
From Daniel Carrera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
It is very important to get representation in the OASIS TC from multiple&lt;br /&gt;
interested parties. The goal is to make a format acceptable to everyone,&lt;br /&gt;
and that can only be done if people participate in the discussion.&lt;br /&gt;
&lt;br /&gt;
Also, right now they wer working on the next version of the format. The&lt;br /&gt;
one that'll meet all of the EU's requirements. And they are in the&lt;br /&gt;
official &amp;quot;request for public comentary&amp;quot; period until Friday. So, the best&lt;br /&gt;
time to raise a concern is right now. Send them a comment.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No-one has yet done so; please edit this wiki page to indicate your progress in seeing/joining this discussion.&lt;br /&gt;
&lt;br /&gt;
Something that may be helpful in getting greater SVG interoperability in the OpenDocument standard is to document what bits of the OpenDocument specification correspond to &amp;amp;amp; differ from SVG.  For example, this helps in changing any existing implementations of that part of the standard to use a more SVG-friendly replacement.  See [[OpenDocument SVG correspondence]].&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_Proposal&amp;diff=3275</id>
		<title>OpenDocument Proposal</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_Proposal&amp;diff=3275"/>
		<updated>2005-01-31T23:53:06Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Supply info on how to subscribe&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenDocument is a proposed standard office-type document format for use in the EU etc.; see http://www.groklaw.net/article.php?story=20050130002908154 for more detail.&lt;br /&gt;
&lt;br /&gt;
Currently it has its own custom format for graphics elements, similar to OpenOffice.org's Draw format, and also somewhat similar to SVG in some areas.&lt;br /&gt;
&lt;br /&gt;
Clearly it would be good both for SVG, Inkscape, and the success of the OpenDocument standard, if OpenDocument were to use SVG to the extent possible, such that any SVG-compliant renderer could render the &amp;lt;svg&amp;gt; parts of the document.&lt;br /&gt;
&lt;br /&gt;
(See also the inkscape-devel mailing list, subject &amp;quot;filter for inkscape and OpenDocument&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
The current OpenDocument specification is available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office .&lt;br /&gt;
&lt;br /&gt;
The discussion list for committee members is office@lists.oasis-open.org, though I don't yet know how to see archives of this list.&lt;br /&gt;
&lt;br /&gt;
To send comments, either click the &amp;quot;Send a comment&amp;quot; button on the above-referenced web-page, or use the office-comment@lists.oasis-open.org mailing list.  Subscribe by sending the word &amp;quot;subscribe&amp;quot; in the body of mail to office-comment-request@lists.oasis-open.org.&lt;br /&gt;
&lt;br /&gt;
From Daniel Carrera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
It is very important to get representation in the OASIS TC from multiple&lt;br /&gt;
interested parties. The goal is to make a format acceptable to everyone,&lt;br /&gt;
and that can only be done if people participate in the discussion.&lt;br /&gt;
&lt;br /&gt;
Also, right now they wer working on the next version of the format. The&lt;br /&gt;
one that'll meet all of the EU's requirements. And they are in the&lt;br /&gt;
official &amp;quot;request for public comentary&amp;quot; period until Friday. So, the best&lt;br /&gt;
time to raise a concern is right now. Send them a comment.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_Proposal&amp;diff=3274</id>
		<title>OpenDocument Proposal</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=OpenDocument_Proposal&amp;diff=3274"/>
		<updated>2005-01-31T23:43:38Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * First text, motivating work on this.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OpenDocument is a proposed standard office-type document format; see http://www.groklaw.net/article.php?story=20050130002908154 for its proposed use etc.&lt;br /&gt;
&lt;br /&gt;
Currently it has its own custom format for graphics elements, similar to OpenOffice.org's Draw format, and also somewhat similar to SVG in some areas.&lt;br /&gt;
&lt;br /&gt;
Clearly it would be good both for SVG, Inkscape, and the success of the OpenDocument standard, if OpenDocument were to use SVG to the extent possible, such that any SVG-compliant renderer could render the &amp;lt;svg&amp;gt; parts of the document.&lt;br /&gt;
&lt;br /&gt;
The current OpenDocument specification is available at http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office .&lt;br /&gt;
&lt;br /&gt;
At the end of its first page, you can see how to submit comments.  (See also the inkscape-devel mailing list, subject &amp;quot;filter for inkscape and OpenDocument&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
From Daniel Carrera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
You can leave a comment (click on &amp;quot;Send a comment&amp;quot;), join the TC, or&lt;br /&gt;
simply just join their mailing list and participate in the discussion. The&lt;br /&gt;
list is office@lists.oasis-open.org but I can't figure out how to&lt;br /&gt;
subscribe. I know you don't have to be a TC member to participate, as I&lt;br /&gt;
know of other people who aren't members and still contribute there.&lt;br /&gt;
&lt;br /&gt;
It is very important to get representation in the OASIS TC from multiple&lt;br /&gt;
interested parties. The goal is to make a format acceptable to everyone,&lt;br /&gt;
and that can only be done if people participate in the discussion.&lt;br /&gt;
&lt;br /&gt;
Also, right now they wer working on the next version of the format. The&lt;br /&gt;
one that'll meet all of the EU's requirements. And they are in the&lt;br /&gt;
official &amp;quot;request for public comentary&amp;quot; period until Friday. So, the best&lt;br /&gt;
time to raise a concern is right now. Send them a comment.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Inkscape&amp;diff=2387</id>
		<title>Inkscape</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Inkscape&amp;diff=2387"/>
		<updated>2005-01-31T23:33:04Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Add OpenDocument proposal link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Inkscape Wiki ==&lt;br /&gt;
This is a freeform area for Inkscape development and discussion.  &lt;br /&gt;
Curious about WikiSyntax?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table borfdhdder=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
=== About Inkscape ===&lt;br /&gt;
* [http://www.inkscape.org/ Inkscape Homepage]&lt;br /&gt;
* OtherProjects&lt;br /&gt;
* ArticlesAndPresentations&lt;br /&gt;
* TestimonialComments&lt;br /&gt;
&lt;br /&gt;
=== User Documentation ===&lt;br /&gt;
* ReleaseNotes for 0.41 and past&lt;br /&gt;
* PressRelease for 0.41 and past&lt;br /&gt;
* ArticleIntroducingInkscape0_40&lt;br /&gt;
* InkscapeTerminology&lt;br /&gt;
* UserManual&lt;br /&gt;
* TutorialIdeas&lt;br /&gt;
&lt;br /&gt;
=== Project Documentation === &lt;br /&gt;
* ProjectInfo&lt;br /&gt;
* CreatingDists: how to build packages&lt;br /&gt;
* WebsiteEditing&lt;br /&gt;
* UpdatingTrackerItems&lt;br /&gt;
* ScribusInteroperability&lt;br /&gt;
&lt;br /&gt;
=== Developer Documentation ===&lt;br /&gt;
* DeveloperManual&lt;br /&gt;
* CompilingInkscape&lt;br /&gt;
* WorkingWithCVS&lt;br /&gt;
* TranslationInformation&lt;br /&gt;
* HandlingPreferences:  creating and using preference values&lt;br /&gt;
* AddSPObject: how to add a new SPObject type&lt;br /&gt;
* ReprListeners: responding to XML doc changes&lt;br /&gt;
* DebuggingTips: random tips to help debug problems&lt;br /&gt;
* [[http://livarot.sourceforge.net/ Livarot]]: for boolean ops &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
=== User Interface Discussion ===&lt;br /&gt;
* AccessibleGraphics&lt;br /&gt;
* ObjectManager&lt;br /&gt;
* DialogsReorganization&lt;br /&gt;
* ModalInterfaces&lt;br /&gt;
* TextUsability: text tool /dialog dialog&lt;br /&gt;
* KeyboardShortcutsToDo&lt;br /&gt;
** KeyboardProfiles: how you can help &lt;br /&gt;
* StatusbarAPI&lt;br /&gt;
* [[Animation-(Timeline)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Development Discussion ===&lt;br /&gt;
* URGENT: [[OpenDocument proposal]]  Please help work on this before Feb 4!&lt;br /&gt;
* [[Roadmap]]: the main todo list&lt;br /&gt;
* NewFeatureProposals&lt;br /&gt;
* ExtensionArchitectureProposals&lt;br /&gt;
* [[Coding Style|Coding Style Discussion]]&lt;br /&gt;
* FileTypes&lt;br /&gt;
* [[Icons]] (Application + Interface)&lt;br /&gt;
* [[ApplicationIcons]] ( more application + interface )&lt;br /&gt;
* InkscapeColor&lt;br /&gt;
* [[PrintingSubsystem]]&lt;br /&gt;
* [[SVG Competitors Plan]] - M$ WVG vs SVG, etc&lt;br /&gt;
* [[SVG Tiny Compliance]]&lt;br /&gt;
* [[CSS Support]]&lt;br /&gt;
* OpenVG Standard (draft)&lt;br /&gt;
&lt;br /&gt;
=== Rearchitecture Discussion ===&lt;br /&gt;
* SubsystemRearchitecture&lt;br /&gt;
* CPlusPlus: Convert to C++&lt;br /&gt;
* [[Pangoification]]:  replace font rendering subsystem&lt;br /&gt;
* GtkMMification: replace C boilerplate with gtkmm objects&lt;br /&gt;
* PathRepresentation&lt;br /&gt;
&lt;br /&gt;
=== [[Galleries]] ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
* WikiAttic: pages that are no longer relevant but kept for historical value&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Sketch&amp;diff=4402</id>
		<title>Sketch</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Sketch&amp;diff=4402"/>
		<updated>2005-01-26T09:48:15Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Add section on tweening/blending&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please post links to screenshots and/or insights of this vector app. We must learn from others.&lt;br /&gt;
&lt;br /&gt;
=== Notable features ===&lt;br /&gt;
&lt;br /&gt;
* About the only scriptable free-software vector graphics program.&lt;br /&gt;
* Bézier curves, rectangles and ellipses can be used as guides.&lt;br /&gt;
* Text along path, with choice between rotation or vertical skew of glyphs.  (Inkscape has SVG text-on-path, which I think only allows rotation rather than skew.)  (However, I think someone was saying that Inkscape allowed better editing of the path or text afterwards.)&lt;br /&gt;
* Can blend between paths (morphing).&lt;br /&gt;
* Written mainly in Python.&lt;br /&gt;
* &amp;quot;Conical gradients&amp;quot; as well as the linear &amp;amp; radial gradients supported by SVG/Inkscape.&lt;br /&gt;
* Claims to support masking; I haven't looked at its interface.  (I believe Inkscape honours masking/clipping directives in SVG files, but has no user interface for this unless you count the boolean operations.)&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
[http://www.nongnu.org/skencil/Images/tiger.png screenshot showing layer dialog] has four toggle buttons for each layer: screen visibility; printing visibility (probably including visibility in exported bitmaps); lockedness; and a &amp;quot;show outline only&amp;quot; option.  Each layer can have its own colour used when show-out-line-only is on.&lt;br /&gt;
&lt;br /&gt;
There is a separate layer for guide objects/lines.  The layer's show-outline-only option is always on, the print option is always off, while the visibility and lockedness options remain togglable.&lt;br /&gt;
&lt;br /&gt;
The grid has its own layer too, unselectable, but useful as a consistent interface for controlling its visibility and the colour of the grid dots.  (It uses dots rather than lines for its grid representation.)  The grid layer is always locked an non-printing, while visibility and colour remain settable.&lt;br /&gt;
&lt;br /&gt;
Having a separate grid layer may help in Inkscape if we use njh's suggestion for having canvas controls to edit the grid.  This grid prototype is in experimental/grid-proto/&lt;br /&gt;
&lt;br /&gt;
=== Styles ===&lt;br /&gt;
&lt;br /&gt;
Skencil has a reasonable interface for named styles.  Individual objects can override properties assigned by styles, and there is an &amp;quot;Update style&amp;quot; command to copy those changes back to the style.&lt;br /&gt;
&lt;br /&gt;
There are some gaps in the interface: when creating a style, one can control whether the style controls line thickness, but I didn't see a way of changing that after creation.  There seem to be some inconsistencies about whether an object can belong to more than one style or not.&lt;br /&gt;
&lt;br /&gt;
Skencil style control certainly isn't as sophisticated as that offered by SVG/CSS, but we may borrow some things from it.&lt;br /&gt;
&lt;br /&gt;
(Inkscape doesn't support named styles, unless you count inheriting styles from parents, such as layer membership.)&lt;br /&gt;
&lt;br /&gt;
=== Tweening / Blending ===&lt;br /&gt;
&lt;br /&gt;
[Consider moving/copying this to its own wiki page discussing how to implement tweening in inkscape.]&lt;br /&gt;
&lt;br /&gt;
(N.B. This review of tweening is based on sketch 0.6, I haven't checked newer versions.)&lt;br /&gt;
&lt;br /&gt;
Good points:&lt;br /&gt;
* &amp;quot;Dynamic&amp;quot;: the mid-states are recomputed if you edit either of the end points.  (See also bad points &amp;amp;amp; limitations below.)&lt;br /&gt;
&lt;br /&gt;
* Some degree of specialisation when begin &amp;amp; end objects have the same type.  E.g. if the end objects are arcs/ellipses, then the tween states are arcs with interpolated start/end angles.&lt;br /&gt;
: I'd wondered whether it would be unintuitive/bad that tweening between some pairs of objects would give different tween states than if the objects had been converted to path, but I think skencil's behaviour is good: users can always explicitly convert to path if they wish.&lt;br /&gt;
&lt;br /&gt;
Bad points &amp;amp;amp; limitations:&lt;br /&gt;
&lt;br /&gt;
* Little control over the interpolation:&lt;br /&gt;
** Can only specify the end points, can't specify one's own mid states except by doing n-1 tween operations (over each adjacent pair of one's objects), which would have to be plain linear (staight line segment) interpolation rather than curving.&lt;br /&gt;
:: What would be really cool would be to allow editing the tween states it gives to create new custom mid states (and having all the non-customized tween states adapt to the new hint).&lt;br /&gt;
** Can't choose whether to interpolate positions or angles: e.g. if interpolating between two (analog) clock faces showing 12:00 and 12:25, then should all the tween states have the same length minute hand (tracing an arc around the clock), or should the end-point of the hand trace a straight line, thus shortening the minute hand towards the centre?&lt;br /&gt;
:: (You may notice that angular interpolation is ambiguous in that there's a short and a long way, and two equal ways if the angle is 180 degrees.  The same choice exists with SVG markers when choosing the &amp;quot;half way&amp;quot; angle.  The resolution in each case is to take the shorter path, choosing arbitrarily in the 180 degree case.  In the tweening case, the user can force the long route by specifying an in-between state.)&lt;br /&gt;
** Similarly, can't control colour interpolation.  (SVG allows specifying colour interpolation for gradients &amp;amp;amp; alpha compositing (http://www.w3.org/TR/SVG11/painting.html#ColorInterpolationProperties), though Inkscape doesn't currently implement this choice.  Interpolating in HSV space would be useful for tweening -- not to mention animation and gradients.&lt;br /&gt;
* Tween states between a rectangle and an ellipse were unexpected: e.g. they aren't symmetrical (except 180-degree rotational symmetry), and aren't convex.  I haven't looked into why; maybe just because the corresponding convert-to-path versions start &amp;amp;amp; end in different places.  If that is the only reason, then it can probably be fixed just by specializing the tweening for rectangle--ellipse pairs to use a different conversion to path than normal.&lt;br /&gt;
* I couldn't see how to &amp;quot;detach&amp;quot; the tween states (e.g. to edit them individually), other than by converting the whole lot to curves.&lt;br /&gt;
* Limitation to dynamicness: one can't change the number of mid-states after creating them.  (Presumably can easily be fixed given that the tween states can't be edited in skencil.)&lt;br /&gt;
* Similarly, one can't edit the proportion parameter of an individual tween state (like the stop proportion value in a gradient stop, a number from 0 to 1 indicating how similar to the begin or end state this tween state should be).&lt;br /&gt;
&lt;br /&gt;
If implementing in Inkscape, then note that SVG/SMIL animation involves a similar operation to tweening.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ellipses/Arcs: node editing ===&lt;br /&gt;
&lt;br /&gt;
Like Inkscape, Skencil uses one tool for circles, ellipses and arcs.&lt;br /&gt;
It uses the opposite convention for whether to show radial spokes (pacman, pie slice) or whether to show just the arc (with chord filling if filled): if the node tool is dragged outside of the corresponding ellipse, then it's a chord/pure arc in Skencil, whereas inside means pie slice / pacman.&lt;br /&gt;
&lt;br /&gt;
For unfilled shapes, I think Skencil's choice is better (partly because pure arcs are more common than pie slices when unfilled, so it's good to assign it the alternative that gives more control.&lt;br /&gt;
&lt;br /&gt;
For filled shapes, the argument of more-common-deserves-outside goes in Inkscape's favour.&lt;br /&gt;
&lt;br /&gt;
When editing the placement of the radial spokes, it's slightly more intuitive putting the mouse inside the ellipse; though this is a minor argument.&lt;br /&gt;
&lt;br /&gt;
=== Scriptability ===&lt;br /&gt;
&lt;br /&gt;
Can we use Inkscape plugins to access any sketch features?  Its web page says &amp;quot;many parts of Skencil can be used as a library (and are used by Skencil that way)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Areas where Inkscape is better to use than Skencil ===&lt;br /&gt;
&lt;br /&gt;
* Transparence in gradients.  (In fact skencil may not yet have transparence at all.)&lt;br /&gt;
* Better support for patterns.&lt;br /&gt;
* Better SVG support, as one would expect.  (SVG is a foreign format for Skencil.)&lt;br /&gt;
* Skencil stable version 0.6.x uses tk interface.  (Development version 0.7.x uses gtk.)&lt;br /&gt;
* Kerning (including vertical kerning, useful with/instead of text-on-path).&lt;br /&gt;
* Text-in-shape (textFlow); though this isn't yet well-supported in Inkscape.&lt;br /&gt;
* Boolean operations (combining &amp;amp; breaking apart shapes).&lt;br /&gt;
* Clones (dynamically-updated copies)&lt;br /&gt;
* I think skencil gradients may have only start &amp;amp;amp; end stops, whereas inkscape allows arbitrarily many mid stops.&lt;br /&gt;
* Inkscape has a few more exotic/weird tools (calligraphy pen, stars, spirals).&lt;br /&gt;
&lt;br /&gt;
=== Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[http://www.skencil.org/screenshots.html Official Screenshots]&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
[http://www.skencil.org/ official site]&lt;br /&gt;
&lt;br /&gt;
=== License ===&lt;br /&gt;
&lt;br /&gt;
LGPL&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=658</id>
		<title>CSS Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=658"/>
		<updated>2005-01-17T02:27:55Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * more info on user agent style sheet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Hack: Convert to style-less SVG ===&lt;br /&gt;
A short-term solution (hack) for style support would be an input filter that converts stylesheet-using documents to non-stylesheet-using documents.  cssanno.c (http://lists.w3.org/Archives/Public/www-archive/2004Jun/att-0001/cssanno.c or see google) does most of the work for this (for a generic XML document); the remainder of the work is to feed it a stylesheet by parsing the SVG document looking for &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements and fetching external stylesheets, and to change the outputted namespace from css: to svg:.&lt;br /&gt;
&lt;br /&gt;
Ideally change &amp;lt;tt&amp;gt;add_single_property&amp;lt;/tt&amp;gt; to ignore properties other than SVG ones.  I.e. add an array of names of SVG properties, and check whether &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; is in this list.  A linear search should be fine, I'd guess, and it's not too difficult to change it to a hash table or use a pre-coded binary search routine (whether glib or STL).&lt;br /&gt;
&lt;br /&gt;
=== libcroco ===&lt;br /&gt;
&lt;br /&gt;
Peter Moulder is looking at using libcroco from Inkscape.&lt;br /&gt;
&lt;br /&gt;
There are a number of aspects of the work, some of which Peter will need help with:&lt;br /&gt;
&lt;br /&gt;
* Modify libcroco selection stuff (cr-sel-eng.c) to allow us to use &amp;lt;tt&amp;gt;SPRepr&amp;lt;/tt&amp;gt; rather than maintaining a libxml copy of the entire tree.&lt;br /&gt;
: Partly done (not checked in).  The implementation is to provide a generic interface to nodes in a struct of function pointers (with names influenced by DOM).&lt;br /&gt;
: If we wish to, we could keep a copy of this modified cr-sel-eng.c in Inkscape, so that we can use current libcroco.&lt;br /&gt;
&lt;br /&gt;
* Parse &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; element content, gathering all rules (across possibly many &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements) into a single stylesheet.&lt;br /&gt;
: Progress so far: have an initial implementation of sp-style-elem.{cpp,h}.  (Not checked in.)&lt;br /&gt;
&lt;br /&gt;
* Ensure that this single stylesheet is updated whenever any of the &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements change (or are deleted or created etc.).&lt;br /&gt;
&lt;br /&gt;
* Similarly, ensure that the picture is refreshed when the stylesheet is changed.&lt;br /&gt;
&lt;br /&gt;
* Convert the simple user agent style sheet given at http://www.w3.org/TR/SVG11/styling.html#UAStyleSheet to libcroco structures (perhaps by passing strings to libcroco parsing functions) and store in &amp;lt;tt&amp;gt;desktop-&amp;amp;gt;style_cascade&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Modify style.cpp to query the stylesheet.  (Done but not checked in.)&lt;br /&gt;
&lt;br /&gt;
* There may be some work needed for &amp;quot;shorthand properties&amp;quot;, e.g. `&amp;lt;tt&amp;gt;marker&amp;lt;/tt&amp;gt;' is shorthand for modifying &amp;lt;tt&amp;gt;marker-start&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;marker-mid&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;marker-end&amp;lt;/tt&amp;gt; properties (http://www.w3.org/TR/SVG11/painting.html#MarkerProperty).  A non-SVG CSS example is `&amp;lt;tt&amp;gt;margin&amp;lt;/tt&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
==== Why can't we use the existing libxml interface to cr-sel-eng.c ? ====&lt;br /&gt;
&lt;br /&gt;
Some CSS selectors (http://www.w3.org/TR/REC-CSS2/selector.html) can express &amp;quot;is preceded by X&amp;quot; or &amp;quot;is a descendent of X&amp;quot; (where X can itself be similarly constrained recursively), so we'd pretty much need to maintain the entire document in libxml form if we want to use libcroco for CSS selectors.&lt;br /&gt;
&lt;br /&gt;
Suppose we want to find the style of node N.  We pass libcroco a stylesheet and ask it what rules apply to N.&lt;br /&gt;
If the stylesheet says &amp;quot;nodes that are preceded by a node that is preceded by a node that's a descendent of (... etc. ...) have red stroking&amp;quot; then libcroco needs to be able to navigate through the tree.&lt;br /&gt;
So we can't pass libcroco just a libxml version of node N, we need to fill in its parent and sibling links, providing a libxml node for a significant proportion of all nodes in the tree.&lt;br /&gt;
(Short of using hardware watchpoints to check access to the sibling/parent links and supply them lazily.)&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=657</id>
		<title>CSS Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=657"/>
		<updated>2005-01-17T02:25:02Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * typographical&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Hack: Convert to style-less SVG ===&lt;br /&gt;
A short-term solution (hack) for style support would be an input filter that converts stylesheet-using documents to non-stylesheet-using documents.  cssanno.c (http://lists.w3.org/Archives/Public/www-archive/2004Jun/att-0001/cssanno.c or see google) does most of the work for this (for a generic XML document); the remainder of the work is to feed it a stylesheet by parsing the SVG document looking for &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements and fetching external stylesheets, and to change the outputted namespace from css: to svg:.&lt;br /&gt;
&lt;br /&gt;
Ideally change &amp;lt;tt&amp;gt;add_single_property&amp;lt;/tt&amp;gt; to ignore properties other than SVG ones.  I.e. add an array of names of SVG properties, and check whether &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; is in this list.  A linear search should be fine, I'd guess, and it's not too difficult to change it to a hash table or use a pre-coded binary search routine (whether glib or STL).&lt;br /&gt;
&lt;br /&gt;
=== libcroco ===&lt;br /&gt;
&lt;br /&gt;
Peter Moulder is looking at using libcroco from Inkscape.&lt;br /&gt;
&lt;br /&gt;
There are a number of aspects of the work, some of which Peter will need help with:&lt;br /&gt;
&lt;br /&gt;
* Modify libcroco selection stuff (cr-sel-eng.c) to allow us to use &amp;lt;tt&amp;gt;SPRepr&amp;lt;/tt&amp;gt; rather than maintaining a libxml copy of the entire tree.&lt;br /&gt;
: Partly done (not checked in).  The implementation is to provide a generic interface to nodes in a struct of function pointers (with names influenced by DOM).&lt;br /&gt;
: If we wish to, we could keep a copy of this modified cr-sel-eng.c in Inkscape, so that we can use current libcroco.&lt;br /&gt;
&lt;br /&gt;
* Parse &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; element content, gathering all rules (across possibly many &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements) into a single stylesheet.&lt;br /&gt;
: Progress so far: have an initial implementation of sp-style-elem.{cpp,h}.  (Not checked in.)&lt;br /&gt;
&lt;br /&gt;
* Ensure that this single stylesheet is updated whenever any of the &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements change (or are deleted or created etc.).&lt;br /&gt;
&lt;br /&gt;
* Similarly, ensure that the picture is refreshed when the stylesheet is changed.&lt;br /&gt;
&lt;br /&gt;
* Create a user agent style sheet as required by http://www.w3.org/TR/SVG11/styling.html#UAStyleSheet&lt;br /&gt;
&lt;br /&gt;
* Modify style.cpp to query the stylesheet.  (Done but not checked in.)&lt;br /&gt;
&lt;br /&gt;
* There may be some work needed for &amp;quot;shorthand properties&amp;quot;, e.g. `&amp;lt;tt&amp;gt;marker&amp;lt;/tt&amp;gt;' is shorthand for modifying &amp;lt;tt&amp;gt;marker-start&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;marker-mid&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;marker-end&amp;lt;/tt&amp;gt; properties (http://www.w3.org/TR/SVG11/painting.html#MarkerProperty).  A non-SVG CSS example is `&amp;lt;tt&amp;gt;margin&amp;lt;/tt&amp;gt;'.&lt;br /&gt;
&lt;br /&gt;
==== Why can't we use the existing libxml interface to cr-sel-eng.c ? ====&lt;br /&gt;
&lt;br /&gt;
Some CSS selectors (http://www.w3.org/TR/REC-CSS2/selector.html) can express &amp;quot;is preceded by X&amp;quot; or &amp;quot;is a descendent of X&amp;quot; (where X can itself be similarly constrained recursively), so we'd pretty much need to maintain the entire document in libxml form if we want to use libcroco for CSS selectors.&lt;br /&gt;
&lt;br /&gt;
Suppose we want to find the style of node N.  We pass libcroco a stylesheet and ask it what rules apply to N.&lt;br /&gt;
If the stylesheet says &amp;quot;nodes that are preceded by a node that is preceded by a node that's a descendent of (... etc. ...) have red stroking&amp;quot; then libcroco needs to be able to navigate through the tree.&lt;br /&gt;
So we can't pass libcroco just a libxml version of node N, we need to fill in its parent and sibling links, providing a libxml node for a significant proportion of all nodes in the tree.&lt;br /&gt;
(Short of using hardware watchpoints to check access to the sibling/parent links and supply them lazily.)&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=656</id>
		<title>CSS Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=656"/>
		<updated>2005-01-17T02:23:36Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Note about shorthand properties such as marker&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Hack: Convert to style-less SVG ===&lt;br /&gt;
A short-term solution (hack) for style support would be an input filter that converts stylesheet-using documents to non-stylesheet-using documents.  cssanno.c (http://lists.w3.org/Archives/Public/www-archive/2004Jun/att-0001/cssanno.c or see google) does most of the work for this (for a generic XML document); the remainder of the work is to feed it a stylesheet by parsing the SVG document looking for &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements and fetching external stylesheets, and to change the outputted namespace from css: to svg:.&lt;br /&gt;
&lt;br /&gt;
Ideally change &amp;lt;tt&amp;gt;add_single_property&amp;lt;/tt&amp;gt; to ignore properties other than SVG ones.  I.e. add an array of names of SVG properties, and check whether &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; is in this list.  A linear search should be fine, I'd guess, and it's not too difficult to change it to a hash table or use a pre-coded binary search routine (whether glib or STL).&lt;br /&gt;
&lt;br /&gt;
=== libcroco ===&lt;br /&gt;
&lt;br /&gt;
Peter Moulder is looking at using libcroco from Inkscape.&lt;br /&gt;
&lt;br /&gt;
There are a number of aspects of the work, some of which Peter will need help with:&lt;br /&gt;
&lt;br /&gt;
* Modify libcroco selection stuff (cr-sel-eng.c) to allow us to use &amp;lt;tt&amp;gt;SPRepr&amp;lt;/tt&amp;gt; rather than maintaining a libxml copy of the entire tree.&lt;br /&gt;
: Partly done (not checked in).  The implementation is to provide a generic interface to nodes in a struct of function pointers (with names influenced by DOM).&lt;br /&gt;
: If we wish to, we could keep a copy of this modified cr-sel-eng.c in Inkscape, so that we can use current libcroco.&lt;br /&gt;
&lt;br /&gt;
* Parse &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; element content, gathering all rules (across possibly many &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements) into a single stylesheet.&lt;br /&gt;
: Progress so far: have an initial implementation of sp-style-elem.{cpp,h}.  (Not checked in.)&lt;br /&gt;
&lt;br /&gt;
* Ensure that this single stylesheet is updated whenever any of the &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements change (or are deleted or created etc.).&lt;br /&gt;
&lt;br /&gt;
* Similarly, ensure that the picture is refreshed when the stylesheet is changed.&lt;br /&gt;
&lt;br /&gt;
* Create a user agent style sheet as required by http://www.w3.org/TR/SVG11/styling.html#UAStyleSheet&lt;br /&gt;
&lt;br /&gt;
* Modify style.cpp to query the stylesheet.  (Done but not checked in.)&lt;br /&gt;
&lt;br /&gt;
* There may be some work needed for &amp;quot;shorthand properties&amp;quot;, e.g. &amp;lt;samp&amp;gt;&amp;lt;tt&amp;gt;marker&amp;lt;/tt&amp;gt;&amp;lt;/samp&amp;gt; is shorthand for modifying marker-start, marker-mid and marker-end properties (http://www.w3.org/TR/SVG11/painting.html#MarkerProperty).  A non-SVG CSS example is &amp;lt;samp&amp;gt;&amp;lt;tt&amp;gt;margin&amp;lt;/tt&amp;gt;&amp;lt;/samp&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Why can't we use the existing libxml interface to cr-sel-eng.c ? ====&lt;br /&gt;
&lt;br /&gt;
Some CSS selectors (http://www.w3.org/TR/REC-CSS2/selector.html) can express &amp;quot;is preceded by X&amp;quot; or &amp;quot;is a descendent of X&amp;quot; (where X can itself be similarly constrained recursively), so we'd pretty much need to maintain the entire document in libxml form if we want to use libcroco for CSS selectors.&lt;br /&gt;
&lt;br /&gt;
Suppose we want to find the style of node N.  We pass libcroco a stylesheet and ask it what rules apply to N.&lt;br /&gt;
If the stylesheet says &amp;quot;nodes that are preceded by a node that is preceded by a node that's a descendent of (... etc. ...) have red stroking&amp;quot; then libcroco needs to be able to navigate through the tree.&lt;br /&gt;
So we can't pass libcroco just a libxml version of node N, we need to fill in its parent and sibling links, providing a libxml node for a significant proportion of all nodes in the tree.&lt;br /&gt;
(Short of using hardware watchpoints to check access to the sibling/parent links and supply them lazily.)&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=655</id>
		<title>CSS Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=655"/>
		<updated>2005-01-17T02:07:30Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * More detail on progress&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Hack: Convert to style-less SVG ===&lt;br /&gt;
A short-term solution (hack) for style support would be an input filter that converts stylesheet-using documents to non-stylesheet-using documents.  cssanno.c (http://lists.w3.org/Archives/Public/www-archive/2004Jun/att-0001/cssanno.c or see google) does most of the work for this (for a generic XML document); the remainder of the work is to feed it a stylesheet by parsing the SVG document looking for &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements and fetching external stylesheets, and to change the outputted namespace from css: to svg:.&lt;br /&gt;
&lt;br /&gt;
Ideally change &amp;lt;tt&amp;gt;add_single_property&amp;lt;/tt&amp;gt; to ignore properties other than SVG ones.  I.e. add an array of names of SVG properties, and check whether &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; is in this list.  A linear search should be fine, I'd guess, and it's not too difficult to change it to a hash table or use a pre-coded binary search routine (whether glib or STL).&lt;br /&gt;
&lt;br /&gt;
=== libcroco ===&lt;br /&gt;
&lt;br /&gt;
Peter Moulder is looking at using libcroco from Inkscape.&lt;br /&gt;
&lt;br /&gt;
There are a number of aspects of the work, some of which Peter will need help with:&lt;br /&gt;
&lt;br /&gt;
* Modify libcroco selection stuff (cr-sel-eng.c) to allow us to use &amp;lt;tt&amp;gt;SPRepr&amp;lt;/tt&amp;gt; rather than maintaining a libxml copy of the entire tree.&lt;br /&gt;
: Partly done (not checked in).  The implementation is to provide a generic interface to nodes in a struct of function pointers (with names influenced by DOM).&lt;br /&gt;
: If we wish to, we could keep a copy of this modified cr-sel-eng.c in Inkscape, so that we can use current libcroco.&lt;br /&gt;
&lt;br /&gt;
* Parse &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; element content, gathering all rules (across possibly many &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements) into a single stylesheet.&lt;br /&gt;
: Progress so far: have an initial implementation of sp-style-elem.{cpp,h}.  (Not checked in.)&lt;br /&gt;
&lt;br /&gt;
* Ensure that this single stylesheet is updated whenever any of the &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements change (or are deleted or created etc.).&lt;br /&gt;
&lt;br /&gt;
* Similarly, ensure that the picture is refreshed when the stylesheet is changed.&lt;br /&gt;
&lt;br /&gt;
* Create a user agent style sheet as required by http://www.w3.org/TR/SVG11/styling.html#UAStyleSheet&lt;br /&gt;
&lt;br /&gt;
* Modify style.cpp to query the stylesheet.  (Done but not checked in.)&lt;br /&gt;
&lt;br /&gt;
==== Why can't we use the existing libxml interface to cr-sel-eng.c ? ====&lt;br /&gt;
&lt;br /&gt;
Some CSS selectors (http://www.w3.org/TR/REC-CSS2/selector.html) can express &amp;quot;is preceded by X&amp;quot; or &amp;quot;is a descendent of X&amp;quot; (where X can itself be similarly constrained recursively), so we'd pretty much need to maintain the entire document in libxml form if we want to use libcroco for CSS selectors.&lt;br /&gt;
&lt;br /&gt;
Suppose we want to find the style of node N.  We pass libcroco a stylesheet and ask it what rules apply to N.&lt;br /&gt;
If the stylesheet says &amp;quot;nodes that are preceded by a node that is preceded by a node that's a descendent of (... etc. ...) have red stroking&amp;quot; then libcroco needs to be able to navigate through the tree.&lt;br /&gt;
So we can't pass libcroco just a libxml version of node N, we need to fill in its parent and sibling links, providing a libxml node for a significant proportion of all nodes in the tree.&lt;br /&gt;
(Short of using hardware watchpoints to check access to the sibling/parent links and supply them lazily.)&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=654</id>
		<title>CSS Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CSS_Support&amp;diff=654"/>
		<updated>2005-01-17T01:39:18Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * first text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Hack: Convert to style-less SVG ===&lt;br /&gt;
A short-term solution (hack) for style support would be an input filter that converts stylesheet-using documents to non-stylesheet-using documents.  cssanno.c (see google) does most of the work for this (for a generic XML document); the remainder of the work is to feed it a stylesheet by parsing the SVG document looking for &amp;lt;tt&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/tt&amp;gt; elements and fetching external stylesheets, and to change the outputted namespace from css: to svg:.&lt;br /&gt;
&lt;br /&gt;
Ideally change &amp;lt;tt&amp;gt;add_single_property&amp;lt;/tt&amp;gt; to ignore properties other than SVG ones.  I.e. add an array of names of SVG properties, and check whether &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; is in this list.  A linear search should be fine, I'd guess, and it's not too difficult to change it to a hash table or use a pre-coded binary search routine (whether glib or STL).&lt;br /&gt;
&lt;br /&gt;
=== libcroco ===&lt;br /&gt;
&lt;br /&gt;
Peter Moulder is looking at using libcroco from Inkscape.  He expects to need help ensuring that updates happen properly (e.g. refreshing the picture when the stylesheet is edited from the XML editor).&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Inkscape&amp;diff=2376</id>
		<title>Inkscape</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Inkscape&amp;diff=2376"/>
		<updated>2005-01-17T01:33:14Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Add link to notes about CSS support&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Inkscape Wiki ==&lt;br /&gt;
&lt;br /&gt;
This is a freeform area for Inkscape development and discussion.  &lt;br /&gt;
Curious about WikiSyntax?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
=== About Inkscape ===&lt;br /&gt;
* [http://www.inkscape.org/ Inkscape Homepage]&lt;br /&gt;
* OtherProjects&lt;br /&gt;
* ArticlesAndPresentations&lt;br /&gt;
* TestimonialComments&lt;br /&gt;
&lt;br /&gt;
=== User Documentation ===&lt;br /&gt;
* ReleaseNotes for 0.41 and past&lt;br /&gt;
* PressRelease for 0.41 and past&lt;br /&gt;
* ArticleIntroducingInkscape0_40&lt;br /&gt;
* InkscapeTerminology&lt;br /&gt;
* UserManual&lt;br /&gt;
* TutorialIdeas&lt;br /&gt;
&lt;br /&gt;
=== Project Documentation === &lt;br /&gt;
* ProjectInfo&lt;br /&gt;
* CreatingDists: how to build packages&lt;br /&gt;
* WebsiteEditing&lt;br /&gt;
* UpdatingTrackerItems&lt;br /&gt;
* ScribusInteroperability&lt;br /&gt;
&lt;br /&gt;
=== Developer Documentation ===&lt;br /&gt;
* DeveloperManual&lt;br /&gt;
* CompilingInkscape&lt;br /&gt;
* WorkingWithCVS&lt;br /&gt;
* TranslationInformation&lt;br /&gt;
* HandlingPreferences:  creating and using preference values&lt;br /&gt;
* AddSPObject: how to add a new SPObject type&lt;br /&gt;
* ReprListeners: responding to XML doc changes&lt;br /&gt;
* DebuggingTips: random tips to help debug problems&lt;br /&gt;
* [[http://livarot.sourceforge.net/ Livarot]]: for boolean ops &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
=== User Interface Discussion ===&lt;br /&gt;
* AccessibleGraphics&lt;br /&gt;
* ObjectManager&lt;br /&gt;
* DialogsReorganization&lt;br /&gt;
* ModalInterfaces&lt;br /&gt;
* TextUsability: text tool /dialog dialog&lt;br /&gt;
* KeyboardShortcutsToDo&lt;br /&gt;
** KeyboardProfiles: how you can help &lt;br /&gt;
* StatusbarAPI&lt;br /&gt;
* [[Animation-(Timeline)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Development Discussion ===&lt;br /&gt;
* [[Roadmap]]: the main todo list&lt;br /&gt;
* NewFeatureProposals&lt;br /&gt;
* ExtensionArchitectureProposals&lt;br /&gt;
* [[Coding Style|Coding Style Discussion]]&lt;br /&gt;
* FileTypes&lt;br /&gt;
* [[Icons]] (Application + Interface)&lt;br /&gt;
* [[ApplicationIcons]] ( more application + interface )&lt;br /&gt;
* InkscapeColor&lt;br /&gt;
* [[PrintingSubsystem]]&lt;br /&gt;
* [[SVG Competitors Plan]] - M$ WVG vs SVG, etc&lt;br /&gt;
* [[SVG Tiny Compliance]]&lt;br /&gt;
* [[CSS Support]]&lt;br /&gt;
&lt;br /&gt;
=== Rearchitecture Discussion ===&lt;br /&gt;
* SubsystemRearchitecture&lt;br /&gt;
* CPlusPlus: Convert to C++&lt;br /&gt;
* [[Pangoification]]:  replace font rendering subsystem&lt;br /&gt;
* GtkMMification: replace C boilerplate with gtkmm objects&lt;br /&gt;
* PathRepresentation&lt;br /&gt;
&lt;br /&gt;
=== [[Galleries]] ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
* WikiAttic: pages that are no longer relevant but kept for historical value&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Animation-(Timeline)&amp;diff=25</id>
		<title>Animation-(Timeline)</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Animation-(Timeline)&amp;diff=25"/>
		<updated>2005-01-09T22:54:33Z</updated>

		<summary type="html">&lt;p&gt;PeterMoulder: * Mention Spalah Flash&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== User interface for timeline-based animation ===&lt;br /&gt;
&lt;br /&gt;
==== Existing animation programs (Free &amp;amp;amp; non-Free) ====&lt;br /&gt;
&lt;br /&gt;
* Macromedia Flash is a good non-Free example.&lt;br /&gt;
* F4L is a non-functional free-software mock-up of the Flash 4 interface.&lt;br /&gt;
* Moho as a gratis-but-non-free example. (Written in Java.) &lt;br /&gt;
* LimSee2 (http://wam.inrialpes.fr/software/limsee2/) is an excellent almost-free basis. (The web site claims open source, contradicted by the license which says no commercial use.)&lt;br /&gt;
* Spalah Flash (http://spalah.sourceforge.net/?p=10) (not to be confused with Spalah CMS) &amp;quot;is a GTK2/GNOME2 based application for generating Macromedia SWF and W3C SVG animations.&amp;quot;  I haven't looked at its GUI; can someone comment?&lt;br /&gt;
&lt;br /&gt;
==== Other thoughts ====&lt;br /&gt;
&lt;br /&gt;
It is suggested that there be basically two modes: Local (Object) mode and Global mode. Below is a picture showing a very rough design of the local mode:&lt;br /&gt;
http://www.inkscape.org/wiki_uploads/anim_gui1.png&lt;br /&gt;
&lt;br /&gt;
In local modes, all properties of the object editing will be shown on a timeline, and one can create and edit frame within the timeline. Then one may assign different value of that porpoties on different timeline, or make it change linearly, or inlinearly :)&lt;br /&gt;
&lt;br /&gt;
==== Fantavision example ====&lt;br /&gt;
Back in the '80's there was a program on Apple IIE (I believe) called &amp;quot;Fantavision&amp;quot;. It allowed one to create vector artwork (although I didn't understand at the time that that was what it was called) and animations. It allowed one to create frames of animation where you manually repositioned, recolored, scaled, rotated etc. the objects from one frame to the next. However, it then automatically interpolated frames between the 2 frames (the number of interpolated frames was configurable) such that it create a smooth transition of the object moving from one frame to the other. The effect was very similiar to the &amp;quot;Morphing&amp;quot; effect for raster graphics (popularized in a Michael Jackson video, I believe). That is, the system calculated the trajectory of &amp;quot;Key Points&amp;quot; of the objects from one frame to the next.&lt;br /&gt;
&lt;br /&gt;
I guess what I'm sayin is that I think a nice interface to create animations would be similiar. So to animate you would do the following:&lt;br /&gt;
&lt;br /&gt;
* Draw the initial SVG Image &lt;br /&gt;
&lt;br /&gt;
* Increment Frame (from say 1 to 20)&lt;br /&gt;
&lt;br /&gt;
* Reposition the elements in frame 20 (including scaling, color changes, adding removing objects, etc, etc, etc)&lt;br /&gt;
&lt;br /&gt;
* System would then calculate a trajectory for each key point from frame 1 to frame 20. Trajectories would be calculated for things like:&lt;br /&gt;
** Each &amp;quot;node&amp;quot; of an object&lt;br /&gt;
** Color &lt;br /&gt;
** Transformation Matrix&lt;br /&gt;
** etc&lt;br /&gt;
&lt;br /&gt;
* You could display/manipulate the trajectories (using the trajectory editor shown above by the original creator of this topic)&lt;br /&gt;
&lt;br /&gt;
* The system would then store the animations using SVG trajectories and the &amp;quot;Key Points&amp;quot; would be the frames you manually created&lt;br /&gt;
&lt;br /&gt;
:So, to create say a 100 frame animation, one might only need to manually create/modify 10 frames and the system would interpolate the addional frames as necessary.&lt;br /&gt;
&lt;br /&gt;
* Also, once the system interpolated frames it would allow you to manually modify the interpolated frames creating further &amp;quot;Key Points&amp;quot; and allow further refinement and interpolation.&lt;/div&gt;</summary>
		<author><name>PeterMoulder</name></author>
	</entry>
</feed>