1 " ˆl–ßi~” *j"Tâ€vàY¸'”Å£¿ ƒh¹ÂÁ platform:serial8250  ˆÀ¿ 0ÂÁ�ÃÂÁFile not found. �ÃÂÁFile not found. +ˆl–ßi~””†»Ò�vàp©‹FÿÀ ƒ}ö\_‡I|¥‰ÓMÄÃ&Ð Platform Integration Guide: HarfBuzz Manual

Platform Integration Guide

GNOME integration, GLib, and GObject
FreeType integration
Uniscribe integration
Core Text integration
ICU integration
Python bindings

HarfBuzz was first developed for use with the GNOME and GTK software stack commonly found in desktop Linux distributions. Nevertheless, it can be used on other operating systems and platforms, from iOS and macOS to Windows. It can also be used with other application frameworks and components, such as Android, Qt, or application-specific widget libraries.

This chapter will look at how HarfBuzz fits into a typical text-rendering pipeline, and will discuss the APIs available to integrate HarfBuzz with contemporary Linux, Mac, and Windows software. It will also show how HarfBuzz integrates with popular external libraries like FreeType and International Components for Unicode (ICU) and describe the HarfBuzz language bindings for Python.

On a GNOME system, HarfBuzz is designed to tie in with several other common system libraries. The most common architecture uses Pango at the layer directly "above" HarfBuzz; Pango is responsible for text segmentation and for ensuring that each input hb_buffer_t passed to HarfBuzz for shaping contains Unicode code points that share the same segment properties (namely, direction, language, and script, but also higher-level properties like the active font, font style, and so on).

The layer directly "below" HarfBuzz is typically FreeType, which is used to rasterize glyph outlines at the necessary optical size, hinting settings, and pixel resolution. FreeType provides APIs for accessing font and face information, so HarfBuzz includes func