1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>What does HarfBuzz do?: HarfBuzz Manual</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="index.html" title="HarfBuzz Manual">
8 <link rel="up" href="what-is-harfbuzz.html" title="What is HarfBuzz?">
9 <link rel="prev" href="why-do-i-need-a-shaping-engine.html" title="Why do I need a shaping engine?">
10 <link rel="next" href="what-harfbuzz-doesnt-do.html" title="What HarfBuzz doesn't do">
11 <meta name="generator" content="GTK-Doc V1.32 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
16 <td width="100%" align="left" class="shortcuts"></td>
17 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
18 <td><a accesskey="u" href="what-is-harfbuzz.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
19 <td><a accesskey="p" href="why-do-i-need-a-shaping-engine.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
20 <td><a accesskey="n" href="what-harfbuzz-doesnt-do.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
23 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
24 <a name="what-does-harfbuzz-do"></a>What does HarfBuzz do?</h2></div></div></div>
26 HarfBuzz provides text shaping through a cross-platform
27 C API that accepts sequences of Unicode codepoints as input. Currently,
28 the following OpenType shaping models are supported:
30 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
31 <li class="listitem"><p>
32 Indic (covering Devanagari, Bengali, Gujarati,
33 Gurmukhi, Kannada, Malayalam, Oriya, Tamil, and Telugu)
35 <li class="listitem"><p>
36 Arabic (covering Arabic, N'Ko, Syriac, and Mongolian)
38 <li class="listitem"><p>
41 <li class="listitem"><p>
44 <li class="listitem"><p>
47 <li class="listitem"><p>
50 <li class="listitem"><p>
53 <li class="listitem"><p>
56 <li class="listitem"><p>
57 The Universal Shaping Engine or <span class="emphasis"><em>USE</em></span>
58 (covering complex scripts not covered by the above shaping
61 <li class="listitem"><p>
62 A default shaping model for non-complex scripts
63 (covering Latin, Cyrillic, Greek, Armenian, Georgian, Tifinagh,
66 <li class="listitem"><p>
67 Emoji (including emoji modifier sequences, flag sequences,
72 In addition to OpenType shaping, HarfBuzz supports the latest
73 version of Graphite shaping (the "Graphite 2" model) and AAT
77 HarfBuzz can read and understand TrueType fonts (.ttf), TrueType
78 collections (.ttc), and OpenType fonts (.otf, including those
79 fonts that contain TrueType-style outlines and those that
80 contain PostScript CFF or CFF2 outlines).
83 HarfBuzz is designed and tested to run on top of the FreeType
84 font renderer. It can run on Linux, Android, Windows, macOS, and
88 In addition to its core shaping functionality, HarfBuzz provides
89 functions for accessing other font features, including optional
90 GSUB and GPOS OpenType features, as well as
91 all color-font formats (<code class="literal">CBDT</code>,
92 <code class="literal">sbix</code>, <code class="literal">COLR/CPAL</code>, and
93 <code class="literal">SVG-OT</code>) and OpenType variable fonts. HarfBuzz
94 also includes a font-subsetting feature. HarfBuzz can perform
95 some low-level math-shaping operations, although it does not
96 currently perform full shaping for mathematical typesetting.
99 A suite of command-line utilities is also provided in the
100 source-code tree, designed to help users test and debug
101 HarfBuzz's features on real-world fonts and input.
105 <hr>Generated by GTK-Doc V1.32</div>