Imported Upstream version 2.4.0
[platform/upstream/harfbuzz.git] / docs / html / ch03s02.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
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 Vsnapshot">
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.29 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
13 </head>
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>
21 </tr></table>
22 <div class="section">
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>
25 <p>
26       
27     </p>
28 <div class="variablelist"><table border="0" class="variablelist">
29 <colgroup>
30 <col align="left" valign="top">
31 <col>
32 </colgroup>
33 <tbody>
34 <tr>
35 <td><p><span class="term">script</span></p></td>
36 <td>
37 <p>
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
41               languages.
42             </p>
43 <p>
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.
51             </p>
52 <p>
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
57               than one script.
58             </p>
59 </td>
60 </tr>
61 <tr>
62 <td><p><span class="term">shaper</span></p></td>
63 <td><p>
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
69               non-complex scripts. 
70             </p></td>
71 </tr>
72 <tr>
73 <td><p><span class="term">cluster</span></p></td>
74 <td>
75 <p>
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
82               code points.
83             </p>
84 <p>
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
88               shaping operations.
89             </p>
90 </td>
91 </tr>
92 <tr>
93 <td><p><span class="term">grapheme</span></p></td>
94 <td>
95 <p>
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
102               points.
103             </p>
104 <p>
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
111               identical.
112             </p>
113 </td>
114 </tr>
115 <tr>
116 <td><p><span class="term">syllable</span></p></td>
117 <td>
118 <p>
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.
123             </p>
124 <p>
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.
130             </p>
131 <p>
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
140               will be identical.
141             </p>
142 </td>
143 </tr>
144 </tbody>
145 </table></div>
146 </div>
147 <div class="footer">
148 <hr>Generated by GTK-Doc V1.29</div>
149 </body>
150 </html>