| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <title>Getting started with HarfBuzz: HarfBuzz Manual</title> |
| <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> |
| <link rel="home" href="index.html" title="HarfBuzz Manual"> |
| <link rel="up" href="pt01.html" title="Part I. User's manual"> |
| <link rel="prev" href="building.html" title="Building HarfBuzz"> |
| <link rel="next" href="ch03s02.html" title="Terminology"> |
| <meta name="generator" content="GTK-Doc V1.25 (XML mode)"> |
| <link rel="stylesheet" href="style.css" type="text/css"> |
| </head> |
| <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
| <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle"> |
| <td width="100%" align="left" class="shortcuts"></td> |
| <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td> |
| <td><a accesskey="u" href="pt01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td> |
| <td><a accesskey="p" href="building.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> |
| <td><a accesskey="n" href="ch03s02.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td> |
| </tr></table> |
| <div class="chapter"> |
| <div class="titlepage"><div><div><h2 class="title"> |
| <a name="getting-started"></a>Getting started with HarfBuzz</h2></div></div></div> |
| <div class="toc"><dl class="toc"> |
| <dt><span class="section"><a href="getting-started.html#id-1.2.4.2">An overview of the HarfBuzz shaping API</a></span></dt> |
| <dt><span class="section"><a href="ch03s02.html">Terminology</a></span></dt> |
| <dt><span class="section"><a href="ch03s03.html">A simple shaping example</a></span></dt> |
| </dl></div> |
| <div class="section"> |
| <div class="titlepage"><div><div><h2 class="title" style="clear: both"> |
| <a name="id-1.2.4.2"></a>An overview of the HarfBuzz shaping API</h2></div></div></div> |
| <p> |
| The core of the HarfBuzz shaping API is the function |
| <code class="function">hb_shape()</code>. This function takes a font, a |
| buffer containing a string of Unicode codepoints and |
| (optionally) a list of font features as its input. It replaces |
| the codepoints in the buffer with the corresponding glyphs from |
| the font, correctly ordered and positioned, and with any of the |
| optional font features applied. |
| </p> |
| <p> |
| In addition to holding the pre-shaping input (the Unicode |
| codepoints that comprise the input string) and the post-shaping |
| output (the glyphs and positions), a HarfBuzz buffer has several |
| properties that affect shaping. The most important are the |
| text-flow direction (e.g., left-to-right, right-to-left, |
| top-to-bottom, or bottom-to-top), the script tag, and the |
| language tag. |
| </p> |
| <p> |
| For input string buffers, flags are available to denote when the |
| buffer represents the beginning or end of a paragraph, to |
| indicate whether or not to visibly render Unicode <code class="literal">Default |
| Ignorable</code> codepoints, and to modify the cluster-merging |
| behavior for the buffer. For shaped output buffers, the |
| individual X and Y offsets and <code class="literal">advances</code> |
| (the logical dimensions) of each glyph are |
| accessible. HarfBuzz also flags glyphs as |
| <code class="literal">UNSAFE_TO_BREAK</code> if breaking the string at |
| that glyph (e.g., in a line-breaking or hyphenation process) |
| would require re-shaping the text. |
| </p> |
| <p> |
| HarfBuzz also provides methods to compare the contents of |
| buffers, join buffers, normalize buffer contents, and handle |
| invalid codepoints, as well as to determine the state of a |
| buffer (e.g., input codepoints or output glyphs). Buffer |
| lifecycles are managed and all buffers are reference-counted. |
| </p> |
| <p> |
| Although the default <code class="function">hb_shape()</code> function is |
| sufficient for most use cases, a variant is also provide that |
| lets you specify which of HarfBuzz's shapers to use on a buffer. |
| </p> |
| <p> |
| HarfBuzz can read TrueType fonts, TrueType collections, OpenType |
| fonts, and OpenType collections. Functions are provided to query |
| font objects about metrics, Unicode coverage, available tables and |
| features, and variation selectors. Individual glyphs can also be |
| queried for metrics, variations, and glyph names. OpenType |
| variable fonts are supported, and HarfBuzz allows you to set |
| variation-axis coordinates on font objects. |
| </p> |
| <p> |
| HarfBuzz provides glue code to integrate with various other |
| libraries, including FreeType, GObject, and CoreText. Support |
| for integrating with Uniscribe and DirectWrite is experimental |
| at present. |
| </p> |
| </div> |
| </div> |
| <div class="footer"> |
| <hr>Generated by GTK-Doc V1.25</div> |
| </body> |
| </html> |