Pango-1.15.2 released (unstable)
Posted on: 12/21/2006 10:35 AM

Pango-1.15.2 is now available for download at:

3a57ff08498a210892fe665bf4812011 pango-1.15.2.tar.bz2
063c3ea8eb8931290546a197bd444e2a pango-1.15.2.tar.gz

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

About Pango

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 ( 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
Bugs should be reported to

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 and respectively.

Overview of changes between 1.15.1 and 1.15.2
* Engines:
- Improved Hangul shaper engine
- Improved Indic shaper and language engines
- Require libthai gt;= 0.1.7 for the Thai language engine

* Optimizations:
- Avoid some floating-point operations. Should cut the number of float
ops per expose event in pangocairo to a half.
- Cache ink and logical extents for PangoLayout

* New Public API:

- New, generated, public header file pango-features.h. Included by
pango.h. Currently contains the version information. In the future,
can be expanded to define which backends have been enabled, etc.

- Public macros and functions for compile- and run-time version checking:


The scheme chosen here is a mixture of approaches taken by glib and cai
The advantage over the glib model is that there are no public variables
but it still gives access to a string and numerical representation of t
version number at compile- and run-time.

The macros enable conditional compilation of code depending on newer Pa
APIs, while the runtime functions allow refusing to run against old
versions of the library.

- New, readonly, version of methods that give read/write access to the
internals of PangoLayout:


These should be used when you do not intend to modify the run/line,
which is most of the time the case. The only exception known to me
is Firefox that adjusts glyph widths to do justification. Most other
uses that do not write to the returned structs (or structs accessible f
them) should be ported to the new readonly API to benefit from major
optimizations (in this case, line extents caching). The list includes,
but is not limited to, Gtk+, SWT, ClassPath, gnome-applets, libgnomepri
xmlroff, GtkMathView, Conglomerate, Dia, Anjuta, wxWindows, The Gimp,

and various other applications/libraries:

Worth noting here is that, many uses of pango_layout_get_lines() can be
replaced by a pango_layout_get_iter() that works both more elegantly an
more efficiently. The versioning macros introduced in this release can
used to make code use these new symbols without breaking compilation
against older Pango (though, such code compiled with the new Pango cann
be run against an older Pango).

- pango_language_get_default(): Note that, this does not make Pango
fallback to the default language automatically (yet), but the user can
use this function to set the default language of the locale on a contex

pango_context_set_language (context, pango_language_get_default());

This essentially deprecates gtk_get_default_language(). The pango-view
tool has been updated to use this feature, so it now respects $LANG whe
choosing fonts.

- pango_color_to_string().

* Bugs fixed in this release:
Bug 326099 =E2=80" Setting width, indentation and ellipsizing doesn't wo
as I would expect
Bug 385478 =E2=80" Fix tests on OPD platform
Bug 319808 =E2=80" Patch to let pango support artifical italic, bold and
bold italic styles for the fonts which don't have these styles.
Patch from James Su
Bug 385321 =E2=80" Worst case expansion for Sinhala
Patch from Harshula
Red Hat Bug 211574: [hi/ml/si_LK] cursor naviation is wrong when
using ZWJ (200d)
Patch from LingNing Zhang
Red Hat Bug 216424: [te_IN] pango - consonant + dependent vowel (ai)
Composed char is not rendering properly
Patch from LingNing Zhang
Bug 373856 =E2=80" Wish: Function to convert a GdkColor to a string
Patch from Matthew Barnes
Red Hat Bug 216850: Issue in combination with vowels (ml_IN)
Patch from LingNing Zhang
Bug 382437 =E2=80" tests/testboundaries fails
Bug 333982 =E2=80" Fallback to $LANG whenever NULL PangoLanguage is used
Patch from LingNing Zhang

Behdad Esfahbod
20 December 2006

Printed from Linux Compatible (