libwmf is a library for reading vector images in Micros°ft's native Wind°ws Metafile Format (WMF) and for either (a) displaying them in, e.g., an X window; or (b) converting them to more standard/open file formats such as, e.g., the W3C's XML-based Scaleable Vector Graphic (SVG) format. Currently bindings exist for conversion to:
libwmf is officially alpha quality code, and is likely to stay that way, but is already usable and the Application Programming Interface (API) is approaching stability.
It is released under the GNU Lesser (Library) Public License (LGPL) which means that linking against the shared library is unrestricted. Note, however, that if/when the module system is implemented, certain modules may be available under different licenses - please refer to the module in question for licensing restrictions, if any.
Some simple utilities are included in the libwmf distribution for converting WMF files to the various output formats supported, the main intended use of the library is as a graphics import filter for word processors (release libwmf-0.2.0 is supported by release wv-0.6.5; wv is libwmf's sister project) and imaging applications (libwmf-0.2.2 and later are currently supported by ImageMagick; also, support for libwmf-0.2.* has been added into sodipodi). Already AbiWord uses wv as an import filter for MSW°rd documents (which often contain WMF images), and the grand plan is for AbiWord to use libwmf to convert WMF images to SVG.
libwmf-0.2.8 (a.k.a. 'leave dobey alone') released:
Well the interim release started a whole interim release series - 0.2.6, 0.2.7, even a 0.2.7-2 (whatever that was) - and now a 0.2.8. A lot of development code for writing metafiles (completely untested!) was added in 0.2.7, and one day I may find the enthusiasm to finish that up... 0.2.8 owes much to Dom - the Dom, yes - with the addition of a gdk-pixbuf loader - very cool!
libwmf-0.2.5 (a.k.a. 'Poly the ex-Parrot') released:
This is an interim release, largely unintended. libwmf-0.2.3 & 0.2.4 do not exist, so please don't go looking for them. Dr Livingstone tried, and you know what happened to him.
The major change is that libwmf now builds as two libraries:
Special thanks to Michal Jaegermann for teaching me how to write RPM spec files.
Finally, Bob Friesenhahn has done a lot of work getting ImageMagick to work with libwmf. For best possible rendering of WMF images, I recommend you use ImageMagick rather than the libwmf utilities.
While there have been some improvements to text placement and rendering in the X and gd layers, most changes are in the configuration. (It is now possible to build libwmf without any device layers, but this has not been tested extensively and is not recommended for general use.)
Special thanks to Bob Friesenhahn, Leonard Rosenthol, David C Sterratt and Tomasz Koczko.
Hopefully this release will build on Solaris. My apologies to everyone who had problems with libwmf-0.2.1.
In adherence with the ancient philosophy of `It's my birthday and I'll release if I want to,' today, August 22nd 2001, sees the release of libwmf-0.2.1, a.k.a. `The Inspector General's Nose'.
I was, in fact, tempted to call it version 0.3.0, but I've been calling it 0.2.1 for so many preview snapshots that, well, to do otherwise now would seem like a betrayal.
See README for release notes.
Having just taken over maintainership of libwmf from Martin Vermeer, I would like first of all to thank him (a) for all the work he's put in (despite claims to the contrary) to the project, and (b) for giving me this opportunity (good for my ego, good for my CV...).
I would like to thank Anil Madhavapeddy who has added libwmf2 to the OpenBSD ports collection.
Also, I would like to thank Michael Cree for his patience. CVS libwmf2 now builds & executes on Tru64, and the fig device layer is being given a good ironing.
At the moment I'm working on cleaning up the code and adding write-to-memory ability where possible, which means (unfortunately) that there will be a slight incompatibility between versions 0.2.0 & 0.2.1, but the API should stabilize at that point.
Also at the top of my TODO list is font work.
libwmf and her sibling wv form the wvWare project, which is hosted on SourceForge. The Project Summary has links to forums and e-mail list archives. If you have questions or encounter difficulties, or even if you're quite happily using libwmf, then please contact us (or me personally, if you prefer). I'm always happy to help - so long as you don't expect immediate results. (I do have a day job, after all!)
Harald Welte of gnumonks has made some RPMs of the libwmf-0.1.* series.
And Kees Zeelenberg keeps up-to-date Wind°ws ports of libwmf available as part of the GnuWin32 project.
libwmf is in CVS under the module name libwmf2, not libwmf which is the libwmf-0.1.* series and no longer in active development.
There's lots of stuff to do. The TODO file lists stuff that ought to have been done by now, particularly ROP and transparency and so on. Basically it's stuff that I consider non-critical - but, then, my interest is more in the programming than the end use. If you have specific concerns, then talk to me.
My personal goals are: best-possible WMF to SVG conversion, and importers for sodipodi and AbiWord; a more formal (less libwmf-specific) IPA (the API between the interpreter and the various device layers); a front end for GNOME; and a Cocoa/Quartz device layer and front end for Mac OS X. Not necessarily in that order.
Other plans that have been suggested for libwmf are (a) the ability to export to Wind°ws Metafile Format, and (b) support for Extended Metafile Format (EMF) and perhaps also Computer Graphics Metafile (CGM) format.
As you can see: Lots to do! Feel free to help out.
Export to PNG and JPEG uses Thomas Boutell's GD library. Font support in GD and in libwmf is provided by the FreeType library. Also deserving of credit are: allegro; Gdtclft; wine; and Bjorn Reese and Daniel Stenberg for trio.
Caolán McNamara was original author of libwmf, and although I have reworked much of it the core of the interpreter (i.e., the most important part) owes everything to Caolán.
Export to FIG format (readable/editable by xfig) was added by David Airlie, FrÚdÚric Vivien and Martin Vermeer.
Bob Friesenhahn linked libwmf into ImageMagick, so now you are able to convert WMF files to anything ImageMagick supports using the handy ImageMagick command syntax.
Other contributors include Raj Manandhar, Steven Michael Robbins, Bob Bell and Albert Chin. Also, Benjamin Geer, Peter Ohlerich, Steve Oney and Michael Cree have helped with debugging.
Finally, special thanks to Dom Lachowicz for all sorts of reasons.
This is Caolán's documentation on the Wind°ws Metafile Format, with descriptions of nearly every WMF operand.
Get some more info on the Wind°ws Metafile Format here.
Some documentation on libwmf, and the beginnings of an FAQ here.
|Francis James Franklin|
|Caolán McNamara (original author)|
The wvWare project is hosted on SourceForge.
View the Project Summary there.