Pango-1.15.3 released (unstable)
Posted on: 01/09/2007 11:16 AM
Pango-1.15.3 is now available for download at: http://download.gnome.org/sources/pango/1.15/
This is a development release leading up to Pango-1.16.0, which will be released just in time for GNOME-2.18. The major change in this release is addition of lots of new, useful, public API. For details, scroll down.
* This is unstable development release. While it has had fairly extensive testing, there are likely bugs remaining to be found. This release should not be used in production.
* Installing this version will overwrite your existing copy of Pango. If you have problems, you'll need to reinstall Pango-1.14.x
* Bugs should be reported to http://bugzilla.gnome.org.
Pango is a library for layout and rendering of text, with an emphasis on internationalization. Pango can be used anywhere that text layout is needed, though most of the work on Pango so far has been done in the context of the GTK+ widget toolkit. Pango forms the core of text and font handling for GTK+-2.x.
Pango is designed to be modular; the core Pango layout engine can be used with different font backends. There are three basic backends, with multiple options for rendering with each.
- Client side fonts using the FreeType and fontconfig libraries. Rendering can be with with Cairo or Xft libraries, or directly to an in-memory buffer with no additional libraries.
- Native fonts on Microsoft Windows using Uniscribe for complex-text handling. Rendering can be done via Cairo or directly using the native Win32 API.
- Native fonts on MacOS X, rendering via Cairo.
The integration of Pango with Cairo (http://cairographics.org) provides a complete solution with high quality text handling and graphics rendering.
Dynamically loaded modules then handle text layout for particular combinations of script and font backend. Pango ships with a wide selection of modules, including modules for Hebrew, Arabic, Hangul, Thai, and a number of Indic scripts. Virtually all of the world's major scripts are supported.
As well as the low level layout rendering routines, Pango includes PangoLayout, a high level driver for laying out entire blocks of text, and routines to assist in editing internationalized text.
More information about Pango is available from http://www.pango.org/.
Bugs should be reported to http://bugzilla.gnome.org.
Pango 1.15 depends on version 2.12.0 or newer of the GLib library and version 1.2.2 or newer of the cairo library (if the cairo backend is desired); more information about GLib and cairo can be found at http://www.gtk.org/
Overview of changes between 1.15.2 and 1.15.3
- Fix Hangul crasher and other Hangul bugs introduced in 1.15.2
- Spell-checked docs
- Build fixes
- Don't introduce bitfields in public structs. This changes some public AP
I that was broken in the 1.15 series. The new struct is backward compatible with the older Pango series, but not with earlier 1.15.x devel releases.
- New Public API:
* PangoAnalysis.flags and PANGO_ANALYSIS_FLAGS_CENTERED_BASELINE. These are mostly only useful for the vertical text support in Pango, but language bindings probably want to update their bindings for PangoAnalysis to include these.
* New PangoMatrix methods:
The transform_rectangle methods are particularly useful when an app/toolkit wants to know the extents of a rotated layout in device coordinates. It will be used by Gtk+ for example, and is used by the pango-view tool too. The _pixel_ variant takes a PangoRectangle in device units instead of Pango units.
* Unit conversion helpers:
The first two just convert between Pango units (fixed precision) and double floating-point numbers. The current implementations are as simple as "
int)floor (d * PANGO_SCALE + 0.5)" and "
double)i / PANGO_SCALE", but the idea is to have optimized versions of these that do not use the FPU in the future. That will be appreciated by embedded devices without FPU units. Since the functionality can be generally useful, the API is made public.
The pango_extents_to_pixels() function in conjunction with pango_matrix_transform_rectangle() makes it possible to convert extents
to device space and round then, instead of having to transform rounded
- Bugs fixed in this release:
Bug 351496 =E2=80" PangoAnalysis::gravity breaks binary compatibility
Bug 388702 =E2=80" Crash when there's no Hangul glyph in the font.
Bug 384543 =E2=80" FcFontMatch misuse
Bug 392789 =E2=80" vpath build fails in basic module
Patch from J. Ali Harlow
Bug 390877 =E2=80" Don't feed pango-features.h to glib-mkenums
Patch from Yevgen Muntyan
8 January 2007