Scribus: Open Source Desktop Publishingby Howard Wen
Sometimes putting words to paper requires more than just a word processor. For designing and publishing newsletters, magazines, catalogs, and other printed pages that feature fonts (and graphics, photographs, or other images), a page layout application works best. Scribus is such a solution for Linux. While there are other desktop publishing (DTP) applications for Linux, based mostly on TeX and LaTex, Scribus sports a friendlier user interface and more features. In fact, it has evolved into a worthy competitor to the print industry's premier layout programs for the PC and Mac: PageMaker and QuarkXPress. Its development has also helped to advance the use of font typefaces and color management on Linux.
Notable features of Scribus version 1.2, released in August 2004, include:
- A robust, commercial-grade PDF export engine with capabilities exceeded only by Adobe's own Acrobat 6.0 Professional.
- A new high-performance, anti-aliased, WYSIWYG rendering engine for displaying the page canvas.
- An integrated story editor, which handles the application and editing of styles, with extensive Unicode support. Indic and Asian scripts are in progress.
- Excellent support for EPS, PS, and SVG import and export, allowing the editing of all imports as native Scribus objects.
- Exporting of CMYK separations and "press ready" PDF files, including PDF 1.4 features such as transparency and gradients.
- The ability to create fully ISO-compliant PDF/X-3 files.
- The ability to create fully interactive PDF forms, presentation effects, and encrypted PDFs.
- ICC color management with the littlecms color-management engine.
- Cross-platform Python scripting for extending functions and automating tasks in the program, and accessing external applications from within it. The Python scripter can control many facets of Scribus, including a font sampler script that demonstrates its capabilities.
- A fully documented, XML-based native file format.
For now, Scribus runs directly on Linux, HP-UX, Solaris, BSD, and Mac OS X (thanks to Fink), but an experimental port with KDE-Cygwin on Windows 2000 is in testing. Also for testing, Scribus has built on a 128-bit version of AIX. Scribus is available under the GNU General Public License.
"Quark was the model for the first versions of Scribus," acknowledges Franz Schmid, a 40-year-old invoice writer from Breitenfurt, Germany, who created Scribus. "I had a Mac and loved its desktop publishing applications. Soon after my first steps into Linux, I realized that there existed no user-friendly publishing package. So I decided to write my own."
Scribus undergoes rigorous real-world testing and use in professional mass-printing situations. Peter Linnell, one of its developers, works as a consultant specializing in prepress printing. "My most important client is a publisher," says the 40-year-old network consultant, who now lives in the United Kingdom. "They have been very supportive of my efforts with Scribus. Thus, I am able to test Scribus in a 'real' prepress environment."
Higher-Quality Text Output
The first version of Scribus used Python, with the Python bindings for Qt. Schmid says he chose Qt as the GUI toolkit because he felt it was the best one at the time (three years ago), with the most accurate documentation. As he added features, though, he concluded that Python had a few shortcomings. He switched to C++ to improve Scribus's speed.
"Looking back now, I still think that Python is a wonderful tool for quickly getting a mock-up running," Schmid says. "And translating Python code to C++ is very easy. When I ported Scribus to C++, there were huge chunks of code that needed only minor modifications."
Paul Johnson, a 33-year-old programmer from St. Helens, Merseyside, United Kingdom, who optimizes the Scribus code, feels that Scribus could have had better portability during its early stages of development. "Personally, I'd have gone for wxWidgets, as porting to other operating systems would have been less problematic," he opines.
The central technical challenge in developing Scribus has been bringing together the various libraries and code required to produce professional page layouts under Linux. "Scribus often pushes the capabilities of support libraries like freetype, Ghostscript, and even Qt," Linnell says. "Desktop publishing requires higher-quality output, whether we are referencing an image, font, or line drawing. What might be acceptable output in an office application could cost thousands [of dollars] if a press run is missed."
Fortunately for the Scribus team members, some of their most significant advancements came from the maturing of the outside libraries they incorporated into their own work. In desktop publishing, PostScript quality and reliability is critical, so improvements in the latest versions of Ghostscript show up in Scribus almost immediately. The evolution of littlecms over the years also had a noticeable positive effect on the program's color management.
"Littlecms has seen lots of real refinement," Linnell says. "Having a fully functional color-management system, which drops into Scribus, is a gift. Scribus is probably the best demonstration of littlecms's capabilities. We're encouraged to see the addition of littlecms to GIMP 2.0.x and have extended an invitation to other OSS applications like Inkscape to work with us on a common end-user setup and interface for any graphics application which wishes to add ICC color management."
Scribus can currently manipulate text in 25 languages. One might assume that this multilingual capability would have been difficult to implement, considering the multitude of fonts that the program must display and print correctly. Schmid says that creating the different versions of Scribus is very easy under Linux and especially Qt. Work is under way to support complex Indic scripts--a difficult task--and offer more complete CJK support.
"You only need a word/phrase list, which is translated into a small binary file. This binary file is loaded by the program at the start, and that's it," he explains. "Supporting this way of internationalization only needs three or four lines of code. The real work is done by the writers of these files."
More File Support and Ports
For versions of Scribus beyond 1.2, the developers' first priority is to perform code cleanup and further optimization. Some features on their to-add list include support for the PDF 1.5 file format, more file import filters (Draw, Impression, OpenOffice.org), an improved user interface for font handling, and the ability for users to drop OpenOffice directly into Scribus.
Regarding the Windows and Mac OS X ports, Linnell estimates Version 1.2cvs running on Windows 2000 with KDE-Cygwin has 75 to 80 percent functionality. "What works, really works well and is quite stable," he says. "I think we will see 100 percent functionality in the next few months. We have had some invaluable assistance from the KDE-Cygwin team. We also have a native port to Win32 in the works, but the biggest challenge is developer time constraints."
"A [direct] Mac OS X port is possible--I've had it running, but it took about half a day to get the code to compile and link," Johnson says. Even so, he doesn't recommend that others attempt the method he used to accomplish this, which he describes as "hacks upon hacks." He adds, "This is why something like wxWidgets would have possibly been a better choice [for developing Scribus]. wxWidgets compiling under Win32 or Mac OS X is very straightforward."
When Linnell joined the development team, he recalls, "right away, I saw Scribus had lots of potential." He relates how far Scribus has come since then: "When I tell prepress folks about Scribus and its capabilities, thus far, they are stunned to find it is developed primarily for Linux."
Pages: 1, 2