Imported Upstream version 3.4.0
[platform/upstream/harfbuzz.git] / docs / html / harfbuzz-hb-blob.html
index 88c5ee3..822fb52 100644 (file)
@@ -3,12 +3,12 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>hb-blob: HarfBuzz Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="ch12.html" title="Core API">
-<link rel="prev" href="ch12.html" title="Core API">
+<link rel="up" href="core-api.html" title="Core API">
+<link rel="prev" href="core-api.html" title="Core API">
 <link rel="next" href="harfbuzz-hb-buffer.html" title="hb-buffer">
-<meta name="generator" content="GTK-Doc V1.32.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.32 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -18,8 +18,8 @@
                   <a href="#harfbuzz-hb-blob.description" class="shortcut">Description</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch12.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="ch12.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="core-api.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="core-api.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="harfbuzz-hb-buffer.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
 </td>
 <td class="function_name">
+<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>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
+</td>
+<td class="function_name">
 <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>
 </td>
 </tr>
 <a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
 </td>
 <td class="function_name">
+<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>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="harfbuzz-hb-blob.html#hb-blob-t" title="hb_blob_t"><span class="returnvalue">hb_blob_t</span></a> *
+</td>
+<td class="function_name">
 <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>
 </td>
 </tr>
@@ -234,8 +250,8 @@ in bytes.</p></td>
 <tr>
 <td class="parameter_name"><p>destroy</p></td>
 <td class="parameter_description"><p>Callback to call when <em class="parameter"><code>data</code></em>
-is not needed anymore.</p></td>
-<td class="parameter_annotations"> </td>
+is not needed anymore. </p></td>
+<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>
 </tr>
 </tbody>
 </table></div>
@@ -250,9 +266,78 @@ zero.  Destroy with <a class="link" href="harfbuzz-hb-blob.html#hb-blob-destroy"
 </div>
 <hr>
 <div class="refsect2">
+<a name="hb-blob-create-or-fail"></a><h3>hb_blob_create_or_fail ()</h3>
+<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> *
+hb_blob_create_or_fail (<em class="parameter"><code>const <span class="type">char</span> *data</code></em>,
+                        <em class="parameter"><code>unsigned <span class="type">int</span> length</code></em>,
+                        <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>,
+                        <em class="parameter"><code><span class="type">void</span> *user_data</code></em>,
+                        <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>
+<p>Creates a new "blob" object wrapping <em class="parameter"><code>data</code></em>
+.  The <em class="parameter"><code>mode</code></em>
+ parameter is used
+to negotiate ownership and lifecycle of <em class="parameter"><code>data</code></em>
+.</p>
+<p>Note that this function returns a freshly-allocated empty blob even if <em class="parameter"><code>length</code></em>
+
+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
+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>
+ is zero.</p>
+<p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
+<div class="refsect3">
+<a name="hb-blob-create-or-fail.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>data</p></td>
+<td class="parameter_description"><p>Pointer to blob data.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>length</p></td>
+<td class="parameter_description"><p>Length of <em class="parameter"><code>data</code></em>
+in bytes.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>mode</p></td>
+<td class="parameter_description"><p>Memory mode for <em class="parameter"><code>data</code></em>
+.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>Data parameter to pass to <em class="parameter"><code>destroy</code></em>
+.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>destroy</p></td>
+<td class="parameter_description"><p>Callback to call when <em class="parameter"><code>data</code></em>
+is not needed anymore. </p></td>
+<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>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-blob-create-or-fail.returns"></a><h4>Returns</h4>
+<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>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-8-2.html#api-index-2.8.2">2.8.2</a></p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="hb-blob-create-from-file"></a><h3>hb_blob_create_from_file ()</h3>
 <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> *
 hb_blob_create_from_file (<em class="parameter"><code>const <span class="type">char</span> *file_name</code></em>);</pre>
+<p>Creates a new blob containing the data from the
+specified binary font file.</p>
 <div class="refsect3">
 <a name="hb-blob-create-from-file.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -263,19 +348,49 @@ hb_blob_create_from_file (<em class="parameter"><code>const <span class="type">c
 </colgroup>
 <tbody><tr>
 <td class="parameter_name"><p>file_name</p></td>
-<td class="parameter_description"><p>font filename.</p></td>
+<td class="parameter_description"><p>A font filename</p></td>
 <td class="parameter_annotations"> </td>
 </tr></tbody>
 </table></div>
 </div>
 <div class="refsect3">
 <a name="hb-blob-create-from-file.returns"></a><h4>Returns</h4>
-<p> A hb_blob_t pointer with the content of the file</p>
+<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,
+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>
 </div>
 <p class="since">Since: <a class="link" href="api-index-1-7-7.html#api-index-1.7.7">1.7.7</a></p>
 </div>
 <hr>
 <div class="refsect2">
+<a name="hb-blob-create-from-file-or-fail"></a><h3>hb_blob_create_from_file_or_fail ()</h3>
+<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> *
+hb_blob_create_from_file_or_fail (<em class="parameter"><code>const <span class="type">char</span> *file_name</code></em>);</pre>
+<p>Creates a new blob containing the data from the
+specified binary font file.</p>
+<div class="refsect3">
+<a name="hb-blob-create-from-file-or-fail.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>file_name</p></td>
+<td class="parameter_description"><p>A font filename</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="hb-blob-create-from-file-or-fail.returns"></a><h4>Returns</h4>
+<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,
+or <code class="literal">NULL</code> if failed.</p>
+</div>
+<p class="since">Since: <a class="link" href="api-index-2-8-2.html#api-index-2.8.2">2.8.2</a></p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="hb-blob-create-sub-blob"></a><h3>hb_blob_create_sub_blob ()</h3>
 <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> *
 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>,
@@ -283,7 +398,7 @@ hb_blob_create_sub_blob (<em class="parameter"><code><a class="link" href="harfb
                          <em class="parameter"><code>unsigned <span class="type">int</span> length</code></em>);</pre>
 <p>Returns a blob that represents a range of bytes in <em class="parameter"><code>parent</code></em>
 .  The new
-blob is always created with <a class="link" href="harfbuzz-hb-blob.html#HB-MEMORY-MODE-READONLY:CAPS"><code class="literal">HB_MEMORY_MODE_READONLY</code></a>, meaning that it
+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
 will never modify data in the parent blob.  The parent data is not
 expected to be modified, and will result in undefined behavior if it
 is.</p>
@@ -352,7 +467,7 @@ hb_blob_copy_writable_or_fail (<em class="parameter"><code><a class="link" href=
 </div>
 <div class="refsect3">
 <a name="hb-blob-copy-writable-or-fail.returns"></a><h4>Returns</h4>
-<p> New blob, or nullptr if allocation failed.</p>
+<p> The new blob, or nullptr if allocation failed</p>
 </div>
 <p class="since">Since: <a class="link" href="api-index-1-8-0.html#api-index-1.8.0">1.8.0</a></p>
 </div>
@@ -391,6 +506,7 @@ was created for if it has not been called already.</p>
 <pre class="programlisting">const <span class="returnvalue">char</span> *
 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>,
                   <em class="parameter"><code>unsigned <span class="type">int</span> *length</code></em>);</pre>
+<p>Fetches the data from a blob.</p>
 <div class="refsect3">
 <a name="hb-blob-get-data.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -407,7 +523,7 @@ hb_blob_get_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
 </tr>
 <tr>
 <td class="parameter_name"><p>length</p></td>
-<td class="parameter_description"><p>. </p></td>
+<td class="parameter_description"><p>The length in bytes of the data retrieved. </p></td>
 <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>
 </tr>
 </tbody>
@@ -415,7 +531,8 @@ hb_blob_get_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-
 </div>
 <div class="refsect3">
 <a name="hb-blob-get-data.returns"></a><h4>Returns</h4>
-<p>. </p>
+<p>the byte data of <em class="parameter"><code>blob</code></em>
+. </p>
 <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>
 </div>
 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
@@ -455,7 +572,7 @@ fails.</p>
 <div class="refsect3">
 <a name="hb-blob-get-data-writable.returns"></a><h4>Returns</h4>
 <p>Writable blob data,
-or <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if failed. </p>
+or <code class="literal">NULL</code> if failed. </p>
 <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>
 </div>
 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
@@ -469,7 +586,7 @@ hb_blob_get_empty (<em class="parameter"><code><span class="type">void</span></c
 <p>See TODO:link object types for more information.</p>
 <div class="refsect3">
 <a name="hb-blob-get-empty.returns"></a><h4>Returns</h4>
-<p>the empty blob. </p>
+<p>The empty blob. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
@@ -479,6 +596,7 @@ hb_blob_get_empty (<em class="parameter"><code><span class="type">void</span></c
 <a name="hb-blob-get-length"></a><h3>hb_blob_get_length ()</h3>
 <pre class="programlisting">unsigned <span class="returnvalue">int</span>
 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>
+<p>Fetches the length of a blob's data.</p>
 <div class="refsect3">
 <a name="hb-blob-get-length.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -496,7 +614,8 @@ hb_blob_get_length (<em class="parameter"><code><a class="link" href="harfbuzz-h
 </div>
 <div class="refsect3">
 <a name="hb-blob-get-length.returns"></a><h4>Returns</h4>
-<p> the length of blob data in bytes.</p>
+<p> the length of <em class="parameter"><code>blob</code></em>
+data in bytes.</p>
 </div>
 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
 </div>
@@ -506,6 +625,8 @@ hb_blob_get_length (<em class="parameter"><code><a class="link" href="harfbuzz-h
 <pre class="programlisting"><span class="returnvalue">void</span> *
 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>,
                        <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>
+<p>Fetches the user data associated with the specified key,
+attached to the specified font-functions structure.</p>
 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
 <a name="hb-blob-get-user-data.parameters"></a><h4>Parameters</h4>
@@ -518,12 +639,12 @@ hb_blob_get_user_data (<em class="parameter"><code><a class="link" href="harfbuz
 <tbody>
 <tr>
 <td class="parameter_name"><p>blob</p></td>
-<td class="parameter_description"><p>a blob.</p></td>
+<td class="parameter_description"><p>a blob</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
 <td class="parameter_name"><p>key</p></td>
-<td class="parameter_description"><p>key for data to get.</p></td>
+<td class="parameter_description"><p>The user-data key to query</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 </tbody>
@@ -531,7 +652,7 @@ hb_blob_get_user_data (<em class="parameter"><code><a class="link" href="harfbuz
 </div>
 <div class="refsect3">
 <a name="hb-blob-get-user-data.returns"></a><h4>Returns</h4>
-<p>. </p>
+<p>A pointer to the user data. </p>
 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
 </div>
 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
@@ -541,6 +662,7 @@ hb_blob_get_user_data (<em class="parameter"><code><a class="link" href="harfbuz
 <a name="hb-blob-is-immutable"></a><h3>hb_blob_is_immutable ()</h3>
 <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>
 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>
+<p>Tests whether a blob is immutable.</p>
 <div class="refsect3">
 <a name="hb-blob-is-immutable.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -558,7 +680,8 @@ hb_blob_is_immutable (<em class="parameter"><code><a class="link" href="harfbuzz
 </div>
 <div class="refsect3">
 <a name="hb-blob-is-immutable.returns"></a><h4>Returns</h4>
-<p> TODO</p>
+<p> <code class="literal">true</code> if <em class="parameter"><code>blob</code></em>
+is immutable, <code class="literal">false</code> otherwise</p>
 </div>
 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
 </div>
@@ -567,6 +690,7 @@ hb_blob_is_immutable (<em class="parameter"><code><a class="link" href="harfbuzz
 <a name="hb-blob-make-immutable"></a><h3>hb_blob_make_immutable ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 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>
+<p>Makes a blob immutable.</p>
 <div class="refsect3">
 <a name="hb-blob-make-immutable.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -577,7 +701,7 @@ hb_blob_make_immutable (<em class="parameter"><code><a class="link" href="harfbu
 </colgroup>
 <tbody><tr>
 <td class="parameter_name"><p>blob</p></td>
-<td class="parameter_description"><p>a blob.</p></td>
+<td class="parameter_description"><p>a blob</p></td>
 <td class="parameter_annotations"> </td>
 </tr></tbody>
 </table></div>
@@ -624,6 +748,7 @@ hb_blob_set_user_data (<em class="parameter"><code><a class="link" href="harfbuz
                        <em class="parameter"><code><span class="type">void</span> *data</code></em>,
                        <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>,
                        <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>
+<p>Attaches a user-data key/data pair to the specified blob.</p>
 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
 <div class="refsect3">
 <a name="hb-blob-set-user-data.parameters"></a><h4>Parameters</h4>
@@ -636,33 +761,37 @@ hb_blob_set_user_data (<em class="parameter"><code><a class="link" href="harfbuz
 <tbody>
 <tr>
 <td class="parameter_name"><p>blob</p></td>
-<td class="parameter_description"><p>a blob.</p></td>
+<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>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
 <td class="parameter_name"><p>key</p></td>
-<td class="parameter_description"><p>key for data to set.</p></td>
+<td class="parameter_description"><p>The user-data key to set</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
 <td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>data to set.</p></td>
+<td class="parameter_description"><p>A pointer to the user data to set</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
 <td class="parameter_name"><p>destroy</p></td>
-<td class="parameter_description"><p>callback to call when <em class="parameter"><code>data</code></em>
-is not needed anymore.</p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_description"><p>callback to call when <em class="parameter"><code>data</code></em>
+is not needed anymore. </p></td>
+<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>
 </tr>
 <tr>
 <td class="parameter_name"><p>replace</p></td>
-<td class="parameter_description"><p>whether to replace an existing data with the same key.</p></td>
+<td class="parameter_description"><p>Whether to replace an existing data with the same key</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="hb-blob-set-user-data.returns"></a><h4>Returns</h4>
+<p> <code class="literal">true</code> if success, <code class="literal">false</code> otherwise</p>
+</div>
 <p class="since">Since: <a class="link" href="api-index-0-9-2.html#api-index-0.9.2">0.9.2</a></p>
 </div>
 </div>
@@ -672,10 +801,35 @@ is not needed anymore.</p></td>
 <a name="hb-blob-t"></a><h3>hb_blob_t</h3>
 <pre class="programlisting">typedef struct hb_blob_t hb_blob_t;
 </pre>
+<p>Data type for blobs. A blob wraps a chunk of binary
+data and facilitates its lifecycle management between
+a client program and HarfBuzz.</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="hb-memory-mode-t"></a><h3>enum hb_memory_mode_t</h3>
+<p>Data type holding the memory modes available to
+client programs.</p>
+<p>Regarding these various memory-modes:</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>In no case shall the HarfBuzz client modify memory
+that is passed to HarfBuzz in a blob.  If there is
+any such possibility, <em class="parameter"><code>HB_MEMORY_MODE_DUPLICATE</code></em>
+ should be used
+such that HarfBuzz makes a copy immediately,</p></li>
+<li class="listitem"><p>Use <em class="parameter"><code>HB_MEMORY_MODE_READONLY</code></em>
+ otherwise, unless you really really
+really know what you are doing,</p></li>
+<li class="listitem"><p><em class="parameter"><code>HB_MEMORY_MODE_WRITABLE</code></em>
+ is appropriate if you really made a
+copy of data solely for the purpose of passing to
+HarfBuzz and doing that just once (no reuse!),</p></li>
+<li class="listitem"><p>If the font is <code class="function">mmap()</code>ed, it's okay to use
+<em class="parameter"><code>HB_MEMORY_READONLY_MAY_MAKE_WRITABLE</code></em>
+, however, using that mode
+correctly is very tricky.  Use <em class="parameter"><code>HB_MEMORY_MODE_READONLY</code></em>
+ instead.</p></li>
+</ul></div>
 <div class="refsect3">
 <a name="hb-memory-mode-t.members"></a><h4>Members</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -687,23 +841,33 @@ is not needed anymore.</p></td>
 <tbody>
 <tr>
 <td class="enum_member_name"><p><a name="HB-MEMORY-MODE-DUPLICATE:CAPS"></a>HB_MEMORY_MODE_DUPLICATE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description">
+<p>HarfBuzz immediately makes a copy of the data.</p>
+</td>
+<td class="enum_member_annotations"> </td>
 </tr>
 <tr>
 <td class="enum_member_name"><p><a name="HB-MEMORY-MODE-READONLY:CAPS"></a>HB_MEMORY_MODE_READONLY</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description">
+<p>HarfBuzz client will never modify the data,
+and HarfBuzz will never modify the data.</p>
+</td>
+<td class="enum_member_annotations"> </td>
 </tr>
 <tr>
 <td class="enum_member_name"><p><a name="HB-MEMORY-MODE-WRITABLE:CAPS"></a>HB_MEMORY_MODE_WRITABLE</p></td>
-<td> </td>
-<td> </td>
+<td class="enum_member_description">
+<p>HarfBuzz client made a copy of the data solely
+for HarfBuzz, so HarfBuzz may modify the data.</p>
+</td>
+<td class="enum_member_annotations"> </td>
 </tr>
 <tr>
 <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>
-<td> </td>
-<td> </td>
+<td class="enum_member_description">
+<p>See above</p>
+</td>
+<td class="enum_member_annotations"> </td>
 </tr>
 </tbody>
 </table></div>
@@ -712,6 +876,6 @@ is not needed anymore.</p></td>
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.32.1</div>
+<hr>Generated by GTK-Doc V1.32</div>
 </body>
 </html>
\ No newline at end of file