Yes, it’s true, Cairo 1.10 has been finally released. Chris already summarized two years of development in 60 lines, so I’m going to talk about how this release affects to Evince/Poppler.
Cairo 1.10 has some new operators inspired by PDF blend modes, that allowed us to easily implement PDF blend modes in the poppler cairo backend
|PDF Blend Modes
Here is an example of a PDF document combining the use of Multiply blend mode with gradients
|Scooby gradient rendered by poppler with Cairo 1.8
|Scooby gradient rendered by poppler with Cairo 1.10
|Scooby gradient rendered by xpdf
Blend modes are also important for annotations, since highlight annotations are usually implemented by using the Multiply blend mode
There were some PDF documents where the performance of the poppler cairo backend was really bad. It seems that, with such particular documents, poppler was clipping too much. Of course, Chris fixed it, see the screenshot:
|Poppler with cairo 1.8 and 1.10
Output file size when printing
Thanks to cairo_surface_set_mime_data now we can attach the original uncompressed image to the ps/pdf surface that will be used when creating the resulting ps/pdf file. It drastically reduces the size of the ps/pdf output files created when printing documents that contain images
Fit to contents/Trim margins
This hasn’t been implemented in Evince yet, but using the new recording surface we can get the page bounding box and use it to implement a new fit to contents zoom mode.
Thank you very much to everybody involved in this release
It’s not a surprise that libspectre was thought to be used mainly (but not only) by evince and okular. I’ve just committed a patch to evince to use libspectre when it’s present, otherwise falling back to gs. I haven’t removed the old gs code because libspectre is still too new and it’s not yet shipped by distros.
There are many many advantages of using libspectre in evince, some of them:
- One of the most important advantages is probably that it’s noticeable faster.
- Postscript printing improvements: print as PDF, multiple copies (bug #443859), reverse and collate are now supported.
- Page labels
- PS specials support in dvi documents (bug #386005)
- Other bugs fixed: #317106, #499787, #501235, #421879, #445797, #486547
A new libspectre release 0.1.0 is now available.
This is the first public release of libspectre
What is libspectre
libspectre is a small library for rendering Postscript documents.
It provides a convenient easy to use API for handling and rendering Postscript documents.
libspectre is free software and is available to be redistributed and/or modified under the terms
of the GNU General Public License as published by the Free Software Foundation; either version 2,
or (at your option) any later version.
More information about libspectre
Web site: http://libspectre.freedesktop.org/
The programming manual: http://libspectre.freedesktop.org/manual
Bug reports and feedback: https://bugs.freedesktop.org/ Product: libspectre
The full announcement is available here