manpagez: man pages & more
html files: goocanvas
Home | html | info | man

Objects in HarfBuzz

Object types: Opaque struct types are used for what HarfBuzz loosely calls "objects." This doesn’t have much to do with the terminology from object-oriented programming (OOP), although some of the concepts are similar.

In HarfBuzz, all object types provide certain lifecycle-management APIs. Objects are reference-counted, and constructed with various create() methods, referenced via reference() and dereferenced using destroy().

For example, the hb_buffer_t object has hb_buffer_create() as its constructor, hb_buffer_reference() to reference, and hb_buffer_destroy() to dereference.

After construction, each object's properties are accessible only through the setter and getter functions described in the API Reference manual.

Note that many object types can be marked as read-only or immutable, facilitating their use in multi-threaded environments.

Key object types provided by HarfBuzz include:

  • blobs, which act as low-level wrappers around binary data. Blobs are typically used to hold the contents of a binary font file.

  • faces, which represent typefaces from a font file, but without specific parameters (such as size) set.

  • fonts, which represent instances of a face with all of their parameters specified.

  • buffers, which hold Unicode code points for characters (before shaping) and the shaped glyph output (after shaping).

  • shape plans, which store the settings that HarfBuzz will use when shaping a particular text segment. Shape plans are not generally used by client programs directly, but as we will see in a later chapter, they are still valuable to understand.

© manpagez.com 2000-2024
Individual documents may contain additional copyright information.