= The Font Backends = WebKitGTK+ currently supports two font backends: FreeType and Pango. This is somewhat of a misnomer, because even though the FreeType backend uses Fontconfig for selection and Freetype for reading font data / creating custom fonts, it still uses Pango (specifically PangoCairo) for complex text layout (WebCore/platform/graphics/gtk/FontGtk.cpp). Currently there are quite a few issues related to font layout and selection. = Goals = 1. '''Proper CSS font selection''' The CSS standard has a fairly rigorous [http://www.w3.org/TR/css3-fonts/#font-matching-algorithm|detailed algorithm] for selecting the appropriate font for text. Instead of properly falling back according to the list of fonts in CSS, WebKitGTK+ lets Fontconfig or Pango to supply what it thinks is an appropriate replacement. 2. '''Use HarfBuzz directly''' PangoCairo uses HarfBuzz internally, but switching away from PangoCairo has benefits. Behdad Esfahbod, author of HarfBuzz, also summarizes why it is best for [http://behdad.org/text/| browsers to use HarfBuzz directly]: Firefox uses Pango. Firefox 2 was hacked to use PangoLayout API. That was very abusive and inherently inefficient. Firefox 3 has got a new layout engine that is completely based on cairo. The Linux port subclasses PangoFcFontMap to be able to support both CSS text selection as well as web fonts. By doing that it is essentially reimplementing most of Pango and only using the shaping logic. It makes much more sense to use HarfBuzz directly, and Mozilla is now working on getting HarfBuzz ready for that. Additionally, using HarfBuzz directly will allow us to share layout and shaping code with Chromium. = Font Bugs = A collection of font-related bugs from Bugzilla: * [https://bugs.webkit.org/show_bug.cgi?id=16941 FontCustomPlatformData.cpp leaks FT_Faces] * [https://bugs.webkit.org/show_bug.cgi?id=18546 Can't load some non-latin fonts with pango backend] * [https://bugs.webkit.org/show_bug.cgi?id=18552 Downloadable fonts don't work with pango backend] * [https://bugs.webkit.org/show_bug.cgi?id=18552 WebKit crashes when running acid3 on Linux using font backend Pango] * [https://bugs.webkit.org/show_bug.cgi?id=22970 FontConfig leaks in FontCacheGtk] * [https://bugs.webkit.org/show_bug.cgi?id=26003 Has inconsistent font selection behavior compared with other GTK2 apps] * [https://bugs.webkit.org/show_bug.cgi?id=26741 Share complex text support with Chromium Linux] * [https://bugs.webkit.org/show_bug.cgi?id=27442 Split FontPlatformData into FontPlatformDataGtk and FontPlatformDataPango] * [https://bugs.webkit.org/show_bug.cgi?id=30532 Wrong font size calculated on google.com]