<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
  <!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
  <!ENTITY version SYSTEM "version.xml">
]>
<chapter id="what-is-harfbuzz">
  <title>What is HarfBuzz?</title>
  <para>
    HarfBuzz is a <emphasis>text-shaping engine</emphasis>. 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. 
  </para>
  <para>
    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.
  </para>
  <section id="what-is-text-shaping">
    <title>What is text shaping?</title>
    <para>
      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.
    </para>
    <para>
      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.
    </para>
    <para>
      Modern software systems generally only deal with strings in the
      Unicode encoding scheme (although legacy systems and documents may
      involve other encodings).
    </para>
    <para>
      There are several font formats that a program might
      encounter, each of which has a set of standard text-shaping
      rules.
    </para>
    <para>The dominant format is <ulink
      url="http://www.microsoft.com/typography/otspec/">OpenType</ulink>. The
    OpenType specification defines a series of <ulink url="https://github.com/n8willis/opentype-shaping-documents">shaping models</ulink> for
    various scripts from around the world. These shaping models depend on
    the font incorporating certain features as
    <emphasis>lookups</emphasis> in its <literal>GSUB</literal> 
    and <literal>GPOS</literal> tables.
    </para>
    <para>
      Alternatively, OpenType fonts can include shaping features for
      the <ulink url="https://graphite.sil.org/">Graphite</ulink> shaping model.
    </para>
    <para>
      TrueType fonts can also include OpenType shaping
      features. Alternatively, TrueType fonts can also include <ulink url="https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html">Apple
      Advanced Typography</ulink> (AAT) tables to implement shaping
      support. AAT fonts are generally only found on macOS and iOS systems.
    </para>
    <para>
      Text strings will usually be tagged with a script and language
      tag that provide the context needed to perform text shaping
      correctly.  The necessary <ulink
      url="https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags">script</ulink> 
      and <ulink
      url="https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags">language</ulink>
      tags are defined by OpenType.
    </para>
  </section>
  
  <section id="why-do-i-need-a-shaping-engine">
    <title>Why do I need a shaping engine?</title>
    <para>
      Text shaping is an integral part of preparing text for
      display. Before a Unicode sequence can be rendered, the
      codepoints in the sequence must be mapped to the corresponding
      glyphs provided in the font, and those glyphs must be positioned
      correctly relative to each other. For many of the scripts
      supported in Unicode, these steps involve script-specific layout
      rules, including complex joining, reordering, and positioning
      behavior. Implementing these rules is the job of the shaping engine.
    </para>
    <para>
      Text shaping is a fairly low-level operation. HarfBuzz is
      used directly by text-handling libraries like <ulink
      url="https://www.pango.org/">Pango</ulink>, as well as by the layout
      engines in Firefox, LibreOffice, and Chromium. Unless you are
      <emphasis>writing</emphasis> one of these layout engines
      yourself, you will probably not need to use HarfBuzz: normally,
      a layout engine, toolkit, or other library will turn text into
      glyphs for you.
    </para>
    <para>
      However, if you <emphasis>are</emphasis> writing a layout engine
      or graphics library yourself, then you will need to perform text
      shaping, and this is where HarfBuzz can help you.
    </para>
    <para>
      Here are some specific scenarios where a text-shaping engine
      like HarfBuzz helps you:
    </para>
    <itemizedlist>
      <listitem>
        <para>
          OpenType fonts contain a set of glyphs (that is, shapes
	  to represent the letters, numbers, punctuation marks, and
	  all other symbols), which are indexed by a <literal>glyph ID</literal>.
	</para>
	<para>
          A particular glyph ID within the font does not necessarily
	  correlate to a predictable Unicode codepoint. For instance,
	  some fonts have the letter &quot;a&quot; as glyph ID 1, but
	  many others do not. In order to retrieve the right glyph
	  from the font to display &quot;a&quot;, you need to consult
	  the table inside the font (the <literal>cmap</literal>
	  table) that maps Unicode codepoints to glyph IDs. In other
	  words, <emphasis>text shaping turns codepoints into glyph
	  IDs</emphasis>.
        </para>
      </listitem>
      <listitem>
        <para>
          Many OpenType fonts contain ligatures: combinations of
          characters that are rendered as a single unit. For instance,
	  it is common for the &quot;f, i&quot; letter
	  sequence to appear in print as the single ligature glyph
	  &quot;ﬁ&quot;.
	</para>
	<para>
	  Whether you should render an &quot;f, i&quot; sequence
	  as <literal>fi</literal> or as &quot;ﬁ&quot; does not
          depend on the input text. Instead, it depends on the whether
	  or not the font includes an &quot;ﬁ&quot; glyph and on the
	  level of ligature application you wish to perform. The font
	  and the amount of ligature application used are under your
	  control. In other words, <emphasis>text shaping involves
	  querying the font's ligature tables and determining what
	  substitutions should be made</emphasis>. 
        </para>
      </listitem>
      <listitem>
        <para>
          While ligatures like &quot;ﬁ&quot; are optional typographic
          refinements, some languages <emphasis>require</emphasis> certain
          substitutions to be made in order to display text correctly.
        </para>
	<para>
	  For example, in Tamil, when the letter &quot;TTA&quot; (ட)
	  letter is followed by the vowel sign &quot;U&quot; (ு), the pair
	  must be replaced by the single glyph &quot;டு&quot;. The
	  sequence of Unicode characters &quot;ட,ு&quot; needs to be
	  substituted with a single &quot;டு&quot; glyph from the
	  font.
	</para>
	<para>
	  But &quot;டு&quot; does not have a Unicode codepoint. To
	  find this glyph, you need to consult the table inside 
	  the font (the <literal>GSUB</literal> table) that contains
	  substitution information. In other words, <emphasis>text shaping 
	  chooses the correct glyph for a sequence of characters
	  provided</emphasis>.
        </para>
      </listitem>
      <listitem>
        <para>
          Similarly, each Arabic character has four different variants
	  corresponding to the different positions it might appear in
	  within a sequence. Inside a font, there will be separate
	  glyphs for the initial, medial, final, and isolated forms of
	  each letter, each at a different glyph ID.
	</para>
	<para>
	  Unicode only assigns one codepoint per character, so a
	  Unicode string will not tell you which glyph variant to use
	  for each character. To decide, you need to analyze the whole
	  string and determine the appropriate glyph for each character
	  based on its position. In other words, <emphasis>text
	  shaping chooses the correct form of the letter by its
	  position and returns the correct glyph from the font</emphasis>.
        </para>
      </listitem>
      <listitem>
        <para>
          Other languages involve marks and accents that need to be
          rendered in specific positions relative a base character. For
          instance, the Moldovan language includes the Cyrillic letter
          &quot;zhe&quot; (ж) with a breve accent, like so: &quot;ӂ&quot;.
	</para>
	<para>
	  Some fonts will provide this character as a single
	  zhe-with-breve glyph, but other fonts will not and, instead,
	  will expect the rendering engine to form the character by 
          superimposing the separate &quot;ж&quot; and &quot;˘&quot;
	  glyphs.
	</para>
	<para>
	  But exactly where you should draw the breve depends on the
	  height and width of the preceding zhe glyph. To find the
	  right position, you need to consult the table inside
	  the font (the <literal>GPOS</literal> table) that contains
	  positioning information.
          In other words, <emphasis>text shaping tells you whether you
	  have a precomposed glyph within your font or if you need to
	  compose a glyph yourself out of combining marks&mdash;and,
	  if so, where to position those marks.</emphasis>
        </para>
      </listitem>
    </itemizedlist>
    <para>
      If tasks like these are something that you need to do, then you
      need a text shaping engine. You could use Uniscribe if you are
      writing Windows software; you could use CoreText on macOS; or
      you could use HarfBuzz.
    </para>
    <note>
      <para>
	In the rest of this manual, the text will assume that the reader
	is that implementor of a text-layout engine.
      </para>
    </note>
  </section>
  

  <section id="what-does-harfbuzz-do">
    <title>What does HarfBuzz do?</title>
    <para>
      HarfBuzz provides text shaping through a cross-platform
      C API that accepts sequences of Unicode codepoints as input. Currently,
      the following OpenType shaping models are supported:
    </para>
    <itemizedlist>
      <listitem>
	<para>
	  Indic (covering Devanagari, Bengali, Gujarati,
	  Gurmukhi, Kannada, Malayalam, Oriya, Tamil, Telugu, and
	  Sinhala)
	</para>
      </listitem>
      <listitem>
	<para>
	  Arabic (covering Arabic, N'Ko, Syriac, and Mongolian)
	</para>
      </listitem>
      <listitem>
	<para>
	  Thai and Lao
	</para>
      </listitem>
      <listitem>
	<para>
	  Khmer
	</para>
      </listitem>
      <listitem>
	<para>
	  Myanmar
	</para>
      </listitem>
      
      <listitem>
	<para>
	  Tibetan
	</para>
      </listitem>
      
      <listitem>
	<para>
	  Hangul
	</para>
      </listitem>
      
      <listitem>
	<para>
	  Hebrew
	</para>
      </listitem>      
      <listitem>
	<para>
	  The Universal Shaping Engine or <emphasis>USE</emphasis>
	  (covering complex scripts not covered by the above shaping
	  models)
	</para>
      </listitem>      
      <listitem>
	<para>
	  A default shaping model for non-complex scripts
	  (covering Latin, Cyrillic, Greek, Armenian, Georgian, Tifinagh,
	  and many others)
	</para>
      </listitem>
      <listitem>
	<para>
	  Emoji (including emoji modifier sequences, flag sequences,
	  and ZWJ sequences)
	</para>
      </listitem>
    </itemizedlist>

    <para>
      In addition to OpenType shaping, HarfBuzz supports the latest
      version of Graphite shaping (the "Graphite 2" model) and AAT
      shaping.
    </para>
    
    <para>
      HarfBuzz can read and understand TrueType fonts (.ttf), TrueType
      collections (.ttc), and OpenType fonts (.otf, including those
      fonts that contain TrueType-style outlines and those that
      contain PostScript CFF or CFF2 outlines).
    </para>

    <para>
      HarfBuzz is designed and tested to run on top of the FreeType
      font renderer. It can run on Linux, Android, Windows, macOS, and
      iOS systems.
    </para>
    
    <para>
      In addition to its core shaping functionality, HarfBuzz provides
      functions for accessing other font features, including optional
      GSUB and GPOS OpenType features, as well as
      all color-font formats (<literal>CBDT</literal>,
      <literal>sbix</literal>, <literal>COLR/CPAL</literal>, and
      <literal>SVG-OT</literal>) and OpenType variable fonts. HarfBuzz
      also includes a font-subsetting feature. HarfBuzz can perform
      some low-level math-shaping operations, although it does not
      currently perform full shaping for mathematical typesetting.
    </para>
    
    <para>
      A suite of command-line utilities is also provided in the
      source-code tree, designed to help users test and debug
      HarfBuzz's features on real-world fonts and input.
    </para>
  </section>

  <section id="what-harfbuzz-doesnt-do">
    <title>What HarfBuzz doesn't do</title>
    <para>
      HarfBuzz will take a Unicode string, shape it, and give you the
      information required to lay it out correctly on a single
      horizontal (or vertical) line using the font provided. That is the
      extent of HarfBuzz's responsibility.
    </para>
    <para>
      It is important to note that if you are implementing a complete
      text-layout engine you may have other responsibilities that
      HarfBuzz will <emphasis>not</emphasis> help you with. For example:
    </para>
    <itemizedlist>
      <listitem>
        <para>
          HarfBuzz won't help you with bidirectionality. If you want to
          lay out text that includes a mix of Hebrew and English, you
	  will need to ensure that each buffer provided to HarfBuzz
	  has all of its characters in the same order and that the
	  directionality of the buffer is set correctly. This may mean
	  segmenting the text before it is placed into HarfBuzz buffers. In
          other words, the user will hit the keys in the following
          sequence:
        </para>
        <programlisting>
	  A B C [space] ג ב א [space] D E F
        </programlisting>
        <para>
          but will expect to see in the output:
        </para>
        <programlisting>
	  ABC אבג DEF
        </programlisting>
        <para>
          This reordering is called <emphasis>bidi processing</emphasis>
          (&quot;bidi&quot; is short for bidirectional), and there's an
          algorithm as an annex to the Unicode Standard which tells you how
          to process a string of mixed directionality.
          Before sending your string to HarfBuzz, you may need to apply the
          bidi algorithm to it. Libraries such as <ulink
	  url="http://icu-project.org/">ICU</ulink> and <ulink
	  url="http://fribidi.org/">fribidi</ulink> can do this for you.
        </para>
      </listitem>
      <listitem>
        <para>
          HarfBuzz won't help you with text that contains different font
          properties. For instance, if you have the string &quot;a
          <emphasis>huge</emphasis> breakfast&quot;, and you expect
          &quot;huge&quot; to be italic, then you will need to send three
          strings to HarfBuzz: <literal>a</literal>, in your Roman font;
          <literal>huge</literal> using your italic font; and
          <literal>breakfast</literal> using your Roman font again.
	</para>
	<para>
          Similarly, if you change the font, font size, script,
	  language, or direction within your string, then you will
	  need to shape each run independently and output them
	  independently. HarfBuzz expects to shape a run of characters
	  that all share the same properties.
        </para>
      </listitem>
      <listitem>
        <para>
          HarfBuzz won't help you with line breaking, hyphenation, or
          justification. As mentioned above, HarfBuzz lays out the string
          along a <emphasis>single line</emphasis> of, notionally,
          infinite length. If you want to find out where the potential
          word, sentence and line break points are in your text, you
          could use the ICU library's break iterator functions.
        </para>
        <para>
          HarfBuzz can tell you how wide a shaped piece of text is, which is
          useful input to a justification algorithm, but it knows nothing
          about paragraphs, lines or line lengths. Nor will it adjust the
          space between words to fit them proportionally into a line.
        </para>
      </listitem>
    </itemizedlist>
    <para>
      As a layout-engine implementor, HarfBuzz will help you with the
      interface between your text and your font, and that's something
      that you'll need&mdash;what you then do with the glyphs that your font
      returns is up to you. 
    </para>
  </section>
    
  <section id="why-is-it-called-harfbuzz">
    <title>Why is it called HarfBuzz?</title>
    <para>
      HarfBuzz began its life as text-shaping code within the FreeType
      project (and you will see references to the FreeType authors
      within the source code copyright declarations), but was then
      extracted out to its own project. This project is maintained by
      Behdad Esfahbod, who named it HarfBuzz. Originally, it was a
      shaping engine for OpenType fonts&mdash;&quot;HarfBuzz&quot; is
      the Persian for &quot;open type&quot;.
    </para>
  </section>
</chapter>
