news 28 Posted August 11, 2008 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 A new cairo snapshot 1.7.2 is now available from: http://cairographics.org/snapshots/cairo-1.7.2.tar.gz'>http://cairographics.org/snapshots/cairo-1.7.2.tar.gz which can be verified with: http://cairographics.org/snapshots/cairo-1.7.2.tar.gz.sha1 29569943dad4a4e5bbe16495404288a466e1bd0f cairo-1.7.2.tar.gz http://cairographics.org/snapshots/cairo-1.7.2.tar.gz.sha1.asc (signed by Behdad Esfahbod) Additionally, a git clone of the source tree: git clone git://git.cairographics.org/git/cairo will include a signed 1.7.2 tag which points to a commit named: 057a832f9e806f9321648e47ee314a62e82e6ba4 which can be verified with: git verify-tag 1.7.2 and can be checked out with a command such as: git checkout -b build 1.7.2 Release 1.7.2 (2008-08-11 Behdad Esfahbod ) ============================================================== The cairo community is finally ready to announce availability of the 1.7.2 snapshot of the cairo graphics library. This is embarrissingly the first snapshot in the 1.7 unstable series of cairo, leading to the eventual release of cairo 1.8, currently planned for late September. This snapshot comes four months after the 1.6.4 release. We have done a really bad job on getting development stapshots out this cycle, but hopefully all the API changes for 1.8 are now finished and the remaining weeks will be spent on bug-fixing. There is more than 400 commits worth of changes in this snapshot, and those can use some testing. Read on! Text, text, and more text! - -------------------------- The dominant theme of this release, and 1.8 in general, is improvements around cairo text API. Here is a high-level list of changes with text handling: User fonts - ---------- This is new API allowing the user of cairo API to provide drawings for glyphs in a font. This is most useful in implementing fonts in non-standard formats, like SVG fonts and Flash fonts, but can also be used by games and other applications to draw "funky" fonts. See test/user-font.c and test/user-font-proxy.c for usage examples. This is based on early work by Kristian Høgsberg. Thanks Kristian! show_text_glyphs - ---------------- This new API allows the caller of cairo to mark text glyphs with their original text. The PDF backend implements this new API and latest Pango master uses it. The result is (when bugs are fixed) that complex text can be copied out of pangocairo's PDF output correctly and reliably. There are bugs to fix though. A few poppler bugs, and some more in cairo and pango. To test show_text_glyph, just grab pango master and this cairo snapshot and print text in gedit. Open in acroread or evince, select all, copy, paste in gedit and compare. The Arabic text with diacritic marks is particularly showing bad. Try with pango/pango-view/HELLO.txt if you are brave enough. The Indic text is showing improvements, but is still coming out buggy. LCD subpixel filtering using FreeType - ------------------------------------- FreeType 2.3.5 added support for various LCD subpixel filtering, and fontconfig 2.6.0 added support for configuring LCD filter on a font by font basis. Cairo now relies on FreeType and fontconfig for subpixel filtering. This work is based on David Turner's original patch to cairo, maintained and tested by Sylvain Pasche and others. Thanks all! Toy font face constructor and getter - ------------------------------------ Mostly for API completion, but also useful for higher level (like Pango) to hook into what the user has set using cairo_select_font_face(), making that toy API a bit more useful. FreeType: respecting FC_FT_FACE - ------------------------------- Previously it was impossible to instruct cairo to do emboldening on a font face object created from an FT_Face. Cairo now respects and uses the FC_FT_FACE fontconfig pattern element, so emboldening can be achieved by using cairo_ft_font_face_create_for_pattern() and a carefully crafted pattern using FC_FT_FACE and FC_EMBOLDEN. PS/PDF: More efficient output - ----------------------------- Adrian Johnson has been busy fixing all kinds of bugs in PS and PDF backends, as well making them generate much more compact output by avoiding things like re-emitting the color or linestyle on every drawing operation. Thanks Adrian! Xlib: Dithering - --------------- Cairo now does simple dithering when rendering to legacy X servers. This is mostly visible with 8-bit visuals. Xlib: Avoid rendering glyphs out of surface bounds - -------------------------------------------------- This seemingly harmless change manifested a bug with OpenOffice.org 3 versions where OO.o was passing bogus surface extents to cairo, resulting in no text rendered in OO.o. Please contact your distro's OO.o maintainers if you see this bug and point them to the following URL: https://bugs.freedesktop.org/show_bug.cgi?id=16209 Xlib: Improved performance with Xrender-less X servers - ------------------------------------------------------ Cairo now performs better on remote, Xrender-less X servers by being smarter about using X core protocol facilities instead of falling back to doing all rendering on the client side. Directfb: backend improvements - ------------------------------ The directfb backend, though still unsupported, has seen a good deal of improvements. Thanks Vlad! Bug fixing and optimizations - ---------------------------- Countless bugs have been fixed and optimizations made, many of them thanks to Chris Wilson. Thanks Chris! API additions - ------------- cairo_show_text_glyphs This is a new text rendering API. Being a more advanced version of cairo_show_glyphs(), it is aimed for use by higher-level text toolkits like Pango, and enables better text extraction from output generated by backends like PDF and SVG. The PDF backend already implements it, and the upcoming Pango release will use it. To make that API work, a bunch of other additions were made: cairo_glyph_allocate cairo_glyph_free cairo_text_cluster_t cairo_text_cluster_allocate cairo_text_cluster_free cairo_has_show_text_glyphs cairo_user_font_face_create This is the "user" font face constructor, accompanied by a variety of method signatures, getters, and setters for a callback-based font backend: CAIRO_FONT_TYPE_USER cairo_user_scaled_font_init_func_t cairo_user_scaled_font_render_glyph_func_t cairo_user_scaled_font_text_to_glyphs_func_t cairo_user_scaled_font_unicode_to_glyph_func_t cairo_user_font_face_set_init_func cairo_user_font_face_set_render_glyph_func cairo_user_font_face_set_text_to_glyphs_func cairo_user_font_face_set_unicode_to_glyph_func cairo_user_font_face_get_init_func cairo_user_font_face_get_render_glyph_func cairo_user_font_face_get_text_to_glyphs_func cairo_user_font_face_get_unicode_to_glyph_func cairo_scaled_font_text_to_glyphs We were previously reluctant to provide this function as text-to-glyphs support in cairo was limited to "toy" font functionality, not really interesting for real-world text processing. However, with user-fonts landing, this API is needed to expose full access to how user-fonts convert text to glyphs. This is expected to be used by text toolkits like Pango, as well as "proxy" user-font implementations. cairo_lcd_filter_t cairo_font_options_set_lcd_filter cairo_font_options_get_lcd_filter These add the possibility to choose between various available LCD subpixel filters. The available filter values are modeled after what FreeType provides. cairo_toy_font_face_create cairo_toy_font_face_get_family cairo_toy_font_face_get_slant cairo_toy_font_face_get_weight These provide access to functionality and settings provided by cairo_select_font_face(). cairo_scaled_font_get_scale_matrix cairo_surface_get_fallback_resolution For API completeness. Various new values for cairo_status_t enum Known issues: - - Type3 fonts generated by cairo's PDF backend may show up in poppler/Evince in a different color than expected. This is fixed in poppler master branch. This mostly affects cairo user fonts. The test case test/user-font.c demonstrates this. - - User fonts using other fonts in their rendering are currently embedded in PDF as fallback bitmap glyphs. This will be (hopefully) fixed before 1.8. The test case test/user-font-proxy.c demonstrates this. What is cairo ============= Cairo is a 2D graphics library with support for multiple output devices. Currently supported output targets include the X Window System, quartz, win32, and image buffers, as well as PDF, PostScript, and SVG file output. Experimental backends include OpenGL (through glitz), XCB, BeOS, OS/2, and DirectFB. Cairo is designed to produce consistent output on all output media while taking advantage of display hardware acceleration when available (for example, through the X Render Extension). The cairo API provides operations similar to the drawing operators of PostScript and PDF. Operations in cairo include stroking and filling cubic Bézier splines, transforming and compositing translucent images, and antialiased text rendering. All drawing operations can be transformed by any affine transformation (scale, rotation, shear, etc.). Cairo has been designed to let you draw anything you want in a modern 2D graphical user interface. At the same time, the cairo API has been designed to be as fun and easy to learn as possible. If you're not having fun while programming with cairo, then we have failed somewhere---let us know and we'll try to fix it next time around. Cairo is free software and is available to be redistributed and/or modified under the terms of either the GNU Lesser General Public License (LGPL) version 2.1 or the Mozilla Public License (MPL) version 1.1. Where to get more information about cairo ========================================= The primary source of information about cairo is: http://cairographics.org/ The latest versions of cairo can always be found at: http://cairographics.org/download Documentation on using cairo and frequently-asked questions: http://cairographics.org/documentation http://cairographics.org/FAQ Share this post Link to post