Imported Upstream version 8.2.2
[platform/upstream/harfbuzz.git] / docs / html / harfbuzz-hb-buffer.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>hb-buffer: 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="core-api.html" title="Core API">
9 <link rel="prev" href="harfbuzz-hb-blob.html" title="hb-blob">
10 <link rel="next" href="harfbuzz-hb-common.html" title="hb-common">
11 <meta name="generator" content="GTK-Doc V1.32 (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">
17 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
18                   <a href="#harfbuzz-hb-buffer.description" class="shortcut">Description</a></span>
19 </td>
20 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
21 <td><a accesskey="u" href="core-api.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
22 <td><a accesskey="p" href="harfbuzz-hb-blob.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
23 <td><a accesskey="n" href="harfbuzz-hb-common.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
24 </tr></table>
25 <div class="refentry">
26 <a name="harfbuzz-hb-buffer"></a><div class="titlepage"></div>
27 <div class="refnamediv"><table width="100%"><tr>
28 <td valign="top">
29 <h2><span class="refentrytitle"><a name="harfbuzz-hb-buffer.top_of_page"></a>hb-buffer</span></h2>
30 <p>hb-buffer — Input and output buffers</p>
31 </td>
32 <td class="gallery_image" valign="top" align="right"></td>
33 </tr></table></div>
34 <div class="refsect1">
35 <a name="harfbuzz-hb-buffer.functions"></a><h2>Functions</h2>
36 <div class="informaltable"><table class="informaltable" width="100%" border="0">
37 <colgroup>
38 <col width="150px" class="functions_proto_type">
39 <col class="functions_proto_name">
40 </colgroup>
41 <tbody>
42 <tr>
43 <td class="function_type">
44 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="returnvalue">hb_buffer_t</span></a> *
45 </td>
46 <td class="function_name">
47 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-create" title="hb_buffer_create ()">hb_buffer_create</a> <span class="c_punctuation">()</span>
48 </td>
49 </tr>
50 <tr>
51 <td class="function_type">
52 <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
53 </td>
54 <td class="function_name">
55 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-allocation-successful" title="hb_buffer_allocation_successful ()">hb_buffer_allocation_successful</a> <span class="c_punctuation">()</span>
56 </td>
57 </tr>
58 <tr>
59 <td class="function_type">
60 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="returnvalue">hb_buffer_t</span></a> *
61 </td>
62 <td class="function_name">
63 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-create-similar" title="hb_buffer_create_similar ()">hb_buffer_create_similar</a> <span class="c_punctuation">()</span>
64 </td>
65 </tr>
66 <tr>
67 <td class="function_type">
68 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="returnvalue">hb_buffer_t</span></a> *
69 </td>
70 <td class="function_name">
71 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-empty" title="hb_buffer_get_empty ()">hb_buffer_get_empty</a> <span class="c_punctuation">()</span>
72 </td>
73 </tr>
74 <tr>
75 <td class="function_type">
76 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="returnvalue">hb_buffer_t</span></a> *
77 </td>
78 <td class="function_name">
79 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reference" title="hb_buffer_reference ()">hb_buffer_reference</a> <span class="c_punctuation">()</span>
80 </td>
81 </tr>
82 <tr>
83 <td class="function_type">
84 <span class="returnvalue">void</span>
85 </td>
86 <td class="function_name">
87 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-destroy" title="hb_buffer_destroy ()">hb_buffer_destroy</a> <span class="c_punctuation">()</span>
88 </td>
89 </tr>
90 <tr>
91 <td class="function_type">
92 <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
93 </td>
94 <td class="function_name">
95 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-user-data" title="hb_buffer_set_user_data ()">hb_buffer_set_user_data</a> <span class="c_punctuation">()</span>
96 </td>
97 </tr>
98 <tr>
99 <td class="function_type">
100 <span class="returnvalue">void</span> *
101 </td>
102 <td class="function_name">
103 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-user-data" title="hb_buffer_get_user_data ()">hb_buffer_get_user_data</a> <span class="c_punctuation">()</span>
104 </td>
105 </tr>
106 <tr>
107 <td class="function_type">
108 <span class="returnvalue">void</span>
109 </td>
110 <td class="function_name">
111 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reset" title="hb_buffer_reset ()">hb_buffer_reset</a> <span class="c_punctuation">()</span>
112 </td>
113 </tr>
114 <tr>
115 <td class="function_type">
116 <span class="returnvalue">void</span>
117 </td>
118 <td class="function_name">
119 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-clear-contents" title="hb_buffer_clear_contents ()">hb_buffer_clear_contents</a> <span class="c_punctuation">()</span>
120 </td>
121 </tr>
122 <tr>
123 <td class="function_type">
124 <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
125 </td>
126 <td class="function_name">
127 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-pre-allocate" title="hb_buffer_pre_allocate ()">hb_buffer_pre_allocate</a> <span class="c_punctuation">()</span>
128 </td>
129 </tr>
130 <tr>
131 <td class="function_type">
132 <span class="returnvalue">void</span>
133 </td>
134 <td class="function_name">
135 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add" title="hb_buffer_add ()">hb_buffer_add</a> <span class="c_punctuation">()</span>
136 </td>
137 </tr>
138 <tr>
139 <td class="function_type">
140 <span class="returnvalue">void</span>
141 </td>
142 <td class="function_name">
143 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()">hb_buffer_add_codepoints</a> <span class="c_punctuation">()</span>
144 </td>
145 </tr>
146 <tr>
147 <td class="function_type">
148 <span class="returnvalue">void</span>
149 </td>
150 <td class="function_name">
151 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf32" title="hb_buffer_add_utf32 ()">hb_buffer_add_utf32</a> <span class="c_punctuation">()</span>
152 </td>
153 </tr>
154 <tr>
155 <td class="function_type">
156 <span class="returnvalue">void</span>
157 </td>
158 <td class="function_name">
159 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf16" title="hb_buffer_add_utf16 ()">hb_buffer_add_utf16</a> <span class="c_punctuation">()</span>
160 </td>
161 </tr>
162 <tr>
163 <td class="function_type">
164 <span class="returnvalue">void</span>
165 </td>
166 <td class="function_name">
167 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf8" title="hb_buffer_add_utf8 ()">hb_buffer_add_utf8</a> <span class="c_punctuation">()</span>
168 </td>
169 </tr>
170 <tr>
171 <td class="function_type">
172 <span class="returnvalue">void</span>
173 </td>
174 <td class="function_name">
175 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-latin1" title="hb_buffer_add_latin1 ()">hb_buffer_add_latin1</a> <span class="c_punctuation">()</span>
176 </td>
177 </tr>
178 <tr>
179 <td class="function_type">
180 <span class="returnvalue">void</span>
181 </td>
182 <td class="function_name">
183 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-append" title="hb_buffer_append ()">hb_buffer_append</a> <span class="c_punctuation">()</span>
184 </td>
185 </tr>
186 <tr>
187 <td class="function_type">
188 <span class="returnvalue">void</span>
189 </td>
190 <td class="function_name">
191 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-content-type" title="hb_buffer_set_content_type ()">hb_buffer_set_content_type</a> <span class="c_punctuation">()</span>
192 </td>
193 </tr>
194 <tr>
195 <td class="function_type">
196 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="returnvalue">hb_buffer_content_type_t</span></a>
197 </td>
198 <td class="function_name">
199 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-content-type" title="hb_buffer_get_content_type ()">hb_buffer_get_content_type</a> <span class="c_punctuation">()</span>
200 </td>
201 </tr>
202 <tr>
203 <td class="function_type">
204 <span class="returnvalue">void</span>
205 </td>
206 <td class="function_name">
207 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()">hb_buffer_set_direction</a> <span class="c_punctuation">()</span>
208 </td>
209 </tr>
210 <tr>
211 <td class="function_type">
212 <a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="returnvalue">hb_direction_t</span></a>
213 </td>
214 <td class="function_name">
215 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-direction" title="hb_buffer_get_direction ()">hb_buffer_get_direction</a> <span class="c_punctuation">()</span>
216 </td>
217 </tr>
218 <tr>
219 <td class="function_type">
220 <span class="returnvalue">void</span>
221 </td>
222 <td class="function_name">
223 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-script" title="hb_buffer_set_script ()">hb_buffer_set_script</a> <span class="c_punctuation">()</span>
224 </td>
225 </tr>
226 <tr>
227 <td class="function_type">
228 <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
229 </td>
230 <td class="function_name">
231 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-script" title="hb_buffer_get_script ()">hb_buffer_get_script</a> <span class="c_punctuation">()</span>
232 </td>
233 </tr>
234 <tr>
235 <td class="function_type">
236 <span class="returnvalue">void</span>
237 </td>
238 <td class="function_name">
239 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-language" title="hb_buffer_set_language ()">hb_buffer_set_language</a> <span class="c_punctuation">()</span>
240 </td>
241 </tr>
242 <tr>
243 <td class="function_type">
244 <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
245 </td>
246 <td class="function_name">
247 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-language" title="hb_buffer_get_language ()">hb_buffer_get_language</a> <span class="c_punctuation">()</span>
248 </td>
249 </tr>
250 <tr>
251 <td class="function_type">
252 <span class="returnvalue">void</span>
253 </td>
254 <td class="function_name">
255 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-flags" title="hb_buffer_set_flags ()">hb_buffer_set_flags</a> <span class="c_punctuation">()</span>
256 </td>
257 </tr>
258 <tr>
259 <td class="function_type">
260 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="returnvalue">hb_buffer_flags_t</span></a>
261 </td>
262 <td class="function_name">
263 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-flags" title="hb_buffer_get_flags ()">hb_buffer_get_flags</a> <span class="c_punctuation">()</span>
264 </td>
265 </tr>
266 <tr>
267 <td class="function_type">
268 <span class="returnvalue">void</span>
269 </td>
270 <td class="function_name">
271 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-cluster-level" title="hb_buffer_set_cluster_level ()">hb_buffer_set_cluster_level</a> <span class="c_punctuation">()</span>
272 </td>
273 </tr>
274 <tr>
275 <td class="function_type">
276 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t"><span class="returnvalue">hb_buffer_cluster_level_t</span></a>
277 </td>
278 <td class="function_name">
279 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-cluster-level" title="hb_buffer_get_cluster_level ()">hb_buffer_get_cluster_level</a> <span class="c_punctuation">()</span>
280 </td>
281 </tr>
282 <tr>
283 <td class="function_type">
284 <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
285 </td>
286 <td class="function_name">
287 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-length" title="hb_buffer_set_length ()">hb_buffer_set_length</a> <span class="c_punctuation">()</span>
288 </td>
289 </tr>
290 <tr>
291 <td class="function_type">unsigned <span class="returnvalue">int</span>
292 </td>
293 <td class="function_name">
294 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-length" title="hb_buffer_get_length ()">hb_buffer_get_length</a> <span class="c_punctuation">()</span>
295 </td>
296 </tr>
297 <tr>
298 <td class="function_type">
299 <span class="returnvalue">void</span>
300 </td>
301 <td class="function_name">
302 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-segment-properties" title="hb_buffer_set_segment_properties ()">hb_buffer_set_segment_properties</a> <span class="c_punctuation">()</span>
303 </td>
304 </tr>
305 <tr>
306 <td class="function_type">
307 <span class="returnvalue">void</span>
308 </td>
309 <td class="function_name">
310 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-segment-properties" title="hb_buffer_get_segment_properties ()">hb_buffer_get_segment_properties</a> <span class="c_punctuation">()</span>
311 </td>
312 </tr>
313 <tr>
314 <td class="function_type">
315 <span class="returnvalue">void</span>
316 </td>
317 <td class="function_name">
318 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-guess-segment-properties" title="hb_buffer_guess_segment_properties ()">hb_buffer_guess_segment_properties</a> <span class="c_punctuation">()</span>
319 </td>
320 </tr>
321 <tr>
322 <td class="function_type">
323 <span class="returnvalue">void</span>
324 </td>
325 <td class="function_name">
326 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-unicode-funcs" title="hb_buffer_set_unicode_funcs ()">hb_buffer_set_unicode_funcs</a> <span class="c_punctuation">()</span>
327 </td>
328 </tr>
329 <tr>
330 <td class="function_type">
331 <a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t" title="hb_unicode_funcs_t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
332 </td>
333 <td class="function_name">
334 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-unicode-funcs" title="hb_buffer_get_unicode_funcs ()">hb_buffer_get_unicode_funcs</a> <span class="c_punctuation">()</span>
335 </td>
336 </tr>
337 <tr>
338 <td class="function_type">
339 <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t" title="hb_glyph_info_t"><span class="returnvalue">hb_glyph_info_t</span></a> *
340 </td>
341 <td class="function_name">
342 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-infos" title="hb_buffer_get_glyph_infos ()">hb_buffer_get_glyph_infos</a> <span class="c_punctuation">()</span>
343 </td>
344 </tr>
345 <tr>
346 <td class="function_type">
347 <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t"><span class="returnvalue">hb_glyph_flags_t</span></a>
348 </td>
349 <td class="function_name">
350 <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-get-glyph-flags" title="hb_glyph_info_get_glyph_flags ()">hb_glyph_info_get_glyph_flags</a> <span class="c_punctuation">()</span>
351 </td>
352 </tr>
353 <tr>
354 <td class="function_type">
355 <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t" title="hb_glyph_position_t"><span class="returnvalue">hb_glyph_position_t</span></a> *
356 </td>
357 <td class="function_name">
358 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-positions" title="hb_buffer_get_glyph_positions ()">hb_buffer_get_glyph_positions</a> <span class="c_punctuation">()</span>
359 </td>
360 </tr>
361 <tr>
362 <td class="function_type">
363 <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
364 </td>
365 <td class="function_name">
366 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-has-positions" title="hb_buffer_has_positions ()">hb_buffer_has_positions</a> <span class="c_punctuation">()</span>
367 </td>
368 </tr>
369 <tr>
370 <td class="function_type">
371 <span class="returnvalue">void</span>
372 </td>
373 <td class="function_name">
374 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-invisible-glyph" title="hb_buffer_set_invisible_glyph ()">hb_buffer_set_invisible_glyph</a> <span class="c_punctuation">()</span>
375 </td>
376 </tr>
377 <tr>
378 <td class="function_type">
379 <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
380 </td>
381 <td class="function_name">
382 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-invisible-glyph" title="hb_buffer_get_invisible_glyph ()">hb_buffer_get_invisible_glyph</a> <span class="c_punctuation">()</span>
383 </td>
384 </tr>
385 <tr>
386 <td class="function_type">
387 <span class="returnvalue">void</span>
388 </td>
389 <td class="function_name">
390 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-not-found-glyph" title="hb_buffer_set_not_found_glyph ()">hb_buffer_set_not_found_glyph</a> <span class="c_punctuation">()</span>
391 </td>
392 </tr>
393 <tr>
394 <td class="function_type">
395 <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
396 </td>
397 <td class="function_name">
398 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-not-found-glyph" title="hb_buffer_get_not_found_glyph ()">hb_buffer_get_not_found_glyph</a> <span class="c_punctuation">()</span>
399 </td>
400 </tr>
401 <tr>
402 <td class="function_type">
403 <span class="returnvalue">void</span>
404 </td>
405 <td class="function_name">
406 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()">hb_buffer_set_replacement_codepoint</a> <span class="c_punctuation">()</span>
407 </td>
408 </tr>
409 <tr>
410 <td class="function_type">
411 <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
412 </td>
413 <td class="function_name">
414 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-replacement-codepoint" title="hb_buffer_get_replacement_codepoint ()">hb_buffer_get_replacement_codepoint</a> <span class="c_punctuation">()</span>
415 </td>
416 </tr>
417 <tr>
418 <td class="function_type">
419 <span class="returnvalue">void</span>
420 </td>
421 <td class="function_name">
422 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-normalize-glyphs" title="hb_buffer_normalize_glyphs ()">hb_buffer_normalize_glyphs</a> <span class="c_punctuation">()</span>
423 </td>
424 </tr>
425 <tr>
426 <td class="function_type">
427 <span class="returnvalue">void</span>
428 </td>
429 <td class="function_name">
430 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reverse" title="hb_buffer_reverse ()">hb_buffer_reverse</a> <span class="c_punctuation">()</span>
431 </td>
432 </tr>
433 <tr>
434 <td class="function_type">
435 <span class="returnvalue">void</span>
436 </td>
437 <td class="function_name">
438 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reverse-range" title="hb_buffer_reverse_range ()">hb_buffer_reverse_range</a> <span class="c_punctuation">()</span>
439 </td>
440 </tr>
441 <tr>
442 <td class="function_type">
443 <span class="returnvalue">void</span>
444 </td>
445 <td class="function_name">
446 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reverse-clusters" title="hb_buffer_reverse_clusters ()">hb_buffer_reverse_clusters</a> <span class="c_punctuation">()</span>
447 </td>
448 </tr>
449 <tr>
450 <td class="function_type">unsigned <span class="returnvalue">int</span>
451 </td>
452 <td class="function_name">
453 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize" title="hb_buffer_serialize ()">hb_buffer_serialize</a> <span class="c_punctuation">()</span>
454 </td>
455 </tr>
456 <tr>
457 <td class="function_type">unsigned <span class="returnvalue">int</span>
458 </td>
459 <td class="function_name">
460 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()">hb_buffer_serialize_glyphs</a> <span class="c_punctuation">()</span>
461 </td>
462 </tr>
463 <tr>
464 <td class="function_type">
465 <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
466 </td>
467 <td class="function_name">
468 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-deserialize-glyphs" title="hb_buffer_deserialize_glyphs ()">hb_buffer_deserialize_glyphs</a> <span class="c_punctuation">()</span>
469 </td>
470 </tr>
471 <tr>
472 <td class="function_type">unsigned <span class="returnvalue">int</span>
473 </td>
474 <td class="function_name">
475 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-unicode" title="hb_buffer_serialize_unicode ()">hb_buffer_serialize_unicode</a> <span class="c_punctuation">()</span>
476 </td>
477 </tr>
478 <tr>
479 <td class="function_type">
480 <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
481 </td>
482 <td class="function_name">
483 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-deserialize-unicode" title="hb_buffer_deserialize_unicode ()">hb_buffer_deserialize_unicode</a> <span class="c_punctuation">()</span>
484 </td>
485 </tr>
486 <tr>
487 <td class="function_type">
488 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="returnvalue">hb_buffer_serialize_format_t</span></a>
489 </td>
490 <td class="function_name">
491 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-from-string" title="hb_buffer_serialize_format_from_string ()">hb_buffer_serialize_format_from_string</a> <span class="c_punctuation">()</span>
492 </td>
493 </tr>
494 <tr>
495 <td class="function_type">const <span class="returnvalue">char</span> *
496 </td>
497 <td class="function_name">
498 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-to-string" title="hb_buffer_serialize_format_to_string ()">hb_buffer_serialize_format_to_string</a> <span class="c_punctuation">()</span>
499 </td>
500 </tr>
501 <tr>
502 <td class="function_type">const <span class="returnvalue">char</span> **
503 </td>
504 <td class="function_name">
505 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-list-formats" title="hb_buffer_serialize_list_formats ()">hb_buffer_serialize_list_formats</a> <span class="c_punctuation">()</span>
506 </td>
507 </tr>
508 <tr>
509 <td class="function_type">
510 <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
511 </td>
512 <td class="function_name">
513 <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-equal" title="hb_segment_properties_equal ()">hb_segment_properties_equal</a> <span class="c_punctuation">()</span>
514 </td>
515 </tr>
516 <tr>
517 <td class="function_type">unsigned <span class="returnvalue">int</span>
518 </td>
519 <td class="function_name">
520 <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-hash" title="hb_segment_properties_hash ()">hb_segment_properties_hash</a> <span class="c_punctuation">()</span>
521 </td>
522 </tr>
523 <tr>
524 <td class="function_type">
525 <span class="returnvalue">void</span>
526 </td>
527 <td class="function_name">
528 <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-overlay" title="hb_segment_properties_overlay ()">hb_segment_properties_overlay</a> <span class="c_punctuation">()</span>
529 </td>
530 </tr>
531 <tr>
532 <td class="function_type">
533 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-diff-flags-t" title="enum hb_buffer_diff_flags_t"><span class="returnvalue">hb_buffer_diff_flags_t</span></a>
534 </td>
535 <td class="function_name">
536 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-diff" title="hb_buffer_diff ()">hb_buffer_diff</a> <span class="c_punctuation">()</span>
537 </td>
538 </tr>
539 <tr>
540 <td class="function_type">
541 <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
542 </td>
543 <td class="function_name">
544 <span class="c_punctuation">(</span><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-message-func-t" title="hb_buffer_message_func_t ()">*hb_buffer_message_func_t</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
545 </td>
546 </tr>
547 <tr>
548 <td class="function_type">
549 <span class="returnvalue">void</span>
550 </td>
551 <td class="function_name">
552 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-message-func" title="hb_buffer_set_message_func ()">hb_buffer_set_message_func</a> <span class="c_punctuation">()</span>
553 </td>
554 </tr>
555 </tbody>
556 </table></div>
557 </div>
558 <div class="refsect1">
559 <a name="harfbuzz-hb-buffer.other"></a><h2>Types and Values</h2>
560 <div class="informaltable"><table class="informaltable" width="100%" border="0">
561 <colgroup>
562 <col width="150px" class="other_proto_type">
563 <col class="other_proto_name">
564 </colgroup>
565 <tbody>
566 <tr>
567 <td class="define_keyword">#define</td>
568 <td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#HB-SEGMENT-PROPERTIES-DEFAULT:CAPS" title="HB_SEGMENT_PROPERTIES_DEFAULT">HB_SEGMENT_PROPERTIES_DEFAULT</a></td>
569 </tr>
570 <tr>
571 <td class="define_keyword">#define</td>
572 <td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" title="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT">HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</a></td>
573 </tr>
574 <tr>
575 <td class="typedef_keyword">typedef</td>
576 <td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t">hb_buffer_t</a></td>
577 </tr>
578 <tr>
579 <td class="datatype_keyword"> </td>
580 <td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t" title="hb_glyph_info_t">hb_glyph_info_t</a></td>
581 </tr>
582 <tr>
583 <td class="datatype_keyword">enum</td>
584 <td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t">hb_glyph_flags_t</a></td>
585 </tr>
586 <tr>
587 <td class="datatype_keyword"> </td>
588 <td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t" title="hb_glyph_position_t">hb_glyph_position_t</a></td>
589 </tr>
590 <tr>
591 <td class="datatype_keyword">enum</td>
592 <td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t">hb_buffer_content_type_t</a></td>
593 </tr>
594 <tr>
595 <td class="datatype_keyword">enum</td>
596 <td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t">hb_buffer_flags_t</a></td>
597 </tr>
598 <tr>
599 <td class="datatype_keyword">enum</td>
600 <td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t">hb_buffer_cluster_level_t</a></td>
601 </tr>
602 <tr>
603 <td class="datatype_keyword"> </td>
604 <td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t">hb_segment_properties_t</a></td>
605 </tr>
606 <tr>
607 <td class="datatype_keyword">enum</td>
608 <td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t">hb_buffer_serialize_format_t</a></td>
609 </tr>
610 <tr>
611 <td class="datatype_keyword">enum</td>
612 <td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t">hb_buffer_serialize_flags_t</a></td>
613 </tr>
614 <tr>
615 <td class="datatype_keyword">enum</td>
616 <td class="function_name"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-diff-flags-t" title="enum hb_buffer_diff_flags_t">hb_buffer_diff_flags_t</a></td>
617 </tr>
618 </tbody>
619 </table></div>
620 </div>
621 <div class="refsect1">
622 <a name="harfbuzz-hb-buffer.includes"></a><h2>Includes</h2>
623 <pre class="synopsis">#include &lt;hb.h&gt;
624 </pre>
625 </div>
626 <div class="refsect1">
627 <a name="harfbuzz-hb-buffer.description"></a><h2>Description</h2>
628 <p>Buffers serve a dual role in HarfBuzz; before shaping, they hold
629 the input characters that are passed to <a class="link" href="harfbuzz-hb-shape.html#hb-shape" title="hb_shape ()"><code class="function">hb_shape()</code></a>, and after
630 shaping they hold the output glyphs.</p>
631 <p>The input buffer is a sequence of Unicode codepoints, with
632 associated attributes such as direction and script.  The output
633 buffer is a sequence of glyphs, with associated attributes such
634 as position and cluster.</p>
635 </div>
636 <div class="refsect1">
637 <a name="harfbuzz-hb-buffer.functions_details"></a><h2>Functions</h2>
638 <div class="refsect2">
639 <a name="hb-buffer-create"></a><h3>hb_buffer_create ()</h3>
640 <pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="returnvalue">hb_buffer_t</span></a> *
641 hb_buffer_create (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
642 <p>Creates a new <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> with all properties to defaults.</p>
643 <div class="refsect3">
644 <a name="hb-buffer-create.returns"></a><h4>Returns</h4>
645 <p>A newly allocated <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> with a reference count of 1. The initial
646 reference count should be released with <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-destroy" title="hb_buffer_destroy ()"><code class="function">hb_buffer_destroy()</code></a> when you are done
647 using the <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a>. This function never returns <code class="literal">NULL</code>. If memory cannot
648 be allocated, a special <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> object will be returned on which
649 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-allocation-successful" title="hb_buffer_allocation_successful ()"><code class="function">hb_buffer_allocation_successful()</code></a> returns <code class="literal">false</code>. </p>
650 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
651 </div>
652 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
653 </div>
654 <hr>
655 <div class="refsect2">
656 <a name="hb-buffer-allocation-successful"></a><h3>hb_buffer_allocation_successful ()</h3>
657 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
658 hb_buffer_allocation_successful (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
659 <p>Check if allocating memory for the buffer succeeded.</p>
660 <div class="refsect3">
661 <a name="hb-buffer-allocation-successful.parameters"></a><h4>Parameters</h4>
662 <div class="informaltable"><table class="informaltable" width="100%" border="0">
663 <colgroup>
664 <col width="150px" class="parameters_name">
665 <col class="parameters_description">
666 <col width="200px" class="parameters_annotations">
667 </colgroup>
668 <tbody><tr>
669 <td class="parameter_name"><p>buffer</p></td>
670 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
671 <td class="parameter_annotations"> </td>
672 </tr></tbody>
673 </table></div>
674 </div>
675 <div class="refsect3">
676 <a name="hb-buffer-allocation-successful.returns"></a><h4>Returns</h4>
677 <p><code class="literal">true</code> if <em class="parameter"><code>buffer</code></em>
678 memory allocation succeeded, <code class="literal">false</code> otherwise.</p>
679 </div>
680 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
681 </div>
682 <hr>
683 <div class="refsect2">
684 <a name="hb-buffer-create-similar"></a><h3>hb_buffer_create_similar ()</h3>
685 <pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="returnvalue">hb_buffer_t</span></a> *
686 hb_buffer_create_similar (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *src</code></em>);</pre>
687 <p>Creates a new <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a>, similar to <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-create" title="hb_buffer_create ()"><code class="function">hb_buffer_create()</code></a>. The only
688 difference is that the buffer is configured similarly to <em class="parameter"><code>src</code></em>
689 .</p>
690 <div class="refsect3">
691 <a name="hb-buffer-create-similar.parameters"></a><h4>Parameters</h4>
692 <div class="informaltable"><table class="informaltable" width="100%" border="0">
693 <colgroup>
694 <col width="150px" class="parameters_name">
695 <col class="parameters_description">
696 <col width="200px" class="parameters_annotations">
697 </colgroup>
698 <tbody><tr>
699 <td class="parameter_name"><p>src</p></td>
700 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
701 <td class="parameter_annotations"> </td>
702 </tr></tbody>
703 </table></div>
704 </div>
705 <div class="refsect3">
706 <a name="hb-buffer-create-similar.returns"></a><h4>Returns</h4>
707 <p>A newly allocated <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a>, similar to <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-create" title="hb_buffer_create ()"><code class="function">hb_buffer_create()</code></a>. </p>
708 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
709 </div>
710 <p class="since">Since: <a class="link" href="api-index-3-3-0.html#api-index-3.3.0">3.3.0</a></p>
711 </div>
712 <hr>
713 <div class="refsect2">
714 <a name="hb-buffer-get-empty"></a><h3>hb_buffer_get_empty ()</h3>
715 <pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="returnvalue">hb_buffer_t</span></a> *
716 hb_buffer_get_empty (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
717 <p>Fetches an empty <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a>.</p>
718 <div class="refsect3">
719 <a name="hb-buffer-get-empty.returns"></a><h4>Returns</h4>
720 <p>The empty buffer. </p>
721 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
722 </div>
723 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
724 </div>
725 <hr>
726 <div class="refsect2">
727 <a name="hb-buffer-reference"></a><h3>hb_buffer_reference ()</h3>
728 <pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="returnvalue">hb_buffer_t</span></a> *
729 hb_buffer_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
730 <p>Increases the reference count on <em class="parameter"><code>buffer</code></em>
731  by one. This prevents <em class="parameter"><code>buffer</code></em>
732  from
733 being destroyed until a matching call to <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-destroy" title="hb_buffer_destroy ()"><code class="function">hb_buffer_destroy()</code></a> is made.</p>
734 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
735 <div class="refsect3">
736 <a name="hb-buffer-reference.parameters"></a><h4>Parameters</h4>
737 <div class="informaltable"><table class="informaltable" width="100%" border="0">
738 <colgroup>
739 <col width="150px" class="parameters_name">
740 <col class="parameters_description">
741 <col width="200px" class="parameters_annotations">
742 </colgroup>
743 <tbody><tr>
744 <td class="parameter_name"><p>buffer</p></td>
745 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
746 <td class="parameter_annotations"> </td>
747 </tr></tbody>
748 </table></div>
749 </div>
750 <div class="refsect3">
751 <a name="hb-buffer-reference.returns"></a><h4>Returns</h4>
752 <p>The referenced <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a>. </p>
753 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
754 </div>
755 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
756 </div>
757 <hr>
758 <div class="refsect2">
759 <a name="hb-buffer-destroy"></a><h3>hb_buffer_destroy ()</h3>
760 <pre class="programlisting"><span class="returnvalue">void</span>
761 hb_buffer_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
762 <p>Deallocate the <em class="parameter"><code>buffer</code></em>
763 .
764 Decreases the reference count on <em class="parameter"><code>buffer</code></em>
765  by one. If the result is zero, then
766 <em class="parameter"><code>buffer</code></em>
767  and all associated resources are freed. See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reference" title="hb_buffer_reference ()"><code class="function">hb_buffer_reference()</code></a>.</p>
768 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
769 <div class="refsect3">
770 <a name="hb-buffer-destroy.parameters"></a><h4>Parameters</h4>
771 <div class="informaltable"><table class="informaltable" width="100%" border="0">
772 <colgroup>
773 <col width="150px" class="parameters_name">
774 <col class="parameters_description">
775 <col width="200px" class="parameters_annotations">
776 </colgroup>
777 <tbody><tr>
778 <td class="parameter_name"><p>buffer</p></td>
779 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
780 <td class="parameter_annotations"> </td>
781 </tr></tbody>
782 </table></div>
783 </div>
784 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
785 </div>
786 <hr>
787 <div class="refsect2">
788 <a name="hb-buffer-set-user-data"></a><h3>hb_buffer_set_user_data ()</h3>
789 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
790 hb_buffer_set_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
791                          <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t" title="hb_user_data_key_t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>,
792                          <em class="parameter"><code><span class="type">void</span> *data</code></em>,
793                          <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>,
794                          <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="type">hb_bool_t</span></a> replace</code></em>);</pre>
795 <p>Attaches a user-data key/data pair to the specified buffer.</p>
796 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
797 <div class="refsect3">
798 <a name="hb-buffer-set-user-data.parameters"></a><h4>Parameters</h4>
799 <div class="informaltable"><table class="informaltable" width="100%" border="0">
800 <colgroup>
801 <col width="150px" class="parameters_name">
802 <col class="parameters_description">
803 <col width="200px" class="parameters_annotations">
804 </colgroup>
805 <tbody>
806 <tr>
807 <td class="parameter_name"><p>buffer</p></td>
808 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
809 <td class="parameter_annotations"> </td>
810 </tr>
811 <tr>
812 <td class="parameter_name"><p>key</p></td>
813 <td class="parameter_description"><p>The user-data key</p></td>
814 <td class="parameter_annotations"> </td>
815 </tr>
816 <tr>
817 <td class="parameter_name"><p>data</p></td>
818 <td class="parameter_description"><p>A pointer to the user data</p></td>
819 <td class="parameter_annotations"> </td>
820 </tr>
821 <tr>
822 <td class="parameter_name"><p>destroy</p></td>
823 <td class="parameter_description"><p>A callback to call when <em class="parameter"><code>data</code></em>
824 is not needed anymore. </p></td>
825 <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
826 </tr>
827 <tr>
828 <td class="parameter_name"><p>replace</p></td>
829 <td class="parameter_description"><p>Whether to replace an existing data with the same key</p></td>
830 <td class="parameter_annotations"> </td>
831 </tr>
832 </tbody>
833 </table></div>
834 </div>
835 <div class="refsect3">
836 <a name="hb-buffer-set-user-data.returns"></a><h4>Returns</h4>
837 <p> <code class="literal">true</code> if success, <code class="literal">false</code> otherwise</p>
838 </div>
839 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
840 </div>
841 <hr>
842 <div class="refsect2">
843 <a name="hb-buffer-get-user-data"></a><h3>hb_buffer_get_user_data ()</h3>
844 <pre class="programlisting"><span class="returnvalue">void</span> *
845 hb_buffer_get_user_data (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
846                          <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t" title="hb_user_data_key_t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>);</pre>
847 <p>Fetches the user data associated with the specified key,
848 attached to the specified buffer.</p>
849 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
850 <div class="refsect3">
851 <a name="hb-buffer-get-user-data.parameters"></a><h4>Parameters</h4>
852 <div class="informaltable"><table class="informaltable" width="100%" border="0">
853 <colgroup>
854 <col width="150px" class="parameters_name">
855 <col class="parameters_description">
856 <col width="200px" class="parameters_annotations">
857 </colgroup>
858 <tbody>
859 <tr>
860 <td class="parameter_name"><p>buffer</p></td>
861 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
862 <td class="parameter_annotations"> </td>
863 </tr>
864 <tr>
865 <td class="parameter_name"><p>key</p></td>
866 <td class="parameter_description"><p>The user-data key to query</p></td>
867 <td class="parameter_annotations"> </td>
868 </tr>
869 </tbody>
870 </table></div>
871 </div>
872 <div class="refsect3">
873 <a name="hb-buffer-get-user-data.returns"></a><h4>Returns</h4>
874 <p>A pointer to the user data. </p>
875 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
876 </div>
877 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
878 </div>
879 <hr>
880 <div class="refsect2">
881 <a name="hb-buffer-reset"></a><h3>hb_buffer_reset ()</h3>
882 <pre class="programlisting"><span class="returnvalue">void</span>
883 hb_buffer_reset (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
884 <p>Resets the buffer to its initial status, as if it was just newly created
885 with <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-create" title="hb_buffer_create ()"><code class="function">hb_buffer_create()</code></a>.</p>
886 <div class="refsect3">
887 <a name="hb-buffer-reset.parameters"></a><h4>Parameters</h4>
888 <div class="informaltable"><table class="informaltable" width="100%" border="0">
889 <colgroup>
890 <col width="150px" class="parameters_name">
891 <col class="parameters_description">
892 <col width="200px" class="parameters_annotations">
893 </colgroup>
894 <tbody><tr>
895 <td class="parameter_name"><p>buffer</p></td>
896 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
897 <td class="parameter_annotations"> </td>
898 </tr></tbody>
899 </table></div>
900 </div>
901 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
902 </div>
903 <hr>
904 <div class="refsect2">
905 <a name="hb-buffer-clear-contents"></a><h3>hb_buffer_clear_contents ()</h3>
906 <pre class="programlisting"><span class="returnvalue">void</span>
907 hb_buffer_clear_contents (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
908 <p>Similar to <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reset" title="hb_buffer_reset ()"><code class="function">hb_buffer_reset()</code></a>, but does not clear the Unicode functions and
909 the replacement code point.</p>
910 <div class="refsect3">
911 <a name="hb-buffer-clear-contents.parameters"></a><h4>Parameters</h4>
912 <div class="informaltable"><table class="informaltable" width="100%" border="0">
913 <colgroup>
914 <col width="150px" class="parameters_name">
915 <col class="parameters_description">
916 <col width="200px" class="parameters_annotations">
917 </colgroup>
918 <tbody><tr>
919 <td class="parameter_name"><p>buffer</p></td>
920 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
921 <td class="parameter_annotations"> </td>
922 </tr></tbody>
923 </table></div>
924 </div>
925 <p class="since">Since: <a class="link" href="api-index-0-9-11.html#api-index-0.9.11">0.9.11</a></p>
926 </div>
927 <hr>
928 <div class="refsect2">
929 <a name="hb-buffer-pre-allocate"></a><h3>hb_buffer_pre_allocate ()</h3>
930 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
931 hb_buffer_pre_allocate (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
932                         <em class="parameter"><code>unsigned <span class="type">int</span> size</code></em>);</pre>
933 <p>Pre allocates memory for <em class="parameter"><code>buffer</code></em>
934  to fit at least <em class="parameter"><code>size</code></em>
935  number of items.</p>
936 <div class="refsect3">
937 <a name="hb-buffer-pre-allocate.parameters"></a><h4>Parameters</h4>
938 <div class="informaltable"><table class="informaltable" width="100%" border="0">
939 <colgroup>
940 <col width="150px" class="parameters_name">
941 <col class="parameters_description">
942 <col width="200px" class="parameters_annotations">
943 </colgroup>
944 <tbody>
945 <tr>
946 <td class="parameter_name"><p>buffer</p></td>
947 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
948 <td class="parameter_annotations"> </td>
949 </tr>
950 <tr>
951 <td class="parameter_name"><p>size</p></td>
952 <td class="parameter_description"><p>Number of items to pre allocate.</p></td>
953 <td class="parameter_annotations"> </td>
954 </tr>
955 </tbody>
956 </table></div>
957 </div>
958 <div class="refsect3">
959 <a name="hb-buffer-pre-allocate.returns"></a><h4>Returns</h4>
960 <p><code class="literal">true</code> if <em class="parameter"><code>buffer</code></em>
961 memory allocation succeeded, <code class="literal">false</code> otherwise</p>
962 </div>
963 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
964 </div>
965 <hr>
966 <div class="refsect2">
967 <a name="hb-buffer-add"></a><h3>hb_buffer_add ()</h3>
968 <pre class="programlisting"><span class="returnvalue">void</span>
969 hb_buffer_add (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
970                <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> codepoint</code></em>,
971                <em class="parameter"><code>unsigned <span class="type">int</span> cluster</code></em>);</pre>
972 <p>Appends a character with the Unicode value of <em class="parameter"><code>codepoint</code></em>
973  to <em class="parameter"><code>buffer</code></em>
974 , and
975 gives it the initial cluster value of <em class="parameter"><code>cluster</code></em>
976 . Clusters can be any thing
977 the client wants, they are usually used to refer to the index of the
978 character in the input text stream and are output in
979 <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t.cluster"><span class="type">hb_glyph_info_t.cluster</span></a> field.</p>
980 <p>This function does not check the validity of <em class="parameter"><code>codepoint</code></em>
981 , it is up to the
982 caller to ensure it is a valid Unicode code point.</p>
983 <div class="refsect3">
984 <a name="hb-buffer-add.parameters"></a><h4>Parameters</h4>
985 <div class="informaltable"><table class="informaltable" width="100%" border="0">
986 <colgroup>
987 <col width="150px" class="parameters_name">
988 <col class="parameters_description">
989 <col width="200px" class="parameters_annotations">
990 </colgroup>
991 <tbody>
992 <tr>
993 <td class="parameter_name"><p>buffer</p></td>
994 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
995 <td class="parameter_annotations"> </td>
996 </tr>
997 <tr>
998 <td class="parameter_name"><p>codepoint</p></td>
999 <td class="parameter_description"><p>A Unicode code point.</p></td>
1000 <td class="parameter_annotations"> </td>
1001 </tr>
1002 <tr>
1003 <td class="parameter_name"><p>cluster</p></td>
1004 <td class="parameter_description"><p>The cluster value of <em class="parameter"><code>codepoint</code></em>
1005 .</p></td>
1006 <td class="parameter_annotations"> </td>
1007 </tr>
1008 </tbody>
1009 </table></div>
1010 </div>
1011 <p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
1012 </div>
1013 <hr>
1014 <div class="refsect2">
1015 <a name="hb-buffer-add-codepoints"></a><h3>hb_buffer_add_codepoints ()</h3>
1016 <pre class="programlisting"><span class="returnvalue">void</span>
1017 hb_buffer_add_codepoints (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
1018                           <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> *text</code></em>,
1019                           <em class="parameter"><code><span class="type">int</span> text_length</code></em>,
1020                           <em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
1021                           <em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
1022 <p>Appends characters from <em class="parameter"><code>text</code></em>
1023  array to <em class="parameter"><code>buffer</code></em>
1024 . The <em class="parameter"><code>item_offset</code></em>
1025  is the
1026 position of the first character from <em class="parameter"><code>text</code></em>
1027  that will be appended, and
1028 <em class="parameter"><code>item_length</code></em>
1029  is the number of character. When shaping part of a larger text
1030 (e.g. a run of text from a paragraph), instead of passing just the substring
1031 corresponding to the run, it is preferable to pass the whole
1032 paragraph and specify the run start and length as <em class="parameter"><code>item_offset</code></em>
1033  and
1034 <em class="parameter"><code>item_length</code></em>
1035 , respectively, to give HarfBuzz the full context to be able,
1036 for example, to do cross-run Arabic shaping or properly handle combining
1037 marks at stat of run.</p>
1038 <p>This function does not check the validity of <em class="parameter"><code>text</code></em>
1039 , it is up to the caller
1040 to ensure it contains a valid Unicode scalar values.  In contrast,
1041 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf32" title="hb_buffer_add_utf32 ()"><code class="function">hb_buffer_add_utf32()</code></a> can be used that takes similar input but performs
1042 sanity-check on the input.</p>
1043 <div class="refsect3">
1044 <a name="hb-buffer-add-codepoints.parameters"></a><h4>Parameters</h4>
1045 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1046 <colgroup>
1047 <col width="150px" class="parameters_name">
1048 <col class="parameters_description">
1049 <col width="200px" class="parameters_annotations">
1050 </colgroup>
1051 <tbody>
1052 <tr>
1053 <td class="parameter_name"><p>buffer</p></td>
1054 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> to append characters to.</p></td>
1055 <td class="parameter_annotations"> </td>
1056 </tr>
1057 <tr>
1058 <td class="parameter_name"><p>text</p></td>
1059 <td class="parameter_description"><p>an array of Unicode code points to append. </p></td>
1060 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length]</span></td>
1061 </tr>
1062 <tr>
1063 <td class="parameter_name"><p>text_length</p></td>
1064 <td class="parameter_description"><p>the length of the <em class="parameter"><code>text</code></em>
1065 , or -1 if it is <code class="literal">NULL</code> terminated.</p></td>
1066 <td class="parameter_annotations"> </td>
1067 </tr>
1068 <tr>
1069 <td class="parameter_name"><p>item_offset</p></td>
1070 <td class="parameter_description"><p>the offset of the first code point to add to the <em class="parameter"><code>buffer</code></em>
1071 .</p></td>
1072 <td class="parameter_annotations"> </td>
1073 </tr>
1074 <tr>
1075 <td class="parameter_name"><p>item_length</p></td>
1076 <td class="parameter_description"><p>the number of code points to add to the <em class="parameter"><code>buffer</code></em>
1077 , or -1 for the
1078 end of <em class="parameter"><code>text</code></em>
1079 (assuming it is <code class="literal">NULL</code> terminated).</p></td>
1080 <td class="parameter_annotations"> </td>
1081 </tr>
1082 </tbody>
1083 </table></div>
1084 </div>
1085 <p class="since">Since: <a class="link" href="api-index-0-9-31.html#api-index-0.9.31">0.9.31</a></p>
1086 </div>
1087 <hr>
1088 <div class="refsect2">
1089 <a name="hb-buffer-add-utf32"></a><h3>hb_buffer_add_utf32 ()</h3>
1090 <pre class="programlisting"><span class="returnvalue">void</span>
1091 hb_buffer_add_utf32 (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
1092                      <em class="parameter"><code>const <span class="type">uint32_t</span> *text</code></em>,
1093                      <em class="parameter"><code><span class="type">int</span> text_length</code></em>,
1094                      <em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
1095                      <em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
1096 <p>See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a>.</p>
1097 <p>Replaces invalid UTF-32 characters with the <em class="parameter"><code>buffer</code></em>
1098  replacement code point,
1099 see <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()"><code class="function">hb_buffer_set_replacement_codepoint()</code></a>.</p>
1100 <div class="refsect3">
1101 <a name="hb-buffer-add-utf32.parameters"></a><h4>Parameters</h4>
1102 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1103 <colgroup>
1104 <col width="150px" class="parameters_name">
1105 <col class="parameters_description">
1106 <col width="200px" class="parameters_annotations">
1107 </colgroup>
1108 <tbody>
1109 <tr>
1110 <td class="parameter_name"><p>buffer</p></td>
1111 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1112 <td class="parameter_annotations"> </td>
1113 </tr>
1114 <tr>
1115 <td class="parameter_name"><p>text</p></td>
1116 <td class="parameter_description"><p>An array of UTF-32 characters to append. </p></td>
1117 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length]</span></td>
1118 </tr>
1119 <tr>
1120 <td class="parameter_name"><p>text_length</p></td>
1121 <td class="parameter_description"><p>The length of the <em class="parameter"><code>text</code></em>
1122 , or -1 if it is <code class="literal">NULL</code> terminated</p></td>
1123 <td class="parameter_annotations"> </td>
1124 </tr>
1125 <tr>
1126 <td class="parameter_name"><p>item_offset</p></td>
1127 <td class="parameter_description"><p>The offset of the first character to add to the <em class="parameter"><code>buffer</code></em>
1128 </p></td>
1129 <td class="parameter_annotations"> </td>
1130 </tr>
1131 <tr>
1132 <td class="parameter_name"><p>item_length</p></td>
1133 <td class="parameter_description"><p>The number of characters to add to the <em class="parameter"><code>buffer</code></em>
1134 , or -1 for the
1135 end of <em class="parameter"><code>text</code></em>
1136 (assuming it is <code class="literal">NULL</code> terminated)</p></td>
1137 <td class="parameter_annotations"> </td>
1138 </tr>
1139 </tbody>
1140 </table></div>
1141 </div>
1142 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
1143 </div>
1144 <hr>
1145 <div class="refsect2">
1146 <a name="hb-buffer-add-utf16"></a><h3>hb_buffer_add_utf16 ()</h3>
1147 <pre class="programlisting"><span class="returnvalue">void</span>
1148 hb_buffer_add_utf16 (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
1149                      <em class="parameter"><code>const <span class="type">uint16_t</span> *text</code></em>,
1150                      <em class="parameter"><code><span class="type">int</span> text_length</code></em>,
1151                      <em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
1152                      <em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
1153 <p>See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a>.</p>
1154 <p>Replaces invalid UTF-16 characters with the <em class="parameter"><code>buffer</code></em>
1155  replacement code point,
1156 see <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()"><code class="function">hb_buffer_set_replacement_codepoint()</code></a>.</p>
1157 <div class="refsect3">
1158 <a name="hb-buffer-add-utf16.parameters"></a><h4>Parameters</h4>
1159 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1160 <colgroup>
1161 <col width="150px" class="parameters_name">
1162 <col class="parameters_description">
1163 <col width="200px" class="parameters_annotations">
1164 </colgroup>
1165 <tbody>
1166 <tr>
1167 <td class="parameter_name"><p>buffer</p></td>
1168 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1169 <td class="parameter_annotations"> </td>
1170 </tr>
1171 <tr>
1172 <td class="parameter_name"><p>text</p></td>
1173 <td class="parameter_description"><p>An array of UTF-16 characters to append. </p></td>
1174 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length]</span></td>
1175 </tr>
1176 <tr>
1177 <td class="parameter_name"><p>text_length</p></td>
1178 <td class="parameter_description"><p>The length of the <em class="parameter"><code>text</code></em>
1179 , or -1 if it is <code class="literal">NULL</code> terminated</p></td>
1180 <td class="parameter_annotations"> </td>
1181 </tr>
1182 <tr>
1183 <td class="parameter_name"><p>item_offset</p></td>
1184 <td class="parameter_description"><p>The offset of the first character to add to the <em class="parameter"><code>buffer</code></em>
1185 </p></td>
1186 <td class="parameter_annotations"> </td>
1187 </tr>
1188 <tr>
1189 <td class="parameter_name"><p>item_length</p></td>
1190 <td class="parameter_description"><p>The number of characters to add to the <em class="parameter"><code>buffer</code></em>
1191 , or -1 for the
1192 end of <em class="parameter"><code>text</code></em>
1193 (assuming it is <code class="literal">NULL</code> terminated)</p></td>
1194 <td class="parameter_annotations"> </td>
1195 </tr>
1196 </tbody>
1197 </table></div>
1198 </div>
1199 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
1200 </div>
1201 <hr>
1202 <div class="refsect2">
1203 <a name="hb-buffer-add-utf8"></a><h3>hb_buffer_add_utf8 ()</h3>
1204 <pre class="programlisting"><span class="returnvalue">void</span>
1205 hb_buffer_add_utf8 (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
1206                     <em class="parameter"><code>const <span class="type">char</span> *text</code></em>,
1207                     <em class="parameter"><code><span class="type">int</span> text_length</code></em>,
1208                     <em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
1209                     <em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
1210 <p>See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a>.</p>
1211 <p>Replaces invalid UTF-8 characters with the <em class="parameter"><code>buffer</code></em>
1212  replacement code point,
1213 see <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-replacement-codepoint" title="hb_buffer_set_replacement_codepoint ()"><code class="function">hb_buffer_set_replacement_codepoint()</code></a>.</p>
1214 <div class="refsect3">
1215 <a name="hb-buffer-add-utf8.parameters"></a><h4>Parameters</h4>
1216 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1217 <colgroup>
1218 <col width="150px" class="parameters_name">
1219 <col class="parameters_description">
1220 <col width="200px" class="parameters_annotations">
1221 </colgroup>
1222 <tbody>
1223 <tr>
1224 <td class="parameter_name"><p>buffer</p></td>
1225 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1226 <td class="parameter_annotations"> </td>
1227 </tr>
1228 <tr>
1229 <td class="parameter_name"><p>text</p></td>
1230 <td class="parameter_description"><p>An array of UTF-8
1231 characters to append. </p></td>
1232 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
1233 </tr>
1234 <tr>
1235 <td class="parameter_name"><p>text_length</p></td>
1236 <td class="parameter_description"><p>The length of the <em class="parameter"><code>text</code></em>
1237 , or -1 if it is <code class="literal">NULL</code> terminated.</p></td>
1238 <td class="parameter_annotations"> </td>
1239 </tr>
1240 <tr>
1241 <td class="parameter_name"><p>item_offset</p></td>
1242 <td class="parameter_description"><p>The offset of the first character to add to the <em class="parameter"><code>buffer</code></em>
1243 .</p></td>
1244 <td class="parameter_annotations"> </td>
1245 </tr>
1246 <tr>
1247 <td class="parameter_name"><p>item_length</p></td>
1248 <td class="parameter_description"><p>The number of characters to add to the <em class="parameter"><code>buffer</code></em>
1249 , or -1 for the
1250 end of <em class="parameter"><code>text</code></em>
1251 (assuming it is <code class="literal">NULL</code> terminated).</p></td>
1252 <td class="parameter_annotations"> </td>
1253 </tr>
1254 </tbody>
1255 </table></div>
1256 </div>
1257 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
1258 </div>
1259 <hr>
1260 <div class="refsect2">
1261 <a name="hb-buffer-add-latin1"></a><h3>hb_buffer_add_latin1 ()</h3>
1262 <pre class="programlisting"><span class="returnvalue">void</span>
1263 hb_buffer_add_latin1 (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
1264                       <em class="parameter"><code>const <span class="type">uint8_t</span> *text</code></em>,
1265                       <em class="parameter"><code><span class="type">int</span> text_length</code></em>,
1266                       <em class="parameter"><code>unsigned <span class="type">int</span> item_offset</code></em>,
1267                       <em class="parameter"><code><span class="type">int</span> item_length</code></em>);</pre>
1268 <p>Similar to <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a>, but allows only access to first 256
1269 Unicode code points that can fit in 8-bit strings.</p>
1270 <div class="note">Has nothing to do with non-Unicode Latin-1 encoding.</div>
1271 <div class="refsect3">
1272 <a name="hb-buffer-add-latin1.parameters"></a><h4>Parameters</h4>
1273 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1274 <colgroup>
1275 <col width="150px" class="parameters_name">
1276 <col class="parameters_description">
1277 <col width="200px" class="parameters_annotations">
1278 </colgroup>
1279 <tbody>
1280 <tr>
1281 <td class="parameter_name"><p>buffer</p></td>
1282 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1283 <td class="parameter_annotations"> </td>
1284 </tr>
1285 <tr>
1286 <td class="parameter_name"><p>text</p></td>
1287 <td class="parameter_description"><p>an array of UTF-8
1288 characters to append. </p></td>
1289 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=text_length][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
1290 </tr>
1291 <tr>
1292 <td class="parameter_name"><p>text_length</p></td>
1293 <td class="parameter_description"><p>the length of the <em class="parameter"><code>text</code></em>
1294 , or -1 if it is <code class="literal">NULL</code> terminated</p></td>
1295 <td class="parameter_annotations"> </td>
1296 </tr>
1297 <tr>
1298 <td class="parameter_name"><p>item_offset</p></td>
1299 <td class="parameter_description"><p>the offset of the first character to add to the <em class="parameter"><code>buffer</code></em>
1300 </p></td>
1301 <td class="parameter_annotations"> </td>
1302 </tr>
1303 <tr>
1304 <td class="parameter_name"><p>item_length</p></td>
1305 <td class="parameter_description"><p>the number of characters to add to the <em class="parameter"><code>buffer</code></em>
1306 , or -1 for the
1307 end of <em class="parameter"><code>text</code></em>
1308 (assuming it is <code class="literal">NULL</code> terminated)</p></td>
1309 <td class="parameter_annotations"> </td>
1310 </tr>
1311 </tbody>
1312 </table></div>
1313 </div>
1314 <p class="since">Since: <a class="link" href="api-index-0-9-39.html#api-index-0.9.39">0.9.39</a></p>
1315 </div>
1316 <hr>
1317 <div class="refsect2">
1318 <a name="hb-buffer-append"></a><h3>hb_buffer_append ()</h3>
1319 <pre class="programlisting"><span class="returnvalue">void</span>
1320 hb_buffer_append (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
1321                   <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *source</code></em>,
1322                   <em class="parameter"><code>unsigned <span class="type">int</span> start</code></em>,
1323                   <em class="parameter"><code>unsigned <span class="type">int</span> end</code></em>);</pre>
1324 <p>Append (part of) contents of another buffer to this buffer.</p>
1325 <div class="refsect3">
1326 <a name="hb-buffer-append.parameters"></a><h4>Parameters</h4>
1327 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1328 <colgroup>
1329 <col width="150px" class="parameters_name">
1330 <col class="parameters_description">
1331 <col width="200px" class="parameters_annotations">
1332 </colgroup>
1333 <tbody>
1334 <tr>
1335 <td class="parameter_name"><p>buffer</p></td>
1336 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1337 <td class="parameter_annotations"> </td>
1338 </tr>
1339 <tr>
1340 <td class="parameter_name"><p>source</p></td>
1341 <td class="parameter_description"><p>source <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1342 <td class="parameter_annotations"> </td>
1343 </tr>
1344 <tr>
1345 <td class="parameter_name"><p>start</p></td>
1346 <td class="parameter_description"><p>start index into source buffer to copy.  Use 0 to copy from start of buffer.</p></td>
1347 <td class="parameter_annotations"> </td>
1348 </tr>
1349 <tr>
1350 <td class="parameter_name"><p>end</p></td>
1351 <td class="parameter_description"><p>end index into source buffer to copy.  Use <em class="parameter"><code>HB_FEATURE_GLOBAL_END</code></em>
1352 to copy to end of buffer.</p></td>
1353 <td class="parameter_annotations"> </td>
1354 </tr>
1355 </tbody>
1356 </table></div>
1357 </div>
1358 <p class="since">Since: <a class="link" href="api-index-1-5-0.html#api-index-1.5.0">1.5.0</a></p>
1359 </div>
1360 <hr>
1361 <div class="refsect2">
1362 <a name="hb-buffer-set-content-type"></a><h3>hb_buffer_set_content_type ()</h3>
1363 <pre class="programlisting"><span class="returnvalue">void</span>
1364 hb_buffer_set_content_type (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
1365                             <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="type">hb_buffer_content_type_t</span></a> content_type</code></em>);</pre>
1366 <p>Sets the type of <em class="parameter"><code>buffer</code></em>
1367  contents. Buffers are either empty, contain
1368 characters (before shaping), or contain glyphs (the result of shaping).</p>
1369 <p>You rarely need to call this function, since a number of other
1370 functions transition the content type for you. Namely:</p>
1371 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
1372 <li class="listitem"><p>A newly created buffer starts with content type
1373 <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-CONTENT-TYPE-INVALID:CAPS"><code class="literal">HB_BUFFER_CONTENT_TYPE_INVALID</code></a>. Calling <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-reset" title="hb_buffer_reset ()"><code class="function">hb_buffer_reset()</code></a>,
1374 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-clear-contents" title="hb_buffer_clear_contents ()"><code class="function">hb_buffer_clear_contents()</code></a>, as well as calling <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-length" title="hb_buffer_set_length ()"><code class="function">hb_buffer_set_length()</code></a>
1375 with an argument of zero all set the buffer content type to invalid
1376 as well.</p></li>
1377 <li class="listitem"><p>Calling <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf8" title="hb_buffer_add_utf8 ()"><code class="function">hb_buffer_add_utf8()</code></a>, <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf16" title="hb_buffer_add_utf16 ()"><code class="function">hb_buffer_add_utf16()</code></a>,
1378 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-utf32" title="hb_buffer_add_utf32 ()"><code class="function">hb_buffer_add_utf32()</code></a>, <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-codepoints" title="hb_buffer_add_codepoints ()"><code class="function">hb_buffer_add_codepoints()</code></a> and
1379 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add-latin1" title="hb_buffer_add_latin1 ()"><code class="function">hb_buffer_add_latin1()</code></a> expect that buffer is either empty and
1380 have a content type of invalid, or that buffer content type is
1381 <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-CONTENT-TYPE-UNICODE:CAPS"><code class="literal">HB_BUFFER_CONTENT_TYPE_UNICODE</code></a>, and they also set the content
1382 type to Unicode if they added anything to an empty buffer.</p></li>
1383 <li class="listitem"><p>Finally <a class="link" href="harfbuzz-hb-shape.html#hb-shape" title="hb_shape ()"><code class="function">hb_shape()</code></a> and <a class="link" href="harfbuzz-hb-shape.html#hb-shape-full" title="hb_shape_full ()"><code class="function">hb_shape_full()</code></a> expect that the buffer
1384 is either empty and have content type of invalid, or that buffer
1385 content type is <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-CONTENT-TYPE-UNICODE:CAPS"><code class="literal">HB_BUFFER_CONTENT_TYPE_UNICODE</code></a>, and upon
1386 success they set the buffer content type to
1387 <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-CONTENT-TYPE-GLYPHS:CAPS"><code class="literal">HB_BUFFER_CONTENT_TYPE_GLYPHS</code></a>.</p></li>
1388 </ul></div>
1389 <p>The above transitions are designed such that one can use a buffer
1390 in a loop of "reset : add-text : shape" without needing to ever
1391 modify the content type manually.</p>
1392 <div class="refsect3">
1393 <a name="hb-buffer-set-content-type.parameters"></a><h4>Parameters</h4>
1394 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1395 <colgroup>
1396 <col width="150px" class="parameters_name">
1397 <col class="parameters_description">
1398 <col width="200px" class="parameters_annotations">
1399 </colgroup>
1400 <tbody>
1401 <tr>
1402 <td class="parameter_name"><p>buffer</p></td>
1403 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1404 <td class="parameter_annotations"> </td>
1405 </tr>
1406 <tr>
1407 <td class="parameter_name"><p>content_type</p></td>
1408 <td class="parameter_description"><p>The type of buffer contents to set</p></td>
1409 <td class="parameter_annotations"> </td>
1410 </tr>
1411 </tbody>
1412 </table></div>
1413 </div>
1414 <p class="since">Since: <a class="link" href="api-index-0-9-5.html#api-index-0.9.5">0.9.5</a></p>
1415 </div>
1416 <hr>
1417 <div class="refsect2">
1418 <a name="hb-buffer-get-content-type"></a><h3>hb_buffer_get_content_type ()</h3>
1419 <pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="returnvalue">hb_buffer_content_type_t</span></a>
1420 hb_buffer_get_content_type (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
1421 <p>Fetches the type of <em class="parameter"><code>buffer</code></em>
1422  contents. Buffers are either empty, contain
1423 characters (before shaping), or contain glyphs (the result of shaping).</p>
1424 <div class="refsect3">
1425 <a name="hb-buffer-get-content-type.parameters"></a><h4>Parameters</h4>
1426 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1427 <colgroup>
1428 <col width="150px" class="parameters_name">
1429 <col class="parameters_description">
1430 <col width="200px" class="parameters_annotations">
1431 </colgroup>
1432 <tbody><tr>
1433 <td class="parameter_name"><p>buffer</p></td>
1434 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1435 <td class="parameter_annotations"> </td>
1436 </tr></tbody>
1437 </table></div>
1438 </div>
1439 <div class="refsect3">
1440 <a name="hb-buffer-get-content-type.returns"></a><h4>Returns</h4>
1441 <p>The type of <em class="parameter"><code>buffer</code></em>
1442 contents</p>
1443 </div>
1444 <p class="since">Since: <a class="link" href="api-index-0-9-5.html#api-index-0.9.5">0.9.5</a></p>
1445 </div>
1446 <hr>
1447 <div class="refsect2">
1448 <a name="hb-buffer-set-direction"></a><h3>hb_buffer_set_direction ()</h3>
1449 <pre class="programlisting"><span class="returnvalue">void</span>
1450 hb_buffer_set_direction (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
1451                          <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> direction</code></em>);</pre>
1452 <p>Set the text flow direction of the buffer. No shaping can happen without
1453 setting <em class="parameter"><code>buffer</code></em>
1454  direction, and it controls the visual direction for the
1455 output glyphs; for RTL direction the glyphs will be reversed. Many layout
1456 features depend on the proper setting of the direction, for example,
1457 reversing RTL text before shaping, then shaping with LTR direction is not
1458 the same as keeping the text in logical order and shaping with RTL
1459 direction.</p>
1460 <div class="refsect3">
1461 <a name="hb-buffer-set-direction.parameters"></a><h4>Parameters</h4>
1462 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1463 <colgroup>
1464 <col width="150px" class="parameters_name">
1465 <col class="parameters_description">
1466 <col width="200px" class="parameters_annotations">
1467 </colgroup>
1468 <tbody>
1469 <tr>
1470 <td class="parameter_name"><p>buffer</p></td>
1471 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1472 <td class="parameter_annotations"> </td>
1473 </tr>
1474 <tr>
1475 <td class="parameter_name"><p>direction</p></td>
1476 <td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> of the <em class="parameter"><code>buffer</code></em>
1477 </p></td>
1478 <td class="parameter_annotations"> </td>
1479 </tr>
1480 </tbody>
1481 </table></div>
1482 </div>
1483 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
1484 </div>
1485 <hr>
1486 <div class="refsect2">
1487 <a name="hb-buffer-get-direction"></a><h3>hb_buffer_get_direction ()</h3>
1488 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="returnvalue">hb_direction_t</span></a>
1489 hb_buffer_get_direction (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
1490 <p>See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()"><code class="function">hb_buffer_set_direction()</code></a></p>
1491 <div class="refsect3">
1492 <a name="hb-buffer-get-direction.parameters"></a><h4>Parameters</h4>
1493 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1494 <colgroup>
1495 <col width="150px" class="parameters_name">
1496 <col class="parameters_description">
1497 <col width="200px" class="parameters_annotations">
1498 </colgroup>
1499 <tbody><tr>
1500 <td class="parameter_name"><p>buffer</p></td>
1501 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1502 <td class="parameter_annotations"> </td>
1503 </tr></tbody>
1504 </table></div>
1505 </div>
1506 <div class="refsect3">
1507 <a name="hb-buffer-get-direction.returns"></a><h4>Returns</h4>
1508 <p>The direction of the <em class="parameter"><code>buffer</code></em>
1509 .</p>
1510 </div>
1511 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
1512 </div>
1513 <hr>
1514 <div class="refsect2">
1515 <a name="hb-buffer-set-script"></a><h3>hb_buffer_set_script ()</h3>
1516 <pre class="programlisting"><span class="returnvalue">void</span>
1517 hb_buffer_set_script (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
1518                       <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> script</code></em>);</pre>
1519 <p>Sets the script of <em class="parameter"><code>buffer</code></em>
1520  to <em class="parameter"><code>script</code></em>
1521 .</p>
1522 <p>Script is crucial for choosing the proper shaping behaviour for scripts that
1523 require it (e.g. Arabic) and the which OpenType features defined in the font
1524 to be applied.</p>
1525 <p>You can pass one of the predefined <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> values, or use
1526 <a class="link" href="harfbuzz-hb-common.html#hb-script-from-string" title="hb_script_from_string ()"><code class="function">hb_script_from_string()</code></a> or <a class="link" href="harfbuzz-hb-common.html#hb-script-from-iso15924-tag" title="hb_script_from_iso15924_tag ()"><code class="function">hb_script_from_iso15924_tag()</code></a> to get the
1527 corresponding script from an ISO 15924 script tag.</p>
1528 <div class="refsect3">
1529 <a name="hb-buffer-set-script.parameters"></a><h4>Parameters</h4>
1530 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1531 <colgroup>
1532 <col width="150px" class="parameters_name">
1533 <col class="parameters_description">
1534 <col width="200px" class="parameters_annotations">
1535 </colgroup>
1536 <tbody>
1537 <tr>
1538 <td class="parameter_name"><p>buffer</p></td>
1539 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1540 <td class="parameter_annotations"> </td>
1541 </tr>
1542 <tr>
1543 <td class="parameter_name"><p>script</p></td>
1544 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> to set.</p></td>
1545 <td class="parameter_annotations"> </td>
1546 </tr>
1547 </tbody>
1548 </table></div>
1549 </div>
1550 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
1551 </div>
1552 <hr>
1553 <div class="refsect2">
1554 <a name="hb-buffer-get-script"></a><h3>hb_buffer_get_script ()</h3>
1555 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="returnvalue">hb_script_t</span></a>
1556 hb_buffer_get_script (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
1557 <p>Fetches the script of <em class="parameter"><code>buffer</code></em>
1558 .</p>
1559 <div class="refsect3">
1560 <a name="hb-buffer-get-script.parameters"></a><h4>Parameters</h4>
1561 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1562 <colgroup>
1563 <col width="150px" class="parameters_name">
1564 <col class="parameters_description">
1565 <col width="200px" class="parameters_annotations">
1566 </colgroup>
1567 <tbody><tr>
1568 <td class="parameter_name"><p>buffer</p></td>
1569 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1570 <td class="parameter_annotations"> </td>
1571 </tr></tbody>
1572 </table></div>
1573 </div>
1574 <div class="refsect3">
1575 <a name="hb-buffer-get-script.returns"></a><h4>Returns</h4>
1576 <p>The <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> of the <em class="parameter"><code>buffer</code></em>
1577 </p>
1578 </div>
1579 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
1580 </div>
1581 <hr>
1582 <div class="refsect2">
1583 <a name="hb-buffer-set-language"></a><h3>hb_buffer_set_language ()</h3>
1584 <pre class="programlisting"><span class="returnvalue">void</span>
1585 hb_buffer_set_language (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
1586                         <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> language</code></em>);</pre>
1587 <p>Sets the language of <em class="parameter"><code>buffer</code></em>
1588  to <em class="parameter"><code>language</code></em>
1589 .</p>
1590 <p>Languages are crucial for selecting which OpenType feature to apply to the
1591 buffer which can result in applying language-specific behaviour. Languages
1592 are orthogonal to the scripts, and though they are related, they are
1593 different concepts and should not be confused with each other.</p>
1594 <p>Use <a class="link" href="harfbuzz-hb-common.html#hb-language-from-string" title="hb_language_from_string ()"><code class="function">hb_language_from_string()</code></a> to convert from BCP 47 language tags to
1595 <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a>.</p>
1596 <div class="refsect3">
1597 <a name="hb-buffer-set-language.parameters"></a><h4>Parameters</h4>
1598 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1599 <colgroup>
1600 <col width="150px" class="parameters_name">
1601 <col class="parameters_description">
1602 <col width="200px" class="parameters_annotations">
1603 </colgroup>
1604 <tbody>
1605 <tr>
1606 <td class="parameter_name"><p>buffer</p></td>
1607 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1608 <td class="parameter_annotations"> </td>
1609 </tr>
1610 <tr>
1611 <td class="parameter_name"><p>language</p></td>
1612 <td class="parameter_description"><p>An hb_language_t to set</p></td>
1613 <td class="parameter_annotations"> </td>
1614 </tr>
1615 </tbody>
1616 </table></div>
1617 </div>
1618 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
1619 </div>
1620 <hr>
1621 <div class="refsect2">
1622 <a name="hb-buffer-get-language"></a><h3>hb_buffer_get_language ()</h3>
1623 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="returnvalue">hb_language_t</span></a>
1624 hb_buffer_get_language (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
1625 <p>See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-language" title="hb_buffer_set_language ()"><code class="function">hb_buffer_set_language()</code></a>.</p>
1626 <div class="refsect3">
1627 <a name="hb-buffer-get-language.parameters"></a><h4>Parameters</h4>
1628 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1629 <colgroup>
1630 <col width="150px" class="parameters_name">
1631 <col class="parameters_description">
1632 <col width="200px" class="parameters_annotations">
1633 </colgroup>
1634 <tbody><tr>
1635 <td class="parameter_name"><p>buffer</p></td>
1636 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1637 <td class="parameter_annotations"> </td>
1638 </tr></tbody>
1639 </table></div>
1640 </div>
1641 <div class="refsect3">
1642 <a name="hb-buffer-get-language.returns"></a><h4>Returns</h4>
1643 <p>The <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> of the buffer. Must not be freed by the caller. </p>
1644 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
1645 </div>
1646 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
1647 </div>
1648 <hr>
1649 <div class="refsect2">
1650 <a name="hb-buffer-set-flags"></a><h3>hb_buffer_set_flags ()</h3>
1651 <pre class="programlisting"><span class="returnvalue">void</span>
1652 hb_buffer_set_flags (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
1653                      <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="type">hb_buffer_flags_t</span></a> flags</code></em>);</pre>
1654 <p>Sets <em class="parameter"><code>buffer</code></em>
1655  flags to <em class="parameter"><code>flags</code></em>
1656 . See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="type">hb_buffer_flags_t</span></a>.</p>
1657 <div class="refsect3">
1658 <a name="hb-buffer-set-flags.parameters"></a><h4>Parameters</h4>
1659 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1660 <colgroup>
1661 <col width="150px" class="parameters_name">
1662 <col class="parameters_description">
1663 <col width="200px" class="parameters_annotations">
1664 </colgroup>
1665 <tbody>
1666 <tr>
1667 <td class="parameter_name"><p>buffer</p></td>
1668 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1669 <td class="parameter_annotations"> </td>
1670 </tr>
1671 <tr>
1672 <td class="parameter_name"><p>flags</p></td>
1673 <td class="parameter_description"><p>The buffer flags to set</p></td>
1674 <td class="parameter_annotations"> </td>
1675 </tr>
1676 </tbody>
1677 </table></div>
1678 </div>
1679 <p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
1680 </div>
1681 <hr>
1682 <div class="refsect2">
1683 <a name="hb-buffer-get-flags"></a><h3>hb_buffer_get_flags ()</h3>
1684 <pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="returnvalue">hb_buffer_flags_t</span></a>
1685 hb_buffer_get_flags (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
1686 <p>Fetches the <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-flags-t" title="enum hb_buffer_flags_t"><span class="type">hb_buffer_flags_t</span></a> of <em class="parameter"><code>buffer</code></em>
1687 .</p>
1688 <div class="refsect3">
1689 <a name="hb-buffer-get-flags.parameters"></a><h4>Parameters</h4>
1690 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1691 <colgroup>
1692 <col width="150px" class="parameters_name">
1693 <col class="parameters_description">
1694 <col width="200px" class="parameters_annotations">
1695 </colgroup>
1696 <tbody><tr>
1697 <td class="parameter_name"><p>buffer</p></td>
1698 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1699 <td class="parameter_annotations"> </td>
1700 </tr></tbody>
1701 </table></div>
1702 </div>
1703 <div class="refsect3">
1704 <a name="hb-buffer-get-flags.returns"></a><h4>Returns</h4>
1705 <p>The <em class="parameter"><code>buffer</code></em>
1706 flags</p>
1707 </div>
1708 <p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
1709 </div>
1710 <hr>
1711 <div class="refsect2">
1712 <a name="hb-buffer-set-cluster-level"></a><h3>hb_buffer_set_cluster_level ()</h3>
1713 <pre class="programlisting"><span class="returnvalue">void</span>
1714 hb_buffer_set_cluster_level (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
1715                              <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t"><span class="type">hb_buffer_cluster_level_t</span></a> cluster_level</code></em>);</pre>
1716 <p>Sets the cluster level of a buffer. The <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t"><span class="type">hb_buffer_cluster_level_t</span></a>
1717 dictates one aspect of how HarfBuzz will treat non-base characters 
1718 during shaping.</p>
1719 <div class="refsect3">
1720 <a name="hb-buffer-set-cluster-level.parameters"></a><h4>Parameters</h4>
1721 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1722 <colgroup>
1723 <col width="150px" class="parameters_name">
1724 <col class="parameters_description">
1725 <col width="200px" class="parameters_annotations">
1726 </colgroup>
1727 <tbody>
1728 <tr>
1729 <td class="parameter_name"><p>buffer</p></td>
1730 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1731 <td class="parameter_annotations"> </td>
1732 </tr>
1733 <tr>
1734 <td class="parameter_name"><p>cluster_level</p></td>
1735 <td class="parameter_description"><p>The cluster level to set on the buffer</p></td>
1736 <td class="parameter_annotations"> </td>
1737 </tr>
1738 </tbody>
1739 </table></div>
1740 </div>
1741 <p class="since">Since: <a class="link" href="api-index-0-9-42.html#api-index-0.9.42">0.9.42</a></p>
1742 </div>
1743 <hr>
1744 <div class="refsect2">
1745 <a name="hb-buffer-get-cluster-level"></a><h3>hb_buffer_get_cluster_level ()</h3>
1746 <pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t"><span class="returnvalue">hb_buffer_cluster_level_t</span></a>
1747 hb_buffer_get_cluster_level (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
1748 <p>Fetches the cluster level of a buffer. The <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-cluster-level-t" title="enum hb_buffer_cluster_level_t"><span class="type">hb_buffer_cluster_level_t</span></a>
1749 dictates one aspect of how HarfBuzz will treat non-base characters 
1750 during shaping.</p>
1751 <div class="refsect3">
1752 <a name="hb-buffer-get-cluster-level.parameters"></a><h4>Parameters</h4>
1753 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1754 <colgroup>
1755 <col width="150px" class="parameters_name">
1756 <col class="parameters_description">
1757 <col width="200px" class="parameters_annotations">
1758 </colgroup>
1759 <tbody><tr>
1760 <td class="parameter_name"><p>buffer</p></td>
1761 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1762 <td class="parameter_annotations"> </td>
1763 </tr></tbody>
1764 </table></div>
1765 </div>
1766 <div class="refsect3">
1767 <a name="hb-buffer-get-cluster-level.returns"></a><h4>Returns</h4>
1768 <p> The cluster level of <em class="parameter"><code>buffer</code></em>
1769 </p>
1770 </div>
1771 <p class="since">Since: <a class="link" href="api-index-0-9-42.html#api-index-0.9.42">0.9.42</a></p>
1772 </div>
1773 <hr>
1774 <div class="refsect2">
1775 <a name="hb-buffer-set-length"></a><h3>hb_buffer_set_length ()</h3>
1776 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
1777 hb_buffer_set_length (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
1778                       <em class="parameter"><code>unsigned <span class="type">int</span> length</code></em>);</pre>
1779 <p>Similar to <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-pre-allocate" title="hb_buffer_pre_allocate ()"><code class="function">hb_buffer_pre_allocate()</code></a>, but clears any new items added at the
1780 end.</p>
1781 <div class="refsect3">
1782 <a name="hb-buffer-set-length.parameters"></a><h4>Parameters</h4>
1783 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1784 <colgroup>
1785 <col width="150px" class="parameters_name">
1786 <col class="parameters_description">
1787 <col width="200px" class="parameters_annotations">
1788 </colgroup>
1789 <tbody>
1790 <tr>
1791 <td class="parameter_name"><p>buffer</p></td>
1792 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1793 <td class="parameter_annotations"> </td>
1794 </tr>
1795 <tr>
1796 <td class="parameter_name"><p>length</p></td>
1797 <td class="parameter_description"><p>The new length of <em class="parameter"><code>buffer</code></em>
1798 </p></td>
1799 <td class="parameter_annotations"> </td>
1800 </tr>
1801 </tbody>
1802 </table></div>
1803 </div>
1804 <div class="refsect3">
1805 <a name="hb-buffer-set-length.returns"></a><h4>Returns</h4>
1806 <p><code class="literal">true</code> if <em class="parameter"><code>buffer</code></em>
1807 memory allocation succeeded, <code class="literal">false</code> otherwise.</p>
1808 </div>
1809 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
1810 </div>
1811 <hr>
1812 <div class="refsect2">
1813 <a name="hb-buffer-get-length"></a><h3>hb_buffer_get_length ()</h3>
1814 <pre class="programlisting">unsigned <span class="returnvalue">int</span>
1815 hb_buffer_get_length (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
1816 <p>Returns the number of items in the buffer.</p>
1817 <div class="refsect3">
1818 <a name="hb-buffer-get-length.parameters"></a><h4>Parameters</h4>
1819 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1820 <colgroup>
1821 <col width="150px" class="parameters_name">
1822 <col class="parameters_description">
1823 <col width="200px" class="parameters_annotations">
1824 </colgroup>
1825 <tbody><tr>
1826 <td class="parameter_name"><p>buffer</p></td>
1827 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1828 <td class="parameter_annotations"> </td>
1829 </tr></tbody>
1830 </table></div>
1831 </div>
1832 <div class="refsect3">
1833 <a name="hb-buffer-get-length.returns"></a><h4>Returns</h4>
1834 <p>The <em class="parameter"><code>buffer</code></em>
1835 length.
1836 The value valid as long as buffer has not been modified.</p>
1837 </div>
1838 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
1839 </div>
1840 <hr>
1841 <div class="refsect2">
1842 <a name="hb-buffer-set-segment-properties"></a><h3>hb_buffer_set_segment_properties ()</h3>
1843 <pre class="programlisting"><span class="returnvalue">void</span>
1844 hb_buffer_set_segment_properties (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
1845                                   <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>);</pre>
1846 <p>Sets the segment properties of the buffer, a shortcut for calling
1847 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()"><code class="function">hb_buffer_set_direction()</code></a>, <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-script" title="hb_buffer_set_script ()"><code class="function">hb_buffer_set_script()</code></a> and
1848 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-language" title="hb_buffer_set_language ()"><code class="function">hb_buffer_set_language()</code></a> individually.</p>
1849 <div class="refsect3">
1850 <a name="hb-buffer-set-segment-properties.parameters"></a><h4>Parameters</h4>
1851 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1852 <colgroup>
1853 <col width="150px" class="parameters_name">
1854 <col class="parameters_description">
1855 <col width="200px" class="parameters_annotations">
1856 </colgroup>
1857 <tbody>
1858 <tr>
1859 <td class="parameter_name"><p>buffer</p></td>
1860 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1861 <td class="parameter_annotations"> </td>
1862 </tr>
1863 <tr>
1864 <td class="parameter_name"><p>props</p></td>
1865 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a> to use</p></td>
1866 <td class="parameter_annotations"> </td>
1867 </tr>
1868 </tbody>
1869 </table></div>
1870 </div>
1871 <p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
1872 </div>
1873 <hr>
1874 <div class="refsect2">
1875 <a name="hb-buffer-get-segment-properties"></a><h3>hb_buffer_get_segment_properties ()</h3>
1876 <pre class="programlisting"><span class="returnvalue">void</span>
1877 hb_buffer_get_segment_properties (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
1878                                   <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a> *props</code></em>);</pre>
1879 <p>Sets <em class="parameter"><code>props</code></em>
1880  to the <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a> of <em class="parameter"><code>buffer</code></em>
1881 .</p>
1882 <div class="refsect3">
1883 <a name="hb-buffer-get-segment-properties.parameters"></a><h4>Parameters</h4>
1884 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1885 <colgroup>
1886 <col width="150px" class="parameters_name">
1887 <col class="parameters_description">
1888 <col width="200px" class="parameters_annotations">
1889 </colgroup>
1890 <tbody>
1891 <tr>
1892 <td class="parameter_name"><p>buffer</p></td>
1893 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1894 <td class="parameter_annotations"> </td>
1895 </tr>
1896 <tr>
1897 <td class="parameter_name"><p>props</p></td>
1898 <td class="parameter_description"><p>The output <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a>. </p></td>
1899 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
1900 </tr>
1901 </tbody>
1902 </table></div>
1903 </div>
1904 <p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
1905 </div>
1906 <hr>
1907 <div class="refsect2">
1908 <a name="hb-buffer-guess-segment-properties"></a><h3>hb_buffer_guess_segment_properties ()</h3>
1909 <pre class="programlisting"><span class="returnvalue">void</span>
1910 hb_buffer_guess_segment_properties (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
1911 <p>Sets unset buffer segment properties based on buffer Unicode
1912 contents.  If buffer is not empty, it must have content type
1913 <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-CONTENT-TYPE-UNICODE:CAPS"><span class="type">HB_BUFFER_CONTENT_TYPE_UNICODE</span></a>.</p>
1914 <p>If buffer script is not set (ie. is <a class="link" href="harfbuzz-hb-common.html#HB-SCRIPT-INVALID:CAPS"><span class="type">HB_SCRIPT_INVALID</span></a>), it
1915 will be set to the Unicode script of the first character in
1916 the buffer that has a script other than <a class="link" href="harfbuzz-hb-common.html#HB-SCRIPT-COMMON:CAPS"><span class="type">HB_SCRIPT_COMMON</span></a>,
1917 <a class="link" href="harfbuzz-hb-common.html#HB-SCRIPT-INHERITED:CAPS"><span class="type">HB_SCRIPT_INHERITED</span></a>, and <a class="link" href="harfbuzz-hb-common.html#HB-SCRIPT-UNKNOWN:CAPS"><span class="type">HB_SCRIPT_UNKNOWN</span></a>.</p>
1918 <p>Next, if buffer direction is not set (ie. is <a class="link" href="harfbuzz-hb-common.html#HB-DIRECTION-INVALID:CAPS"><span class="type">HB_DIRECTION_INVALID</span></a>),
1919 it will be set to the natural horizontal direction of the
1920 buffer script as returned by <a class="link" href="harfbuzz-hb-common.html#hb-script-get-horizontal-direction" title="hb_script_get_horizontal_direction ()"><code class="function">hb_script_get_horizontal_direction()</code></a>.
1921 If <a class="link" href="harfbuzz-hb-common.html#hb-script-get-horizontal-direction" title="hb_script_get_horizontal_direction ()"><code class="function">hb_script_get_horizontal_direction()</code></a> returns <a class="link" href="harfbuzz-hb-common.html#HB-DIRECTION-INVALID:CAPS"><span class="type">HB_DIRECTION_INVALID</span></a>,
1922 then <a class="link" href="harfbuzz-hb-common.html#HB-DIRECTION-LTR:CAPS"><span class="type">HB_DIRECTION_LTR</span></a> is used.</p>
1923 <p>Finally, if buffer language is not set (ie. is <a class="link" href="harfbuzz-hb-common.html#HB-LANGUAGE-INVALID:CAPS" title="HB_LANGUAGE_INVALID"><span class="type">HB_LANGUAGE_INVALID</span></a>),
1924 it will be set to the process's default language as returned by
1925 <a class="link" href="harfbuzz-hb-common.html#hb-language-get-default" title="hb_language_get_default ()"><code class="function">hb_language_get_default()</code></a>.  This may change in the future by
1926 taking buffer script into consideration when choosing a language.
1927 Note that <a class="link" href="harfbuzz-hb-common.html#hb-language-get-default" title="hb_language_get_default ()"><code class="function">hb_language_get_default()</code></a> is NOT threadsafe the first time
1928 it is called.  See documentation for that function for details.</p>
1929 <div class="refsect3">
1930 <a name="hb-buffer-guess-segment-properties.parameters"></a><h4>Parameters</h4>
1931 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1932 <colgroup>
1933 <col width="150px" class="parameters_name">
1934 <col class="parameters_description">
1935 <col width="200px" class="parameters_annotations">
1936 </colgroup>
1937 <tbody><tr>
1938 <td class="parameter_name"><p>buffer</p></td>
1939 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1940 <td class="parameter_annotations"> </td>
1941 </tr></tbody>
1942 </table></div>
1943 </div>
1944 <p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
1945 </div>
1946 <hr>
1947 <div class="refsect2">
1948 <a name="hb-buffer-set-unicode-funcs"></a><h3>hb_buffer_set_unicode_funcs ()</h3>
1949 <pre class="programlisting"><span class="returnvalue">void</span>
1950 hb_buffer_set_unicode_funcs (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
1951                              <em class="parameter"><code><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t" title="hb_unicode_funcs_t"><span class="type">hb_unicode_funcs_t</span></a> *unicode_funcs</code></em>);</pre>
1952 <p>Sets the Unicode-functions structure of a buffer to
1953 <em class="parameter"><code>unicode_funcs</code></em>
1954 .</p>
1955 <div class="refsect3">
1956 <a name="hb-buffer-set-unicode-funcs.parameters"></a><h4>Parameters</h4>
1957 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1958 <colgroup>
1959 <col width="150px" class="parameters_name">
1960 <col class="parameters_description">
1961 <col width="200px" class="parameters_annotations">
1962 </colgroup>
1963 <tbody>
1964 <tr>
1965 <td class="parameter_name"><p>buffer</p></td>
1966 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1967 <td class="parameter_annotations"> </td>
1968 </tr>
1969 <tr>
1970 <td class="parameter_name"><p>unicode_funcs</p></td>
1971 <td class="parameter_description"><p>The Unicode-functions structure</p></td>
1972 <td class="parameter_annotations"> </td>
1973 </tr>
1974 </tbody>
1975 </table></div>
1976 </div>
1977 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
1978 </div>
1979 <hr>
1980 <div class="refsect2">
1981 <a name="hb-buffer-get-unicode-funcs"></a><h3>hb_buffer_get_unicode_funcs ()</h3>
1982 <pre class="programlisting"><a class="link" href="harfbuzz-hb-unicode.html#hb-unicode-funcs-t" title="hb_unicode_funcs_t"><span class="returnvalue">hb_unicode_funcs_t</span></a> *
1983 hb_buffer_get_unicode_funcs (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
1984 <p>Fetches the Unicode-functions structure of a buffer.</p>
1985 <div class="refsect3">
1986 <a name="hb-buffer-get-unicode-funcs.parameters"></a><h4>Parameters</h4>
1987 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1988 <colgroup>
1989 <col width="150px" class="parameters_name">
1990 <col class="parameters_description">
1991 <col width="200px" class="parameters_annotations">
1992 </colgroup>
1993 <tbody><tr>
1994 <td class="parameter_name"><p>buffer</p></td>
1995 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
1996 <td class="parameter_annotations"> </td>
1997 </tr></tbody>
1998 </table></div>
1999 </div>
2000 <div class="refsect3">
2001 <a name="hb-buffer-get-unicode-funcs.returns"></a><h4>Returns</h4>
2002 <p> The Unicode-functions structure</p>
2003 </div>
2004 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
2005 </div>
2006 <hr>
2007 <div class="refsect2">
2008 <a name="hb-buffer-get-glyph-infos"></a><h3>hb_buffer_get_glyph_infos ()</h3>
2009 <pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t" title="hb_glyph_info_t"><span class="returnvalue">hb_glyph_info_t</span></a> *
2010 hb_buffer_get_glyph_infos (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
2011                            <em class="parameter"><code>unsigned <span class="type">int</span> *length</code></em>);</pre>
2012 <p>Returns <em class="parameter"><code>buffer</code></em>
2013  glyph information array.  Returned pointer
2014 is valid as long as <em class="parameter"><code>buffer</code></em>
2015  contents are not modified.</p>
2016 <div class="refsect3">
2017 <a name="hb-buffer-get-glyph-infos.parameters"></a><h4>Parameters</h4>
2018 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2019 <colgroup>
2020 <col width="150px" class="parameters_name">
2021 <col class="parameters_description">
2022 <col width="200px" class="parameters_annotations">
2023 </colgroup>
2024 <tbody>
2025 <tr>
2026 <td class="parameter_name"><p>buffer</p></td>
2027 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
2028 <td class="parameter_annotations"> </td>
2029 </tr>
2030 <tr>
2031 <td class="parameter_name"><p>length</p></td>
2032 <td class="parameter_description"><p>The output-array length. </p></td>
2033 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
2034 </tr>
2035 </tbody>
2036 </table></div>
2037 </div>
2038 <div class="refsect3">
2039 <a name="hb-buffer-get-glyph-infos.returns"></a><h4>Returns</h4>
2040 <p>The <em class="parameter"><code>buffer</code></em>
2041 glyph information array.
2042 The value valid as long as buffer has not been modified. </p>
2043 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=length]</span></p>
2044 </div>
2045 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
2046 </div>
2047 <hr>
2048 <div class="refsect2">
2049 <a name="hb-glyph-info-get-glyph-flags"></a><h3>hb_glyph_info_get_glyph_flags ()</h3>
2050 <pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t"><span class="returnvalue">hb_glyph_flags_t</span></a>
2051 hb_glyph_info_get_glyph_flags (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t" title="hb_glyph_info_t"><span class="type">hb_glyph_info_t</span></a> *info</code></em>);</pre>
2052 <p>Returns glyph flags encoded within a <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t" title="hb_glyph_info_t"><span class="type">hb_glyph_info_t</span></a>.</p>
2053 <div class="refsect3">
2054 <a name="hb-glyph-info-get-glyph-flags.parameters"></a><h4>Parameters</h4>
2055 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2056 <colgroup>
2057 <col width="150px" class="parameters_name">
2058 <col class="parameters_description">
2059 <col width="200px" class="parameters_annotations">
2060 </colgroup>
2061 <tbody><tr>
2062 <td class="parameter_name"><p>info</p></td>
2063 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t" title="hb_glyph_info_t"><span class="type">hb_glyph_info_t</span></a></p></td>
2064 <td class="parameter_annotations"> </td>
2065 </tr></tbody>
2066 </table></div>
2067 </div>
2068 <div class="refsect3">
2069 <a name="hb-glyph-info-get-glyph-flags.returns"></a><h4>Returns</h4>
2070 <p>The <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t"><span class="type">hb_glyph_flags_t</span></a> encoded within <em class="parameter"><code>info</code></em>
2071 </p>
2072 </div>
2073 <p class="since">Since: <a class="link" href="api-index-1-5-0.html#api-index-1.5.0">1.5.0</a></p>
2074 </div>
2075 <hr>
2076 <div class="refsect2">
2077 <a name="hb-buffer-get-glyph-positions"></a><h3>hb_buffer_get_glyph_positions ()</h3>
2078 <pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t" title="hb_glyph_position_t"><span class="returnvalue">hb_glyph_position_t</span></a> *
2079 hb_buffer_get_glyph_positions (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
2080                                <em class="parameter"><code>unsigned <span class="type">int</span> *length</code></em>);</pre>
2081 <p>Returns <em class="parameter"><code>buffer</code></em>
2082  glyph position array.  Returned pointer
2083 is valid as long as <em class="parameter"><code>buffer</code></em>
2084  contents are not modified.</p>
2085 <p>If buffer did not have positions before, the positions will be
2086 initialized to zeros, unless this function is called from
2087 within a buffer message callback (see <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-message-func" title="hb_buffer_set_message_func ()"><code class="function">hb_buffer_set_message_func()</code></a>),
2088 in which case <code class="literal">NULL</code> is returned.</p>
2089 <div class="refsect3">
2090 <a name="hb-buffer-get-glyph-positions.parameters"></a><h4>Parameters</h4>
2091 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2092 <colgroup>
2093 <col width="150px" class="parameters_name">
2094 <col class="parameters_description">
2095 <col width="200px" class="parameters_annotations">
2096 </colgroup>
2097 <tbody>
2098 <tr>
2099 <td class="parameter_name"><p>buffer</p></td>
2100 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
2101 <td class="parameter_annotations"> </td>
2102 </tr>
2103 <tr>
2104 <td class="parameter_name"><p>length</p></td>
2105 <td class="parameter_description"><p>The output length. </p></td>
2106 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
2107 </tr>
2108 </tbody>
2109 </table></div>
2110 </div>
2111 <div class="refsect3">
2112 <a name="hb-buffer-get-glyph-positions.returns"></a><h4>Returns</h4>
2113 <p>The <em class="parameter"><code>buffer</code></em>
2114 glyph position array.
2115 The value valid as long as buffer has not been modified. </p>
2116 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=length]</span></p>
2117 </div>
2118 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
2119 </div>
2120 <hr>
2121 <div class="refsect2">
2122 <a name="hb-buffer-has-positions"></a><h3>hb_buffer_has_positions ()</h3>
2123 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
2124 hb_buffer_has_positions (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
2125 <p>Returns whether <em class="parameter"><code>buffer</code></em>
2126  has glyph position data.
2127 A buffer gains position data when <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-glyph-positions" title="hb_buffer_get_glyph_positions ()"><code class="function">hb_buffer_get_glyph_positions()</code></a> is called on it,
2128 and cleared of position data when <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-clear-contents" title="hb_buffer_clear_contents ()"><code class="function">hb_buffer_clear_contents()</code></a> is called.</p>
2129 <div class="refsect3">
2130 <a name="hb-buffer-has-positions.parameters"></a><h4>Parameters</h4>
2131 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2132 <colgroup>
2133 <col width="150px" class="parameters_name">
2134 <col class="parameters_description">
2135 <col width="200px" class="parameters_annotations">
2136 </colgroup>
2137 <tbody><tr>
2138 <td class="parameter_name"><p>buffer</p></td>
2139 <td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a>.</p></td>
2140 <td class="parameter_annotations"> </td>
2141 </tr></tbody>
2142 </table></div>
2143 </div>
2144 <div class="refsect3">
2145 <a name="hb-buffer-has-positions.returns"></a><h4>Returns</h4>
2146 <p><code class="literal">true</code> if the <em class="parameter"><code>buffer</code></em>
2147 has position array, <code class="literal">false</code> otherwise.</p>
2148 </div>
2149 <p class="since">Since: <a class="link" href="api-index-2-7-3.html#api-index-2.7.3">2.7.3</a></p>
2150 </div>
2151 <hr>
2152 <div class="refsect2">
2153 <a name="hb-buffer-set-invisible-glyph"></a><h3>hb_buffer_set_invisible_glyph ()</h3>
2154 <pre class="programlisting"><span class="returnvalue">void</span>
2155 hb_buffer_set_invisible_glyph (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
2156                                <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> invisible</code></em>);</pre>
2157 <p>Sets the <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> that replaces invisible characters in
2158 the shaping result.  If set to zero (default), the glyph for the
2159 U+0020 SPACE character is used.  Otherwise, this value is used
2160 verbatim.</p>
2161 <div class="refsect3">
2162 <a name="hb-buffer-set-invisible-glyph.parameters"></a><h4>Parameters</h4>
2163 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2164 <colgroup>
2165 <col width="150px" class="parameters_name">
2166 <col class="parameters_description">
2167 <col width="200px" class="parameters_annotations">
2168 </colgroup>
2169 <tbody>
2170 <tr>
2171 <td class="parameter_name"><p>buffer</p></td>
2172 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
2173 <td class="parameter_annotations"> </td>
2174 </tr>
2175 <tr>
2176 <td class="parameter_name"><p>invisible</p></td>
2177 <td class="parameter_description"><p>the invisible <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a></p></td>
2178 <td class="parameter_annotations"> </td>
2179 </tr>
2180 </tbody>
2181 </table></div>
2182 </div>
2183 <p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
2184 </div>
2185 <hr>
2186 <div class="refsect2">
2187 <a name="hb-buffer-get-invisible-glyph"></a><h3>hb_buffer_get_invisible_glyph ()</h3>
2188 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
2189 hb_buffer_get_invisible_glyph (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
2190 <p>See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-invisible-glyph" title="hb_buffer_set_invisible_glyph ()"><code class="function">hb_buffer_set_invisible_glyph()</code></a>.</p>
2191 <div class="refsect3">
2192 <a name="hb-buffer-get-invisible-glyph.parameters"></a><h4>Parameters</h4>
2193 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2194 <colgroup>
2195 <col width="150px" class="parameters_name">
2196 <col class="parameters_description">
2197 <col width="200px" class="parameters_annotations">
2198 </colgroup>
2199 <tbody><tr>
2200 <td class="parameter_name"><p>buffer</p></td>
2201 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
2202 <td class="parameter_annotations"> </td>
2203 </tr></tbody>
2204 </table></div>
2205 </div>
2206 <div class="refsect3">
2207 <a name="hb-buffer-get-invisible-glyph.returns"></a><h4>Returns</h4>
2208 <p>The <em class="parameter"><code>buffer</code></em>
2209 invisible <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a></p>
2210 </div>
2211 <p class="since">Since: <a class="link" href="api-index-2-0-0.html#api-index-2.0.0">2.0.0</a></p>
2212 </div>
2213 <hr>
2214 <div class="refsect2">
2215 <a name="hb-buffer-set-not-found-glyph"></a><h3>hb_buffer_set_not_found_glyph ()</h3>
2216 <pre class="programlisting"><span class="returnvalue">void</span>
2217 hb_buffer_set_not_found_glyph (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
2218                                <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> not_found</code></em>);</pre>
2219 <p>Sets the <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> that replaces characters not found in
2220 the font during shaping.</p>
2221 <p>The not-found glyph defaults to zero, sometimes known as the
2222 ".notdef" glyph.  This API allows for differentiating the two.</p>
2223 <div class="refsect3">
2224 <a name="hb-buffer-set-not-found-glyph.parameters"></a><h4>Parameters</h4>
2225 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2226 <colgroup>
2227 <col width="150px" class="parameters_name">
2228 <col class="parameters_description">
2229 <col width="200px" class="parameters_annotations">
2230 </colgroup>
2231 <tbody>
2232 <tr>
2233 <td class="parameter_name"><p>buffer</p></td>
2234 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
2235 <td class="parameter_annotations"> </td>
2236 </tr>
2237 <tr>
2238 <td class="parameter_name"><p>not_found</p></td>
2239 <td class="parameter_description"><p>the not-found <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a></p></td>
2240 <td class="parameter_annotations"> </td>
2241 </tr>
2242 </tbody>
2243 </table></div>
2244 </div>
2245 <p class="since">Since: <a class="link" href="api-index-3-1-0.html#api-index-3.1.0">3.1.0</a></p>
2246 </div>
2247 <hr>
2248 <div class="refsect2">
2249 <a name="hb-buffer-get-not-found-glyph"></a><h3>hb_buffer_get_not_found_glyph ()</h3>
2250 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
2251 hb_buffer_get_not_found_glyph (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
2252 <p>See <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-not-found-glyph" title="hb_buffer_set_not_found_glyph ()"><code class="function">hb_buffer_set_not_found_glyph()</code></a>.</p>
2253 <div class="refsect3">
2254 <a name="hb-buffer-get-not-found-glyph.parameters"></a><h4>Parameters</h4>
2255 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2256 <colgroup>
2257 <col width="150px" class="parameters_name">
2258 <col class="parameters_description">
2259 <col width="200px" class="parameters_annotations">
2260 </colgroup>
2261 <tbody><tr>
2262 <td class="parameter_name"><p>buffer</p></td>
2263 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
2264 <td class="parameter_annotations"> </td>
2265 </tr></tbody>
2266 </table></div>
2267 </div>
2268 <div class="refsect3">
2269 <a name="hb-buffer-get-not-found-glyph.returns"></a><h4>Returns</h4>
2270 <p>The <em class="parameter"><code>buffer</code></em>
2271 not-found <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a></p>
2272 </div>
2273 <p class="since">Since: <a class="link" href="api-index-3-1-0.html#api-index-3.1.0">3.1.0</a></p>
2274 </div>
2275 <hr>
2276 <div class="refsect2">
2277 <a name="hb-buffer-set-replacement-codepoint"></a><h3>hb_buffer_set_replacement_codepoint ()</h3>
2278 <pre class="programlisting"><span class="returnvalue">void</span>
2279 hb_buffer_set_replacement_codepoint (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
2280                                      <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> replacement</code></em>);</pre>
2281 <p>Sets the <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> that replaces invalid entries for a given encoding
2282 when adding text to <em class="parameter"><code>buffer</code></em>
2283 .</p>
2284 <p>Default is <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS" title="HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT"><span class="type">HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</span></a>.</p>
2285 <div class="refsect3">
2286 <a name="hb-buffer-set-replacement-codepoint.parameters"></a><h4>Parameters</h4>
2287 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2288 <colgroup>
2289 <col width="150px" class="parameters_name">
2290 <col class="parameters_description">
2291 <col width="200px" class="parameters_annotations">
2292 </colgroup>
2293 <tbody>
2294 <tr>
2295 <td class="parameter_name"><p>buffer</p></td>
2296 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
2297 <td class="parameter_annotations"> </td>
2298 </tr>
2299 <tr>
2300 <td class="parameter_name"><p>replacement</p></td>
2301 <td class="parameter_description"><p>the replacement <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a></p></td>
2302 <td class="parameter_annotations"> </td>
2303 </tr>
2304 </tbody>
2305 </table></div>
2306 </div>
2307 <p class="since">Since: <a class="link" href="api-index-0-9-31.html#api-index-0.9.31">0.9.31</a></p>
2308 </div>
2309 <hr>
2310 <div class="refsect2">
2311 <a name="hb-buffer-get-replacement-codepoint"></a><h3>hb_buffer_get_replacement_codepoint ()</h3>
2312 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="returnvalue">hb_codepoint_t</span></a>
2313 hb_buffer_get_replacement_codepoint (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
2314 <p>Fetches the <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> that replaces invalid entries for a given encoding
2315 when adding text to <em class="parameter"><code>buffer</code></em>
2316 .</p>
2317 <div class="refsect3">
2318 <a name="hb-buffer-get-replacement-codepoint.parameters"></a><h4>Parameters</h4>
2319 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2320 <colgroup>
2321 <col width="150px" class="parameters_name">
2322 <col class="parameters_description">
2323 <col width="200px" class="parameters_annotations">
2324 </colgroup>
2325 <tbody><tr>
2326 <td class="parameter_name"><p>buffer</p></td>
2327 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
2328 <td class="parameter_annotations"> </td>
2329 </tr></tbody>
2330 </table></div>
2331 </div>
2332 <div class="refsect3">
2333 <a name="hb-buffer-get-replacement-codepoint.returns"></a><h4>Returns</h4>
2334 <p>The <em class="parameter"><code>buffer</code></em>
2335 replacement <a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a></p>
2336 </div>
2337 <p class="since">Since: <a class="link" href="api-index-0-9-31.html#api-index-0.9.31">0.9.31</a></p>
2338 </div>
2339 <hr>
2340 <div class="refsect2">
2341 <a name="hb-buffer-normalize-glyphs"></a><h3>hb_buffer_normalize_glyphs ()</h3>
2342 <pre class="programlisting"><span class="returnvalue">void</span>
2343 hb_buffer_normalize_glyphs (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
2344 <p>Reorders a glyph buffer to have canonical in-cluster glyph order / position.
2345 The resulting clusters should behave identical to pre-reordering clusters.</p>
2346 <div class="note">This has nothing to do with Unicode normalization.</div>
2347 <div class="refsect3">
2348 <a name="hb-buffer-normalize-glyphs.parameters"></a><h4>Parameters</h4>
2349 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2350 <colgroup>
2351 <col width="150px" class="parameters_name">
2352 <col class="parameters_description">
2353 <col width="200px" class="parameters_annotations">
2354 </colgroup>
2355 <tbody><tr>
2356 <td class="parameter_name"><p>buffer</p></td>
2357 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
2358 <td class="parameter_annotations"> </td>
2359 </tr></tbody>
2360 </table></div>
2361 </div>
2362 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
2363 </div>
2364 <hr>
2365 <div class="refsect2">
2366 <a name="hb-buffer-reverse"></a><h3>hb_buffer_reverse ()</h3>
2367 <pre class="programlisting"><span class="returnvalue">void</span>
2368 hb_buffer_reverse (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
2369 <p>Reverses buffer contents.</p>
2370 <div class="refsect3">
2371 <a name="hb-buffer-reverse.parameters"></a><h4>Parameters</h4>
2372 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2373 <colgroup>
2374 <col width="150px" class="parameters_name">
2375 <col class="parameters_description">
2376 <col width="200px" class="parameters_annotations">
2377 </colgroup>
2378 <tbody><tr>
2379 <td class="parameter_name"><p>buffer</p></td>
2380 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
2381 <td class="parameter_annotations"> </td>
2382 </tr></tbody>
2383 </table></div>
2384 </div>
2385 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
2386 </div>
2387 <hr>
2388 <div class="refsect2">
2389 <a name="hb-buffer-reverse-range"></a><h3>hb_buffer_reverse_range ()</h3>
2390 <pre class="programlisting"><span class="returnvalue">void</span>
2391 hb_buffer_reverse_range (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
2392                          <em class="parameter"><code>unsigned <span class="type">int</span> start</code></em>,
2393                          <em class="parameter"><code>unsigned <span class="type">int</span> end</code></em>);</pre>
2394 <p>Reverses buffer contents between <em class="parameter"><code>start</code></em>
2395  and <em class="parameter"><code>end</code></em>
2396 .</p>
2397 <div class="refsect3">
2398 <a name="hb-buffer-reverse-range.parameters"></a><h4>Parameters</h4>
2399 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2400 <colgroup>
2401 <col width="150px" class="parameters_name">
2402 <col class="parameters_description">
2403 <col width="200px" class="parameters_annotations">
2404 </colgroup>
2405 <tbody>
2406 <tr>
2407 <td class="parameter_name"><p>buffer</p></td>
2408 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
2409 <td class="parameter_annotations"> </td>
2410 </tr>
2411 <tr>
2412 <td class="parameter_name"><p>start</p></td>
2413 <td class="parameter_description"><p>start index</p></td>
2414 <td class="parameter_annotations"> </td>
2415 </tr>
2416 <tr>
2417 <td class="parameter_name"><p>end</p></td>
2418 <td class="parameter_description"><p>end index</p></td>
2419 <td class="parameter_annotations"> </td>
2420 </tr>
2421 </tbody>
2422 </table></div>
2423 </div>
2424 <p class="since">Since: <a class="link" href="api-index-0-9-41.html#api-index-0.9.41">0.9.41</a></p>
2425 </div>
2426 <hr>
2427 <div class="refsect2">
2428 <a name="hb-buffer-reverse-clusters"></a><h3>hb_buffer_reverse_clusters ()</h3>
2429 <pre class="programlisting"><span class="returnvalue">void</span>
2430 hb_buffer_reverse_clusters (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>);</pre>
2431 <p>Reverses buffer clusters.  That is, the buffer contents are
2432 reversed, then each cluster (consecutive items having the
2433 same cluster number) are reversed again.</p>
2434 <div class="refsect3">
2435 <a name="hb-buffer-reverse-clusters.parameters"></a><h4>Parameters</h4>
2436 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2437 <colgroup>
2438 <col width="150px" class="parameters_name">
2439 <col class="parameters_description">
2440 <col width="200px" class="parameters_annotations">
2441 </colgroup>
2442 <tbody><tr>
2443 <td class="parameter_name"><p>buffer</p></td>
2444 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
2445 <td class="parameter_annotations"> </td>
2446 </tr></tbody>
2447 </table></div>
2448 </div>
2449 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
2450 </div>
2451 <hr>
2452 <div class="refsect2">
2453 <a name="hb-buffer-serialize"></a><h3>hb_buffer_serialize ()</h3>
2454 <pre class="programlisting">unsigned <span class="returnvalue">int</span>
2455 hb_buffer_serialize (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
2456                      <em class="parameter"><code>unsigned <span class="type">int</span> start</code></em>,
2457                      <em class="parameter"><code>unsigned <span class="type">int</span> end</code></em>,
2458                      <em class="parameter"><code><span class="type">char</span> *buf</code></em>,
2459                      <em class="parameter"><code>unsigned <span class="type">int</span> buf_size</code></em>,
2460                      <em class="parameter"><code>unsigned <span class="type">int</span> *buf_consumed</code></em>,
2461                      <em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t" title="hb_font_t"><span class="type">hb_font_t</span></a> *font</code></em>,
2462                      <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>,
2463                      <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t"><span class="type">hb_buffer_serialize_flags_t</span></a> flags</code></em>);</pre>
2464 <p>Serializes <em class="parameter"><code>buffer</code></em>
2465  into a textual representation of its content, whether
2466 Unicode codepoints or glyph identifiers and positioning information. This is
2467 useful for showing the contents of the buffer, for example during debugging.
2468 See the documentation of <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-unicode" title="hb_buffer_serialize_unicode ()"><code class="function">hb_buffer_serialize_unicode()</code></a> and
2469 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()"><code class="function">hb_buffer_serialize_glyphs()</code></a> for a description of the output format.</p>
2470 <div class="refsect3">
2471 <a name="hb-buffer-serialize.parameters"></a><h4>Parameters</h4>
2472 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2473 <colgroup>
2474 <col width="150px" class="parameters_name">
2475 <col class="parameters_description">
2476 <col width="200px" class="parameters_annotations">
2477 </colgroup>
2478 <tbody>
2479 <tr>
2480 <td class="parameter_name"><p>buffer</p></td>
2481 <td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> buffer.</p></td>
2482 <td class="parameter_annotations"> </td>
2483 </tr>
2484 <tr>
2485 <td class="parameter_name"><p>start</p></td>
2486 <td class="parameter_description"><p>the first item in <em class="parameter"><code>buffer</code></em>
2487 to serialize.</p></td>
2488 <td class="parameter_annotations"> </td>
2489 </tr>
2490 <tr>
2491 <td class="parameter_name"><p>end</p></td>
2492 <td class="parameter_description"><p>the last item in <em class="parameter"><code>buffer</code></em>
2493 to serialize.</p></td>
2494 <td class="parameter_annotations"> </td>
2495 </tr>
2496 <tr>
2497 <td class="parameter_name"><p>buf</p></td>
2498 <td class="parameter_description"><p>output string to
2499 write serialized buffer into. </p></td>
2500 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=buf_size][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
2501 </tr>
2502 <tr>
2503 <td class="parameter_name"><p>buf_size</p></td>
2504 <td class="parameter_description"><p>the size of <em class="parameter"><code>buf</code></em>
2505 .</p></td>
2506 <td class="parameter_annotations"> </td>
2507 </tr>
2508 <tr>
2509 <td class="parameter_name"><p>buf_consumed</p></td>
2510 <td class="parameter_description"><p>if not <code class="literal">NULL</code>, will be set to the number of bytes written into <em class="parameter"><code>buf</code></em>
2511 . </p></td>
2512 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
2513 </tr>
2514 <tr>
2515 <td class="parameter_name"><p>font</p></td>
2516 <td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-font.html#hb-font-t" title="hb_font_t"><span class="type">hb_font_t</span></a> used to shape this buffer, needed to
2517 read glyph names and extents. If <code class="literal">NULL</code>, an empty font will be used. </p></td>
2518 <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
2519 </tr>
2520 <tr>
2521 <td class="parameter_name"><p>format</p></td>
2522 <td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> to use for formatting the output.</p></td>
2523 <td class="parameter_annotations"> </td>
2524 </tr>
2525 <tr>
2526 <td class="parameter_name"><p>flags</p></td>
2527 <td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t"><span class="type">hb_buffer_serialize_flags_t</span></a> that control what glyph properties
2528 to serialize.</p></td>
2529 <td class="parameter_annotations"> </td>
2530 </tr>
2531 </tbody>
2532 </table></div>
2533 </div>
2534 <div class="refsect3">
2535 <a name="hb-buffer-serialize.returns"></a><h4>Returns</h4>
2536 <p>The number of serialized items.</p>
2537 </div>
2538 <p class="since">Since: <a class="link" href="api-index-2-7-3.html#api-index-2.7.3">2.7.3</a></p>
2539 </div>
2540 <hr>
2541 <div class="refsect2">
2542 <a name="hb-buffer-serialize-glyphs"></a><h3>hb_buffer_serialize_glyphs ()</h3>
2543 <pre class="programlisting">unsigned <span class="returnvalue">int</span>
2544 hb_buffer_serialize_glyphs (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
2545                             <em class="parameter"><code>unsigned <span class="type">int</span> start</code></em>,
2546                             <em class="parameter"><code>unsigned <span class="type">int</span> end</code></em>,
2547                             <em class="parameter"><code><span class="type">char</span> *buf</code></em>,
2548                             <em class="parameter"><code>unsigned <span class="type">int</span> buf_size</code></em>,
2549                             <em class="parameter"><code>unsigned <span class="type">int</span> *buf_consumed</code></em>,
2550                             <em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t" title="hb_font_t"><span class="type">hb_font_t</span></a> *font</code></em>,
2551                             <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>,
2552                             <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t"><span class="type">hb_buffer_serialize_flags_t</span></a> flags</code></em>);</pre>
2553 <p>Serializes <em class="parameter"><code>buffer</code></em>
2554  into a textual representation of its glyph content,
2555 useful for showing the contents of the buffer, for example during debugging.
2556 There are currently two supported serialization formats:</p>
2557 <div class="refsect3">
2558 <a name="id-1.3.3.3.7.54.5"></a><h4>text</h4>
2559 <p>A human-readable, plain text format.
2560 The serialized glyphs will look something like:</p>
2561 <p><code class="literal">
2562 [uni0651=0@518,0+0|uni0628=0+1897]
2563 </code></p>
2564 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
2565 <li class="listitem"><p>The serialized glyphs are delimited with <code class="literal">[</code> and <code class="literal">]</code>.</p></li>
2566 <li class="listitem"><p>Glyphs are separated with <code class="literal">|</code></p></li>
2567 <li class="listitem">
2568 <p>Each glyph starts with glyph name, or glyph index if
2569 <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-NO-GLYPH-NAMES:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES</span></a> flag is set. Then,</p>
2570 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
2571 <li class="listitem"><p>If <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-NO-CLUSTERS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS</span></a> is not set, <code class="literal">=</code> then <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t.cluster"><span class="type">hb_glyph_info_t.cluster</span></a>.</p></li>
2572 <li class="listitem">
2573 <p>If <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-NO-POSITIONS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS</span></a> is not set, the <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t" title="hb_glyph_position_t"><span class="type">hb_glyph_position_t</span></a> in the format:</p>
2574 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; ">
2575 <li class="listitem"><p>If both <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t.x-offset"><span class="type">hb_glyph_position_t.x_offset</span></a> and <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t.y-offset"><span class="type">hb_glyph_position_t.y_offset</span></a> are not 0, <code class="literal">@x_offset,y_offset</code>. Then,</p></li>
2576 <li class="listitem"><p><code class="literal">+x_advance</code>, then <code class="literal">,y_advance</code> if <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t.y-advance"><span class="type">hb_glyph_position_t.y_advance</span></a> is not 0. Then,</p></li>
2577 </ul></div>
2578 </li>
2579 <li class="listitem"><p>If <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-GLYPH-EXTENTS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS</span></a> is set, the <a class="link" href="harfbuzz-hb-font.html#hb-glyph-extents-t" title="hb_glyph_extents_t"><span class="type">hb_glyph_extents_t</span></a> in the format <code class="literal">&lt;x_bearing,y_bearing,width,height&gt;</code></p></li>
2580 </ul></div>
2581 </li>
2582 </ul></div>
2583 </div>
2584 <div class="refsect3">
2585 <a name="id-1.3.3.3.7.54.6"></a><h4>json</h4>
2586 <p>A machine-readable, structured format.
2587 The serialized glyphs will look something like:</p>
2588 <p><code class="literal">
2589 [{"g":"uni0651","cl":0,"dx":518,"dy":0,"ax":0,"ay":0},
2590 {"g":"uni0628","cl":0,"dx":0,"dy":0,"ax":1897,"ay":0}]
2591 </code></p>
2592 <p>Each glyph is a JSON object, with the following properties:</p>
2593 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
2594 <li class="listitem"><p><code class="literal">g</code>: the glyph name or glyph index if
2595 <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-NO-GLYPH-NAMES:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES</span></a> flag is set.</p></li>
2596 <li class="listitem"><p><code class="literal">cl</code>: <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t.cluster"><span class="type">hb_glyph_info_t.cluster</span></a> if
2597 <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-NO-CLUSTERS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS</span></a> is not set.</p></li>
2598 <li class="listitem"><p><code class="literal">dx</code>,<code class="literal">dy</code>,<code class="literal">ax</code>,<code class="literal">ay</code>: <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t.x-offset"><span class="type">hb_glyph_position_t.x_offset</span></a>, <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t.y-offset"><span class="type">hb_glyph_position_t.y_offset</span></a>,
2599 <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t.x-advance"><span class="type">hb_glyph_position_t.x_advance</span></a> and <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t.y-advance"><span class="type">hb_glyph_position_t.y_advance</span></a>
2600 respectively, if <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-NO-POSITIONS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS</span></a> is not set.</p></li>
2601 <li class="listitem"><p><code class="literal">xb</code>,<code class="literal">yb</code>,<code class="literal">w</code>,<code class="literal">h</code>: <a class="link" href="harfbuzz-hb-font.html#hb-glyph-extents-t.x-bearing"><span class="type">hb_glyph_extents_t.x_bearing</span></a>, <a class="link" href="harfbuzz-hb-font.html#hb-glyph-extents-t.y-bearing"><span class="type">hb_glyph_extents_t.y_bearing</span></a>,
2602 <a class="link" href="harfbuzz-hb-font.html#hb-glyph-extents-t.width"><span class="type">hb_glyph_extents_t.width</span></a> and <a class="link" href="harfbuzz-hb-font.html#hb-glyph-extents-t.height"><span class="type">hb_glyph_extents_t.height</span></a> respectively if
2603 <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-GLYPH-EXTENTS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS</span></a> is set.</p></li>
2604 </ul></div>
2605 </div>
2606 <div class="refsect3">
2607 <a name="hb-buffer-serialize-glyphs.parameters"></a><h4>Parameters</h4>
2608 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2609 <colgroup>
2610 <col width="150px" class="parameters_name">
2611 <col class="parameters_description">
2612 <col width="200px" class="parameters_annotations">
2613 </colgroup>
2614 <tbody>
2615 <tr>
2616 <td class="parameter_name"><p>buffer</p></td>
2617 <td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> buffer.</p></td>
2618 <td class="parameter_annotations"> </td>
2619 </tr>
2620 <tr>
2621 <td class="parameter_name"><p>start</p></td>
2622 <td class="parameter_description"><p>the first item in <em class="parameter"><code>buffer</code></em>
2623 to serialize.</p></td>
2624 <td class="parameter_annotations"> </td>
2625 </tr>
2626 <tr>
2627 <td class="parameter_name"><p>end</p></td>
2628 <td class="parameter_description"><p>the last item in <em class="parameter"><code>buffer</code></em>
2629 to serialize.</p></td>
2630 <td class="parameter_annotations"> </td>
2631 </tr>
2632 <tr>
2633 <td class="parameter_name"><p>buf</p></td>
2634 <td class="parameter_description"><p>output string to
2635 write serialized buffer into. </p></td>
2636 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=buf_size][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
2637 </tr>
2638 <tr>
2639 <td class="parameter_name"><p>buf_size</p></td>
2640 <td class="parameter_description"><p>the size of <em class="parameter"><code>buf</code></em>
2641 .</p></td>
2642 <td class="parameter_annotations"> </td>
2643 </tr>
2644 <tr>
2645 <td class="parameter_name"><p>buf_consumed</p></td>
2646 <td class="parameter_description"><p>if not <code class="literal">NULL</code>, will be set to the number of bytes written into <em class="parameter"><code>buf</code></em>
2647 . </p></td>
2648 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
2649 </tr>
2650 <tr>
2651 <td class="parameter_name"><p>font</p></td>
2652 <td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-font.html#hb-font-t" title="hb_font_t"><span class="type">hb_font_t</span></a> used to shape this buffer, needed to
2653 read glyph names and extents. If <code class="literal">NULL</code>, an empty font will be used. </p></td>
2654 <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
2655 </tr>
2656 <tr>
2657 <td class="parameter_name"><p>format</p></td>
2658 <td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> to use for formatting the output.</p></td>
2659 <td class="parameter_annotations"> </td>
2660 </tr>
2661 <tr>
2662 <td class="parameter_name"><p>flags</p></td>
2663 <td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t"><span class="type">hb_buffer_serialize_flags_t</span></a> that control what glyph properties
2664 to serialize.</p></td>
2665 <td class="parameter_annotations"> </td>
2666 </tr>
2667 </tbody>
2668 </table></div>
2669 </div>
2670 <div class="refsect3">
2671 <a name="hb-buffer-serialize-glyphs.returns"></a><h4>Returns</h4>
2672 <p>The number of serialized items.</p>
2673 </div>
2674 <p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
2675 </div>
2676 <hr>
2677 <div class="refsect2">
2678 <a name="hb-buffer-deserialize-glyphs"></a><h3>hb_buffer_deserialize_glyphs ()</h3>
2679 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
2680 hb_buffer_deserialize_glyphs (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
2681                               <em class="parameter"><code>const <span class="type">char</span> *buf</code></em>,
2682                               <em class="parameter"><code><span class="type">int</span> buf_len</code></em>,
2683                               <em class="parameter"><code>const <span class="type">char</span> **end_ptr</code></em>,
2684                               <em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t" title="hb_font_t"><span class="type">hb_font_t</span></a> *font</code></em>,
2685                               <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>);</pre>
2686 <p>Deserializes glyphs <em class="parameter"><code>buffer</code></em>
2687  from textual representation in the format
2688 produced by <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()"><code class="function">hb_buffer_serialize_glyphs()</code></a>.</p>
2689 <div class="refsect3">
2690 <a name="hb-buffer-deserialize-glyphs.parameters"></a><h4>Parameters</h4>
2691 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2692 <colgroup>
2693 <col width="150px" class="parameters_name">
2694 <col class="parameters_description">
2695 <col width="200px" class="parameters_annotations">
2696 </colgroup>
2697 <tbody>
2698 <tr>
2699 <td class="parameter_name"><p>buffer</p></td>
2700 <td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> buffer.</p></td>
2701 <td class="parameter_annotations"> </td>
2702 </tr>
2703 <tr>
2704 <td class="parameter_name"><p>buf</p></td>
2705 <td class="parameter_description"><p>string to deserialize. </p></td>
2706 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=buf_len]</span></td>
2707 </tr>
2708 <tr>
2709 <td class="parameter_name"><p>buf_len</p></td>
2710 <td class="parameter_description"><p>the size of <em class="parameter"><code>buf</code></em>
2711 , or -1 if it is <code class="literal">NULL</code>-terminated</p></td>
2712 <td class="parameter_annotations"> </td>
2713 </tr>
2714 <tr>
2715 <td class="parameter_name"><p>end_ptr</p></td>
2716 <td class="parameter_description"><p>output pointer to the character after last
2717 consumed one. </p></td>
2718 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
2719 </tr>
2720 <tr>
2721 <td class="parameter_name"><p>font</p></td>
2722 <td class="parameter_description"><p>font for getting glyph IDs. </p></td>
2723 <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
2724 </tr>
2725 <tr>
2726 <td class="parameter_name"><p>format</p></td>
2727 <td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> of the input <em class="parameter"><code>buf</code></em>
2728 </p></td>
2729 <td class="parameter_annotations"> </td>
2730 </tr>
2731 </tbody>
2732 </table></div>
2733 </div>
2734 <div class="refsect3">
2735 <a name="hb-buffer-deserialize-glyphs.returns"></a><h4>Returns</h4>
2736 <p> <code class="literal">true</code> if parse was successful, <code class="literal">false</code> if an error
2737 occurred.</p>
2738 </div>
2739 <p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
2740 </div>
2741 <hr>
2742 <div class="refsect2">
2743 <a name="hb-buffer-serialize-unicode"></a><h3>hb_buffer_serialize_unicode ()</h3>
2744 <pre class="programlisting">unsigned <span class="returnvalue">int</span>
2745 hb_buffer_serialize_unicode (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
2746                              <em class="parameter"><code>unsigned <span class="type">int</span> start</code></em>,
2747                              <em class="parameter"><code>unsigned <span class="type">int</span> end</code></em>,
2748                              <em class="parameter"><code><span class="type">char</span> *buf</code></em>,
2749                              <em class="parameter"><code>unsigned <span class="type">int</span> buf_size</code></em>,
2750                              <em class="parameter"><code>unsigned <span class="type">int</span> *buf_consumed</code></em>,
2751                              <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>,
2752                              <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t"><span class="type">hb_buffer_serialize_flags_t</span></a> flags</code></em>);</pre>
2753 <p>Serializes <em class="parameter"><code>buffer</code></em>
2754  into a textual representation of its content,
2755 when the buffer contains Unicode codepoints (i.e., before shaping). This is
2756 useful for showing the contents of the buffer, for example during debugging.
2757 There are currently two supported serialization formats:</p>
2758 <div class="refsect3">
2759 <a name="id-1.3.3.3.7.56.5"></a><h4>text</h4>
2760 <p>A human-readable, plain text format.
2761 The serialized codepoints will look something like:</p>
2762 <p><code class="literal">
2763  &lt;U+0651=0|U+0628=1&gt;
2764 </code></p>
2765 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
2766 <li class="listitem"><p>Glyphs are separated with <code class="literal">|</code></p></li>
2767 <li class="listitem"><p>Unicode codepoints are expressed as zero-padded four (or more)
2768 digit hexadecimal numbers preceded by <code class="literal">U+</code></p></li>
2769 <li class="listitem"><p>If <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-NO-CLUSTERS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS</span></a> is not set, the cluster
2770 will be indicated with a <code class="literal">=</code> then <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t.cluster"><span class="type">hb_glyph_info_t.cluster</span></a>.</p></li>
2771 </ul></div>
2772 </div>
2773 <div class="refsect3">
2774 <a name="id-1.3.3.3.7.56.6"></a><h4>json</h4>
2775 <p>A machine-readable, structured format.
2776 The serialized codepoints will be a list of objects with the following
2777 properties:</p>
2778 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
2779 <li class="listitem"><p><code class="literal">u</code>: the Unicode codepoint as a decimal integer</p></li>
2780 <li class="listitem"><p><code class="literal">cl</code>: <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t.cluster"><span class="type">hb_glyph_info_t.cluster</span></a> if
2781 <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-SERIALIZE-FLAG-NO-CLUSTERS:CAPS"><span class="type">HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS</span></a> is not set.</p></li>
2782 </ul></div>
2783 <p>For example:</p>
2784 <p><code class="literal">
2785 [{u:1617,cl:0},{u:1576,cl:1}]
2786 </code></p>
2787 </div>
2788 <div class="refsect3">
2789 <a name="hb-buffer-serialize-unicode.parameters"></a><h4>Parameters</h4>
2790 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2791 <colgroup>
2792 <col width="150px" class="parameters_name">
2793 <col class="parameters_description">
2794 <col width="200px" class="parameters_annotations">
2795 </colgroup>
2796 <tbody>
2797 <tr>
2798 <td class="parameter_name"><p>buffer</p></td>
2799 <td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> buffer.</p></td>
2800 <td class="parameter_annotations"> </td>
2801 </tr>
2802 <tr>
2803 <td class="parameter_name"><p>start</p></td>
2804 <td class="parameter_description"><p>the first item in <em class="parameter"><code>buffer</code></em>
2805 to serialize.</p></td>
2806 <td class="parameter_annotations"> </td>
2807 </tr>
2808 <tr>
2809 <td class="parameter_name"><p>end</p></td>
2810 <td class="parameter_description"><p>the last item in <em class="parameter"><code>buffer</code></em>
2811 to serialize.</p></td>
2812 <td class="parameter_annotations"> </td>
2813 </tr>
2814 <tr>
2815 <td class="parameter_name"><p>buf</p></td>
2816 <td class="parameter_description"><p>output string to
2817 write serialized buffer into. </p></td>
2818 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=buf_size][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
2819 </tr>
2820 <tr>
2821 <td class="parameter_name"><p>buf_size</p></td>
2822 <td class="parameter_description"><p>the size of <em class="parameter"><code>buf</code></em>
2823 .</p></td>
2824 <td class="parameter_annotations"> </td>
2825 </tr>
2826 <tr>
2827 <td class="parameter_name"><p>buf_consumed</p></td>
2828 <td class="parameter_description"><p>if not <code class="literal">NULL</code>, will be set to the number of bytes written into <em class="parameter"><code>buf</code></em>
2829 . </p></td>
2830 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
2831 </tr>
2832 <tr>
2833 <td class="parameter_name"><p>format</p></td>
2834 <td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> to use for formatting the output.</p></td>
2835 <td class="parameter_annotations"> </td>
2836 </tr>
2837 <tr>
2838 <td class="parameter_name"><p>flags</p></td>
2839 <td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-flags-t" title="enum hb_buffer_serialize_flags_t"><span class="type">hb_buffer_serialize_flags_t</span></a> that control what glyph properties
2840 to serialize.</p></td>
2841 <td class="parameter_annotations"> </td>
2842 </tr>
2843 </tbody>
2844 </table></div>
2845 </div>
2846 <div class="refsect3">
2847 <a name="hb-buffer-serialize-unicode.returns"></a><h4>Returns</h4>
2848 <p>The number of serialized items.</p>
2849 </div>
2850 <p class="since">Since: <a class="link" href="api-index-2-7-3.html#api-index-2.7.3">2.7.3</a></p>
2851 </div>
2852 <hr>
2853 <div class="refsect2">
2854 <a name="hb-buffer-deserialize-unicode"></a><h3>hb_buffer_deserialize_unicode ()</h3>
2855 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
2856 hb_buffer_deserialize_unicode (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
2857                                <em class="parameter"><code>const <span class="type">char</span> *buf</code></em>,
2858                                <em class="parameter"><code><span class="type">int</span> buf_len</code></em>,
2859                                <em class="parameter"><code>const <span class="type">char</span> **end_ptr</code></em>,
2860                                <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>);</pre>
2861 <p>Deserializes Unicode <em class="parameter"><code>buffer</code></em>
2862  from textual representation in the format
2863 produced by <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-unicode" title="hb_buffer_serialize_unicode ()"><code class="function">hb_buffer_serialize_unicode()</code></a>.</p>
2864 <div class="refsect3">
2865 <a name="hb-buffer-deserialize-unicode.parameters"></a><h4>Parameters</h4>
2866 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2867 <colgroup>
2868 <col width="150px" class="parameters_name">
2869 <col class="parameters_description">
2870 <col width="200px" class="parameters_annotations">
2871 </colgroup>
2872 <tbody>
2873 <tr>
2874 <td class="parameter_name"><p>buffer</p></td>
2875 <td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> buffer.</p></td>
2876 <td class="parameter_annotations"> </td>
2877 </tr>
2878 <tr>
2879 <td class="parameter_name"><p>buf</p></td>
2880 <td class="parameter_description"><p>string to deserialize. </p></td>
2881 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=buf_len]</span></td>
2882 </tr>
2883 <tr>
2884 <td class="parameter_name"><p>buf_len</p></td>
2885 <td class="parameter_description"><p>the size of <em class="parameter"><code>buf</code></em>
2886 , or -1 if it is <code class="literal">NULL</code>-terminated</p></td>
2887 <td class="parameter_annotations"> </td>
2888 </tr>
2889 <tr>
2890 <td class="parameter_name"><p>end_ptr</p></td>
2891 <td class="parameter_description"><p>output pointer to the character after last
2892 consumed one. </p></td>
2893 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL may be passed instead of a pointer to a location."><span class="acronym">optional</span></acronym>]</span></td>
2894 </tr>
2895 <tr>
2896 <td class="parameter_name"><p>format</p></td>
2897 <td class="parameter_description"><p>the <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> of the input <em class="parameter"><code>buf</code></em>
2898 </p></td>
2899 <td class="parameter_annotations"> </td>
2900 </tr>
2901 </tbody>
2902 </table></div>
2903 </div>
2904 <div class="refsect3">
2905 <a name="hb-buffer-deserialize-unicode.returns"></a><h4>Returns</h4>
2906 <p> <code class="literal">true</code> if parse was successful, <code class="literal">false</code> if an error
2907 occurred.</p>
2908 </div>
2909 <p class="since">Since: <a class="link" href="api-index-2-7-3.html#api-index-2.7.3">2.7.3</a></p>
2910 </div>
2911 <hr>
2912 <div class="refsect2">
2913 <a name="hb-buffer-serialize-format-from-string"></a><h3>hb_buffer_serialize_format_from_string ()</h3>
2914 <pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="returnvalue">hb_buffer_serialize_format_t</span></a>
2915 hb_buffer_serialize_format_from_string
2916                                (<em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
2917                                 <em class="parameter"><code><span class="type">int</span> len</code></em>);</pre>
2918 <p>Parses a string into an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a>. Does not check if
2919 <em class="parameter"><code>str</code></em>
2920  is a valid buffer serialization format, use
2921 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-list-formats" title="hb_buffer_serialize_list_formats ()"><code class="function">hb_buffer_serialize_list_formats()</code></a> to get the list of supported formats.</p>
2922 <div class="refsect3">
2923 <a name="hb-buffer-serialize-format-from-string.parameters"></a><h4>Parameters</h4>
2924 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2925 <colgroup>
2926 <col width="150px" class="parameters_name">
2927 <col class="parameters_description">
2928 <col width="200px" class="parameters_annotations">
2929 </colgroup>
2930 <tbody>
2931 <tr>
2932 <td class="parameter_name"><p>str</p></td>
2933 <td class="parameter_description"><p>a string to parse. </p></td>
2934 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=len][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> uint8_t]</span></td>
2935 </tr>
2936 <tr>
2937 <td class="parameter_name"><p>len</p></td>
2938 <td class="parameter_description"><p>length of <em class="parameter"><code>str</code></em>
2939 , or -1 if string is <code class="literal">NULL</code> terminated</p></td>
2940 <td class="parameter_annotations"> </td>
2941 </tr>
2942 </tbody>
2943 </table></div>
2944 </div>
2945 <div class="refsect3">
2946 <a name="hb-buffer-serialize-format-from-string.returns"></a><h4>Returns</h4>
2947 <p>The parsed <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a>.</p>
2948 </div>
2949 <p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
2950 </div>
2951 <hr>
2952 <div class="refsect2">
2953 <a name="hb-buffer-serialize-format-to-string"></a><h3>hb_buffer_serialize_format_to_string ()</h3>
2954 <pre class="programlisting">const <span class="returnvalue">char</span> *
2955 hb_buffer_serialize_format_to_string (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> format</code></em>);</pre>
2956 <p>Converts <em class="parameter"><code>format</code></em>
2957  to the string corresponding it, or <code class="literal">NULL</code> if it is not a valid
2958 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a>.</p>
2959 <div class="refsect3">
2960 <a name="hb-buffer-serialize-format-to-string.parameters"></a><h4>Parameters</h4>
2961 <div class="informaltable"><table class="informaltable" width="100%" border="0">
2962 <colgroup>
2963 <col width="150px" class="parameters_name">
2964 <col class="parameters_description">
2965 <col width="200px" class="parameters_annotations">
2966 </colgroup>
2967 <tbody><tr>
2968 <td class="parameter_name"><p>format</p></td>
2969 <td class="parameter_description"><p>an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-format-t" title="enum hb_buffer_serialize_format_t"><span class="type">hb_buffer_serialize_format_t</span></a> to convert.</p></td>
2970 <td class="parameter_annotations"> </td>
2971 </tr></tbody>
2972 </table></div>
2973 </div>
2974 <div class="refsect3">
2975 <a name="hb-buffer-serialize-format-to-string.returns"></a><h4>Returns</h4>
2976 <p>A <code class="literal">NULL</code> terminated string corresponding to <em class="parameter"><code>format</code></em>
2977 . Should not be freed. </p>
2978 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
2979 </div>
2980 <p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
2981 </div>
2982 <hr>
2983 <div class="refsect2">
2984 <a name="hb-buffer-serialize-list-formats"></a><h3>hb_buffer_serialize_list_formats ()</h3>
2985 <pre class="programlisting">const <span class="returnvalue">char</span> **
2986 hb_buffer_serialize_list_formats (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
2987 <p>Returns a list of supported buffer serialization formats.</p>
2988 <div class="refsect3">
2989 <a name="hb-buffer-serialize-list-formats.returns"></a><h4>Returns</h4>
2990 <p>A string array of buffer serialization formats. Should not be freed. </p>
2991 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
2992 </div>
2993 <p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
2994 </div>
2995 <hr>
2996 <div class="refsect2">
2997 <a name="hb-segment-properties-equal"></a><h3>hb_segment_properties_equal ()</h3>
2998 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
2999 hb_segment_properties_equal (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a> *a</code></em>,
3000                              <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a> *b</code></em>);</pre>
3001 <p>Checks the equality of two <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a>'s.</p>
3002 <div class="refsect3">
3003 <a name="hb-segment-properties-equal.parameters"></a><h4>Parameters</h4>
3004 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3005 <colgroup>
3006 <col width="150px" class="parameters_name">
3007 <col class="parameters_description">
3008 <col width="200px" class="parameters_annotations">
3009 </colgroup>
3010 <tbody>
3011 <tr>
3012 <td class="parameter_name"><p>a</p></td>
3013 <td class="parameter_description"><p>first <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a> to compare.</p></td>
3014 <td class="parameter_annotations"> </td>
3015 </tr>
3016 <tr>
3017 <td class="parameter_name"><p>b</p></td>
3018 <td class="parameter_description"><p>second <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a> to compare.</p></td>
3019 <td class="parameter_annotations"> </td>
3020 </tr>
3021 </tbody>
3022 </table></div>
3023 </div>
3024 <div class="refsect3">
3025 <a name="hb-segment-properties-equal.returns"></a><h4>Returns</h4>
3026 <p><code class="literal">true</code> if all properties of <em class="parameter"><code>a</code></em>
3027 equal those of <em class="parameter"><code>b</code></em>
3028 , <code class="literal">false</code> otherwise.</p>
3029 </div>
3030 <p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
3031 </div>
3032 <hr>
3033 <div class="refsect2">
3034 <a name="hb-segment-properties-hash"></a><h3>hb_segment_properties_hash ()</h3>
3035 <pre class="programlisting">unsigned <span class="returnvalue">int</span>
3036 hb_segment_properties_hash (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a> *p</code></em>);</pre>
3037 <p>Creates a hash representing <em class="parameter"><code>p</code></em>
3038 .</p>
3039 <div class="refsect3">
3040 <a name="hb-segment-properties-hash.parameters"></a><h4>Parameters</h4>
3041 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3042 <colgroup>
3043 <col width="150px" class="parameters_name">
3044 <col class="parameters_description">
3045 <col width="200px" class="parameters_annotations">
3046 </colgroup>
3047 <tbody><tr>
3048 <td class="parameter_name"><p>p</p></td>
3049 <td class="parameter_description"><p><a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a> to hash.</p></td>
3050 <td class="parameter_annotations"> </td>
3051 </tr></tbody>
3052 </table></div>
3053 </div>
3054 <div class="refsect3">
3055 <a name="hb-segment-properties-hash.returns"></a><h4>Returns</h4>
3056 <p>A hash of <em class="parameter"><code>p</code></em>
3057 .</p>
3058 </div>
3059 <p class="since">Since: <a class="link" href="api-index-0-9-7.html#api-index-0.9.7">0.9.7</a></p>
3060 </div>
3061 <hr>
3062 <div class="refsect2">
3063 <a name="hb-segment-properties-overlay"></a><h3>hb_segment_properties_overlay ()</h3>
3064 <pre class="programlisting"><span class="returnvalue">void</span>
3065 hb_segment_properties_overlay (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a> *p</code></em>,
3066                                <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a> *src</code></em>);</pre>
3067 <p>Fills in missing fields of <em class="parameter"><code>p</code></em>
3068  from <em class="parameter"><code>src</code></em>
3069  in a considered manner.</p>
3070 <p>First, if <em class="parameter"><code>p</code></em>
3071  does not have direction set, direction is copied from <em class="parameter"><code>src</code></em>
3072 .</p>
3073 <p>Next, if <em class="parameter"><code>p</code></em>
3074  and <em class="parameter"><code>src</code></em>
3075  have the same direction (which can be unset), if <em class="parameter"><code>p</code></em>
3076
3077 does not have script set, script is copied from <em class="parameter"><code>src</code></em>
3078 .</p>
3079 <p>Finally, if <em class="parameter"><code>p</code></em>
3080  and <em class="parameter"><code>src</code></em>
3081  have the same direction and script (which either
3082 can be unset), if <em class="parameter"><code>p</code></em>
3083  does not have language set, language is copied from
3084 <em class="parameter"><code>src</code></em>
3085 .</p>
3086 <div class="refsect3">
3087 <a name="hb-segment-properties-overlay.parameters"></a><h4>Parameters</h4>
3088 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3089 <colgroup>
3090 <col width="150px" class="parameters_name">
3091 <col class="parameters_description">
3092 <col width="200px" class="parameters_annotations">
3093 </colgroup>
3094 <tbody>
3095 <tr>
3096 <td class="parameter_name"><p>p</p></td>
3097 <td class="parameter_description"><p><a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a> to fill in.</p></td>
3098 <td class="parameter_annotations"> </td>
3099 </tr>
3100 <tr>
3101 <td class="parameter_name"><p>src</p></td>
3102 <td class="parameter_description"><p><a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a> to fill in from.</p></td>
3103 <td class="parameter_annotations"> </td>
3104 </tr>
3105 </tbody>
3106 </table></div>
3107 </div>
3108 <p class="since">Since: <a class="link" href="api-index-3-3-0.html#api-index-3.3.0">3.3.0</a></p>
3109 </div>
3110 <hr>
3111 <div class="refsect2">
3112 <a name="hb-buffer-diff"></a><h3>hb_buffer_diff ()</h3>
3113 <pre class="programlisting"><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-diff-flags-t" title="enum hb_buffer_diff_flags_t"><span class="returnvalue">hb_buffer_diff_flags_t</span></a>
3114 hb_buffer_diff (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
3115                 <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *reference</code></em>,
3116                 <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> dottedcircle_glyph</code></em>,
3117                 <em class="parameter"><code>unsigned <span class="type">int</span> position_fuzz</code></em>);</pre>
3118 <p>If dottedcircle_glyph is (hb_codepoint_t) -1 then <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-DIFF-FLAG-DOTTED-CIRCLE-PRESENT:CAPS"><span class="type">HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT</span></a>
3119 and <a class="link" href="harfbuzz-hb-buffer.html#HB-BUFFER-DIFF-FLAG-NOTDEF-PRESENT:CAPS"><span class="type">HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT</span></a> are never returned.  This should be used by most
3120 callers if just comparing two buffers is needed.</p>
3121 <div class="refsect3">
3122 <a name="hb-buffer-diff.parameters"></a><h4>Parameters</h4>
3123 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3124 <colgroup>
3125 <col width="150px" class="parameters_name">
3126 <col class="parameters_description">
3127 <col width="200px" class="parameters_annotations">
3128 </colgroup>
3129 <tbody>
3130 <tr>
3131 <td class="parameter_name"><p>buffer</p></td>
3132 <td class="parameter_description"><p>a buffer.</p></td>
3133 <td class="parameter_annotations"> </td>
3134 </tr>
3135 <tr>
3136 <td class="parameter_name"><p>reference</p></td>
3137 <td class="parameter_description"><p>other buffer to compare to.</p></td>
3138 <td class="parameter_annotations"> </td>
3139 </tr>
3140 <tr>
3141 <td class="parameter_name"><p>dottedcircle_glyph</p></td>
3142 <td class="parameter_description"><p>glyph id of U+25CC DOTTED CIRCLE, or (hb_codepoint_t) -1.</p></td>
3143 <td class="parameter_annotations"> </td>
3144 </tr>
3145 <tr>
3146 <td class="parameter_name"><p>position_fuzz</p></td>
3147 <td class="parameter_description"><p>allowed absolute difference in position values.</p></td>
3148 <td class="parameter_annotations"> </td>
3149 </tr>
3150 </tbody>
3151 </table></div>
3152 </div>
3153 <p class="since">Since: <a class="link" href="api-index-1-5-0.html#api-index-1.5.0">1.5.0</a></p>
3154 </div>
3155 <hr>
3156 <div class="refsect2">
3157 <a name="hb-buffer-message-func-t"></a><h3>hb_buffer_message_func_t ()</h3>
3158 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
3159 <span class="c_punctuation">(</span>*hb_buffer_message_func_t<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
3160                              <em class="parameter"><code><a class="link" href="harfbuzz-hb-font.html#hb-font-t" title="hb_font_t"><span class="type">hb_font_t</span></a> *font</code></em>,
3161                              <em class="parameter"><code>const <span class="type">char</span> *message</code></em>,
3162                              <em class="parameter"><code><span class="type">void</span> *user_data</code></em>);</pre>
3163 <p>A callback method for <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a>. The method gets called with the
3164 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> it was set on, the <a class="link" href="harfbuzz-hb-font.html#hb-font-t" title="hb_font_t"><span class="type">hb_font_t</span></a> the buffer is shaped with and a
3165 message describing what step of the shaping process will be performed.
3166 Returning <code class="literal">false</code> from this method will skip this shaping step and move to
3167 the next one.</p>
3168 <div class="refsect3">
3169 <a name="hb-buffer-message-func-t.parameters"></a><h4>Parameters</h4>
3170 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3171 <colgroup>
3172 <col width="150px" class="parameters_name">
3173 <col class="parameters_description">
3174 <col width="200px" class="parameters_annotations">
3175 </colgroup>
3176 <tbody>
3177 <tr>
3178 <td class="parameter_name"><p>buffer</p></td>
3179 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> to work upon</p></td>
3180 <td class="parameter_annotations"> </td>
3181 </tr>
3182 <tr>
3183 <td class="parameter_name"><p>font</p></td>
3184 <td class="parameter_description"><p>The <a class="link" href="harfbuzz-hb-font.html#hb-font-t" title="hb_font_t"><span class="type">hb_font_t</span></a> the <em class="parameter"><code>buffer</code></em>
3185 is shaped with</p></td>
3186 <td class="parameter_annotations"> </td>
3187 </tr>
3188 <tr>
3189 <td class="parameter_name"><p>message</p></td>
3190 <td class="parameter_description"><p><code class="literal">NULL</code>-terminated message passed to the function</p></td>
3191 <td class="parameter_annotations"> </td>
3192 </tr>
3193 <tr>
3194 <td class="parameter_name"><p>user_data</p></td>
3195 <td class="parameter_description"><p>User data pointer passed by the caller</p></td>
3196 <td class="parameter_annotations"> </td>
3197 </tr>
3198 </tbody>
3199 </table></div>
3200 </div>
3201 <div class="refsect3">
3202 <a name="hb-buffer-message-func-t.returns"></a><h4>Returns</h4>
3203 <p> <code class="literal">true</code> to perform the shaping step, <code class="literal">false</code> to skip it.</p>
3204 </div>
3205 <p class="since">Since: <a class="link" href="api-index-1-1-3.html#api-index-1.1.3">1.1.3</a></p>
3206 </div>
3207 <hr>
3208 <div class="refsect2">
3209 <a name="hb-buffer-set-message-func"></a><h3>hb_buffer_set_message_func ()</h3>
3210 <pre class="programlisting"><span class="returnvalue">void</span>
3211 hb_buffer_set_message_func (<em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> *buffer</code></em>,
3212                             <em class="parameter"><code><a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-message-func-t" title="hb_buffer_message_func_t ()"><span class="type">hb_buffer_message_func_t</span></a> func</code></em>,
3213                             <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
3214                             <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>);</pre>
3215 <p>Sets the implementation function for <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-message-func-t" title="hb_buffer_message_func_t ()"><span class="type">hb_buffer_message_func_t</span></a>.</p>
3216 <div class="refsect3">
3217 <a name="hb-buffer-set-message-func.parameters"></a><h4>Parameters</h4>
3218 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3219 <colgroup>
3220 <col width="150px" class="parameters_name">
3221 <col class="parameters_description">
3222 <col width="200px" class="parameters_annotations">
3223 </colgroup>
3224 <tbody>
3225 <tr>
3226 <td class="parameter_name"><p>buffer</p></td>
3227 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a></p></td>
3228 <td class="parameter_annotations"> </td>
3229 </tr>
3230 <tr>
3231 <td class="parameter_name"><p>func</p></td>
3232 <td class="parameter_description"><p>Callback function. </p></td>
3233 <td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> user_data][<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym> destroy][<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
3234 </tr>
3235 <tr>
3236 <td class="parameter_name"><p>user_data</p></td>
3237 <td class="parameter_description"><p>Data to pass to <em class="parameter"><code>func</code></em>
3238 . </p></td>
3239 <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
3240 </tr>
3241 <tr>
3242 <td class="parameter_name"><p>destroy</p></td>
3243 <td class="parameter_description"><p>The function to call when <em class="parameter"><code>user_data</code></em>
3244 is not needed anymore. </p></td>
3245 <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
3246 </tr>
3247 </tbody>
3248 </table></div>
3249 </div>
3250 <p class="since">Since: <a class="link" href="api-index-1-1-3.html#api-index-1.1.3">1.1.3</a></p>
3251 </div>
3252 </div>
3253 <div class="refsect1">
3254 <a name="harfbuzz-hb-buffer.other_details"></a><h2>Types and Values</h2>
3255 <div class="refsect2">
3256 <a name="HB-SEGMENT-PROPERTIES-DEFAULT:CAPS"></a><h3>HB_SEGMENT_PROPERTIES_DEFAULT</h3>
3257 <pre class="programlisting">#define             HB_SEGMENT_PROPERTIES_DEFAULT</pre>
3258 <p>The default <a class="link" href="harfbuzz-hb-buffer.html#hb-segment-properties-t" title="hb_segment_properties_t"><span class="type">hb_segment_properties_t</span></a> of of freshly created <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a>.</p>
3259 </div>
3260 <hr>
3261 <div class="refsect2">
3262 <a name="HB-BUFFER-REPLACEMENT-CODEPOINT-DEFAULT:CAPS"></a><h3>HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</h3>
3263 <pre class="programlisting">#define HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT 0xFFFDu
3264 </pre>
3265 <p>The default code point for replacing invalid characters in a given encoding.
3266 Set to U+FFFD REPLACEMENT CHARACTER.</p>
3267 <p class="since">Since: <a class="link" href="api-index-0-9-31.html#api-index-0.9.31">0.9.31</a></p>
3268 </div>
3269 <hr>
3270 <div class="refsect2">
3271 <a name="hb-buffer-t"></a><h3>hb_buffer_t</h3>
3272 <pre class="programlisting">typedef struct hb_buffer_t hb_buffer_t;
3273 </pre>
3274 <p>The main structure holding the input text and its properties before shaping,
3275 and output glyphs and their information after shaping.</p>
3276 </div>
3277 <hr>
3278 <div class="refsect2">
3279 <a name="hb-glyph-info-t"></a><h3>hb_glyph_info_t</h3>
3280 <pre class="programlisting">typedef struct {
3281   hb_codepoint_t codepoint;
3282   uint32_t       cluster;
3283 } hb_glyph_info_t;
3284 </pre>
3285 <p>The <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t" title="hb_glyph_info_t"><span class="type">hb_glyph_info_t</span></a> is the structure that holds information about the
3286 glyphs and their relation to input text.</p>
3287 <div class="refsect3">
3288 <a name="hb-glyph-info-t.members"></a><h4>Members</h4>
3289 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3290 <colgroup>
3291 <col width="300px" class="struct_members_name">
3292 <col class="struct_members_description">
3293 <col width="200px" class="struct_members_annotations">
3294 </colgroup>
3295 <tbody>
3296 <tr>
3297 <td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-codepoint-t" title="hb_codepoint_t"><span class="type">hb_codepoint_t</span></a> <em class="structfield"><code><a name="hb-glyph-info-t.codepoint"></a>codepoint</code></em>;</p></td>
3298 <td class="struct_member_description"><p>either a Unicode code point (before shaping) or a glyph index
3299 (after shaping).</p></td>
3300 <td class="struct_member_annotations"> </td>
3301 </tr>
3302 <tr>
3303 <td class="struct_member_name"><p><span class="type">uint32_t</span> <em class="structfield"><code><a name="hb-glyph-info-t.cluster"></a>cluster</code></em>;</p></td>
3304 <td class="struct_member_description"><p>the index of the character in the original text that corresponds
3305 to this <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t" title="hb_glyph_info_t"><span class="type">hb_glyph_info_t</span></a>, or whatever the client passes to
3306 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-add" title="hb_buffer_add ()"><code class="function">hb_buffer_add()</code></a>. More than one <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t" title="hb_glyph_info_t"><span class="type">hb_glyph_info_t</span></a> can have the same
3307 <em class="parameter"><code>cluster</code></em>
3308 value, if they resulted from the same character (e.g. one
3309 to many glyph substitution), and when more than one character gets
3310 merged in the same glyph (e.g. many to one glyph substitution) the
3311 <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t" title="hb_glyph_info_t"><span class="type">hb_glyph_info_t</span></a> will have the smallest cluster value of them.
3312 By default some characters are merged into the same cluster
3313 (e.g. combining marks have the same cluster as their bases)
3314 even if they are separate glyphs, <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-cluster-level" title="hb_buffer_set_cluster_level ()"><code class="function">hb_buffer_set_cluster_level()</code></a>
3315 allow selecting more fine-grained cluster handling.</p></td>
3316 <td class="struct_member_annotations"> </td>
3317 </tr>
3318 </tbody>
3319 </table></div>
3320 </div>
3321 </div>
3322 <hr>
3323 <div class="refsect2">
3324 <a name="hb-glyph-flags-t"></a><h3>enum hb_glyph_flags_t</h3>
3325 <p>Flags for <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t" title="hb_glyph_info_t"><span class="type">hb_glyph_info_t</span></a>.</p>
3326 <div class="refsect3">
3327 <a name="hb-glyph-flags-t.members"></a><h4>Members</h4>
3328 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3329 <colgroup>
3330 <col width="300px" class="enum_members_name">
3331 <col class="enum_members_description">
3332 <col width="200px" class="enum_members_annotations">
3333 </colgroup>
3334 <tbody>
3335 <tr>
3336 <td class="enum_member_name"><p><a name="HB-GLYPH-FLAG-UNSAFE-TO-BREAK:CAPS"></a>HB_GLYPH_FLAG_UNSAFE_TO_BREAK</p></td>
3337 <td class="enum_member_description">
3338 <p>Indicates that if input text is broken at the
3339                                    beginning of the cluster this glyph is part of,
3340                                    then both sides need to be re-shaped, as the
3341                                    result might be different.
3342                                    On the flip side, it means that when this
3343                                    flag is not present, then it is safe to break
3344                                    the glyph-run at the beginning of this
3345                                    cluster, and the two sides will represent the
3346                                    exact same result one would get if breaking
3347                                    input text at the beginning of this cluster
3348                                    and shaping the two sides separately.
3349                                    This can be used to optimize paragraph
3350                                    layout, by avoiding re-shaping of each line
3351                                    after line-breaking.</p>
3352 </td>
3353 <td class="enum_member_annotations"> </td>
3354 </tr>
3355 <tr>
3356 <td class="enum_member_name"><p><a name="HB-GLYPH-FLAG-UNSAFE-TO-CONCAT:CAPS"></a>HB_GLYPH_FLAG_UNSAFE_TO_CONCAT</p></td>
3357 <td class="enum_member_description">
3358 <p>Indicates that if input text is changed on one
3359                                    side of the beginning of the cluster this glyph
3360                                    is part of, then the shaping results for the
3361                                    other side might change.
3362                                    Note that the absence of this flag will NOT by
3363                                    itself mean that it IS safe to concat text.
3364                                    Only two pieces of text both of which clear of
3365                                    this flag can be concatenated safely.
3366                                    This can be used to optimize paragraph
3367                                    layout, by avoiding re-shaping of each line
3368                                    after line-breaking, by limiting the
3369                                    reshaping to a small piece around the
3370                                    breaking position only, even if the breaking
3371                                    position carries the
3372                                    <a class="link" href="harfbuzz-hb-buffer.html#HB-GLYPH-FLAG-UNSAFE-TO-BREAK:CAPS"><span class="type">HB_GLYPH_FLAG_UNSAFE_TO_BREAK</span></a> or when
3373                                    hyphenation or other text transformation
3374                                    happens at line-break position, in the following
3375                                    way:
3376                                    1. Iterate back from the line-break position
3377                                    until the first cluster start position that is
3378                                    NOT unsafe-to-concat, 2. shape the segment from
3379                                    there till the end of line, 3. check whether the
3380                                    resulting glyph-run also is clear of the
3381                                    unsafe-to-concat at its start-of-text position;
3382                                    if it is, just splice it into place and the line
3383                                    is shaped; If not, move on to a position further
3384                                    back that is clear of unsafe-to-concat and retry
3385                                    from there, and repeat.
3386                                    At the start of next line a similar algorithm can
3387                                    be implemented. That is: 1. Iterate forward from
3388                                    the line-break position until the first cluster
3389                                    start position that is NOT unsafe-to-concat, 2.
3390                                    shape the segment from beginning of the line to
3391                                    that position, 3. check whether the resulting
3392                                    glyph-run also is clear of the unsafe-to-concat
3393                                    at its end-of-text position; if it is, just splice
3394                                    it into place and the beginning is shaped; If not,
3395                                    move on to a position further forward that is clear
3396                                    of unsafe-to-concat and retry up to there, and repeat.
3397                                    A slight complication will arise in the
3398                                    implementation of the algorithm above,
3399                                    because while our buffer API has a way to
3400                                    return flags for position corresponding to
3401                                    start-of-text, there is currently no position
3402                                    corresponding to end-of-text.  This limitation
3403                                    can be alleviated by shaping more text than needed
3404                                    and looking for unsafe-to-concat flag within text
3405                                    clusters.
3406                                    The <a class="link" href="harfbuzz-hb-buffer.html#HB-GLYPH-FLAG-UNSAFE-TO-BREAK:CAPS"><span class="type">HB_GLYPH_FLAG_UNSAFE_TO_BREAK</span></a> flag will
3407                                    always imply this flag.
3408                            To use this flag, you must enable the buffer flag
3409                            <em class="parameter"><code>HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT</code></em>
3410  during
3411                            shaping, otherwise the buffer flag will not be
3412                            reliably produced.
3413                                    Since: 4.0.0</p>
3414 </td>
3415 <td class="enum_member_annotations"> </td>
3416 </tr>
3417 <tr>
3418 <td class="enum_member_name"><p><a name="HB-GLYPH-FLAG-SAFE-TO-INSERT-TATWEEL:CAPS"></a>HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL</p></td>
3419 <td class="enum_member_description">
3420 <p>In scripts that use elongation (Arabic,
3421                                    Mongolian, Syriac, etc.), this flag signifies
3422                                    that it is safe to insert a U+0640 TATWEEL
3423                                    character before this cluster for elongation.
3424                                    This flag does not determine the
3425                                    script-specific elongation places, but only
3426                                    when it is safe to do the elongation without
3427                                    interrupting text shaping.
3428                                    Since: 5.1.0</p>
3429 </td>
3430 <td class="enum_member_annotations"> </td>
3431 </tr>
3432 <tr>
3433 <td class="enum_member_name"><p><a name="HB-GLYPH-FLAG-DEFINED:CAPS"></a>HB_GLYPH_FLAG_DEFINED</p></td>
3434 <td class="enum_member_description">
3435 <p>All the currently defined flags.</p>
3436 </td>
3437 <td class="enum_member_annotations"> </td>
3438 </tr>
3439 </tbody>
3440 </table></div>
3441 </div>
3442 <p class="since">Since: <a class="link" href="api-index-1-5-0.html#api-index-1.5.0">1.5.0</a></p>
3443 </div>
3444 <hr>
3445 <div class="refsect2">
3446 <a name="hb-glyph-position-t"></a><h3>hb_glyph_position_t</h3>
3447 <pre class="programlisting">typedef struct {
3448   hb_position_t  x_advance;
3449   hb_position_t  y_advance;
3450   hb_position_t  x_offset;
3451   hb_position_t  y_offset;
3452 } hb_glyph_position_t;
3453 </pre>
3454 <p>The <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t" title="hb_glyph_position_t"><span class="type">hb_glyph_position_t</span></a> is the structure that holds the positions of the
3455 glyph in both horizontal and vertical directions. All positions in
3456 <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t" title="hb_glyph_position_t"><span class="type">hb_glyph_position_t</span></a> are relative to the current point.</p>
3457 <div class="refsect3">
3458 <a name="hb-glyph-position-t.members"></a><h4>Members</h4>
3459 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3460 <colgroup>
3461 <col width="300px" class="struct_members_name">
3462 <col class="struct_members_description">
3463 <col width="200px" class="struct_members_annotations">
3464 </colgroup>
3465 <tbody>
3466 <tr>
3467 <td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> <em class="structfield"><code><a name="hb-glyph-position-t.x-advance"></a>x_advance</code></em>;</p></td>
3468 <td class="struct_member_description"><p>how much the line advances after drawing this glyph when setting
3469 text in horizontal direction.</p></td>
3470 <td class="struct_member_annotations"> </td>
3471 </tr>
3472 <tr>
3473 <td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> <em class="structfield"><code><a name="hb-glyph-position-t.y-advance"></a>y_advance</code></em>;</p></td>
3474 <td class="struct_member_description"><p>how much the line advances after drawing this glyph when setting
3475 text in vertical direction.</p></td>
3476 <td class="struct_member_annotations"> </td>
3477 </tr>
3478 <tr>
3479 <td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> <em class="structfield"><code><a name="hb-glyph-position-t.x-offset"></a>x_offset</code></em>;</p></td>
3480 <td class="struct_member_description"><p>how much the glyph moves on the X-axis before drawing it, this
3481 should not affect how much the line advances.</p></td>
3482 <td class="struct_member_annotations"> </td>
3483 </tr>
3484 <tr>
3485 <td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-position-t" title="hb_position_t"><span class="type">hb_position_t</span></a> <em class="structfield"><code><a name="hb-glyph-position-t.y-offset"></a>y_offset</code></em>;</p></td>
3486 <td class="struct_member_description"><p>how much the glyph moves on the Y-axis before drawing it, this
3487 should not affect how much the line advances.</p></td>
3488 <td class="struct_member_annotations"> </td>
3489 </tr>
3490 </tbody>
3491 </table></div>
3492 </div>
3493 </div>
3494 <hr>
3495 <div class="refsect2">
3496 <a name="hb-buffer-content-type-t"></a><h3>enum hb_buffer_content_type_t</h3>
3497 <p>The type of <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a> contents.</p>
3498 <div class="refsect3">
3499 <a name="hb-buffer-content-type-t.members"></a><h4>Members</h4>
3500 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3501 <colgroup>
3502 <col width="300px" class="enum_members_name">
3503 <col class="enum_members_description">
3504 <col width="200px" class="enum_members_annotations">
3505 </colgroup>
3506 <tbody>
3507 <tr>
3508 <td class="enum_member_name"><p><a name="HB-BUFFER-CONTENT-TYPE-INVALID:CAPS"></a>HB_BUFFER_CONTENT_TYPE_INVALID</p></td>
3509 <td class="enum_member_description">
3510 <p>Initial value for new buffer.</p>
3511 </td>
3512 <td class="enum_member_annotations"> </td>
3513 </tr>
3514 <tr>
3515 <td class="enum_member_name"><p><a name="HB-BUFFER-CONTENT-TYPE-UNICODE:CAPS"></a>HB_BUFFER_CONTENT_TYPE_UNICODE</p></td>
3516 <td class="enum_member_description">
3517 <p>The buffer contains input characters (before shaping).</p>
3518 </td>
3519 <td class="enum_member_annotations"> </td>
3520 </tr>
3521 <tr>
3522 <td class="enum_member_name"><p><a name="HB-BUFFER-CONTENT-TYPE-GLYPHS:CAPS"></a>HB_BUFFER_CONTENT_TYPE_GLYPHS</p></td>
3523 <td class="enum_member_description">
3524 <p>The buffer contains output glyphs (after shaping).</p>
3525 </td>
3526 <td class="enum_member_annotations"> </td>
3527 </tr>
3528 </tbody>
3529 </table></div>
3530 </div>
3531 </div>
3532 <hr>
3533 <div class="refsect2">
3534 <a name="hb-buffer-flags-t"></a><h3>enum hb_buffer_flags_t</h3>
3535 <p>Flags for <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a>.</p>
3536 <div class="refsect3">
3537 <a name="hb-buffer-flags-t.members"></a><h4>Members</h4>
3538 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3539 <colgroup>
3540 <col width="300px" class="enum_members_name">
3541 <col class="enum_members_description">
3542 <col width="200px" class="enum_members_annotations">
3543 </colgroup>
3544 <tbody>
3545 <tr>
3546 <td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-DEFAULT:CAPS"></a>HB_BUFFER_FLAG_DEFAULT</p></td>
3547 <td class="enum_member_description">
3548 <p>the default buffer flag.</p>
3549 </td>
3550 <td class="enum_member_annotations"> </td>
3551 </tr>
3552 <tr>
3553 <td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-BOT:CAPS"></a>HB_BUFFER_FLAG_BOT</p></td>
3554 <td class="enum_member_description">
3555 <p>flag indicating that special handling of the beginning
3556 of text paragraph can be applied to this buffer. Should usually
3557 be set, unless you are passing to the buffer only part
3558 of the text without the full context.</p>
3559 </td>
3560 <td class="enum_member_annotations"> </td>
3561 </tr>
3562 <tr>
3563 <td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-EOT:CAPS"></a>HB_BUFFER_FLAG_EOT</p></td>
3564 <td class="enum_member_description">
3565 <p>flag indicating that special handling of the end of text
3566 paragraph can be applied to this buffer, similar to
3567 <em class="parameter"><code>HB_BUFFER_FLAG_BOT</code></em>
3568 .</p>
3569 </td>
3570 <td class="enum_member_annotations"> </td>
3571 </tr>
3572 <tr>
3573 <td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-PRESERVE-DEFAULT-IGNORABLES:CAPS"></a>HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES</p></td>
3574 <td class="enum_member_description">
3575 <p>flag indication that character with Default_Ignorable
3576 Unicode property should use the corresponding glyph
3577 from the font, instead of hiding them (done by
3578 replacing them with the space glyph and zeroing the
3579 advance width.)  This flag takes precedence over
3580 <em class="parameter"><code>HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES</code></em>
3581 .</p>
3582 </td>
3583 <td class="enum_member_annotations"> </td>
3584 </tr>
3585 <tr>
3586 <td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-REMOVE-DEFAULT-IGNORABLES:CAPS"></a>HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES</p></td>
3587 <td class="enum_member_description">
3588 <p>flag indication that character with Default_Ignorable
3589 Unicode property should be removed from glyph string
3590 instead of hiding them (done by replacing them with the
3591 space glyph and zeroing the advance width.)
3592 <em class="parameter"><code>HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES</code></em>
3593  takes
3594 precedence over this flag. Since: 1.8.0</p>
3595 </td>
3596 <td class="enum_member_annotations"> </td>
3597 </tr>
3598 <tr>
3599 <td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-DO-NOT-INSERT-DOTTED-CIRCLE:CAPS"></a>HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE</p></td>
3600 <td class="enum_member_description">
3601 <p>flag indicating that a dotted circle should
3602 not be inserted in the rendering of incorrect
3603 character sequences (such at &lt;0905 093E&gt;). Since: 2.4.0</p>
3604 </td>
3605 <td class="enum_member_annotations"> </td>
3606 </tr>
3607 <tr>
3608 <td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-VERIFY:CAPS"></a>HB_BUFFER_FLAG_VERIFY</p></td>
3609 <td class="enum_member_description">
3610 <p>flag indicating that the <a class="link" href="harfbuzz-hb-shape.html#hb-shape" title="hb_shape ()"><code class="function">hb_shape()</code></a> call and its variants
3611 should perform various verification processes on the results
3612 of the shaping operation on the buffer.  If the verification
3613 fails, then either a buffer message is sent, if a message
3614 handler is installed on the buffer, or a message is written
3615 to standard error.  In either case, the shaping result might
3616 be modified to show the failed output. Since: 3.4.0</p>
3617 </td>
3618 <td class="enum_member_annotations"> </td>
3619 </tr>
3620 <tr>
3621 <td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-PRODUCE-UNSAFE-TO-CONCAT:CAPS"></a>HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT</p></td>
3622 <td class="enum_member_description">
3623 <p>flag indicating that the <em class="parameter"><code>HB_GLYPH_FLAG_UNSAFE_TO_CONCAT</code></em>
3624
3625 glyph-flag should be produced by the shaper. By default
3626 it will not be produced since it incurs a cost. Since: 4.0.0</p>
3627 </td>
3628 <td class="enum_member_annotations"> </td>
3629 </tr>
3630 <tr>
3631 <td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-PRODUCE-SAFE-TO-INSERT-TATWEEL:CAPS"></a>HB_BUFFER_FLAG_PRODUCE_SAFE_TO_INSERT_TATWEEL</p></td>
3632 <td class="enum_member_description">
3633 <p>flag indicating that the <em class="parameter"><code>HB_GLYPH_FLAG_SAFE_TO_INSERT_TATWEEL</code></em>
3634
3635 glyph-flag should be produced by the shaper. By default
3636 it will not be produced. Since: 5.1.0</p>
3637 </td>
3638 <td class="enum_member_annotations"> </td>
3639 </tr>
3640 <tr>
3641 <td class="enum_member_name"><p><a name="HB-BUFFER-FLAG-DEFINED:CAPS"></a>HB_BUFFER_FLAG_DEFINED</p></td>
3642 <td class="enum_member_description">
3643 <p>All currently defined flags: Since: 4.4.0</p>
3644 </td>
3645 <td class="enum_member_annotations"> </td>
3646 </tr>
3647 </tbody>
3648 </table></div>
3649 </div>
3650 <p class="since">Since: <a class="link" href="api-index-0-9-20.html#api-index-0.9.20">0.9.20</a></p>
3651 </div>
3652 <hr>
3653 <div class="refsect2">
3654 <a name="hb-buffer-cluster-level-t"></a><h3>enum hb_buffer_cluster_level_t</h3>
3655 <p>Data type for holding HarfBuzz's clustering behavior options. The cluster level
3656 dictates one aspect of how HarfBuzz will treat non-base characters
3657
3658 during shaping.</p>
3659 <p>In <em class="parameter"><code>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES</code></em>
3660 , non-base
3661 characters are merged into the cluster of the base character that precedes them.</p>
3662 <p>In <em class="parameter"><code>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS</code></em>
3663 , non-base characters are initially
3664 assigned their own cluster values, which are not merged into preceding base
3665 clusters. This allows HarfBuzz to perform additional operations like reorder
3666 sequences of adjacent marks.</p>
3667 <p><em class="parameter"><code>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES</code></em>
3668  is the default, because it maintains
3669 backward compatibility with older versions of HarfBuzz. New client programs that
3670 do not need to maintain such backward compatibility are recommended to use
3671 <em class="parameter"><code>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS</code></em>
3672  instead of the default.</p>
3673 <div class="refsect3">
3674 <a name="hb-buffer-cluster-level-t.members"></a><h4>Members</h4>
3675 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3676 <colgroup>
3677 <col width="300px" class="enum_members_name">
3678 <col class="enum_members_description">
3679 <col width="200px" class="enum_members_annotations">
3680 </colgroup>
3681 <tbody>
3682 <tr>
3683 <td class="enum_member_name"><p><a name="HB-BUFFER-CLUSTER-LEVEL-MONOTONE-GRAPHEMES:CAPS"></a>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES</p></td>
3684 <td class="enum_member_description">
3685 <p>Return cluster values grouped by graphemes into
3686 monotone order.</p>
3687 </td>
3688 <td class="enum_member_annotations"> </td>
3689 </tr>
3690 <tr>
3691 <td class="enum_member_name"><p><a name="HB-BUFFER-CLUSTER-LEVEL-MONOTONE-CHARACTERS:CAPS"></a>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS</p></td>
3692 <td class="enum_member_description">
3693 <p>Return cluster values grouped into monotone order.</p>
3694 </td>
3695 <td class="enum_member_annotations"> </td>
3696 </tr>
3697 <tr>
3698 <td class="enum_member_name"><p><a name="HB-BUFFER-CLUSTER-LEVEL-CHARACTERS:CAPS"></a>HB_BUFFER_CLUSTER_LEVEL_CHARACTERS</p></td>
3699 <td class="enum_member_description">
3700 <p>Don't group cluster values.</p>
3701 </td>
3702 <td class="enum_member_annotations"> </td>
3703 </tr>
3704 <tr>
3705 <td class="enum_member_name"><p><a name="HB-BUFFER-CLUSTER-LEVEL-DEFAULT:CAPS"></a>HB_BUFFER_CLUSTER_LEVEL_DEFAULT</p></td>
3706 <td class="enum_member_description">
3707 <p>Default cluster level,
3708 equal to <em class="parameter"><code>HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES</code></em>
3709 .</p>
3710 </td>
3711 <td class="enum_member_annotations"> </td>
3712 </tr>
3713 </tbody>
3714 </table></div>
3715 </div>
3716 <p class="since">Since: <a class="link" href="api-index-0-9-42.html#api-index-0.9.42">0.9.42</a></p>
3717 </div>
3718 <hr>
3719 <div class="refsect2">
3720 <a name="hb-segment-properties-t"></a><h3>hb_segment_properties_t</h3>
3721 <pre class="programlisting">typedef struct {
3722   hb_direction_t  direction;
3723   hb_script_t     script;
3724   hb_language_t   language;
3725 } hb_segment_properties_t;
3726 </pre>
3727 <p>The structure that holds various text properties of an <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a>. Can be
3728 set and retrieved using <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-segment-properties" title="hb_buffer_set_segment_properties ()"><code class="function">hb_buffer_set_segment_properties()</code></a> and
3729 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-get-segment-properties" title="hb_buffer_get_segment_properties ()"><code class="function">hb_buffer_get_segment_properties()</code></a>, respectively.</p>
3730 <div class="refsect3">
3731 <a name="hb-segment-properties-t.members"></a><h4>Members</h4>
3732 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3733 <colgroup>
3734 <col width="300px" class="struct_members_name">
3735 <col class="struct_members_description">
3736 <col width="200px" class="struct_members_annotations">
3737 </colgroup>
3738 <tbody>
3739 <tr>
3740 <td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> <em class="structfield"><code><a name="hb-segment-properties-t.direction"></a>direction</code></em>;</p></td>
3741 <td class="struct_member_description"><p>the <a class="link" href="harfbuzz-hb-common.html#hb-direction-t" title="enum hb_direction_t"><span class="type">hb_direction_t</span></a> of the buffer, see <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-direction" title="hb_buffer_set_direction ()"><code class="function">hb_buffer_set_direction()</code></a>.</p></td>
3742 <td class="struct_member_annotations"> </td>
3743 </tr>
3744 <tr>
3745 <td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> <em class="structfield"><code><a name="hb-segment-properties-t.script"></a>script</code></em>;</p></td>
3746 <td class="struct_member_description"><p>the <a class="link" href="harfbuzz-hb-common.html#hb-script-t" title="enum hb_script_t"><span class="type">hb_script_t</span></a> of the buffer, see <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-script" title="hb_buffer_set_script ()"><code class="function">hb_buffer_set_script()</code></a>.</p></td>
3747 <td class="struct_member_annotations"> </td>
3748 </tr>
3749 <tr>
3750 <td class="struct_member_name"><p><a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> <em class="structfield"><code><a name="hb-segment-properties-t.language"></a>language</code></em>;</p></td>
3751 <td class="struct_member_description"><p>the <a class="link" href="harfbuzz-hb-common.html#hb-language-t" title="hb_language_t"><span class="type">hb_language_t</span></a> of the buffer, see <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-set-language" title="hb_buffer_set_language ()"><code class="function">hb_buffer_set_language()</code></a>.</p></td>
3752 <td class="struct_member_annotations"> </td>
3753 </tr>
3754 </tbody>
3755 </table></div>
3756 </div>
3757 </div>
3758 <hr>
3759 <div class="refsect2">
3760 <a name="hb-buffer-serialize-format-t"></a><h3>enum hb_buffer_serialize_format_t</h3>
3761 <p>The buffer serialization and de-serialization format used in
3762 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()"><code class="function">hb_buffer_serialize_glyphs()</code></a> and <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-deserialize-glyphs" title="hb_buffer_deserialize_glyphs ()"><code class="function">hb_buffer_deserialize_glyphs()</code></a>.</p>
3763 <div class="refsect3">
3764 <a name="hb-buffer-serialize-format-t.members"></a><h4>Members</h4>
3765 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3766 <colgroup>
3767 <col width="300px" class="enum_members_name">
3768 <col class="enum_members_description">
3769 <col width="200px" class="enum_members_annotations">
3770 </colgroup>
3771 <tbody>
3772 <tr>
3773 <td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FORMAT-TEXT:CAPS"></a>HB_BUFFER_SERIALIZE_FORMAT_TEXT</p></td>
3774 <td class="enum_member_description">
3775 <p>a human-readable, plain text format.</p>
3776 </td>
3777 <td class="enum_member_annotations"> </td>
3778 </tr>
3779 <tr>
3780 <td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FORMAT-JSON:CAPS"></a>HB_BUFFER_SERIALIZE_FORMAT_JSON</p></td>
3781 <td class="enum_member_description">
3782 <p>a machine-readable JSON format.</p>
3783 </td>
3784 <td class="enum_member_annotations"> </td>
3785 </tr>
3786 <tr>
3787 <td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FORMAT-INVALID:CAPS"></a>HB_BUFFER_SERIALIZE_FORMAT_INVALID</p></td>
3788 <td class="enum_member_description">
3789 <p>invalid format.</p>
3790 </td>
3791 <td class="enum_member_annotations"> </td>
3792 </tr>
3793 </tbody>
3794 </table></div>
3795 </div>
3796 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
3797 </div>
3798 <hr>
3799 <div class="refsect2">
3800 <a name="hb-buffer-serialize-flags-t"></a><h3>enum hb_buffer_serialize_flags_t</h3>
3801 <p>Flags that control what glyph information are serialized in <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-serialize-glyphs" title="hb_buffer_serialize_glyphs ()"><code class="function">hb_buffer_serialize_glyphs()</code></a>.</p>
3802 <div class="refsect3">
3803 <a name="hb-buffer-serialize-flags-t.members"></a><h4>Members</h4>
3804 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3805 <colgroup>
3806 <col width="300px" class="enum_members_name">
3807 <col class="enum_members_description">
3808 <col width="200px" class="enum_members_annotations">
3809 </colgroup>
3810 <tbody>
3811 <tr>
3812 <td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-DEFAULT:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_DEFAULT</p></td>
3813 <td class="enum_member_description">
3814 <p>serialize glyph names, clusters and positions.</p>
3815 </td>
3816 <td class="enum_member_annotations"> </td>
3817 </tr>
3818 <tr>
3819 <td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-NO-CLUSTERS:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS</p></td>
3820 <td class="enum_member_description">
3821 <p>do not serialize glyph cluster.</p>
3822 </td>
3823 <td class="enum_member_annotations"> </td>
3824 </tr>
3825 <tr>
3826 <td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-NO-POSITIONS:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS</p></td>
3827 <td class="enum_member_description">
3828 <p>do not serialize glyph position information.</p>
3829 </td>
3830 <td class="enum_member_annotations"> </td>
3831 </tr>
3832 <tr>
3833 <td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-NO-GLYPH-NAMES:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES</p></td>
3834 <td class="enum_member_description">
3835 <p>do no serialize glyph name.</p>
3836 </td>
3837 <td class="enum_member_annotations"> </td>
3838 </tr>
3839 <tr>
3840 <td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-GLYPH-EXTENTS:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS</p></td>
3841 <td class="enum_member_description">
3842 <p>serialize glyph extents.</p>
3843 </td>
3844 <td class="enum_member_annotations"> </td>
3845 </tr>
3846 <tr>
3847 <td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-GLYPH-FLAGS:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS</p></td>
3848 <td class="enum_member_description">
3849 <p>serialize glyph flags. Since: 1.5.0</p>
3850 </td>
3851 <td class="enum_member_annotations"> </td>
3852 </tr>
3853 <tr>
3854 <td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-NO-ADVANCES:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES</p></td>
3855 <td class="enum_member_description">
3856 <p>do not serialize glyph advances,
3857 glyph offsets will reflect absolute glyph positions. Since: 1.8.0</p>
3858 </td>
3859 <td class="enum_member_annotations"> </td>
3860 </tr>
3861 <tr>
3862 <td class="enum_member_name"><p><a name="HB-BUFFER-SERIALIZE-FLAG-DEFINED:CAPS"></a>HB_BUFFER_SERIALIZE_FLAG_DEFINED</p></td>
3863 <td class="enum_member_description">
3864 <p>All currently defined flags. Since: 4.4.0</p>
3865 </td>
3866 <td class="enum_member_annotations"> </td>
3867 </tr>
3868 </tbody>
3869 </table></div>
3870 </div>
3871 <p class="since">Since: <a class="link" href="api-index-0-9-20.html#api-index-0.9.20">0.9.20</a></p>
3872 </div>
3873 <hr>
3874 <div class="refsect2">
3875 <a name="hb-buffer-diff-flags-t"></a><h3>enum hb_buffer_diff_flags_t</h3>
3876 <p>Flags from comparing two <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-t" title="hb_buffer_t"><span class="type">hb_buffer_t</span></a>'s.</p>
3877 <p>Buffer with different <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="type">hb_buffer_content_type_t</span></a> cannot be meaningfully
3878 compared in any further detail.</p>
3879 <p>For buffers with differing length, the per-glyph comparison is not
3880 attempted, though we do still scan reference buffer for dotted circle and
3881 <code class="literal">.notdef</code> glyphs.</p>
3882 <p>If the buffers have the same length, we compare them glyph-by-glyph and
3883 report which aspect(s) of the glyph info/position are different.</p>
3884 <div class="refsect3">
3885 <a name="hb-buffer-diff-flags-t.members"></a><h4>Members</h4>
3886 <div class="informaltable"><table class="informaltable" width="100%" border="0">
3887 <colgroup>
3888 <col width="300px" class="enum_members_name">
3889 <col class="enum_members_description">
3890 <col width="200px" class="enum_members_annotations">
3891 </colgroup>
3892 <tbody>
3893 <tr>
3894 <td class="enum_member_name"><p><a name="HB-BUFFER-DIFF-FLAG-EQUAL:CAPS"></a>HB_BUFFER_DIFF_FLAG_EQUAL</p></td>
3895 <td class="enum_member_description">
3896 <p>equal buffers.</p>
3897 </td>
3898 <td class="enum_member_annotations"> </td>
3899 </tr>
3900 <tr>
3901 <td class="enum_member_name"><p><a name="HB-BUFFER-DIFF-FLAG-CONTENT-TYPE-MISMATCH:CAPS"></a>HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH</p></td>
3902 <td class="enum_member_description">
3903 <p>buffers with different
3904 <a class="link" href="harfbuzz-hb-buffer.html#hb-buffer-content-type-t" title="enum hb_buffer_content_type_t"><span class="type">hb_buffer_content_type_t</span></a>.</p>
3905 </td>
3906 <td class="enum_member_annotations"> </td>
3907 </tr>
3908 <tr>
3909 <td class="enum_member_name"><p><a name="HB-BUFFER-DIFF-FLAG-LENGTH-MISMATCH:CAPS"></a>HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH</p></td>
3910 <td class="enum_member_description">
3911 <p>buffers with differing length.</p>
3912 </td>
3913 <td class="enum_member_annotations"> </td>
3914 </tr>
3915 <tr>
3916 <td class="enum_member_name"><p><a name="HB-BUFFER-DIFF-FLAG-NOTDEF-PRESENT:CAPS"></a>HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT</p></td>
3917 <td class="enum_member_description">
3918 <p><code class="literal">.notdef</code> glyph is present in the
3919 reference buffer.</p>
3920 </td>
3921 <td class="enum_member_annotations"> </td>
3922 </tr>
3923 <tr>
3924 <td class="enum_member_name"><p><a name="HB-BUFFER-DIFF-FLAG-DOTTED-CIRCLE-PRESENT:CAPS"></a>HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT</p></td>
3925 <td class="enum_member_description">
3926 <p>dotted circle glyph is present
3927 in the reference buffer.</p>
3928 </td>
3929 <td class="enum_member_annotations"> </td>
3930 </tr>
3931 <tr>
3932 <td class="enum_member_name"><p><a name="HB-BUFFER-DIFF-FLAG-CODEPOINT-MISMATCH:CAPS"></a>HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH</p></td>
3933 <td class="enum_member_description">
3934 <p>difference in <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t.codepoint"><span class="type">hb_glyph_info_t.codepoint</span></a></p>
3935 </td>
3936 <td class="enum_member_annotations"> </td>
3937 </tr>
3938 <tr>
3939 <td class="enum_member_name"><p><a name="HB-BUFFER-DIFF-FLAG-CLUSTER-MISMATCH:CAPS"></a>HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH</p></td>
3940 <td class="enum_member_description">
3941 <p>difference in <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-info-t.cluster"><span class="type">hb_glyph_info_t.cluster</span></a></p>
3942 </td>
3943 <td class="enum_member_annotations"> </td>
3944 </tr>
3945 <tr>
3946 <td class="enum_member_name"><p><a name="HB-BUFFER-DIFF-FLAG-GLYPH-FLAGS-MISMATCH:CAPS"></a>HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH</p></td>
3947 <td class="enum_member_description">
3948 <p>difference in <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-flags-t" title="enum hb_glyph_flags_t"><span class="type">hb_glyph_flags_t</span></a>.</p>
3949 </td>
3950 <td class="enum_member_annotations"> </td>
3951 </tr>
3952 <tr>
3953 <td class="enum_member_name"><p><a name="HB-BUFFER-DIFF-FLAG-POSITION-MISMATCH:CAPS"></a>HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH</p></td>
3954 <td class="enum_member_description">
3955 <p>difference in <a class="link" href="harfbuzz-hb-buffer.html#hb-glyph-position-t" title="hb_glyph_position_t"><span class="type">hb_glyph_position_t</span></a>.</p>
3956 </td>
3957 <td class="enum_member_annotations"> </td>
3958 </tr>
3959 </tbody>
3960 </table></div>
3961 </div>
3962 <p class="since">Since: <a class="link" href="api-index-1-5-0.html#api-index-1.5.0">1.5.0</a></p>
3963 </div>
3964 </div>
3965 </div>
3966 <div class="footer">
3967 <hr>Generated by GTK-Doc V1.32</div>
3968 </body>
3969 </html>