From Fedora Project Wiki
 
(12 intermediate revisions by 3 users not shown)
Line 4: Line 4:
== Summary ==
== Summary ==


Port Pango to use Harfbuzz
Port Pango to use newly designed Harfbuzz


== Owner ==
== Owner ==
Line 12: Line 12:
== Current status ==
== Current status ==
* Targeted release: [[Releases/12 | Fedora 12 ]]  
* Targeted release: [[Releases/12 | Fedora 12 ]]  
* Last updated: 2009-06-05
* Last updated: 2009-08-13
* Percentage of completion: 20%
* Percentage of completion: 100%


Harfbuzz/Pango integration happens on the harfbuzz-ng branch in the pango git repository at http://git.gnome.org/cgit/pango.
Harfbuzz/Pango integration has been merged into Pango 1.25, and is included in pango-1.25.3 in rawhide.


== Detailed Description ==
== Detailed Description ==
Line 22: Line 22:


== Benefit to Fedora ==
== Benefit to Fedora ==
Harfbuzz reduces the memory consumption of the desktop, since it works with mmapped fonts. Pango may also gain support for some more OpenType features in porting to  
Harfbuzz reduces the memory consumption of the desktop, since it works with mmapped fonts. Pango may also gain support for some more OpenType features in porting to Harfbuzz, such as BASE table support and better caret positioning in ligatures, as well as user-selected OpenType feature support.
Harfbuzz, such as BASE table support and better caret positioning in ligatures.


Further down the road (in F13), Harfbuzz will become a standalone library that will hopefully also get used by Qt, which will give us ''unified shapers'' and improved
Further down the road (in F13), Harfbuzz will become a standalone library that will hopefully also get used by Qt, Firefox, OpenOffice.org, and webkit, which will give us unified shapers and improved support for Indic languages across both GNOME, KDE, and OpenOffice.org.
support for Indic languages across both KDE and Gnome.  


== Scope ==
== Scope ==
Line 32: Line 30:


== How To Test ==
== How To Test ==
#. Open a text document (TODO: point to a good multilingual document to use here) in an application that uses Pango for text rendering, e.g. gedit. Compare the text rendering between F11 and F12. There should not be any regressions.
# Open a text document (For example, /usr/share/doc/pango-*/HELLO.txt) in an application that uses Pango for text rendering, e.g. gedit. Compare the text rendering between F11 and F12. There should not be any regressions.
#. Repeat the above with different OpenType fonts.
# Repeat the above with different OpenType fonts.
#. Find the PID of your application, and look at the contents of /proc/<PID>/maps. You should see font files being mmapped.
# Try the same thing with "pango-view --no-display filename". Run it under valgrind, confirm that memory allocation is reduced between F11 and F12.


== User Experience ==
== User Experience ==
The most noticable change in F12 will probably be the reduced memory consumption.
The most noticeable change in F12 will probably be the reduced memory consumption.
 
Beyond F12, Indic users should hopefully see improved text rendering of their languages.
Beyond F12, Indic users should hopefully see improved text rendering of their languages.


Line 44: Line 43:


== Contingency Plan ==
== Contingency Plan ==
Stay with a non-Harfbuzz-using version of Pango. Should only require a rebuild of pango itself.
Stay with a non-HarfBuzz-using version of Pango. Should only require a rebuild of pango itself.


== Documentation ==
== Documentation ==
None.  
No specific documentation should be needed, Harfbuzz is a transparent replacement for the previous Pango shapers.


== Release Notes ==
== Release Notes ==
TBD.
The version of Pango in Fedora 12 has been ported to use Harfbuzz for OpenType layout and shaping. By using mmapped fonts, Harfbuzz will reduce the memory consumption of the desktop.


== Comments and Discussion ==
== Comments and Discussion ==

Latest revision as of 17:27, 13 August 2009

Harfbuzz

Summary

Port Pango to use newly designed Harfbuzz

Owner

Current status

  • Targeted release: Fedora 12
  • Last updated: 2009-08-13
  • Percentage of completion: 100%

Harfbuzz/Pango integration has been merged into Pango 1.25, and is included in pango-1.25.3 in rawhide.

Detailed Description

HarfBuzz is an implementation of the OpenType Layout engine (aka layout engine) and the script-specific logic (aka shaping engine).


Benefit to Fedora

Harfbuzz reduces the memory consumption of the desktop, since it works with mmapped fonts. Pango may also gain support for some more OpenType features in porting to Harfbuzz, such as BASE table support and better caret positioning in ligatures, as well as user-selected OpenType feature support.

Further down the road (in F13), Harfbuzz will become a standalone library that will hopefully also get used by Qt, Firefox, OpenOffice.org, and webkit, which will give us unified shapers and improved support for Indic languages across both GNOME, KDE, and OpenOffice.org.

Scope

Only Pango needs to be changed.

How To Test

  1. Open a text document (For example, /usr/share/doc/pango-*/HELLO.txt) in an application that uses Pango for text rendering, e.g. gedit. Compare the text rendering between F11 and F12. There should not be any regressions.
  2. Repeat the above with different OpenType fonts.
  3. Try the same thing with "pango-view --no-display filename". Run it under valgrind, confirm that memory allocation is reduced between F11 and F12.

User Experience

The most noticeable change in F12 will probably be the reduced memory consumption.

Beyond F12, Indic users should hopefully see improved text rendering of their languages.

Dependencies

None.

Contingency Plan

Stay with a non-HarfBuzz-using version of Pango. Should only require a rebuild of pango itself.

Documentation

No specific documentation should be needed, Harfbuzz is a transparent replacement for the previous Pango shapers.

Release Notes

The version of Pango in Fedora 12 has been ported to use Harfbuzz for OpenType layout and shaping. By using mmapped fonts, Harfbuzz will reduce the memory consumption of the desktop.

Comments and Discussion