822fb523e321a57d49d06a24fbd4bcb0447d8916
[platform/upstream/harfbuzz.git] / docs / html / harfbuzz-hb-blob.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-blob: 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="core-api.html" title="Core API">
10 <link rel="next" href="harfbuzz-hb-buffer.html" title="hb-buffer">
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-blob.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="core-api.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
23 <td><a accesskey="n" href="harfbuzz-hb-buffer.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-blob"></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-blob.top_of_page"></a>hb-blob</span></h2>
30 <p>hb-blob — Binary data containers</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-blob.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-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
45 </td>
46 <td class="function_name">
47 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-create" title="hb_blob_create ()">hb_blob_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-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
53 </td>
54 <td class="function_name">
55 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-create-or-fail" title="hb_blob_create_or_fail ()">hb_blob_create_or_fail</a> <span class="c_punctuation">()</span>
56 </td>
57 </tr>
58 <tr>
59 <td class="function_type">
60 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
61 </td>
62 <td class="function_name">
63 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-create-from-file" title="hb_blob_create_from_file ()">hb_blob_create_from_file</a> <span class="c_punctuation">()</span>
64 </td>
65 </tr>
66 <tr>
67 <td class="function_type">
68 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
69 </td>
70 <td class="function_name">
71 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-create-from-file-or-fail" title="hb_blob_create_from_file_or_fail ()">hb_blob_create_from_file_or_fail</a> <span class="c_punctuation">()</span>
72 </td>
73 </tr>
74 <tr>
75 <td class="function_type">
76 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
77 </td>
78 <td class="function_name">
79 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-create-sub-blob" title="hb_blob_create_sub_blob ()">hb_blob_create_sub_blob</a> <span class="c_punctuation">()</span>
80 </td>
81 </tr>
82 <tr>
83 <td class="function_type">
84 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
85 </td>
86 <td class="function_name">
87 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-copy-writable-or-fail" title="hb_blob_copy_writable_or_fail ()">hb_blob_copy_writable_or_fail</a> <span class="c_punctuation">()</span>
88 </td>
89 </tr>
90 <tr>
91 <td class="function_type">
92 <span class="returnvalue">void</span>
93 </td>
94 <td class="function_name">
95 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-destroy" title="hb_blob_destroy ()">hb_blob_destroy</a> <span class="c_punctuation">()</span>
96 </td>
97 </tr>
98 <tr>
99 <td class="function_type">const <span class="returnvalue">char</span> *
100 </td>
101 <td class="function_name">
102 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-data" title="hb_blob_get_data ()">hb_blob_get_data</a> <span class="c_punctuation">()</span>
103 </td>
104 </tr>
105 <tr>
106 <td class="function_type">
107 <span class="returnvalue">char</span> *
108 </td>
109 <td class="function_name">
110 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-data-writable" title="hb_blob_get_data_writable ()">hb_blob_get_data_writable</a> <span class="c_punctuation">()</span>
111 </td>
112 </tr>
113 <tr>
114 <td class="function_type">
115 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
116 </td>
117 <td class="function_name">
118 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-empty" title="hb_blob_get_empty ()">hb_blob_get_empty</a> <span class="c_punctuation">()</span>
119 </td>
120 </tr>
121 <tr>
122 <td class="function_type">unsigned <span class="returnvalue">int</span>
123 </td>
124 <td class="function_name">
125 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-length" title="hb_blob_get_length ()">hb_blob_get_length</a> <span class="c_punctuation">()</span>
126 </td>
127 </tr>
128 <tr>
129 <td class="function_type">
130 <span class="returnvalue">void</span> *
131 </td>
132 <td class="function_name">
133 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-user-data" title="hb_blob_get_user_data ()">hb_blob_get_user_data</a> <span class="c_punctuation">()</span>
134 </td>
135 </tr>
136 <tr>
137 <td class="function_type">
138 <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
139 </td>
140 <td class="function_name">
141 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-is-immutable" title="hb_blob_is_immutable ()">hb_blob_is_immutable</a> <span class="c_punctuation">()</span>
142 </td>
143 </tr>
144 <tr>
145 <td class="function_type">
146 <span class="returnvalue">void</span>
147 </td>
148 <td class="function_name">
149 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-make-immutable" title="hb_blob_make_immutable ()">hb_blob_make_immutable</a> <span class="c_punctuation">()</span>
150 </td>
151 </tr>
152 <tr>
153 <td class="function_type">
154 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
155 </td>
156 <td class="function_name">
157 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-reference" title="hb_blob_reference ()">hb_blob_reference</a> <span class="c_punctuation">()</span>
158 </td>
159 </tr>
160 <tr>
161 <td class="function_type">
162 <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
163 </td>
164 <td class="function_name">
165 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-set-user-data" title="hb_blob_set_user_data ()">hb_blob_set_user_data</a> <span class="c_punctuation">()</span>
166 </td>
167 </tr>
168 </tbody>
169 </table></div>
170 </div>
171 <div class="refsect1">
172 <a name="harfbuzz-hb-blob.other"></a><h2>Types and Values</h2>
173 <div class="informaltable"><table class="informaltable" width="100%" border="0">
174 <colgroup>
175 <col width="150px" class="other_proto_type">
176 <col class="other_proto_name">
177 </colgroup>
178 <tbody>
179 <tr>
180 <td class="typedef_keyword">typedef</td>
181 <td class="function_name"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t">hb_blob_t</a></td>
182 </tr>
183 <tr>
184 <td class="datatype_keyword">enum</td>
185 <td class="function_name"><a class="link" href="harfbuzz-hb-blob.html#hb-memory-mode-t" title="enum hb_memory_mode_t">hb_memory_mode_t</a></td>
186 </tr>
187 </tbody>
188 </table></div>
189 </div>
190 <div class="refsect1">
191 <a name="harfbuzz-hb-blob.includes"></a><h2>Includes</h2>
192 <pre class="synopsis">#include &lt;hb.h&gt;
193 </pre>
194 </div>
195 <div class="refsect1">
196 <a name="harfbuzz-hb-blob.description"></a><h2>Description</h2>
197 <p>Blobs wrap a chunk of binary data to handle lifecycle management of data
198 while it is passed between client and HarfBuzz.  Blobs are primarily used
199 to create font faces, but also to access font face tables, as well as
200 pass around other binary data.</p>
201 </div>
202 <div class="refsect1">
203 <a name="harfbuzz-hb-blob.functions_details"></a><h2>Functions</h2>
204 <div class="refsect2">
205 <a name="hb-blob-create"></a><h3>hb_blob_create ()</h3>
206 <pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
207 hb_blob_create (<em class="parameter"><code>const <span class="type">char</span> *data</code></em>,
208                 <em class="parameter"><code>unsigned <span class="type">int</span> length</code></em>,
209                 <em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-memory-mode-t" title="enum hb_memory_mode_t"><span class="type">hb_memory_mode_t</span></a> mode</code></em>,
210                 <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
211                 <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>
212 <p>Creates a new "blob" object wrapping <em class="parameter"><code>data</code></em>
213 .  The <em class="parameter"><code>mode</code></em>
214  parameter is used
215 to negotiate ownership and lifecycle of <em class="parameter"><code>data</code></em>
216 .</p>
217 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
218 <div class="refsect3">
219 <a name="hb-blob-create.parameters"></a><h4>Parameters</h4>
220 <div class="informaltable"><table class="informaltable" width="100%" border="0">
221 <colgroup>
222 <col width="150px" class="parameters_name">
223 <col class="parameters_description">
224 <col width="200px" class="parameters_annotations">
225 </colgroup>
226 <tbody>
227 <tr>
228 <td class="parameter_name"><p>data</p></td>
229 <td class="parameter_description"><p>Pointer to blob data.</p></td>
230 <td class="parameter_annotations"> </td>
231 </tr>
232 <tr>
233 <td class="parameter_name"><p>length</p></td>
234 <td class="parameter_description"><p>Length of <em class="parameter"><code>data</code></em>
235 in bytes.</p></td>
236 <td class="parameter_annotations"> </td>
237 </tr>
238 <tr>
239 <td class="parameter_name"><p>mode</p></td>
240 <td class="parameter_description"><p>Memory mode for <em class="parameter"><code>data</code></em>
241 .</p></td>
242 <td class="parameter_annotations"> </td>
243 </tr>
244 <tr>
245 <td class="parameter_name"><p>user_data</p></td>
246 <td class="parameter_description"><p>Data parameter to pass to <em class="parameter"><code>destroy</code></em>
247 .</p></td>
248 <td class="parameter_annotations"> </td>
249 </tr>
250 <tr>
251 <td class="parameter_name"><p>destroy</p></td>
252 <td class="parameter_description"><p>Callback to call when <em class="parameter"><code>data</code></em>
253 is not needed anymore. </p></td>
254 <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>
255 </tr>
256 </tbody>
257 </table></div>
258 </div>
259 <div class="refsect3">
260 <a name="hb-blob-create.returns"></a><h4>Returns</h4>
261 <p> New blob, or the empty blob if something failed or if <em class="parameter"><code>length</code></em>
262 is
263 zero.  Destroy with <a class="link" href="harfbuzz-hb-blob.html#hb-blob-destroy" title="hb_blob_destroy ()"><code class="function">hb_blob_destroy()</code></a>.</p>
264 </div>
265 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
266 </div>
267 <hr>
268 <div class="refsect2">
269 <a name="hb-blob-create-or-fail"></a><h3>hb_blob_create_or_fail ()</h3>
270 <pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
271 hb_blob_create_or_fail (<em class="parameter"><code>const <span class="type">char</span> *data</code></em>,
272                         <em class="parameter"><code>unsigned <span class="type">int</span> length</code></em>,
273                         <em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-memory-mode-t" title="enum hb_memory_mode_t"><span class="type">hb_memory_mode_t</span></a> mode</code></em>,
274                         <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
275                         <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>
276 <p>Creates a new "blob" object wrapping <em class="parameter"><code>data</code></em>
277 .  The <em class="parameter"><code>mode</code></em>
278  parameter is used
279 to negotiate ownership and lifecycle of <em class="parameter"><code>data</code></em>
280 .</p>
281 <p>Note that this function returns a freshly-allocated empty blob even if <em class="parameter"><code>length</code></em>
282
283 is zero. This is in contrast to <a class="link" href="harfbuzz-hb-blob.html#hb-blob-create" title="hb_blob_create ()"><code class="function">hb_blob_create()</code></a>, which returns the singleton
284 empty blob (as returned by <a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-empty" title="hb_blob_get_empty ()"><code class="function">hb_blob_get_empty()</code></a>) if <em class="parameter"><code>length</code></em>
285  is zero.</p>
286 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
287 <div class="refsect3">
288 <a name="hb-blob-create-or-fail.parameters"></a><h4>Parameters</h4>
289 <div class="informaltable"><table class="informaltable" width="100%" border="0">
290 <colgroup>
291 <col width="150px" class="parameters_name">
292 <col class="parameters_description">
293 <col width="200px" class="parameters_annotations">
294 </colgroup>
295 <tbody>
296 <tr>
297 <td class="parameter_name"><p>data</p></td>
298 <td class="parameter_description"><p>Pointer to blob data.</p></td>
299 <td class="parameter_annotations"> </td>
300 </tr>
301 <tr>
302 <td class="parameter_name"><p>length</p></td>
303 <td class="parameter_description"><p>Length of <em class="parameter"><code>data</code></em>
304 in bytes.</p></td>
305 <td class="parameter_annotations"> </td>
306 </tr>
307 <tr>
308 <td class="parameter_name"><p>mode</p></td>
309 <td class="parameter_description"><p>Memory mode for <em class="parameter"><code>data</code></em>
310 .</p></td>
311 <td class="parameter_annotations"> </td>
312 </tr>
313 <tr>
314 <td class="parameter_name"><p>user_data</p></td>
315 <td class="parameter_description"><p>Data parameter to pass to <em class="parameter"><code>destroy</code></em>
316 .</p></td>
317 <td class="parameter_annotations"> </td>
318 </tr>
319 <tr>
320 <td class="parameter_name"><p>destroy</p></td>
321 <td class="parameter_description"><p>Callback to call when <em class="parameter"><code>data</code></em>
322 is not needed anymore. </p></td>
323 <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>
324 </tr>
325 </tbody>
326 </table></div>
327 </div>
328 <div class="refsect3">
329 <a name="hb-blob-create-or-fail.returns"></a><h4>Returns</h4>
330 <p> New blob, or <code class="literal">NULL</code> if failed.  Destroy with <a class="link" href="harfbuzz-hb-blob.html#hb-blob-destroy" title="hb_blob_destroy ()"><code class="function">hb_blob_destroy()</code></a>.</p>
331 </div>
332 <p class="since">Since: <a class="link" href="api-index-2-8-2.html#api-index-2.8.2">2.8.2</a></p>
333 </div>
334 <hr>
335 <div class="refsect2">
336 <a name="hb-blob-create-from-file"></a><h3>hb_blob_create_from_file ()</h3>
337 <pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
338 hb_blob_create_from_file (<em class="parameter"><code>const <span class="type">char</span> *file_name</code></em>);</pre>
339 <p>Creates a new blob containing the data from the
340 specified binary font file.</p>
341 <div class="refsect3">
342 <a name="hb-blob-create-from-file.parameters"></a><h4>Parameters</h4>
343 <div class="informaltable"><table class="informaltable" width="100%" border="0">
344 <colgroup>
345 <col width="150px" class="parameters_name">
346 <col class="parameters_description">
347 <col width="200px" class="parameters_annotations">
348 </colgroup>
349 <tbody><tr>
350 <td class="parameter_name"><p>file_name</p></td>
351 <td class="parameter_description"><p>A font filename</p></td>
352 <td class="parameter_annotations"> </td>
353 </tr></tbody>
354 </table></div>
355 </div>
356 <div class="refsect3">
357 <a name="hb-blob-create-from-file.returns"></a><h4>Returns</h4>
358 <p> An <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> pointer with the content of the file,
359 or <a class="link" href="harfbuzz-hb-blob.html#hb-blob-get-empty" title="hb_blob_get_empty ()"><code class="function">hb_blob_get_empty()</code></a> if failed.</p>
360 </div>
361 <p class="since">Since: <a class="link" href="api-index-1-7-7.html#api-index-1.7.7">1.7.7</a></p>
362 </div>
363 <hr>
364 <div class="refsect2">
365 <a name="hb-blob-create-from-file-or-fail"></a><h3>hb_blob_create_from_file_or_fail ()</h3>
366 <pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
367 hb_blob_create_from_file_or_fail (<em class="parameter"><code>const <span class="type">char</span> *file_name</code></em>);</pre>
368 <p>Creates a new blob containing the data from the
369 specified binary font file.</p>
370 <div class="refsect3">
371 <a name="hb-blob-create-from-file-or-fail.parameters"></a><h4>Parameters</h4>
372 <div class="informaltable"><table class="informaltable" width="100%" border="0">
373 <colgroup>
374 <col width="150px" class="parameters_name">
375 <col class="parameters_description">
376 <col width="200px" class="parameters_annotations">
377 </colgroup>
378 <tbody><tr>
379 <td class="parameter_name"><p>file_name</p></td>
380 <td class="parameter_description"><p>A font filename</p></td>
381 <td class="parameter_annotations"> </td>
382 </tr></tbody>
383 </table></div>
384 </div>
385 <div class="refsect3">
386 <a name="hb-blob-create-from-file-or-fail.returns"></a><h4>Returns</h4>
387 <p> An <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> pointer with the content of the file,
388 or <code class="literal">NULL</code> if failed.</p>
389 </div>
390 <p class="since">Since: <a class="link" href="api-index-2-8-2.html#api-index-2.8.2">2.8.2</a></p>
391 </div>
392 <hr>
393 <div class="refsect2">
394 <a name="hb-blob-create-sub-blob"></a><h3>hb_blob_create_sub_blob ()</h3>
395 <pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
396 hb_blob_create_sub_blob (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *parent</code></em>,
397                          <em class="parameter"><code>unsigned <span class="type">int</span> offset</code></em>,
398                          <em class="parameter"><code>unsigned <span class="type">int</span> length</code></em>);</pre>
399 <p>Returns a blob that represents a range of bytes in <em class="parameter"><code>parent</code></em>
400 .  The new
401 blob is always created with <a class="link" href="harfbuzz-hb-blob.html#HB-MEMORY-MODE-READONLY:CAPS"><span class="type">HB_MEMORY_MODE_READONLY</span></a>, meaning that it
402 will never modify data in the parent blob.  The parent data is not
403 expected to be modified, and will result in undefined behavior if it
404 is.</p>
405 <p>Makes <em class="parameter"><code>parent</code></em>
406  immutable.</p>
407 <div class="refsect3">
408 <a name="hb-blob-create-sub-blob.parameters"></a><h4>Parameters</h4>
409 <div class="informaltable"><table class="informaltable" width="100%" border="0">
410 <colgroup>
411 <col width="150px" class="parameters_name">
412 <col class="parameters_description">
413 <col width="200px" class="parameters_annotations">
414 </colgroup>
415 <tbody>
416 <tr>
417 <td class="parameter_name"><p>parent</p></td>
418 <td class="parameter_description"><p>Parent blob.</p></td>
419 <td class="parameter_annotations"> </td>
420 </tr>
421 <tr>
422 <td class="parameter_name"><p>offset</p></td>
423 <td class="parameter_description"><p>Start offset of sub-blob within <em class="parameter"><code>parent</code></em>
424 , in bytes.</p></td>
425 <td class="parameter_annotations"> </td>
426 </tr>
427 <tr>
428 <td class="parameter_name"><p>length</p></td>
429 <td class="parameter_description"><p>Length of sub-blob.</p></td>
430 <td class="parameter_annotations"> </td>
431 </tr>
432 </tbody>
433 </table></div>
434 </div>
435 <div class="refsect3">
436 <a name="hb-blob-create-sub-blob.returns"></a><h4>Returns</h4>
437 <p> New blob, or the empty blob if something failed or if
438 <em class="parameter"><code>length</code></em>
439 is zero or <em class="parameter"><code>offset</code></em>
440 is beyond the end of <em class="parameter"><code>parent</code></em>
441 's data.  Destroy
442 with <a class="link" href="harfbuzz-hb-blob.html#hb-blob-destroy" title="hb_blob_destroy ()"><code class="function">hb_blob_destroy()</code></a>.</p>
443 </div>
444 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
445 </div>
446 <hr>
447 <div class="refsect2">
448 <a name="hb-blob-copy-writable-or-fail"></a><h3>hb_blob_copy_writable_or_fail ()</h3>
449 <pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
450 hb_blob_copy_writable_or_fail (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre>
451 <p>Makes a writable copy of <em class="parameter"><code>blob</code></em>
452 .</p>
453 <div class="refsect3">
454 <a name="hb-blob-copy-writable-or-fail.parameters"></a><h4>Parameters</h4>
455 <div class="informaltable"><table class="informaltable" width="100%" border="0">
456 <colgroup>
457 <col width="150px" class="parameters_name">
458 <col class="parameters_description">
459 <col width="200px" class="parameters_annotations">
460 </colgroup>
461 <tbody><tr>
462 <td class="parameter_name"><p>blob</p></td>
463 <td class="parameter_description"><p>A blob.</p></td>
464 <td class="parameter_annotations"> </td>
465 </tr></tbody>
466 </table></div>
467 </div>
468 <div class="refsect3">
469 <a name="hb-blob-copy-writable-or-fail.returns"></a><h4>Returns</h4>
470 <p> The new blob, or nullptr if allocation failed</p>
471 </div>
472 <p class="since">Since: <a class="link" href="api-index-1-8-0.html#api-index-1.8.0">1.8.0</a></p>
473 </div>
474 <hr>
475 <div class="refsect2">
476 <a name="hb-blob-destroy"></a><h3>hb_blob_destroy ()</h3>
477 <pre class="programlisting"><span class="returnvalue">void</span>
478 hb_blob_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre>
479 <p>Decreases the reference count on <em class="parameter"><code>blob</code></em>
480 , and if it reaches zero, destroys
481 <em class="parameter"><code>blob</code></em>
482 , freeing all memory, possibly calling the destroy-callback the blob
483 was created for if it has not been called already.</p>
484 <p>See TODO:link object types for more information.</p>
485 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
486 <div class="refsect3">
487 <a name="hb-blob-destroy.parameters"></a><h4>Parameters</h4>
488 <div class="informaltable"><table class="informaltable" width="100%" border="0">
489 <colgroup>
490 <col width="150px" class="parameters_name">
491 <col class="parameters_description">
492 <col width="200px" class="parameters_annotations">
493 </colgroup>
494 <tbody><tr>
495 <td class="parameter_name"><p>blob</p></td>
496 <td class="parameter_description"><p>a blob.</p></td>
497 <td class="parameter_annotations"> </td>
498 </tr></tbody>
499 </table></div>
500 </div>
501 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
502 </div>
503 <hr>
504 <div class="refsect2">
505 <a name="hb-blob-get-data"></a><h3>hb_blob_get_data ()</h3>
506 <pre class="programlisting">const <span class="returnvalue">char</span> *
507 hb_blob_get_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>,
508                   <em class="parameter"><code>unsigned <span class="type">int</span> *length</code></em>);</pre>
509 <p>Fetches the data from a blob.</p>
510 <div class="refsect3">
511 <a name="hb-blob-get-data.parameters"></a><h4>Parameters</h4>
512 <div class="informaltable"><table class="informaltable" width="100%" border="0">
513 <colgroup>
514 <col width="150px" class="parameters_name">
515 <col class="parameters_description">
516 <col width="200px" class="parameters_annotations">
517 </colgroup>
518 <tbody>
519 <tr>
520 <td class="parameter_name"><p>blob</p></td>
521 <td class="parameter_description"><p>a blob.</p></td>
522 <td class="parameter_annotations"> </td>
523 </tr>
524 <tr>
525 <td class="parameter_name"><p>length</p></td>
526 <td class="parameter_description"><p>The length in bytes of the data retrieved. </p></td>
527 <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>
528 </tr>
529 </tbody>
530 </table></div>
531 </div>
532 <div class="refsect3">
533 <a name="hb-blob-get-data.returns"></a><h4>Returns</h4>
534 <p>the byte data of <em class="parameter"><code>blob</code></em>
535 . </p>
536 <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>
537 </div>
538 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
539 </div>
540 <hr>
541 <div class="refsect2">
542 <a name="hb-blob-get-data-writable"></a><h3>hb_blob_get_data_writable ()</h3>
543 <pre class="programlisting"><span class="returnvalue">char</span> *
544 hb_blob_get_data_writable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>,
545                            <em class="parameter"><code>unsigned <span class="type">int</span> *length</code></em>);</pre>
546 <p>Tries to make blob data writable (possibly copying it) and
547 return pointer to data.</p>
548 <p>Fails if blob has been made immutable, or if memory allocation
549 fails.</p>
550 <div class="refsect3">
551 <a name="hb-blob-get-data-writable.parameters"></a><h4>Parameters</h4>
552 <div class="informaltable"><table class="informaltable" width="100%" border="0">
553 <colgroup>
554 <col width="150px" class="parameters_name">
555 <col class="parameters_description">
556 <col width="200px" class="parameters_annotations">
557 </colgroup>
558 <tbody>
559 <tr>
560 <td class="parameter_name"><p>blob</p></td>
561 <td class="parameter_description"><p>a blob.</p></td>
562 <td class="parameter_annotations"> </td>
563 </tr>
564 <tr>
565 <td class="parameter_name"><p>length</p></td>
566 <td class="parameter_description"><p>output length of the writable data. </p></td>
567 <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>
568 </tr>
569 </tbody>
570 </table></div>
571 </div>
572 <div class="refsect3">
573 <a name="hb-blob-get-data-writable.returns"></a><h4>Returns</h4>
574 <p>Writable blob data,
575 or <code class="literal">NULL</code> if failed. </p>
576 <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>
577 </div>
578 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
579 </div>
580 <hr>
581 <div class="refsect2">
582 <a name="hb-blob-get-empty"></a><h3>hb_blob_get_empty ()</h3>
583 <pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
584 hb_blob_get_empty (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
585 <p>Returns the singleton empty blob.</p>
586 <p>See TODO:link object types for more information.</p>
587 <div class="refsect3">
588 <a name="hb-blob-get-empty.returns"></a><h4>Returns</h4>
589 <p>The empty blob. </p>
590 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
591 </div>
592 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
593 </div>
594 <hr>
595 <div class="refsect2">
596 <a name="hb-blob-get-length"></a><h3>hb_blob_get_length ()</h3>
597 <pre class="programlisting">unsigned <span class="returnvalue">int</span>
598 hb_blob_get_length (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre>
599 <p>Fetches the length of a blob's data.</p>
600 <div class="refsect3">
601 <a name="hb-blob-get-length.parameters"></a><h4>Parameters</h4>
602 <div class="informaltable"><table class="informaltable" width="100%" border="0">
603 <colgroup>
604 <col width="150px" class="parameters_name">
605 <col class="parameters_description">
606 <col width="200px" class="parameters_annotations">
607 </colgroup>
608 <tbody><tr>
609 <td class="parameter_name"><p>blob</p></td>
610 <td class="parameter_description"><p>a blob.</p></td>
611 <td class="parameter_annotations"> </td>
612 </tr></tbody>
613 </table></div>
614 </div>
615 <div class="refsect3">
616 <a name="hb-blob-get-length.returns"></a><h4>Returns</h4>
617 <p> the length of <em class="parameter"><code>blob</code></em>
618 data in bytes.</p>
619 </div>
620 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
621 </div>
622 <hr>
623 <div class="refsect2">
624 <a name="hb-blob-get-user-data"></a><h3>hb_blob_get_user_data ()</h3>
625 <pre class="programlisting"><span class="returnvalue">void</span> *
626 hb_blob_get_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>,
627                        <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>
628 <p>Fetches the user data associated with the specified key,
629 attached to the specified font-functions structure.</p>
630 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
631 <div class="refsect3">
632 <a name="hb-blob-get-user-data.parameters"></a><h4>Parameters</h4>
633 <div class="informaltable"><table class="informaltable" width="100%" border="0">
634 <colgroup>
635 <col width="150px" class="parameters_name">
636 <col class="parameters_description">
637 <col width="200px" class="parameters_annotations">
638 </colgroup>
639 <tbody>
640 <tr>
641 <td class="parameter_name"><p>blob</p></td>
642 <td class="parameter_description"><p>a blob</p></td>
643 <td class="parameter_annotations"> </td>
644 </tr>
645 <tr>
646 <td class="parameter_name"><p>key</p></td>
647 <td class="parameter_description"><p>The user-data key to query</p></td>
648 <td class="parameter_annotations"> </td>
649 </tr>
650 </tbody>
651 </table></div>
652 </div>
653 <div class="refsect3">
654 <a name="hb-blob-get-user-data.returns"></a><h4>Returns</h4>
655 <p>A pointer to the user data. </p>
656 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
657 </div>
658 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
659 </div>
660 <hr>
661 <div class="refsect2">
662 <a name="hb-blob-is-immutable"></a><h3>hb_blob_is_immutable ()</h3>
663 <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>
664 hb_blob_is_immutable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre>
665 <p>Tests whether a blob is immutable.</p>
666 <div class="refsect3">
667 <a name="hb-blob-is-immutable.parameters"></a><h4>Parameters</h4>
668 <div class="informaltable"><table class="informaltable" width="100%" border="0">
669 <colgroup>
670 <col width="150px" class="parameters_name">
671 <col class="parameters_description">
672 <col width="200px" class="parameters_annotations">
673 </colgroup>
674 <tbody><tr>
675 <td class="parameter_name"><p>blob</p></td>
676 <td class="parameter_description"><p>a blob.</p></td>
677 <td class="parameter_annotations"> </td>
678 </tr></tbody>
679 </table></div>
680 </div>
681 <div class="refsect3">
682 <a name="hb-blob-is-immutable.returns"></a><h4>Returns</h4>
683 <p> <code class="literal">true</code> if <em class="parameter"><code>blob</code></em>
684 is immutable, <code class="literal">false</code> otherwise</p>
685 </div>
686 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
687 </div>
688 <hr>
689 <div class="refsect2">
690 <a name="hb-blob-make-immutable"></a><h3>hb_blob_make_immutable ()</h3>
691 <pre class="programlisting"><span class="returnvalue">void</span>
692 hb_blob_make_immutable (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre>
693 <p>Makes a blob immutable.</p>
694 <div class="refsect3">
695 <a name="hb-blob-make-immutable.parameters"></a><h4>Parameters</h4>
696 <div class="informaltable"><table class="informaltable" width="100%" border="0">
697 <colgroup>
698 <col width="150px" class="parameters_name">
699 <col class="parameters_description">
700 <col width="200px" class="parameters_annotations">
701 </colgroup>
702 <tbody><tr>
703 <td class="parameter_name"><p>blob</p></td>
704 <td class="parameter_description"><p>a blob</p></td>
705 <td class="parameter_annotations"> </td>
706 </tr></tbody>
707 </table></div>
708 </div>
709 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
710 </div>
711 <hr>
712 <div class="refsect2">
713 <a name="hb-blob-reference"></a><h3>hb_blob_reference ()</h3>
714 <pre class="programlisting"><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
715 hb_blob_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>);</pre>
716 <p>Increases the reference count on <em class="parameter"><code>blob</code></em>
717 .</p>
718 <p>See TODO:link object types for more information.</p>
719 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
720 <div class="refsect3">
721 <a name="hb-blob-reference.parameters"></a><h4>Parameters</h4>
722 <div class="informaltable"><table class="informaltable" width="100%" border="0">
723 <colgroup>
724 <col width="150px" class="parameters_name">
725 <col class="parameters_description">
726 <col width="200px" class="parameters_annotations">
727 </colgroup>
728 <tbody><tr>
729 <td class="parameter_name"><p>blob</p></td>
730 <td class="parameter_description"><p>a blob.</p></td>
731 <td class="parameter_annotations"> </td>
732 </tr></tbody>
733 </table></div>
734 </div>
735 <div class="refsect3">
736 <a name="hb-blob-reference.returns"></a><h4>Returns</h4>
737 <p> <em class="parameter"><code>blob</code></em>
738 .</p>
739 </div>
740 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
741 </div>
742 <hr>
743 <div class="refsect2">
744 <a name="hb-blob-set-user-data"></a><h3>hb_blob_set_user_data ()</h3>
745 <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>
746 hb_blob_set_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a> *blob</code></em>,
747                        <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>,
748                        <em class="parameter"><code><span class="type">void</span> *data</code></em>,
749                        <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>,
750                        <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>
751 <p>Attaches a user-data key/data pair to the specified blob.</p>
752 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
753 <div class="refsect3">
754 <a name="hb-blob-set-user-data.parameters"></a><h4>Parameters</h4>
755 <div class="informaltable"><table class="informaltable" width="100%" border="0">
756 <colgroup>
757 <col width="150px" class="parameters_name">
758 <col class="parameters_description">
759 <col width="200px" class="parameters_annotations">
760 </colgroup>
761 <tbody>
762 <tr>
763 <td class="parameter_name"><p>blob</p></td>
764 <td class="parameter_description"><p>An <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="type">hb_blob_t</span></a></p></td>
765 <td class="parameter_annotations"> </td>
766 </tr>
767 <tr>
768 <td class="parameter_name"><p>key</p></td>
769 <td class="parameter_description"><p>The user-data key to set</p></td>
770 <td class="parameter_annotations"> </td>
771 </tr>
772 <tr>
773 <td class="parameter_name"><p>data</p></td>
774 <td class="parameter_description"><p>A pointer to the user data to set</p></td>
775 <td class="parameter_annotations"> </td>
776 </tr>
777 <tr>
778 <td class="parameter_name"><p>destroy</p></td>
779 <td class="parameter_description"><p>A callback to call when <em class="parameter"><code>data</code></em>
780 is not needed anymore. </p></td>
781 <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>
782 </tr>
783 <tr>
784 <td class="parameter_name"><p>replace</p></td>
785 <td class="parameter_description"><p>Whether to replace an existing data with the same key</p></td>
786 <td class="parameter_annotations"> </td>
787 </tr>
788 </tbody>
789 </table></div>
790 </div>
791 <div class="refsect3">
792 <a name="hb-blob-set-user-data.returns"></a><h4>Returns</h4>
793 <p> <code class="literal">true</code> if success, <code class="literal">false</code> otherwise</p>
794 </div>
795 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
796 </div>
797 </div>
798 <div class="refsect1">
799 <a name="harfbuzz-hb-blob.other_details"></a><h2>Types and Values</h2>
800 <div class="refsect2">
801 <a name="hb-blob-t"></a><h3>hb_blob_t</h3>
802 <pre class="programlisting">typedef struct hb_blob_t hb_blob_t;
803 </pre>
804 <p>Data type for blobs. A blob wraps a chunk of binary
805 data and facilitates its lifecycle management between
806 a client program and HarfBuzz.</p>
807 </div>
808 <hr>
809 <div class="refsect2">
810 <a name="hb-memory-mode-t"></a><h3>enum hb_memory_mode_t</h3>
811 <p>Data type holding the memory modes available to
812 client programs.</p>
813 <p>Regarding these various memory-modes:</p>
814 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
815 <li class="listitem"><p>In no case shall the HarfBuzz client modify memory
816 that is passed to HarfBuzz in a blob.  If there is
817 any such possibility, <em class="parameter"><code>HB_MEMORY_MODE_DUPLICATE</code></em>
818  should be used
819 such that HarfBuzz makes a copy immediately,</p></li>
820 <li class="listitem"><p>Use <em class="parameter"><code>HB_MEMORY_MODE_READONLY</code></em>
821  otherwise, unless you really really
822 really know what you are doing,</p></li>
823 <li class="listitem"><p><em class="parameter"><code>HB_MEMORY_MODE_WRITABLE</code></em>
824  is appropriate if you really made a
825 copy of data solely for the purpose of passing to
826 HarfBuzz and doing that just once (no reuse!),</p></li>
827 <li class="listitem"><p>If the font is <code class="function">mmap()</code>ed, it's okay to use
828 <em class="parameter"><code>HB_MEMORY_READONLY_MAY_MAKE_WRITABLE</code></em>
829 , however, using that mode
830 correctly is very tricky.  Use <em class="parameter"><code>HB_MEMORY_MODE_READONLY</code></em>
831  instead.</p></li>
832 </ul></div>
833 <div class="refsect3">
834 <a name="hb-memory-mode-t.members"></a><h4>Members</h4>
835 <div class="informaltable"><table class="informaltable" width="100%" border="0">
836 <colgroup>
837 <col width="300px" class="enum_members_name">
838 <col class="enum_members_description">
839 <col width="200px" class="enum_members_annotations">
840 </colgroup>
841 <tbody>
842 <tr>
843 <td class="enum_member_name"><p><a name="HB-MEMORY-MODE-DUPLICATE:CAPS"></a>HB_MEMORY_MODE_DUPLICATE</p></td>
844 <td class="enum_member_description">
845 <p>HarfBuzz immediately makes a copy of the data.</p>
846 </td>
847 <td class="enum_member_annotations"> </td>
848 </tr>
849 <tr>
850 <td class="enum_member_name"><p><a name="HB-MEMORY-MODE-READONLY:CAPS"></a>HB_MEMORY_MODE_READONLY</p></td>
851 <td class="enum_member_description">
852 <p>HarfBuzz client will never modify the data,
853 and HarfBuzz will never modify the data.</p>
854 </td>
855 <td class="enum_member_annotations"> </td>
856 </tr>
857 <tr>
858 <td class="enum_member_name"><p><a name="HB-MEMORY-MODE-WRITABLE:CAPS"></a>HB_MEMORY_MODE_WRITABLE</p></td>
859 <td class="enum_member_description">
860 <p>HarfBuzz client made a copy of the data solely
861 for HarfBuzz, so HarfBuzz may modify the data.</p>
862 </td>
863 <td class="enum_member_annotations"> </td>
864 </tr>
865 <tr>
866 <td class="enum_member_name"><p><a name="HB-MEMORY-MODE-READONLY-MAY-MAKE-WRITABLE:CAPS"></a>HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE</p></td>
867 <td class="enum_member_description">
868 <p>See above</p>
869 </td>
870 <td class="enum_member_annotations"> </td>
871 </tr>
872 </tbody>
873 </table></div>
874 </div>
875 </div>
876 </div>
877 </div>
878 <div class="footer">
879 <hr>Generated by GTK-Doc V1.32</div>
880 </body>
881 </html>