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>Terminology: 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="getting-started.html" title="Getting started with HarfBuzz">
9 <link rel="prev" href="getting-started.html" title="Getting started with HarfBuzz">
10 <link rel="next" href="ch03s03.html" title="A simple shaping example">
11 <meta name="generator" content="GTK-Doc V1.25 (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="getting-started.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
19 <td><a accesskey="p" href="getting-started.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
20 <td><a accesskey="n" href="ch03s03.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.4.3"></a>Terminology</h2></div></div></div>
28 <div class="variablelist"><table border="0" class="variablelist">
30 <col align="left" valign="top">
35 <td><p><span class="term">script</span></p></td>
38 In text shaping, a <span class="emphasis"><em>script</em></span> is a
39 writing system: a set of symbols, rules, and conventions
40 that is used to represent a language or multiple
44 In general computing lingo, the word "script" can also
45 be used to mean an executable program (usually one
46 written in a human-readable programming language). For
47 the sake of clarity, HarfBuzz documents will always use
48 more specific terminology when referring to this
49 meaning, such as "Python script" or "shell script." In
50 all other instances, "script" refers to a writing system.
53 For developers using HarfBuzz, it is important to note
54 the distinction between a script and a language. Most
55 scripts are used to write a variety of different
56 languages, and many languages may be written in more
62 <td><p><span class="term">shaper</span></p></td>
64 In HarfBuzz, a <span class="emphasis"><em>shaper</em></span> is a
65 handler for a specific script-shaping model. HarfBuzz
66 implements separate shapers for Indic, Arabic, Thai and
67 Lao, Khmer, Myanmar, Tibetan, Hangul, Hebrew, the
68 Universal Shaping Engine (USE), and a default shaper for
73 <td><p><span class="term">cluster</span></p></td>
76 In text shaping, a <span class="emphasis"><em>cluster</em></span> is a
77 sequence of codepoints that must be treated as an
78 indivisible unit. Clusters can include code-point
79 sequences that form a ligature or base-and-mark
80 sequences. Tracking and preserving clusters is important
81 when shaping operations might separate or reorder
85 HarfBuzz provides three cluster
86 <span class="emphasis"><em>levels</em></span> that implement different
87 approaches to the problem of preserving clusters during
93 <td><p><span class="term">grapheme</span></p></td>
96 In linguistics, a <span class="emphasis"><em>grapheme</em></span> is one
97 of the indivisible units that make up a writing system or
98 script. Often, graphemes are individual symbols (letters,
99 numbers, punctuation marks, logograms, etc.) but,
100 depending on the writing system, a particular grapheme
101 might correspond to a sequence of several Unicode code
105 In practice, HarfBuzz and other text-shaping engines
106 are not generally concerned with graphemes. However, it
107 is important for developers using HarfBuzz to recognize
108 that there is a difference between graphemes and shaping
109 clusters (see above). The two concepts may overlap
110 frequently, but there is no guarantee that they will be
116 <td><p><span class="term">syllable</span></p></td>
119 In linguistics, a <span class="emphasis"><em>syllable</em></span> is an
120 a sequence of sounds that makes up a building block of a
121 particular language. Every language has its own set of
122 rules describing what constitutes a valid syllable.
125 For text-shaping purposes, the various definitions of
126 "syllable" are important because script-specific shaping
127 operations may be applied at the syllable level. For
128 example, a reordering rule might specify that a vowel
129 mark be reordered to the beginning of the syllable.
132 Syllables will consist of one or more Unicode code
133 points. The definition of a syllable for a particular
134 writing system might correspond to how HarfBuzz
135 identifies clusters (see above) for the same writing
136 system. However, it is important for developers using
137 HarfBuzz to recognize that there is a difference between
138 syllables and shaping clusters. The two concepts may
139 overlap frequently, but there is no guarantee that they
148 <hr>Generated by GTK-Doc V1.25</div>