Synfig File format
A .sif file is the XML representation of a canvas. It holds the canvas's metadata, such as width and height, as well as information about its layers. Typically, a Synfig production comprises many .sif files joined in a sequence or nested within each other.
The .sif format is formidably complex and evolving. It is implementation-defined rather than spec-defined. Therefore, you should take everything on this page with a grain of salt. Indeed, the implementation can change at any point.
There are no plans to freeze the format.
Source code
The .sif format is implemented by the following file:
https://github.com/synfig/synfig/blob/master/synfig-core/src/synfig/loadcanvas.cpp
Concepts
Linking / Exporting
.sif files aren't always self-contained. They can link to parts of other .sif files, which creates a dependency of one on the other. This may seem strange to animators who use Flash because, in Flash, animation files are usually self-contained.
One drawback of Synfig's approach is that .sif dependencies are hard to track. A tool called RenderChan solves this problem.
Recursion
Recursion of .sif files is prohibited.
Compression
Synfig recognizes .sifz as the extension of gzip-compressed .sif files. New and alternate implementations of .sif are urged to support this compression, although it is not required.
<canvas>
Overview
The top element of a .sif file is always a <canvas>.
<?xml version="1.0"?>
<canvas version="0.1" width="300" height="350" xres="2952.7559"
yres="2952.7559" view-box="-1.5 2.5 1.5 -1" antialias="2"
fps="12" begin-time="0f" end-time="0f" bgcolor="0.5 0.5 0.5 1">
...
</canvas>
| Attribute | Default | What it is |
| version | no default, this attribute is required | 0.1, always |
| width | 480 | the width of the canvas in pixels |
| height | 270 | the height of the canvas in pixels |
| xres | 2835 | the width of the canvas in pixels per meter |
| yres | 2835 | the height of the canvas in pixels per meter |
| view-box | -4 2.25 4 -2.25 | the bounding coordinates of the canvas (left top right bottom) |
| antialias | 2 | how hard Synfig should try to antialias the image |
| fps | 24 | frames per second |
| begin-time | 0 | where on the timetrack should rendering start |
| end-time | 0 | what on the timetrack should rendering end |
| bgcolor | 0.5 0.5 0.5 1.0 | the color of the background in RGBA |
| focus | 0 0 | the anchor point for changing the view-box |
Inside a <canvas> you can find the following elements:
- <name>
- <meta>
- <author>
- <desc>
- <layer>
- <defs>
- <bones>
- <keyframe>
<name>
The short name of the canvas.
<canvas version="0.1">
...
<name>Aqua Sphere</name>
...
</canvas>
<meta>
Metadata for the Synfig Studio editor. These can be safely ignored by other implementations.
<canvas version="0.1">
...
<meta name="grid_show" content="1" />
...
</canvas>
Synfig Studio recognizes these <meta> names (source):
- grid_size
- grid_color
- grid_snap
- grid_show
- onion_skin
- onion_skin_past
- onion_skin_future
- guide_color
- guide_snap
- guide_show
- guide_x
- guide_y
- sketch
- solid_lines
- background_size
- background_first_color
- background_second_color
<author>
The name of the canvas's author.
<canvas version="0.1">
...
<author>King Arthur</author>
...
</canvas>
<desc>
A human-readable description of the canvas.
<canvas version="0.1">
...
<desc>This aqua-colored sphere reminds me of something from Mac OS X.</desc>
...
</canvas>
<layer>
Overview
Layers describe the shapes and effects on a canvas.
<canvas version="0.1">
...
<layer type="solid_color" version="0.1"
...
</canvas>
| Attribute | Default | What it is |
| type | no default | see the list of types |
| version | no default | depends on the layer type |
| group | the name of the group that this layer belongs to | |
| desc | a human-readable description | |
| active | true | whether the layer is selected (?) |
| exclude_from_rendering | false | whether it should be rendered |
