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 Vsnapshot">
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.1 (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="id-1.2.2.6"></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, Telugu, and
36 <li class="listitem"><p>
37 Arabic (covering Arabic, N'Ko, Syriac, and Mongolian)
39 <li class="listitem"><p>
42 <li class="listitem"><p>
45 <li class="listitem"><p>
48 <li class="listitem"><p>
51 <li class="listitem"><p>
54 <li class="listitem"><p>
57 <li class="listitem"><p>
58 The Universal Shaping Engine or <span class="emphasis"><em>USE</em></span>
59 (covering complex scripts not covered by the above shaping
62 <li class="listitem"><p>
63 A default shaping model for non-complex scripts
64 (covering Latin, Cyrillic, Greek, Armenian, Georgian, Tifinagh,
67 <li class="listitem"><p>
68 Emoji (including emoji modifier sequences, flag sequences,
73 In addition to OpenType shaping, HarfBuzz supports the latest
74 version of Graphite shaping (the "Graphite 2" model) and AAT
78 HarfBuzz can read and understand TrueType fonts (.ttf), TrueType
79 collections (.ttc), and OpenType fonts (.otf, including those
80 fonts that contain TrueType-style outlines and those that
81 contain PostScript CFF or CFF2 outlines).
84 HarfBuzz is designed and tested to run on top of the FreeType
85 font renderer. It can run on Linux, Android, Windows, macOS, and
89 In addition to its core shaping functionality, HarfBuzz provides
90 functions for accessing other font features, including optional
91 GSUB and GPOS OpenType features, as well as
92 all color-font formats (<code class="literal">CBDT</code>,
93 <code class="literal">sbix</code>, <code class="literal">COLR/CPAL</code>, and
94 <code class="literal">SVG-OT</code>) and OpenType variable fonts. HarfBuzz
95 also includes a font-subsetting feature. HarfBuzz can perform
96 some low-level math-shaping operations, although it does not
97 currently perform full shaping for mathematical typesetting.
100 A suite of command-line utilities is also provided in the
101 source-code tree, designed to help users test and debug
102 HarfBuzz's features on real-world fonts and input.
106 <hr>Generated by GTK-Doc V1.32.1</div>