sK1 team released a new version of UniConvertor, a free vector graphics converter. Here comes the review.

UniConvertor, the free vector graphics conversion tool, hasn't really been known to follow "release early, release often" policy. The newly released v1.1.5 is the first one since June 2009. We never covered UC before, so here is some background for you.

History of UniConvertor dates back to Libre Graphics Meeting 2007 in Montreal where sK1, free vector graphics editor, was presented to the audience for the first time. One of the key features of the editor was initial support for CDR importing. This particular functionality was considered too important to be available in just one application, and thus UniConvertor was born as a distributable part of sK1 that does just conversion between vector file formats.

Over the past three years UC gained support for more file formats and was adopted by Scribus and Inkscape — most popular free design and desktop publishing tools.

The new version comes with a number of important changes quite worth reviewing.

Internal changes

In the past months UniConvertor has gone through a series of significant internal changes. The new version is based on the sK1 0.9.1 engine that the team had been working for last year or so. This engine called sk1libs was created to ease syncing sK1 and UniConvertor and includes import/export filters, colour management code, PDF generator, font engine and file system utilities. Does it all matter for end-users? Actually, yes, and here is why.

First of all, all the latest and greatest in import/export filters is now automatically available in UniConvertor. While sK1 is number one test-bed for new file formats support, the ecosystem of free graphics design tools is much larger than that, and you really want latest changes available to you whether you are Inkscape or Scribus user.

Next thing is colour management. The existing implementation used to have a number of issues on various platforms because of Python bindings to LittleCMS. The team claims that the new, rewritten from scratch implementation (simply put, its own implementation of python-lcms) was designed with multiple platforms in mind and above all handles CMYK, RGB, Lab and Grayscale profiles transparently. And here is why colour management is important for UniConvertor:

The next change is font engine. If you ever used WMF importer from Inkscape that has been using UniConvertor since 0.46, you do remember not seeing text objects in the output and the swearing you heard from it will keep haunting you in the years coming. These were the remnants of old fonts related code in Skencil (on which sK1 is based, just to remind you).

The new font engine is much smarter: it allows using all fonts installed in your system, helps UniConvertor parsing font objects correctly when importing or exporting and has a built-in fallback mechanism for missing fonts.

The aforementioned new PDF generator is based on ReportLab and thus produces PDF documents of rather good quality on all supported platforms. The new engine does not depend on Reportlab, however. Instead it simply uses relevant bits of the package, because a) not all Linux distributions have ReportLab (e.g. OpenSuse 11.2) and b) ReportLab doesn't care desktop publishing needs, which makes things like CMYK bitmaps go sulking alone.

I can see how it makes sense for the team to customize existing code, so let's just hope that when they fix this, they do a backport of their changes to upstream ReportLab.

Apart from that alpha channel is now handled for flat fills and bitmaps.

Support for new file formats

The new version focuses on support for popular embroidery and cutting plotter file formats: PLT, DXF (which is often used by cutting plotters), DST (Design format (Tajima)), PES (Embroidery file format (Brother)), EXP (Embroidery file format (Melco)) and PCS (Design format (Pfaff home)).

Unfortunately as of this version images can be saved only to PLT. Which is probably not exactly bad, because in many cases you need fine control over output with live preview. And for this there already are solutions like InkCut.

Another thing worth noting here is that newly supported file formats are not recognized when you try to import images via Inkscape. It involves writing few simple extensions for Inkscape on the Inkscape's side, but for upcoming 0.48 it's probably too late.

User interface

One of the important additions to the new version is a simple graphical user interface that integrates with both standard Windows file manager and any Linux file manager that supports FreeDesktop specification, like Dolphin (KDE4) and Nautilus (GNOME):

When you choose this menu item, you see a very simple dialogue, where you can select an output file format and click "Convert" button to have a file created in the very same directory.

The output file will be names as file name + original extension + new extension. E.g. bl00012_.wmf from example above will become bl00012_.wmf.svg.

You also need to remember that depending on a file in question conversion might take quite a while. For example, a DXF file with nearly 15.000 objects took several minutes to process. Luckily there is a progress dialogue, so you can always see where you are:

You can also run the application from system menu on Linux (e.g. Applications > Graphics > UniConvertor in GNOME) and by running uniconvw.vbs command on Windows.

There is no support for batch conversion yet. It is a bugger, but there you go. The team promises to implement it in one of the next versions.

So you are user of Inkscape for Windows

UniConvertor has been Inkscape-friendly from day one, being started as a project at the request of Inkscape team back in the olden days (well, three years ago, actually, but it does feel like ages ago).

Windows version of Inkscape used to be shipped with internal copy of UniConvertor, since it contained its own copy of Python anyway. However this copy is ancient and broken. To make you Windows people happy and joyful UniConvertor now ships a small script that patches some files in Inkscape's installation so that Inkscape would use external standalone version of UniConvertor. If you want details, read a text document called "About Inkscape patch" accessible from UC's folder in the Start menu.

Future plans

As I was given to understand, root of all evil the reason for many issues in UniConvertor is in the inherited code from Skencil. So there will be another major rewrite of all filters. But fear not: the team with its hands on the Bible promises to change filters one by one, not all at once. Otherwise you would be knee deep in bugs, cursing the team, and who's the winner?

The first claimant for a rewrite is CDR et al. importer, since it's what is most interesting for sponsors of the project. Next will be SVG, AI and EPS. There also is some code for importing XAR (Xara Xtreme) documents already hanging around, which might spare Inkscape team some efforts.

Another feature you are interested in for sure is so called managed conversion, that is — each filter will have its own set of options accessible to users, like "Convert RGB colours to CMYK", "Convert all text objects to curves", "Use custom colour profiles" and so forth.

On a lighter note

And finally, let me make the sun shine brighter for you today: the next unstable version of Scribus is coming with a much better support for UniConvertor. How exactly better? You get previews in the file opener. Fancy!