/usr/share/gtk-doc/html/harfbuzz
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>What is 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="pt01.html" title="Part I. User's manual"> <link rel="next" href="why-do-i-need-a-shaping-engine.html" title="Why do I need a shaping engine?"> <meta name="generator" content="GTK-Doc V1.32 (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="pt01.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td> <td><a accesskey="n" href="why-do-i-need-a-shaping-engine.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="what-is-harfbuzz"></a>What is HarfBuzz?</h2></div></div></div> <div class="toc"><dl class="toc"> <dt><span class="section"><a href="what-is-harfbuzz.html#what-is-text-shaping">What is text shaping?</a></span></dt> <dt><span class="section"><a href="why-do-i-need-a-shaping-engine.html">Why do I need a shaping engine?</a></span></dt> <dt><span class="section"><a href="ch01s03.html">What does HarfBuzz do?</a></span></dt> <dt><span class="section"><a href="what-harfbuzz-doesnt-do.html">What HarfBuzz doesn't do</a></span></dt> <dt><span class="section"><a href="why-is-it-called-harfbuzz.html">Why is it called HarfBuzz?</a></span></dt> </dl></div> <p> HarfBuzz is a <span class="emphasis"><em>text-shaping engine</em></span>. If you give HarfBuzz a font and a string containing a sequence of Unicode codepoints, HarfBuzz selects and positions the corresponding glyphs from the font, applying all of the necessary layout rules and font features. HarfBuzz then returns the string to you in the form that is correctly arranged for the language and writing system. </p> <p> HarfBuzz can properly shape all of the world's major writing systems. It runs on all major operating systems and software platforms and it supports the major font formats in use today. </p> <div class="section"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> <a name="what-is-text-shaping"></a>What is text shaping?</h2></div></div></div> <p> Text shaping is the process of translating a string of character codes (such as Unicode codepoints) into a properly arranged sequence of glyphs that can be rendered onto a screen or into final output form for inclusion in a document. </p> <p> The shaping process is dependent on the input string, the active font, the script (or writing system) that the string is in, and the language that the string is in. </p> <p> Modern software systems generally only deal with strings in the Unicode encoding scheme (although legacy systems and documents may involve other encodings). </p> <p> There are several font formats that a program might encounter, each of which has a set of standard text-shaping rules. </p> <p>The dominant format is <a class="ulink" href="http://www.microsoft.com/typography/otspec/" target="_top">OpenType</a>. The OpenType specification defines a series of <a class="ulink" href="https://github.com/n8willis/opentype-shaping-documents" target="_top">shaping models</a> for various scripts from around the world. These shaping models depend on the font incorporating certain features as <span class="emphasis"><em>lookups</em></span> in its <code class="literal">GSUB</code> and <code class="literal">GPOS</code> tables. </p> <p> Alternatively, OpenType fonts can include shaping features for the <a class="ulink" href="https://graphite.sil.org/" target="_top">Graphite</a> shaping model. </p> <p> TrueType fonts can also include OpenType shaping features. Alternatively, TrueType fonts can also include <a class="ulink" href="https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html" target="_top">Apple Advanced Typography</a> (AAT) tables to implement shaping support. AAT fonts are generally only found on macOS and iOS systems. </p> <p> Text strings will usually be tagged with a script and language tag that provide the context needed to perform text shaping correctly. The necessary <a class="ulink" href="https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags" target="_top">script</a> and <a class="ulink" href="https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags" target="_top">language</a> tags are defined by OpenType. </p> </div> </div> <div class="footer"> <hr>Generated by GTK-Doc V1.32</div> </body> </html>
.
Edit
..
Edit
HarfBuzz.png
Edit
HarfBuzz.svg
Edit
a-clustering-example-for-levels-0-and-1.html
Edit
aat-shaping.html
Edit
adding-text-to-the-buffer.html
Edit
annotation-glossary.html
Edit
api-index-0-9-10.html
Edit
api-index-0-9-11.html
Edit
api-index-0-9-2.html
Edit
api-index-0-9-20.html
Edit
api-index-0-9-22.html
Edit
api-index-0-9-28.html
Edit
api-index-0-9-30.html
Edit
api-index-0-9-31.html
Edit
api-index-0-9-38.html
Edit
api-index-0-9-39.html
Edit
api-index-0-9-41.html
Edit
api-index-0-9-42.html
Edit
api-index-0-9-5.html
Edit
api-index-0-9-7.html
Edit
api-index-0-9-8.html
Edit
api-index-1-0-5.html
Edit
api-index-1-1-2.html
Edit
api-index-1-1-3.html
Edit
api-index-1-2-3.html
Edit
api-index-1-3-3.html
Edit
api-index-1-4-0.html
Edit
api-index-1-4-2.html
Edit
api-index-1-4-3.html
Edit
api-index-1-5-0.html
Edit
api-index-1-6-0.html
Edit
api-index-1-7-5.html
Edit
api-index-1-7-7.html
Edit
api-index-1-8-0.html
Edit
api-index-1-8-1.html
Edit
api-index-1-8-5.html
Edit
api-index-1-8-6.html
Edit
api-index-1-9-0.html
Edit
api-index-2-0-0.html
Edit
api-index-2-1-0.html
Edit
api-index-2-2-0.html
Edit
api-index-2-3-0.html
Edit
api-index-2-4-0.html
Edit
api-index-2-5-0.html
Edit
api-index-2-6-0.html
Edit
api-index-2-7-3.html
Edit
api-index-full.html
Edit
buffers-language-script-and-direction.html
Edit
building.html
Edit
ch01s03.html
Edit
ch03s02.html
Edit
ch03s03.html
Edit
ch12.html
Edit
ch13.html
Edit
ch14.html
Edit
ch15.html
Edit
clusters.html
Edit
complex-scripts.html
Edit
customizing-unicode-functions.html
Edit
deprecated-api-index.html
Edit
fonts-and-faces-custom-functions.html
Edit
fonts-and-faces-native-opentype.html
Edit
fonts-and-faces-variable.html
Edit
fonts-and-faces.html
Edit
getting-started.html
Edit
graphite-shaping.html
Edit
harfbuzz-hb-aat-layout.html
Edit
harfbuzz-hb-blob.html
Edit
harfbuzz-hb-buffer.html
Edit
harfbuzz-hb-common.html
Edit
harfbuzz-hb-coretext.html
Edit
harfbuzz-hb-deprecated.html
Edit
harfbuzz-hb-directwrite.html
Edit
harfbuzz-hb-face.html
Edit
harfbuzz-hb-font.html
Edit
harfbuzz-hb-ft.html
Edit
harfbuzz-hb-gdi.html
Edit
harfbuzz-hb-glib.html
Edit
harfbuzz-hb-gobject.html
Edit
harfbuzz-hb-graphite2.html
Edit
harfbuzz-hb-icu.html
Edit
harfbuzz-hb-map.html
Edit
harfbuzz-hb-ot-color.html
Edit
harfbuzz-hb-ot-font.html
Edit
harfbuzz-hb-ot-layout.html
Edit
harfbuzz-hb-ot-math.html
Edit
harfbuzz-hb-ot-meta.html
Edit
harfbuzz-hb-ot-metrics.html
Edit
harfbuzz-hb-ot-name.html
Edit
harfbuzz-hb-ot-shape.html
Edit
harfbuzz-hb-ot-var.html
Edit
harfbuzz-hb-set.html
Edit
harfbuzz-hb-shape-plan.html
Edit
harfbuzz-hb-shape.html
Edit
harfbuzz-hb-unicode.html
Edit
harfbuzz-hb-uniscribe.html
Edit
harfbuzz-hb-version.html
Edit
harfbuzz.devhelp2
Edit
home.png
Edit
index.html
Edit
install-harfbuzz.html
Edit
integration-coretext.html
Edit
integration-freetype.html
Edit
integration-icu.html
Edit
integration-python.html
Edit
integration-uniscribe.html
Edit
integration.html
Edit
left-insensitive.png
Edit
left.png
Edit
level-2.html
Edit
object-model-blobs.html
Edit
object-model-lifecycle.html
Edit
object-model-object-types.html
Edit
object-model-user-data.html
Edit
object-model.html
Edit
opentype-shaping-models.html
Edit
pt01.html
Edit
pt02.html
Edit
reordering-in-levels-0-and-1.html
Edit
right-insensitive.png
Edit
right.png
Edit
setting-buffer-properties.html
Edit
shaping-and-shape-plans.html
Edit
shaping-concepts.html
Edit
shaping-opentype-features.html
Edit
shaping-operations.html
Edit
shaping-plans-and-caching.html
Edit
shaping-shaper-selection.html
Edit
style.css
Edit
text-runs.html
Edit
the-distinction-between-levels-0-and-1.html
Edit
unicode-character-categories.html
Edit
up-insensitive.png
Edit
up.png
Edit
utilities-common-types-apis.html
Edit
utilities-ucdn.html
Edit
utilities.html
Edit
what-harfbuzz-doesnt-do.html
Edit
what-is-harfbuzz.html
Edit
why-do-i-need-a-shaping-engine.html
Edit
why-is-it-called-harfbuzz.html
Edit
working-with-harfbuzz-clusters.html
Edit