📄 news
字号:
its text support. Every glyph is represented by a filled path in the PDF file. The causes file sizes to be much larger and rendering to be much slower than desired.It is anticipated that both of these shortcomings will see someimprovements before the final 1.2 release.In spite of those shortcomings, we hope that the PS and PDF backendswill yield faithful results for pretty much any cairo operations youcan throw at them. Please let us know if you are getting obviously"different" results from the PS/PDF backends than from the image orxlib backends.Other new experimental backends-------------------------------This snapshot includes three new backends that did not exist in the1.0 series: * beos backend * directfb backend * svg backendThese are all currently marked "experimental" and are disabled bydefault. But the SVG backend in particular has seen a lot of recentdevelopment and is very close to passing the entire cairo testsuite. It is possible that this backend will become a fully supportedbackend by the time of the cairo 1.2 release.Public API additions--------------------There have been a few new API functions added to cairo, including:New get_type functions for querying sub-types of object: cairo_surface_get_type cairo_pattern_get_type cairo_font_face_get_type cairo_scaled_font_get_typeMore convenience in working with cairo_scaled_font_t with new getterfunctions: cairo_scaled_font_get_font_face cairo_scaled_font_get_font_matrix cairo_scaled_font_get_ctm cairo_scaled_font_get_font_optionsAs well as a convenience function for setting a scaled font into acairo context: cairo_set_scaled_fontand a function to allow text extents to be queried directly from ascaled font, (without requiring a cairo_surface_t or a cairo_t): cairo_scaled_font_text_extentsThese new scaled font functions were motivated by the needs of thepango library.Finally, a new path-construction function was added which clears thecurrent point in preparation for a new sub path. This makes cairo_arceasier to use in some situations: cairo_new_sub_pathBefore the 1.2 release is final we do still plan a few more APIadditions specifically motivated by the needs of Mozilla/Firefox.Optimizations and bug fixes---------------------------Shortly after the 1.0 maintenance series branched off the mainlinethere was a major rework of the cairo font internals. This shouldprovide some good performance benefits, but it's also another areapeople should look at closely for potential regressions.There has not yet been any widespread, systematic optimization ofcairo, but various performance improvements have been made, (and someof them are fairly significant). So if some things seem faster than1.0 then things are good. If there are any performance regressionscompared to 1.0 then there is a real problem and we would like to hearabout that.There has been a huge number of bug fixes---too many to mention indetail. Again, things should be better, and never worse compared to1.0. Please let us know if your testing shows otherwise.Release 1.0.2 (2005-10-03 Carl Worth <cworth@cworth.org>)=========================================================For each bug number XXXX below, see: https://bugs.freedesktop.org/show_bug.cgi?id=XXXXfor more details.General bug fixes----------------- * 4408 - Add support for dashing of stroked curves (Carl Worth) * 4409 - Fix dashing so that each dash is capped on both ends (Carl Worth) * 4414 - Prevent SIGILL failures (proper use of -mmmx and -msse flags) (Sebastien Bacher, Billy Biggs) * 4299 - Fix crashes with text display in multi-threaded program (Alexey Shabalin, Carl Worth) * 4401 - Do not use sincos function since it is buggy on some platforms) (Tim Mooney, Carl Worth) * 4245 - Fix several bugs in the test suite exposed by amd64 systems (Seemant Kulleen, Carl Worth) * 4321 - Add missing byteswapping on GetImage/PutImage (Sjoerd Simons, Owen Taylor) * 4220 - Make the check for rectangular trapezoids simpler and more accurate (Richard Stellingwerff, Owen Taylor) * 4260 - Add missing channel-order swapping for antialised fonts (Barbie LeVile, Owen Taylor) * 4283 - Fix compilation failure with aggressive inlining (gcc -O3) (Marco Manfredini, Owen Taylor) * 4208 - Fix some warnings from sparse (Kjartan Maraas, Billy Biggs) * 4269 - Fix to not crash when compiled with -fomit-frame-pointer (Ronald Wahl, Owen Taylor) * 4263 - Improve performance for vertical gradients (Richard Stellingwerff, Owen Taylor) * 4231 * 4298 - Accomodate gentoo and Mandriva versions in X server vendor string check (Billy Biggs, Frederic Crozat, Owen Taylor)win32-specific fixes-------------------- * 4599 - Fix "missing wedges" on some stroked paths (win32) (Tim Rowley, Jonathan Watt, Bertram Felgenhauer, Carl Worth, Keith Packard) * 4612 - Fix disappearing text if first character out of surface (win32) (Tim Rowley) * 4602 - Fix shutdown of cairo from failing intermediate, size-0 bitmaps (win32) Aka. the "white rectangles" bug from mozilla-svg testing (Tim Rowley) * Various portability improvements for win32 (Hans Breuer, Owen Taylor, Carl Worth) * 4593 - Fix font sizes to match user expectations (win32) (Tor Lillqvist, Owen Taylor) * 3927 - Fix to report metrics of size 0 for glyph-not-available (win32) (Hans Breuer, Owen Taylor, Tor Lillqvist) * Add locking primitives for win32 (Hans Breuer)xlib-specific fixes------------------- * Fix crash from size-0 pixmap due to empty clip region (xlib) (Radek Doulík, Carl Worth)Release 1.0.0 (2005-08-24 Carl Worth <cworth@cworth.org>)=========================================================Experimental backends--------------------- * The Glitz, PS, PDF, Quartz, and XCB backends have been declared experimental, and are not part of the API guarantees that accompany this release. They are not built by default, even when the required libraries are available, and must be enabled explicitly with --enable-ps, --enable-pdf, --enable-quartz or --enable-xcb. It is very painful for us to be pushing out a major release without these backends enabled. There has been a tremendous amount of work put into each one and all are quite functional to some extent. However, each also has some limitations. And none of these backends have been tested to the level of completeness and correctness that we expect from cairo backends. We do encourage people to experiment with these backends and report success, failure, or means of improving them.Operator behavior----------------- * Prior to 0.9.0 the SOURCE, CLEAR and a number of other operators behaved in an inconsistent and buggy fashion and could affect areas outside the clip mask. In 0.9.0, these six "unbounded" operators were fixed to consistently clear areas outside the shape but within the clip mask. This is useful behavior for an operator such as IN, but not what was expected for SOURCE and CLEAR. So, in this release the behavior of SOURCE and CLEAR has been changed again. They now affect areas only within both the source and shape. We can write the new operators as: SOURCE: dest' = (mask IN clip) ? source : dest CLEAR: dest' = (mask IN clip) ? 0 : destBehavior and API changes------------------------ * Setting the filter on a gradient pattern would change the interpolation between color stops away from the normal linear interpolation. This dubious behavior has been removed. * The CAIRO_CONTENT_VALID() and CAIRO_FORMAT_VALID() macros -- implementation details that leaked into cairo.h -- have been moved into an internal header. * The cairo_show_text function now advances the current point according to the total advance values of the string.API additions------------- * cairo_set_dash can now detect error and can set CAIRO_STATUS_INVALID_DASH.Features-------- * When compiled against recent versions of fontconfig and FreeType, artificial bold fonts can now be turned on from fonts.conf using the FC_EMBOLDEN fontconfig key.Optimization------------ * The compositing code from the 'xserver' code tree has now been completely merged into libpixman. This includes MMX optimization of common operations. * The image transformation code in libpixman has been improved and now performs significantly faster.Bug fixes--------- * Several crashes related to corruption in the font caches have been fixed. * All test cases now match pixel-for-pixel on x86 and PPC; this required fixing bugs in the compositing, stroking, and pattern rendering code. * Negative dash offsets have been fixed to work correctly. * The stroking of paths with mutiple subpaths has now been fixed to apply caps to all subpaths rather than just the last one. * Many build fixes for better portability on various systems. * Lots of other bug fixes, but we're too tired to describe them in more detail here.Release 0.9.2 (2005-08-13 Carl Worth <cworth@cworth.org>)=========================================================Release numbering----------------- * You will notice that this release jumped from 0.9.0 to 0.9.2. We've decided to use an odd micro version number (eg. 0.9.1) to indicate in-progress development between releases. As soon as 0.9.2 is tagged, the version will be incremented in CVS to 0.9.3 where it will stay until just before 0.9.4 is built, uploaded, and tagged. So, even-micro == a released version, odd-micro == something in-between.Libpixman dependency dropped---------------------------- * As of this release, the dependency on an external libpixman has been dropped. Instead, the code from libpixman needed for cairo has been incorporated into the cairo source tree. The motivation for this change is that while cairo's API is stable and ready to be maintained after the 1.0 release, libpixman's API is not, so we do not want to expose it at this time. Also, the incorporation of libpixman into cairo also renames all previously-public libpixman symbols in order to avoid any conflict with a future release of libpixmanAPI additions------------- * Macros and functions have been added so that the version of cairo can be queried at either compile-time or at run-time. The version is made available as both a human-readable string and as a single integer: CAIRO_VERSION_STRING eg. "0.9.2" CAIRO_VERSION eg. 000902 const char* cairo_version_string (void); /* eg. "0.9.2" */ int cairo_version (void); /* eg. 000902 */ A macro is provided to convert a three-part component version into the encoded single-integer form: CAIRO_VERSION_ENCODE(X,Y,Z) For example, the CAIRO_VERSION value of 000902 is obtained as CAIRO_VERSION_ENCODE(0,9,2). The intent is to make version comparisons easy, either at compile-time: #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(0,9,2) ... #endif Or at run-time: if (cairo_version() >= CAIRO_VERSION_ENCODE(0,9,2)) { /* ... */ }Thread safety------------- * This release adds pthread-based locking (when available) to make the caches used by cairo safe for threaded programs. Some may remember a failed experiment with this locking between the 0.5.1 and 0.5.2 snapshots, (where even single-threaded programs that linked with -lpthread would deadlock). We believe that that problem has been fixed, so we are looking forward to testing and reports from users with threaded applications.Bug fixes--------- * The XCB and Quartz backends failed to compiled in the 0.9.0 release due to minor syntax errors. These have now been fixed. * Various crashes in glitz and pixman due to size 0 glyphs have been fixed.Release 0.9.0 (2005-08-08 Carl Worth <cworth@cworth.org>)=========================================================Soname change------------- * In all prior snapshots, the libtool library versioning was set to 1:0:0. As this release is intended to mark the beginning of backwards-compatible releases, the versioning has been incremented to 2:0:0. You will notice that the numeric extension on the installed library filename will change similarly. This change will also require all cairo-using applications to be recompiled. We recognize that this may cause some frustration since this release is backwards-compatible with 0.6.0 and in that sense "shouldn't" require re-compilation. However, since all historical snapshots have used the same 1:0:0 version in spite of incompatible API changes between them, it was essential that the upcoming 1.0 release series have distinct library versioning. All future releases will use the library versioning to properly indicate compatibility between releases. So, any application re-compiled now to work with the 0.9.0 will not need to be recompiled when a compatible 1.0 release of cairo is made in the future.API additions------------- * Add new function calls to set/get the current antialiasing mode in the graphics state: cairo_set_antialias cairo_get_antialias This call accepts the same modes recently added for font options (NONE or GRAY) but affects the rendering of geometry other than text. The intent of this call is to enable more precise control of which pixels are affected by each operation, for example to allow for full-scene antialiasing for seam-free rendering. It is not expected that non-antialiased rendering will perform better than anti-aliased rendering.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -