SpecFXGExport

From Inkscape Wiki
Jump to navigation Jump to search

Summary

The goal of this extension is to provide an FXG format export from the File>Save AS dialog. Since Adobe has abandoned SVG support in its Flash applications, Flash developer need a way to create their drawings with Inkscape.

Release Note

Initial XSLT file done. Initial unit and global tests done.

Design

This export extension uses the XSLT extension system (already used by XAML export).

TODO

More tests. Some improvements (workarounds for gradients limitations?). Implement some of the FXG improvements to the XAML export.

Discussion

Known limitations

Some SVG features are not are partially supported by FXG. When possible, a workaround has been implemented in the export filter to render the missing features. Some elements that can't be created with Inkscape are not supported.

Root level and groups

  • [Partial] Limited support for nested SVG elements (the first one is converted to Graphics and the others to Groups).
  • [Not supported] Viewbox.

Defs

  • [Partial] Limited support for switch (always pass).
  • [Not supported] Use.
  • [Not supported] Markers.
  • [Not supported] Patterns.
  • [Not supported] Symbols.

Transforms

  • [Not supported] Skew.
  • [Not supported] Multiple values rotation (only the first one is converted).

Filters

  • [Partial] Support limited to blurs.

Gradients and color

  • [Not supported] Gradient positioning, shaping and transformation. They are currently centered and restricted to the object bounding box.
  • [Not supported] CurrentColor value not supported

Stroke

  • Mitterlimit doesn't give the same result.
  • [Not supported] Dasharrays and dashoffset.
  • [Not supported] Butt linecap.

Clip and mask

  • [Not supported] clipPathUnits="objectBoundingBox" and maskUnits="objectBoundingBox".
  • [Not supported] clipping and masking with text (workaround: convert text to path).

Text

  • [Partial] Text rotation (0, 90, 180 and 270 degrees only) -> not implemented.
  • [Partial] Font weight (normal and bold only) -> values under 500 are considered normal, the others bold.
  • [Partial] Whitespace handling, issues with xml:whitespace='preserve'.
  • [Not supported] Generic fonts.
  • [Not supported] Embedded fonts (in defs).
  • [Not supported] Character rotation.
  • [Not supported] Character positioning (x and y).
  • [Not supported] Text-anchor.
  • [Not supported] Text stroke.
  • [Not supported] flowRoot.

Shapes

  • [Not supported] Polygons.
  • [Not supported] Polylines.
  • [Not supported] Elliptical arc curve path commands (workaround: convert ellipse and circle to path first).

Images

  • [Not supported] Embedded images (base64).
  • [Not supported] Preserve ratio.

Other

  • [Partial] Limited support for layers blend mode.
  • [Not supported] Object title and description.
  • [Not supported] em, ex and % units (FXG only knows pixel values)
  • [Not supported] No RDF and metadata support.

Detailed tests

(from the official SVG1.1 test suite at http://www.w3.org/Graphics/SVG/WG/wiki/Test_Suite_Overview)

Colors

  • color-prop-01-b - CurrentColor value not supported
  • color-prop-03-t - Ok (except polygons, but unrelated to the color test)

coords

  • coords-coord-01-t - Ok
  • coords-coord-02-t - Ok
  • coords-trans-01-b - Skew not supported.
  • coords-trans-02-t - Ok.
  • coords-trans-03-t - Skew not supported.
  • coords-trans-04-t - Ok.
  • coords-trans-05-t - Ok.
  • coords-trans-06-t - Ok.
  • coords-units-01-b - Gradients transformation and positionning not supported (Full convertion to FXG would require some math)
  • coords-units-02-b - % positionning not supported
  • coords-units-03-b - em, ex and % not implemented
  • coords-viewattr-03-b - Viewbox not implemented

Filters

  • filters-gauss-01-b - Blurs work, but not rendered exactly as with SVG (blur bounding box not supported)

Masking

  • masking-mask-01-b - Ok (except font issue)
  • masking-opacity-01-b - Ok
  • masking-path-01-b - Ok
  • masking-path-02-b - clipPathUnits="objectBoundingBox" and *maskUnits="objectBoundingBox" not supported
  • masking-path-03-b - Viewbox not supported
  • masking-path-04-b - Clip with text doesn't work (but no compile error)

Painting

  • painting-fill-01-t - Ok
  • painting-fill-02-t - CurrentColor value not supported
  • painting-fill-03-t - Miter limit differs from SVG
  • painting-fill-04-t - Ok
  • painting-fill-05-t - Ok
  • painting-render-01-b - Ok
  • painting-stroke-01-t - Ok
  • painting-stroke-02-t - Ok
  • painting-stroke-03-t - Ok
  • painting-stroke-04-t - Dash-array and dash-offset not supported
  • painting-stroke-07-t - Miter limit differs from SVG

Path

  • paths-data-01-t - Ok
  • paths-data-02-t - Ok
  • paths-data-04-t - Ok
  • paths-data-05-t - Ok
  • paths-data-06-t - Ok
  • paths-data-07-t - Ok
  • paths-data-08-t - Ok
  • paths-data-09-t - Ok
  • paths-data-10-t - Partialy fails (with Open, join=round and cap=butt)
  • paths-data-12-t - Ok
  • paths-data-13-t - Ok
  • paths-data-14-t - Ok
  • paths-data-15-t - Ok

Pserver

  • pservers-grad-01-b - Ok (except gradient bbox)
  • pservers-grad-02-b - Partialy fails (radial gradient not fully supported)
  • pservers-grad-03-b - Patterns not supported
  • pservers-grad-04-b - Partialy fails (gradients not fully supported). Gradients color stops ok.
  • pservers-grad-05-b - Partialy fails (gradients not fully supported). Gradients color stops and opacity ok.
  • pservers-grad-06-b - Fails (gradient positioning and tranformation are very different in FXG)
  • pservers-grad-07-b - Ok (except gradient bbox)
  • pservers-grad-08-b - Gradient on text not supported
  • pservers-grad-09-b - Gradient units not supported
  • pservers-grad-10-b - Ok (but gradient bbox not...)
  • pservers-grad-11-b - Gradients not fully supported, gradient on text not supported
  • pservers-grad-12-b - Gradient bbox not supported
  • pservers-grad-13-b -> 15-b - Gradients not fully supported
  • pservers-grad-16-b - Ok
  • pservers-grad-17-b - Multiple values rotation not supported
  • pservers-grad-18-b - inherit value not supported
  • pservers-grad-19-b - inherit value not supported

Render

  • render-elems-01-t - Ok
  • render-elems-02-t - Ok
  • render-elems-03-t - !ENTITY support not implemented
  • render-elems-06-t (and following) - Glyphs (defs) support not implemented
  • render-groups-03-t - Ok (except glyphs)

Shapes

  • shapes-circle-01-t- Ok
  • shapes-circle-02-t - Ok
  • shapes-ellipse-01-t - Ok
  • shapes-ellipse-02-t - Stroke still shown when H or W is 0
  • shapes-intro-01-t - Stroke still shown when H or W is 0; Test position.
  • shapes-line-01-t - Ok
  • shapes-polygon-01-t - Not supported
  • shapes-polyline-01-t - Not supported
  • shapes-rect-01-t - Ok
  • shapes-rect-02-t - Stroke still shown when H or W is 0

Struct

  • struct-defs-01-t - Ok
  • struct-frags-01-t - Ok
  • struct-frags-02-t - Viewbox not supported
  • struct-group-01-t - Ok
  • struct-group-02-b - Multiple svg elements and viewbox not implemented
  • struct-group-03-t - Use not implemented in Inkscape (but could be changed into Library element in FXG).
  • struct-image-01-t - Ok
  • struct-image-04-t - Image embedding not supported
  • struct-image-06-t - PreserveRation not supported

Text

  • text-align-01-b - Text-anchor not supported
  • text-align-02-b - sub and super values reduce the font size
  • text-align-03-b - Text-anchor and span element positioning not supported
  • text-align-04-b - Text-anchor and span element positioning not supported
  • text-align-05-b - Text-anchor not supported, and ugly hack to make writing-mode work as expected (textRotation attribute added manualy)
  • text-align-06-b - Text-anchor not supported, and ugly hack to make

writing-mode work as expected (textRotation attribute added manualy)

  • text-align-08-b - SVG fonts not supported
  • text-deco-01-b - Ok (except text strokes, not supported)
  • text-fonts-01-t - Generic fonts not supported
  • text-fonts-02-t - Only supports Normal and Bold (values mapped)
  • text-fonts-03-t - Fonts from defs not supported
  • text-intro-01-t - Looks good (Chinese and Japanese not tested)
  • text-intro-02-b - Text direction doesn't work as expected
  • text-intro-03-b - Glyph orientation not implemented
  • text-intro-04-t - Looks good (Chinese and Japanese not tested)
  • text-intro-05-t - Text-anchor not supported
  • text-path-01-b - Text on path not supported
  • text-spacing-01-b - Letter and word spacing not supported
  • text-text-01-b - textLength and LengthAdjust not supported
  • text-text-03-b - Ok
  • text-text-04-t to text-text-06-t - Text-anchor not supported; multiple x and y values not supported.
  • text-text-07-t - Text rotation not supported
  • text-text-08-b - Text stroke (and thus text stroke opacity) not supported
  • text-tref-01-b - tref not supported
  • text-tselect-01-b - span positioning not supported
  • text-tspan-01-b - span positioning not supported
  • text-ws-01-t - Ok
  • text-ws-02-t - Almost working...

Other tests

(from the scour trunk: http://bazaar.launchpad.net/~scouring/scour/trunk/files/head%3A/fulltests/)

  • acid - Ok
  • appartment - Partial (gradients limitations and no flowRoot support)
  • boom - Ok
  • cgmail - elliptical arc curve commands not supported; almost ok after *convertion (gradients limitations)
  • Degri_Energy_Saving_Lightbulb - elliptical arc curve commands not supported; almost ok after convertion (gradients limitations)
  • dragonfly - Ok
  • gimp - elliptical arc curve commands not supported; almost ok after convertion (gradients limitations)