Scribus: Open Source Desktop Publishing

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.

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."