I have recently spent some time on Pango again, in preparation for the Westcoast hackfest. Behdad is here, and we’ve made great progress on the first day.
My last Pango update laid out our plans for Pango. Today I’ll summarize the major changes that will be in the next Pango release, 1.44.
Unicode APIs
I had a planned to replace PangoScript by GUnicodeScript outright, but doing so caused breakage in introspection and elsewhere. So, for now, we’ve just deprecated it and recommend that everybody should use GUnicodeScript instead. We did get a registered GType for this (and other) enumerations into GObject, so the lack of a type is no longer an obstacle.
Harfbuzz passthrough
We have added an api to get a Harfbuzz font object from a PangoFont:
hb_font_t *pango_font_get_hb_font (PangoFont *f)
This makes technologies such as OpenType features or variations available to applications without adding more Pango apis in the future.
Reduced freetype dependency
Pango uses harfbuzz for getting font and glyph metrics , glyph IDs and other kinds of font information now, so we don’t need an FT_Face anymore, and pango_fc_font_lock_face() has been deprecated.
Unified shaping
We are using harfbuzz for shaping on all platforms now. This has allowed us to drop the remaining internal uses of shape and language engines.
Unhinted rendering
Pango no longer forces glyph positions and sizes to be on integral pixel positions. This allows renderers to place glyphs on a subpixel grid. cairo master has the necessary changes to make this work.